PageSourceSearch

https://watch.klcs.org/donation/?station_id=c39fde04-f0c0-4f41-b797-a2c14938238b&campaign=passport

html klcs.org collected 2026-09-26 07:06:09 UTC 51,481 bytes, 1,193 lines download raw bytes

1
2
3<!DOCTYPE html>
4<html lang="en">
5<head>
6    
7    <title>
8        
9            KLCS Public Media passport
10        
11        
12            
13            
14        
15    </title>
16
17    
18    <meta charset="utf-8"/>
19    
20    <meta name="viewport" content="width=device-width, initial-scale=1">
21
22    <link rel="shortcut icon" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/icons/favicon.ico">
23
24    
25    
26    
27
28    
29    <style>
30        body {
31            background-image: url(https://donation-form-prod.digi-cash-prod.pbs.org/media/images/klcs-station-scenery-11-FO4uscq.original.jpg);
32        }
33
34        @media only screen and (max-width: 640px) {
35            .station-picker-sm-background {
36                background-image: url(https://donation-form-prod.digi-cash-prod.pbs.org/media/images/klcs-station-scenery-11-FO4uscq.original.jpg);
37                background-size: cover;
38                background-position: center;
39            }
40        }
41    </style>
42    
42<script>
43        dataLayer = window.dataLayer || [];
44        dataLayer.push({ecommerce: null});  // Clear the previous ecommerce object.
45        dataLayer.push(
46            
47    {"event": "view_item_list", "ga4_measurement_id": null, "station_localization": "KLCS", "payment_campaign": "KLCS Web Passport", "signed_in_status": "false", "ecommerce": {"item_list_name": "Federated Form", "currency": "USD", "items": [{"item_name": "donation_7", "item_donation_frequency": "monthly", "item_donation_type": "predefined", "affiliation": "KLCS", "price": 7}, {"item_name": "donation_20", "item_donation_frequency": "monthly", "item_donation_type": "predefined", "affiliation": "KLCS", "price": 20}, {"item_name": "donation_100", "item_donation_frequency": "monthly", "item_donation_type": "predefined", "affiliation": "KLCS", "price": 100}, {"item_name": "donation_custom", "item_donation_frequency": "monthly", "item_donation_type": "custom", "affiliation": "KLCS", "price": 0}, {"item_name": "donation_100", "item_donation_frequency": "one-time", "item_donation_type": "predefined", "affiliation": "KLCS", "price": 100}, {"item_name": "donation_250", "item_donation_frequency": "one-time", "item_donation_type": "predefined", "affiliation": "KLCS", "price": 250}, {"item_name": "donation_500", "item_donation_frequency": "one-time", "item_donation_type": "predefined", "affiliation": "KLCS", "price": 500}, {"item_name": "donation_custom", "item_donation_frequency": "one-time", "item_donation_type": "custom", "affiliation": "KLCS", "price": 0}]}}
48
49        );
50    </script>
50
51
52    
53    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/text.css">
54    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/colors.css">
55    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/blocks.css">
56    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/donation_form.css">
57    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/sign_in_bar.css">
58
59    
60    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/donate.css">
61    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/donation_selection.css">
62    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/gift.css">
63    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/payment_method.css">
64    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/payment_details.css">
65    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/shipping_address.css">
66    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/df_modal.css">
67    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/passport_modal.css">
68    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/duplicate_donation_modal.css">
69    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/error.css">
70    <link rel="stylesheet" type="text/css" href="https://donation-form-prod.digi-cash-prod.pbs.org/static/css/gifts_catalog.css">
71
72
73</head>
74
75<body
76        class=""
77        
78    x-data="$store.global"
79
80>
81
82
83
84    <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
85    <!-- Search Icon -->
86    <symbol id="search" viewBox="0 0 15 14">
87        <path d="M13.888 12.7187C13.8779 12.7087 13.8779 12.7087 13.8678 12.6988L13.8779 12.6888L9.94672 8.81749C11.6344 6.66785 11.4828 3.57277 9.48185 1.60227C8.40052 0.537409 6.97559 0 5.55066 0C4.13583 0 2.7109 0.537409 1.62957 1.60227C-0.543191 3.74196 -0.543191 7.19531 1.62957 9.33499C2.7109 10.3999 4.13583 10.9373 5.55066 10.9373C6.71283 10.9373 7.87501 10.579 8.84517 9.8724L12.7966 13.7636C12.8067 13.7736 12.8067 13.7736 12.8168 13.7835C13.1099 14.0722 13.5949 14.0722 13.888 13.7835C14.1811 13.475 14.1811 13.0073 13.888 12.7187ZM2.7008 8.28008C1.94286 7.52372 1.51841 6.52852 1.51841 5.46366C1.51841 4.39879 1.94286 3.40359 2.7008 2.65719C3.45874 1.91079 4.47943 1.4928 5.55066 1.4928C6.63199 1.4928 7.64257 1.91079 8.40052 2.65719C9.15846 3.40359 9.5829 4.40874 9.5829 5.46366C9.5829 6.35934 9.28983 7.20526 8.74412 7.89195L8.01649 8.60849C7.30908 9.1459 6.45008 9.43451 5.55066 9.43451C4.47943 9.44446 3.45874 9.02648 2.7008 8.28008Z"
88              fill="currentColor"/>
89    </symbol>
90
91    <!-- Back Arrow Icon -->
92    <symbol id="back-arrow" viewBox="0 0 12 22">
93        <path d="M11 1L1 11L11 21" stroke="currentColor" stroke-width="2" stroke-linecap="round"
94              stroke-linejoin="round"/>
95    </symbol>
96
97    <!-- Close/X Icon -->
98    <symbol id="close" viewBox="0 0 20 20">
99        <path d="M11.3841 10L19.5502 1.83391C19.9654 1.41869 19.9654 0.726644 19.5502 0.311419C19.1349 -0.103806 18.4429 -0.103806 18.0277 0.311419L9.86159 8.61592L1.83391 0.449827C1.41868 0.0346021 0.726644 0.0346021 0.311419 0.449827C-0.103806 0.865052 -0.103806 1.55709 0.311419 1.97232L8.47751 10.1384L0.311419 18.1661C-0.103806 18.5813 -0.103806 19.2734 0.311419 19.6886C0.726644 20.1038 1.41868 20.1038 1.83391 19.6886L10 11.5225L18.1661 19.6886C18.5813 20.1038 19.2734 20.1038 19.6886 19.6886C20.1038 19.2734 20.1038 18.5813 19.6886 18.1661L11.3841 10Z"
100              fill="currentColor"/>
101    </symbol>
102
103    <!-- Shopping Bag Icon -->
104    <symbol id="bag" viewBox="0 0 24 24">
105        <path d="M6 2L3 6V20C3 21.1 3.9 22 5 22H19C20.1 22 21 21.1 21 20V6L18 2H6Z" stroke="currentColor"
106              stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
107        <path d="M3 6H21" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
108        <path d="M16 10C16 11.0609 15.5786 12.0783 14.8284 12.8284C14.0783 13.5786 13.0609 14 12 14C10.9391 14 9.92172 13.5786 9.17157 12.8284C8.42143 12.0783 8 11.0609 8 10"
109              stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
110    </symbol>
111
112    <!-- Plus Icon -->
113    <symbol id="plus" viewBox="0 0 14 14">
114        <path d="M7 0V14M0 7H14" stroke="currentColor" stroke-width="2"/>
115    </symbol>
116
117    <!-- Minus Icon -->
118    <symbol id="minus" viewBox="0 0 14 2">
119        <line x1="0" y1="1" x2="14" y2="1" stroke="currentColor" stroke-width="2"/>
120    </symbol>
121
122    <symbol id="triangle" viewBox="0 0 13 7">
123        <path fill-rule="evenodd" clip-rule="evenodd"
124              d="M6.54932 6.01614C6.45697 6.10025 6.31578 6.10025 6.22342 6.01614L0.0796399 0.420693C-0.083817 0.271824 0.0215011 -0.000225262 0.24259 -0.000225242L12.5302 -0.000224168C12.7512 -0.000224149 12.8566 0.271825 12.6931 0.420693L6.54932 6.01614Z"
125              fill="white"/>
126    </symbol>
127
128    <!-- Trash Icon -->
129    <symbol id="trash" viewBox="0 0 13 15">
130        <path d="M0.928571 13.5938C0.928571 13.9667 1.07532 14.3244 1.33653 14.5881C1.59774 14.8518 1.95202 15 2.32143 15H10.6786C11.048 15 11.4023 14.8518 11.6635 14.5881C11.9247 14.3244 12.0714 13.9667 12.0714 13.5938V3.75H0.928571V13.5938ZM8.82143 6.09375C8.82143 5.96943 8.87034 5.8502 8.95741 5.7623C9.04448 5.67439 9.16258 5.625 9.28571 5.625C9.40885 5.625 9.52694 5.67439 9.61401 5.7623C9.70108 5.8502 9.75 5.96943 9.75 6.09375V12.6563C9.75 12.7806 9.70108 12.8998 9.61401 12.9877C9.52694 13.0756 9.40885 13.125 9.28571 13.125C9.16258 13.125 9.04448 13.0756 8.95741 12.9877C8.87034 12.8998 8.82143 12.7806 8.82143 12.6563V6.09375ZM6.03571 6.09375C6.03571 5.96943 6.08463 5.8502 6.1717 5.7623C6.25877 5.67439 6.37686 5.625 6.5 5.625C6.62314 5.625 6.74123 5.67439 6.8283 5.7623C6.91537 5.8502 6.96429 5.96943 6.96429 6.09375V12.6563C6.96429 12.7806 6.91537 12.8998 6.8283 12.9877C6.74123 13.0756 6.62314 13.125 6.5 13.125C6.37686 13.125 6.25877 13.0756 6.1717 12.9877C6.08463 12.8998 6.03571 12.7806 6.03571 12.6563V6.09375ZM3.25 6.09375C3.25 5.96943 3.29892 5.8502 3.38599 5.7623C3.47306 5.67439 3.59115 5.625 3.71429 5.625C3.83742 5.625 3.95551 5.67439 4.04258 5.7623C4.12966 5.8502 4.17857 5.96943 4.17857 6.09375V12.6563C4.17857 12.7806 4.12966 12.8998 4.04258 12.9877C3.95551 13.0756 3.83742 13.125 3.71429 13.125C3.59115 13.125 3.47306 13.0756 3.38599 12.9877C3.29892 12.8998 3.25 12.7806 3.25 12.6563V6.09375ZM12.5357 0.937505H9.05357L8.7808 0.389653C8.72302 0.272529 8.63402 0.174006 8.5238 0.105169C8.41358 0.0363316 8.28652 -8.87099e-05 8.15692 5.13654e-06H4.84018C4.71087 -0.000496734 4.58403 0.0357877 4.47421 0.104701C4.36438 0.173615 4.276 0.272371 4.2192 0.389653L3.94643 0.937505H0.464286C0.341149 0.937505 0.223057 0.986891 0.135986 1.0748C0.0489157 1.16271 0 1.28193 0 1.40625L0 2.34375C0 2.46807 0.0489157 2.5873 0.135986 2.67521C0.223057 2.76312 0.341149 2.8125 0.464286 2.8125H12.5357C12.6588 2.8125 12.7769 2.76312 12.864 2.67521C12.9511 2.5873 13 2.46807 13 2.34375V1.40625C13 1.28193 12.9511 1.16271 12.864 1.0748C12.7769 0.986891 12.6588 0.937505 12.5357 0.937505Z"
131              fill="currentColor"/>
132    </symbol>
133
134    <!-- Chevron Right Icon (for pagination) -->
135    <symbol id="chevron-right" viewBox="0 0 6 10">
136        <path d="M1 1L5 5L1 9" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
137    </symbol>
138</svg>
139
140
141    <div class="overlay" id="overlay">
142    <svg xmlns="http://www.w3.org/2000/svg" width="59" height="59" viewBox="0 0 59 59" fill="none" id="spinner">
143    <path class="color-animate"
144          d="M37.6243 15.2801C36.4932 14.5926 36.1051 13.0778 36.7594 11.8893L40.707 4.7117C41.3612 3.52317 42.8028 3.11533 43.9339 3.80285C45.0649 4.4903 45.4531 6.00511 44.7988 7.19364L40.8511 14.3713C40.208 15.5598 38.7553 15.9676 37.6243 15.2801Z"
145          fill="#F6F6FA"></path>
146    <path class="color-animate"
147          d="M43.7169 21.3714C43.0294 20.2403 43.4372 18.7988 44.6257 18.1445L51.8034 14.1968C52.9919 13.5426 54.5067 13.9307 55.1942 15.0617C55.8817 16.1928 55.4739 17.6344 54.2853 18.2886L47.1077 22.2363C45.9192 22.8905 44.4044 22.5024 43.7169 21.3714Z"
148          fill="#F6F6FA"></path>
149    <path class="color-animate"
150          d="M45.1133 29.4968C45.1133 28.5356 46.273 27.7617 47.7136 27.7617H56.3935C57.834 27.7617 58.9938 28.5356 58.9938 29.4968C58.9938 30.458 57.834 31.2318 56.3935 31.2318H47.7136C46.2852 31.2318 45.1133 30.458 45.1133 29.4968Z"
151          fill="#F6F6FA"></path>
152    <path class="color-animate"
153          d="M43.7169 37.6243C44.4044 36.4932 45.9192 36.1051 47.1077 36.7594L54.2853 40.707C55.4738 41.3612 55.8817 42.8028 55.1942 43.9339C54.5067 45.0649 52.9919 45.4531 51.8034 44.7988L44.6258 40.8622C43.4372 40.208 43.0294 38.7553 43.7169 37.6243Z"
154          fill="#F6F6FA"></path>
155    <path class="color-animate"
156          d="M37.6242 43.7169C38.7553 43.0294 40.1969 43.4372 40.8511 44.6257L44.7988 51.8034C45.453 52.9919 45.0649 54.5067 43.9339 55.1942C42.8028 55.8817 41.3613 55.4739 40.707 54.2853L36.7593 47.1077C36.1051 45.9192 36.4932 44.4044 37.6242 43.7169Z"
157          fill="#F6F6FA"></path>
158    <path class="color-animate"
159          d="M29.4887 45.1133C30.4499 45.1133 31.2318 46.273 31.2318 47.7136V56.3935C31.23
15918 57.834 30.458 58.9938 29.4968 58.9938C28.5356 58.9938 27.7618 57.834 27.7618 56.3935V47.7136C27.7536 46.2852 28.5275 45.1133 29.4887 45.1133Z"
160          fill="#F6F6FA"></path>
161    <path class="color-animate"
162          d="M21.3714 43.7169C22.5024 44.4044 22.8906 45.9192 22.2363 47.1077L18.2886 54.2853C17.6344 55.4738 16.1928 55.8817 15.0618 55.1942C13.9307 54.5067 13.5426 52.9919 14.1969 51.8034L18.1445 44.6258C18.7876 43.4372 20.2403 43.0294 21.3714 43.7169Z"
163          fill="#F6F6FA"></path>
164    <path class="color-animate"
165          d="M4.71167 40.707L11.8893 36.7593C13.0779 36.1051 14.5926 36.4932 15.2801 37.6242C15.9676 38.7553 15.5598 40.1969 14.3713 40.8511L7.19363 44.7988C6.00509 45.453 4.49033 45.0649 3.80282 43.9339C3.11536 42.8028 3.52316 41.3613 4.71167 40.707Z"
166          fill="#F6F6FA"></path>
167    <path class="color-animate"
168          d="M2.60029 27.7617H11.2802C12.7208 27.7617 13.8805 28.5356 13.8805 29.4968C13.8805 30.4579 12.7208 31.2318 11.2802 31.2318H2.60029C1.17195 31.2399 0 30.4661 0 29.5049C0 28.5437 1.17195 27.7617 2.60029 27.7617Z"
169          fill="#F6F6FA"></path>
170    <path class="color-animate"
171          d="M15.2886 21.3714C14.6013 22.5024 13.087 22.8906 11.8988 22.2363L4.71133 18.2886C3.52315 17.6344 3.11544 16.1928 3.80275 15.0618C4.49 13.9307 6.00437 13.5426 7.19256 14.1969L14.3681 18.1445C15.5563 18.7876 15.9642 20.2403 15.2886 21.3714Z"
172          fill="#F6F6FA"></path>
173    <path class="color-animate"
174          d="M21.3714 15.2801C20.2403 15.9676 18.7988 15.5598 18.1445 14.3713L14.1968 7.19363C13.5426 6.00509 13.9307 4.49033 15.0617 3.80282C16.1928 3.11536 17.6344 3.52316 18.2886 4.71167L22.2363 11.8893C22.8905 13.0779 22.5024 14.5926 21.3714 15.2801Z"
175          fill="#F6F6FA"></path>
176    <path class="color-animate"
177          d="M29.4887 0C30.4499 0 31.2318 1.15976 31.2318 2.60029V11.2802C31.2318 12.7208 30.458 13.8805 29.4968 13.8805C28.5356 13.8805 27.7618 12.7208 27.7618 11.2802V2.60029C27.7536 1.15976 28.5275 0 29.4887 0Z"
178          fill="#F6F6FA"></path>
179</svg>
180    You will be redirected shortly.
181</div>
182    
183
184<div class="overlay" id="passport-modal">
185    <div class="df-modal">
186        <div class="passport-triangle">
187            <img src=https://donation-form-prod.digi-cash-prod.pbs.org/static/icons/passport-triangle.svg>
188        </div>
189        <div class="close" onclick="hideModal('passport-modal')">
190            <img src=https://donation-form-prod.digi-cash-prod.pbs.org/static/icons/x-icon.svg>
191        </div>
192        <div class="df-modal__inner-backdrop">
193            <div class="df-modal__content flex-columns gap-1 gap-0-5-sm">
194                
195                    
196
197<div class="flex-rows intro__header">
198    <div class="block-heading"><h1>KLCS Public Media</h1></div>
199    <div class="block-icon">
200        <img alt="Compass Rose" height="24" src="https://donation-form-prod.digi-cash-prod.pbs.org/static/icons/Compass%20Rose.svg" width="24">
201    </div>
202    <div class="block-heading"><h1>Passport</h1></div>
203</div>
204                
205                    <p data-block-key="ip152">Watch all the shows, news, and movies available on PBS.org and the PBS app <b>AND</b>:</p><ul><li data-block-key="ip152-2">Enjoy extended access to past seasons of PBS shows</li><li data-block-key="bu4tq">Stream early releases of new series</li><li data-block-key="cr2fv">Watch full seasons of your favorite PBS shows </li><li data-block-key="6ps12">Discover new titles to love from our featured Passport shows</li></ul>
206                
207                <button class="donate-button bold" onclick="hideModal('passport-modal')">
208                    Donate Now
209                </button>
210            </div>
211        </div>
212    </div>
213</div>
214
215    <div class="overlay" id="gifts-catalog-modal">
216    <div class="gifts-catalog-modal-wrapper" role="dialog" aria-modal="true" aria-label="Gift Catalog">
217        <div class="gifts-catalog" x-data>
218            <div class="gifts-catalog-container">
219                <!-- Gifts Grid -->
220                <main role="main" class="gifts-catalog-content">
221                    <div id="catalog-content">
222                    </div>
223                </main>
224            </div>
225        </div>
226    </div>
227</div>
228    
229    
230
231<div
232        class="flex-rows generic-error gap-1"
233        x-cloak x-show="genericErrorMessage"
234>
235    <img src="https://donation-form-prod.digi-cash-prod.pbs.org/static/icons/error.svg">
236    <p x-text="genericErrorMessage"></p>
237</div>
238
239    <main class="outer-backdrop top-border">
240        <div class="inner-backdrop">
241            <div class="sm-background">
242                <img src="https://donation-form-prod.digi-cash-prod.pbs.org/media/images/klcs-station-scenery-11-FO4uscq.width-640.jpg" alt="Backgroun
242d Image Mobile">
243            </div>
244            <div class="flex-columns gap-2-25 gap-1-sm padding-left-right-1-sm donation-intro">
245                <div class="flex-columns gap-1-5 gap-1-sm donation-intro__info">
246                    
247                        
248
249<div class="flex-rows intro__header">
250    <div class="block-heading"><h1>KLCS Public Media</h1></div>
251    <div class="block-icon">
252        <img alt="Compass Rose" height="24" src="https://donation-form-prod.digi-cash-prod.pbs.org/static/icons/Compass%20Rose.svg" width="24">
253    </div>
254    <div class="block-heading"><h1>Passport</h1></div>
255</div>
256                    
257                        <p data-block-key="a7goy">Support KLCS Public Media to ensure programs that educate, inform, and inspire continue to thrive in our community. Your donation makes a difference!</p><p data-block-key="hvcjm"><b>With a donation of at least $7 per month or a one-time donation of $84, become a station member and enjoy <button type="button" class="passport-modal-link" onclick="showPassportModal()"><b>KLCS Public Media Passport</b></button>.</b></p>
258                    
259                </div>
260            </div>
261
262            <form
263                    id="payment-form"
264                    method="POST"
265                    action="/donation/KLCS/passport/process-donation/"
266                    autocomplete="off"
267                    class="flex-columns gap-2-25 gap-1-5-sm padding-left-right-2-145 padding-left-right-1-sm donation-form"
268                    x-cloak
269                    x-data="$store.form"
270            >
271                <input type="hidden" name="csrfmiddlewaretoken" value="fXfg4lCcWvyE4OYknEPRfVvyYtGmO4TIkCl1C4Jw8I9EeY2RPFke8OWfmhOyur8y">
272
273                <div class="flex-columns section donation-selection"
274                     id="donation-amount-section"
275                     tabindex="-1"
276                     x-data="$store.selection"
277                >
278                    <div class="donation-toast" role="status" aria-live="polite"
279                         x-cloak x-show="$store.form.donationToast" x-transition>
280                        <span x-text="$store.form.donationToast"></span>
281                        <button type="button" class="donation-toast__close" aria-label="Dismiss"
282                                @click="dismissDonationToast()">
283                            <svg class="donation-toast__close-icon" width="14" height="14"
284                                 viewBox="0 0 20 20"><use href="#close"></use></svg>
285                        </button>
286                    </div>
287                    
288                        <h2>Donation Amounts</h2>
289
290                    
291                        <div class="flex-rows donation-form__type">
292    
293        <input type="radio"
294               name="donation_type"
295               id="donation-type-monthly"
296               value="monthly"
297
298               x-on:change="resetAmounts().then()"
299               x-model="donationType"
300                 checked 
301        >
302        <label
303                for="donation-type-monthly"
304                class="flex-rows monthly"
305        >
306            <h3 class="h4">Give Monthly</h3>
307
308        </label>
309    
310        <input type="radio"
311               name="donation_type"
312               id="donation-type-once"
313               value="once"
314
315               x-on:change="resetAmounts().then()"
316               x-model="donationType"
317                
318        >
319        <label
320                for="donation-type-once"
321                class="flex-rows once"
322        >
323            <h3 class="h4">Give Once</h3>
324
325        </label>
326    
327</div>
328                    
329                    <div class="flex-columns gap-0-75 gap-0-5-sm">
330                        <div class="flex-columns gap-0-75" x-cloak x-show="donationType === 'monthly'">
331                            
332
333
334
335    <div class="flex-rows gap-0-75 donation-form__amounts">
336        
337            <input type="radio"
338                   name="amount"
339                   id="monthly-donation-amount-7"
340                   data-donation-type="monthly"
341                   value="7"
342
343                    @change="handlePresetAmountChange($event.target)"
344                    @click="monthlyInvalidCustomAmount = false"
345            >
346            <label for="monthly-donation-amount-7">
347                $7
348            </label>
349        
350            <input type="radio"
351                   name="amount"
352                   id="monthly-donation-amount-20"
353                   data-donation-type="monthly"
354                   value="20"
355
356                    @change="handlePresetAmountChange($event.target)"
357                    @click="monthlyInvalidCustomAmount = false"
358            >
359            <label for="monthly-donation-amount-20">
360                $20
361            </label>
362        
363            <input type="radio"
364                   name="amount"
365                   id="monthly-donation-amount-100"
366                   data-donation-type="monthly"
367                   value="100"
368
369                    @change="handlePresetAmountChange($event.target)"
370                    @click="monthlyInvalidCustomAmount = false"
371            >
372            <label for="monthly-donation-amount-100">
373                $100
374            </label>
375        
376    </div>
377
378    
379
380        <div class="donation-form__custom">
381            <input type="radio"
382                   name="amount"
383                   id="monthly-custom-radio"
384            >
385            <label class="flex-rows"
386                   :class="{ 'error-border': monthlyInvalidCustomAmount }"
387                   for="monthly-custom-radio"
388                   onclick="handleCustomLabelClick(this)"
389            >
390                <span>$</span>
391                <input type="number"
392                       placeholder="Enter custom monthly amount"
393                       min='7'
394                       step="0.01"
395
396                       id="monthly-custom-input"
397                       name="monthly-custom-input"
398
399                       data-radio="monthly-custom-radio"
400                       data-error="monthlyInvalidCustomAmount"
401
402                       onclick="handleCustomInputClick(this)"
403                       oninput="limitDecimals(this);handleCustomInputInput(this)"
404                >
405                
406                    <span>/month</span>
407                
408            </label>
409        </div>
410
411    
412
413
414                        </div>
415                        <div class="flex-columns gap-0-75" x-cloak x-show="donationType === 'once'">
416                            
417
418
419
420    <div class="flex-rows gap-0-75 donation-form__amounts">
421        
422            <input type="radio"
423                   name="amount"
424                   id="once-donation-amount-100"
425                   data-donation-type="once"
426                   value="100"
427
428                    @change="handlePresetAmountChange($event.target)"
429                    @click="onceInvalidCustomAmount = false"
430            >
431            <label for="once-donation-amount-100">
432                $100
433            </label>
434        
435            <input type="radio"
436                   name="amount"
437                   id="once-donation-amount-250"
438                   data-donation-type="once"
439                   value="250"
440
441                    @change="handlePresetAmountChange($event.target)"
442                    @click="onceInvalidCustomAmount = false"
443            >
444            <label for="once-donation-amount-250">
445                $250
446            </label>
447        
448            <input type="radio"
449                   name="amount"
450                   id="once-donation-amount-500"
451                   data-donation-type="once"
452                   value="500"
453
454                    @change="handlePresetAmountChange($event.target)"
455                    @click="onceInvalidCustomAmount = false"
456            >
457            <label for="once-donation-amount-500">
458                $500
459            </label>
460        
461    </div>
462
463    
464
465        <div class="donation-form__custom">
466            <input type="radio"
467                   name="amount"
468                   id="once-custom-radio"
469            >
470            <label class="flex-rows"
471                   :class="{ 'error-border': onceInvalidCustomAmount }"
472                   for="once-custom-radio"
473                   onclick="handleCustomLabelClick(this)"
474            >
475                <span>$</span>
476                <input type="number"
477                       placeholder="Enter custom one-time amount"
478                       min='84'
479                       step="0.01"
480
481                       id="once-custom-input"
482                       name="once-custom-input"
483
484                       data-radio="once-custom-radio"
485                       data-error="onceInvalidCustomAmount"
486
487                       onclick="handleCustomInputClick(this)"
488                       oninput="limitDecimals(this);handleCustomInputInput(this)"
489                >
490                
491            </label>
492        </div>
493
494    
495
496
497                        </div>
498                        
499                            
500
501<div
502        class="checkbox"
503        x-cloak x-show="donationType === 'once'"
504>
505    <input type="checkbox" id="yearly_donation" name="yearly_donation"
506           x-model="$store.form.yearlyDonation">
507    <label class="flex-rows gap-0-75" for="yearly_donation">
508        <img class="checked-icon" src=https://donation-form-prod.digi-cash-prod.pbs.org/static/icons/checkbox_checked.svg>
509        <img class="unchecked-icon" src=https://donation-form-prod.digi-cash-prod.pbs.org/static/icons/checkbox_unchecked.svg>
510        Renew my membership automatically each year.
511    </label>
512</div>
513                        
514                    </div>
515                    <p x-cloak x-show="$store.form.amountMinimumError" class="error-message"
516                       x-text="getAmountMinimumErrorMessage($store.giftBag, donationType)">
517                    </p>
518                </div>
519
520                
521                    <div id="gift-catalog-featured-gifts"
522                         hx-get="/donation/gifts-catalog/c39fde04-f0c0-4f41-b797-a2c14938238b/featured-gifts/passport/"
523                         hx-trigger="load"
524                         hx-swap="innerHTML"
525                    >
526                    </div>
527                
528
529                <div class="flex-columns section payment-method-selection">
530                    
531                        <h2>Payment Method</h2>
532
533                    
534                    <div class="flex-columns gap-0-75 gap-0-5-sm">
535                        <div class="flex-rows gap-0-75 payment-methods">
536                            
537                                
538
539
540    
541    
542
543
544<div
545        class="payment-method"
546        x-show="availablePaymentMethods.includes('card')"
547        x-transition.duration.1000ms
548>
549    <button
550            type="button"
551            class="flex-rows"
552
553            x-on:click="
554            cardPaymentErrorMessage=null;
555            oneClickPaymentErrorMessage=null;
556            hiddenPaymentElements=false;
557            oneClickDonation=false;
558            selectedPaymentMethod='card'
559
560            updateStripePaymentMethod();
561            "
562
563            :class="{
564                'selected': selectedPaymentMethod === 'card',
565                'payment-error': selectedPaymentMethod === 'card' && oneClickPaymentErrorMessage
566            }"
567    >
568        <div class="block-icon">
569            
570            
571                <img src="https://donation-form-prod.digi-cash-prod.pbs.org/media/images/Credit_Card.original.svg" alt="Credit Card Icon">
572            
573        </div>
574        
575            <div class="block-name">
576                Credit Card
577            </div>
578        
579    </button>
580</div>
581                            
582                                
583
584
585    
586    
587
588
589<div
590        class="payment-method"
591        x-show="availablePaymentMethods.includes('google_pay')"
592        x-transition.duration.1000ms
593>
594    <button
595            type="button"
596            class="flex-rows"
597
598            x-on:click="
599            cardPaymentErrorMessage=null;
600            oneClickPaymentErrorMessage=null;
601            hiddenPaymentElements=true;
602            oneClickDonation=true;
603            selectedPaymentMethod='google_pay'
604
605            updateStripePaymentMethod();
606            "
607
608            :class="{
609                'selected': selectedPaymentMethod === 'google_pay',
610                'payment-error': selectedPaymentMethod === 'google_pay' && oneClickPaymentErrorMessage
611            }"
612    >
613        <div class="block-icon">
614            
615            
616                <img src="https://donation-form-prod.digi-cash-prod.pbs.org/media/images/Google_Pay.original.svg" alt="Google Pay Icon">
617            
618        </div>
619        
620            <div class="block-name">
621                Google Pay
622            </div>
623        
624    </button>
625</div>
626                            
627                                
628
629
630    
631    
632
633
634<div
635        class="payment-method"
636        x-show="availablePaymentMethods.includes('apple_pay')"
637        x-transition.duration.1000ms
638>
639    <button
640            type="button"
641            class="flex-rows"
642
643            x-on:click="
644            cardPaymentErrorMessage=null;
645            oneClickPaymentErrorMessage=null;
646            hiddenPaymentElements=true;
647            oneClickDonation=true;
648            selectedPaymentMethod='apple_pay'
649
650            updateStripePaymentMethod();
651            "
652
653            :class="{
654                'selected': selectedPaymentMethod === 'apple_pay',
655                'payment-error': selectedPaymentMethod === 'apple_pay' && oneClickPaymentErrorMessage
656            }"
657    >
658        <div class="block-icon">
659            
660            
661                <img src="https://donation-form-prod.digi-cash-prod.pbs.org/media/images/Apple_Pay.original.svg" alt="Apple Pay Icon">
662            
663        </div>
664        
665            <div class="block-name">
666                Apple Pay
667            </div>
668        
669    </button>
670</div>
671                            
672                        </div>
673                        
674                            
675
676<div class="checkbox">
677    <input type="checkbox" id="donor_covered_fees" name="donor_covered_fees" onchange="updateStripeAmount()"
678           x-model="$store.form.donorCoveredFees">
679    <label class="flex-rows gap-0-75 payment_method__covered_fee" for="donor_covered_fees">
680        <img class="checked-icon" src=https://donation-form-prod.digi-cash-prod.pbs.org/static/icons/checkbox_checked.svg>
681        <img class="unchecked-icon" src=https://donation-form-prod.digi-cash-prod.pbs.org/static/icons/checkbox_unchecked.svg>
682        Maximize my impact by adding 3% to help with processing fees.
683    </label>
684</div>
685                        
686                    </div>
687                    <div
688                            class=""
689                            x-cloak x-show="oneClickPaymentErrorMessage"
690                    >
691                        <p class="error-message" x-text="oneClickPaymentErrorMessage"></p>
692                    </div>
693                </div>
694
695                <div
696                        class="flex-columns payment"
697                        id="payment"
698                        x-cloak x-show="!hiddenPaymentElements"
699                >
700                    
701                        
702                            
703
704<div class="flex-columns padding-left-right-2 padding-left-right-1-25-sm
705            padding-top-bottom-2 gap-1-5 gap-0-94-sm
706            payment-details"
707     :class="{ 'payment-error': cardPaymentErrorMessage }"
708>
709    <div class="flex-rows gap-0-75 gap-0-5-sm payment-details__header">
710        <div class="w-block-icon block-icon"><img alt="Lock" height="28" src="https://donation-form-prod.digi-cash-prod.pbs.org/media/images/Lock.original.svg" width="23"></div>
711<div class="w-block-heading block-heading"><h2>Payment Details</h2>
712</div>
713    </div>
714    <div id="payment-element" x-show="selectedPaymentMethod !== 'acss_debit'">
715        <!-- Elements will create form elements here -->
716    </div>
717    <div id="acss-payment-element" x-show="selectedPaymentMethod === 'acss_debit'">
718        <!-- Elements will create the ACSS (Canadian bank account) form elements here -->
719    </div>
720    <div
721            class=""
722            x-cloak x-show="cardPaymentErrorMessage"
723    >
724        <p class="error-message" x-text="cardPaymentErrorMessage"></p>
725    </div>
726</div>
727
728                        
729                    
730                        
731                            <h2>Billing Address</h2>
732
733                        
734                    
735                        
736                            <div class="flex-columns gap-0-5 padding-left-right-2 padding-left-right-1-25-sm address-block">
737                                <p x-cloak x-show="incompleteFullName" class="error-message">
738                                    Please provide your full name.
739                                </p>
740                                <div id="address-element">
741                                    <!-- Elements will create form elements here -->
742                                </div>
743                            </div>
744                        
745                    
746                        
747                            <div id="link-authentication-element"
748                                 class="padding-left-right-2 padding-left-right-1-25-sm">
749                                <!-- Elements will create authentication element here -->
750                            </div>
751                        
752                    
753                </div>
754
755                <div
756                        x-cloak
757                        class="flex-columns section shipping-address"
758                        x-show="!hiddenPaymentElements && giftSelected"
759                >
760                    
761                        <h2>Shipping Address</h2>
762
763                    
764                    
765
766<div x-data="$store.form.useBillingAddress"
767     x-init="$watch('$store.form.useBillingAddress', value => checkShippingAddressComplete())"
768     class="flex-columns gap-0-75 gap-0-5-sm">
769    <div id="use-billing-address" class="checkbox">
770        <input type="checkbox" checked name="shipping_use_billing_address" x-model="$store.form.useBillingAddress"
771               id="id_shipping_use_billing_address">
772        <label for="id_shipping_use_billing_address" class="flex-rows gap-0-75">
773            <img class="checked-icon" src=https://donation-form-prod.digi-cash-prod.pbs.org/static/icons/checkbox_checked.svg>
774            <img class="unchecked-icon" src=https://donation-form-prod.digi-cash-prod.pbs.org/static/icons/checkbox_unchecked.svg>
775            Same as billing address
776        </label>
777    </div>
778    <div x-show="!$store.form.useBillingAddress" class="flex-columns gap-0-75 gap-1-sm">
779        <div class="flex-columns billing-address-field">
780            <p x-cloak x-show="$store.form.incompleteShippingFullName" class="error-message">
781                Please provide your full name.
782            </p>
783            <label for="id_shipping_full_name">Full Name</label>
784            <input type="text" name="shipping_full_name" @change="checkShippingAddressComplete()" :class="{ &#x27;error-border&#x27;
784: incompleteShippingFullName }" id="id_shipping_full_name">
785        </div>
786        <div class="flex-columns billing-address-field">
787            <label for="id_shipping_address">Street Address</label>
788            <input type="text" name="shipping_address" maxlength="100" @change="checkShippingAddressComplete()" id="id_shipping_address">
789        </div>
790        <div class="flex-columns billing-address-field">
791            <label for="id_shipping_address_details">Apartment, Suite, etc (Optional)</label>
792            <input type="text" name="shipping_address_details" maxlength="100" @change="checkShippingAddressComplete()" id="id_shipping_address_details">
793        </div>
794        <div class="flex-columns billing-address-field">
795            <label for="id_shipping_city">City</label>
796            <input type="text" name="shipping_city" maxlength="50" @change="checkShippingAddressComplete()" id="id_shipping_city">
797        </div>
798        <div class="flex-rows gap-0-75">
799            <div class="flex-columns billing-address-field">
800                <label for="id_shipping_state">State</label>
801                <div class="flex-rows state-field">
802                    <select name="shipping_state" @change="checkShippingAddressComplete()" id="id_shipping_state">
803  <option value="" selected></option>
804
805  <option value="AL">Alabama</option>
806
807  <option value="AK">Alaska</option>
808
809  <option value="AS">American Samoa</option>
810
811  <option value="AZ">Arizona</option>
812
813  <option value="AR">Arkansas</option>
814
815  <option value="CA">California</option>
816
817  <option value="CO">Colorado</option>
818
819  <option value="CT">Connecticut</option>
820
821  <option value="DE">Delaware</option>
822
823  <option value="DC">District of Columbia</option>
824
825  <option value="FL">Florida</option>
826
827  <option value="GA">Georgia</option>
828
829  <option value="GU">Guam</option>
830
831  <option value="HI">Hawaii</option>
832
833  <option value="ID">Idaho</option>
834
835  <option value="IL">Illinois</option>
836
837  <option value="IN">Indiana</option>
838
839  <option value="IA">Iowa</option>
840
841  <option value="KS">Kansas</option>
842
843  <option value="KY">Kentucky</option>
844
845  <option value="LA">Louisiana</option>
846
847  <option value="ME">Maine</option>
848
849  <option value="MD">Maryland</option>
850
851  <option value="MA">Massachusetts</option>
852
853  <option value="MI">Michigan</option>
854
855  <option value="MN">Minnesota</option>
856
857  <option value="MS">Mississippi</option>
858
859  <option value="MO">Missouri</option>
860
861  <option value="MT">Montana</option>
862
863  <option value="NE">Nebraska</option>
864
865  <option value="NV">Nevada</option>
866
867  <option value="NH">New Hampshire</option>
868
869  <option value="NJ">New Jersey</option>
870
871  <option value="NM">New Mexico</option>
872
873  <option value="NY">New York</option>
874
875  <option value="NC">North Carolina</option>
876
877  <option value="ND">North Dakota</option>
878
879  <option value="OH">Ohio</option>
880
881  <option value="OK">Oklahoma</option>
882
883  <option value="OR">Oregon</option>
884
885  <option value="PA">Pennsylvania</option>
886
887  <option value="PR">Puerto Rico</option>
888
889  <option value="RI">Rhode Island</option>
890
891  <option value="SC">South Carolina</option>
892
893  <option value="SD">South Dakota</option>
894
895  <option value="TN">Tennessee</option>
896
897  <option value="TX">Texas</option>
898
899  <option value="UT">Utah</option>
900
901  <option value="VT">Vermont</option>
902
903  <option value="VI">Virgin Islands</option>
904
905  <option value="VA">Virginia</option>
906
907  <option value="WA">Washington</option>
908
909  <option value="WV">West Virginia</option>
910
911  <option value="WI">Wisconsin</option>
912
913  <option value="WY">Wyoming</option>
914
915</select>
916                    <div class="dropdown-arrow">
917                        <img src="https://donation-form-prod.digi-cash-prod.pbs.org/static/icons/donate-dropdown-arrow.svg">
918                    </div>
919                </div>
920            </div>
921            <div class="flex-columns billing-address-field">
922                <label for="id_shipping_zip_code">ZIP Code</label>
923                <input type="text" name="shipping_zip_code" maxlength="11" @change="checkShippingAddressComplete()" pattern="^\d{5}$" :class="{ &#x27;error-border&#x27;: invalidShippingZipCode }" id="id_shipping_zip_code">
924                <p x-cloak x-show="$store.form.invalidShippingZipCode" class="error-message">
925                    Your ZIP is invalid.
926                </p>
927            </div>
928        </div>
929    </div>
930</div>
931
932                </div>
933
934                <div
935                        id="express-checkout-block"
936                        :aria-hidden="!oneClickDonation"
937                        class="one-click-donate-button"
938                >
939                    <!-- Elements will create express checkout element here -->
940                </div>
941
942                <button
943                        class="donate-button bold"
944                        id="donate-button"
945                        :aria-hidden="oneClickDonation"
946
947                        x-cloak x-bind:disabled="!(
948                            paymentElementComplete
949                            && addressElementComplete
950                            && linkAuthenticationElementComplete
951                            && shippingAddressComplete
952                            && selectedPaymentMethod
953                            && !amountMinimumError
954                        )"
955
956                        
957                        
958                        x-text="getDonateButtonLabel(
959                            amount, customAmount, donationType, donorCoveredFees, yearlyDonation
960                        )"
961                ></button>
962
963                <div aria-hidden="true">
964                    <input type="text" id="hidden-call-sign" name="call_sign" value=KLCS>
965                    <input type="text" id="hidden-payment-campaign-id" name="payment_campaign_id"
966                           value=20d18e09-8c6c-48ee-bfc8-19cf45a00de6>
967
968                    <input type="text" id="hidden-confirmation-token" name="confirmation_token" value="">
969                    <input type="text" id="hidden-setup-intent" name="setup_intent" value="">
970                    <input type="text" id="hidden-currency" name="currency" value="usd">
971
972                    <input type="text" id="hidden-donor-covered-fee" name="donor_covered_fee"
973                           value="3.0">
974
975                    <input type="text" id="hidden-first-name" name="first_name" value="">
976                    <input type="text" id="hidden-last-name" name="last_name" value="">
977                    <input type="text" id="hidden-email" name="email" value="">
978                    <input type="text" id="hidden-phone" name="phone" value="">
979                    <input type="text" id="hidden-address" name="address" value="">
980                    <input type="text" id="hidden-city" name="city" value="">
981                    <input type="text" id="hidden-state" name="state" value="">
982                    <input type="text" id="hidden-zip-code" name="zip_code" value="">
983                    <input type="text" id="hidden-country" name="country" value=us>
984                </div>
985            </form>
986        </div>
987    </main>
988    
989
990
991
992
993
994<!-- Begin Google Tag Manager -->
vendor: 67 bytes, lines 994-996
994
995<noscript>
996    <iframe src='//www.googletagmanager.com/ns.html?id=
996GTM-TWTDGH
vendor: 96 bytes, lines 996-998
996' height='0' width='0'
997            style='display:none;visibility:hidden'></iframe>
998</noscript>
999<script>
vendor: 391 bytes, lines 999-1007
999(function (w, d, s, l, i) {
1000    w[l] = w[l] || [];
1001    w[l].push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
1002    var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
1003    j.async = true;
1004    j.src = '//www.googletagmanager.com/gtm.js?id=' + i + dl;
1005    f.parentNode.insertBefore(j, f);
1006})
1007(window, document, 'script', 'dataLayer', '
1007GTM-TWTDGH
vendor: 4 bytes, line 1007
1007');
1008</script>
1008
1009<!-- End Google Tag Manager -->
1010
1011
1012    
1012<script src="https://donation-form-prod.digi-cash-prod.pbs.org/static/js/catalog_nav.js"></script>
1012
1013    
1013<script src="https://donation-form-prod.digi-cash-prod.pbs.org/static/js/gift_bag.js"></script>
1013
1014    
1014<script src="https://js.stripe.com/v3/"></script>
1014
1015    
1015<script src="https://donation-form-prod.digi-cash-prod.pbs.org/static/js/stripe.js" defer></script>
1015
1016    
1016<script src="https://donation-form-prod.digi-cash-prod.pbs.org/static/js/donate.js" defer></script>
1016
1017    
1017<script src="https://donation-form-prod.digi-cash-prod.pbs.org/static/js/shipping_address.js" defer></script>
1017
1018    
1018<script src="https://donation-form-prod.digi-cash-prod.pbs.org/static/js/gifts.js" defer></script>
1018
1019
1020    
1020<script>
1021        window.addEventListener('pageshow', function (event) {
1022            if (event.persisted) {
1023                window.location.reload();
1024            }
1025        });
1026
1027        document.addEventListener('alpine:init', () => {
1028            Alpine.store('global', {
1029                genericErrorMessage: null,
1030                cardPaymentErrorMessage: null,
1031                oneClickPaymentErrorMessage: null,
1032            })
1033            Alpine.store('form', {
1034                donationType: document.querySelector("[name='donation_type']").value, // Default check first radio
1035                amount: null,
1036                customAmount: null,
1037
1038                paymentElementComplete: false,
1039                addressElementComplete: false,
1040                linkAuthenticationElementComplete: false,
1041
1042                hiddenPaymentElements: true,
1043                oneClickDonation: false,
1044                incompleteFullName: false,
1045
1046                
1047                amountMinimumError: false,
1048                
1049                donationToast: null,
1050
1051                
1052                useBillingAddress: true,
1053                giftSelected: false,
1054                shippingAddressComplete: true,
1055                incompleteShippingFullName: false,
1056                invalidShippingZipCode: false,
1057
1058                
1059                donorCoveredFees: false,
1060                yearlyDonation: false,
1061
1062                
1063                availablePaymentMethods: [
1064                    'card',
1065                    'us_bank_account',
1066                ],
1067                selectedPaymentMethod: null,
1068            })
1069            Alpine.store('selection', {
1070                onceInvalidCustomAmount: false,
1071                monthlyInvalidCustomAmount: false,
1072                defaultOption: 1,
1073                userAmount: null,
1074            })
1075
1076            
1077            Alpine.store('giftBag', window.createGiftBagStore());
1078            Alpine.store('giftBag').init();
1079
1080            
1081            if (!Alpine.store('giftBag').isEmpty) {
1082                Alpine.store('form').giftSelected = true;
1083            }
1084
1085            
1086            
1087            Alpine.effect(() => {
1088                const amount = Alpine.store('form').amount;
1089                const customAmount = Alpine.store('form').customAmount;
1090                const donationType = Alpine.store('form').donationType;
1091                const bag = Alpine.store('giftBag');
1092
1093                const effectiveMinimum = typeof getEffectiveMinimum === 'function'
1094                    ? getEffectiveMinimum(bag, donationType) : 0;
1095
1096                if (effectiveMinimum <= 0) {
1097                    Alpine.store('form').amountMinimumError = false;
1098                    return;
1099                }
1100
1101                let effective = 0;
1102                if (customAmount !== null && customAmount !== '') {
1103                    effective = parseFloat(customAmount);
1104                } else if (amount !== null && amount !== '') {
1105                    effective = parseFloat(amount);
1106                }
1107
1108                Alpine.store('form').amountMinimumError = effective < effectiveMinimum;
1109            });
1110        })
1111
1112        /** Global Variables */
1113        const DonationForm = {
1114            // Stripe
1115            stripePublishableKey: "pk_live_AZi3XYTe7uC2iK22rCCSjiAs004Qsrkqi6",
1116            stripe: null,
1117            stripeElements: null,
1118            expressCheckoutInitialized: false,
1119
1120            // ACSS (Canadian bank account) uses its own SetupIntent-bound Elements.
1121            stripeAppearance: null,
1122            acssElements: null,
1123            acssClientSecret: null,
1124
1125            // Form
1126            formBlock: null,
1127            forSubmitButton: null,
1128            formSubmitted: false,
1129            hidden: {
1130                confirmationToken: document.getElementById("hidden-confirmation-token"),
1131                setupIntent: document.getElementById("hidden-setup-intent"),
1132                firstName: document.getElementById("hidden-first-name"),
1133                lastName: document.getElementById("hidden-last-name"),
1134                email: document.getElementById("hidden-email"),
1135                phone: document.getElementById("hidden-phone"),
1136                address: document.getElementById("hidden-address"),
1137                city: document.getElementById("hidden-city"),
1138                zip_code: document.getElementById("hidden-zip-code"),
1139                state: document.getElementById("hidden-state"),
1140                country: document.getElementById("hidden-country"),
1141            },
1142            shipping: {
1143                use_billing_address: document.getElementById("id_shipping_use_billing_address"),
1144                full_name: document.getElementById("id_shipping_full_name"),
1145                address: document.getElementById("id_shipping_address"),
1146                address_details: document.getElementById("id_shipping_address_details"),
1147                city: document.getElementById("id_shipping_city"),
1148                state: document.getElementById("id_shipping_state"),
1149                zip_code: document.getElementById("id_shipping_zip_code"),
1150            },
1151
1152            // Donation Selection
1153            donationTypes: document.querySelectorAll("[name=donation_type]"),
1154            donationAmounts: {
1155                monthly: document.querySelectorAll(`[data-donation-type=monthly]`),
1156                once: document.querySelectorAll(`[data-donation-type=once]`),
1157            },
1158
1159            yearlyDonation: document.getElementById("yearly_donation"),
1160
1161            donorCoveredFees: document.getElementById("donor_covered_fees"),
1162            donorCoveredFee: document.getElementById("hidden-donor-covered-fee"),
1163
1164            donateButtonLabel: "Donate to KLCS Public Media",
1165
1166            // Data
1167            country: "us",
1168            currency: "usd",
1169
1170            // Station (campaign) minimum donation amounts, per donation type
1171            oneTimeMin: parseFloat("84") || 0,
1172            monthlyMin: parseFloat("7") || 0,
1173
1174            stationShortCommonName: "KLCS Public Media",
1175            stationCallSign: "KLCS",
1176            paymentCampaignId: "20d18e09-8c6c-48ee-bfc8-19cf45a00de6",
1177
1178            googleMapsApiKey: "AIzaSyB-VtZnDApJ4y6UfSgoN12E777HvfWZvCs",
1179
1180            spinnerTimeoutId: null,
1181            donationToastTimeoutId: null,
1182
1183            genericErrorMessageText: 'We’re unable to process online donations right now. Please contact PBS support at [email protected] for assistance. Thank you!'
1184        };
1185    </script>
1185
1186
1187
1188<script src="https://unpkg.com/[email protected]"></script>
1188
1189
1190<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/cdn.min.js"></script>
vendor: 1 bytes, line 1190
1190
1191<script type="text/javascript" src="https://donation-form-prod.digi-cash-prod.pbs.org/static/js/donation_form.js"></script>
1191
1192</body>
1193</html>

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.