PageSourceSearch

https://members.urbanlibraries.org/products/donation/

html urbanlibraries.org collected 2026-09-24 08:59:12 UTC 27,924 bytes, 592 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US">
3<head>
4<base href="https://members.urbanlibraries.org/" />
5
6	
7    <!-- Google Tag Manager -->
8    
8<script>
vendor: 343 bytes, lines 8-12
8(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
9    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
10    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
11    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
12    })(window,document,'script','dataLayer','
12GTM-5JKMCT
vendor: 3 bytes, line 12
12');
12</script>
12
13    <!-- End Google Tag Manager -->
14
15
16
17	<meta charset="UTF-8" />
18    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5" />
19    <title>Products - Urban Libraries Council Member Hub</title>
20	
21
22<meta property="og:type" content="website"/>
23
24
25<meta property="og:url" content="https://members.urbanlibraries.org/products/donation/"/>
26	<meta name="keywords" content="" />
27    <meta name="description" content="" />
28    
29    
30    
31    <link rel="shortcut icon" href="graphics/design/favicon.ico" />
32    <link rel="icon" type="image/png" href="graphics/design/favicon.png" />
33    
34    <link rel="stylesheet" href="https://use.typekit.net/buo7aqy.css">
35    <!--<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" /> -->
36    
36<script src="https://kit.fontawesome.com/67cc50e5c3.js" crossorigin="anonymous"></script>
36<!-- fontawesome 5 -->
37
38    <link rel="stylesheet" type="text/css" href="graphics/scripts/zoombox/zoombox.css" />
39	<link rel="stylesheet" type="text/css" href="stylesheet.css?v=1642712075" />
40	
41    
42	
42<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
vendor: 1 bytes, line 42
42
43<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
vendor: 1 bytes, line 43
43
44<script type="text/javascript" src="/freedom_html/common/jquery/jquery.loader.php?v=2026.38.201&amp;js=pack.all"></script>
44
45	
46	
46<script type="text/javascript" src="graphics/scripts/flexisel/js/jquery.flexisel.js"></script>
46
47	
47<script type="text/javascript" src="graphics/scripts/zoombox/zoombox.js"></script>
47
48	
48<script type="text/javascript" src="js/ieCheck.js"></script>
48
49	
49<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js.cookie.min.js"></script>
49
50    
50<script type="text/javascript" src="js/sitescripts.js?v=20230406"></script>
50
51    
52</head>
53
54<body class="interior ">
55    <!-- Google Tag Manager (noscript) -->
vendor: 85 bytes, lines 55-57
55
56        <noscript><iframe src="
57        https://www.googletagmanager.com/ns.html?id=
57GTM-5JKMCT
vendor: 103 bytes, lines 57-60
57"
58        height="0" width="0"
59        style="display:none;visibility:hidden"></iframe></noscript>
60    
60<!-- End Google Tag Manager (noscript) -->
61
62
63<div id="mobileMenu">
64    <nav class="mobileMenu"></nav>
65</div>
66
67<div id="header">
68    <div class="wrapper">
69        <a id="logo" href="index.php"></a>
70        <div id="mainMenu">
71            <nav class="mainMenu">
72 <ul class="main_menu">
73   <li class="item1" ><a class="first"   href="https://www.urbanlibraries.org/about/mission">ABOUT US </a></li>
74   <li class="item2" ><a   href="https://www.urbanlibraries.org/resources">RESOURCES </a></li>
75   <li class="item3" ><a   href="https://www.urbanlibraries.org/innovations">INNOVATIONS </a></li>
76   <li class="item4" ><a   href="https://www.urbanlibraries.org/initiatives">OUR WORK </a></li>
77   <li class="item5" ><a   href="/events/">EVENTS </a></li>
78   <li class="item6" ><a   href="https://www.urbanlibraries.org/newsroom">NEWSROOM </a></li>
79   <li class="item7" ><a   href="https://www.urbanlibraries.org/join">JOIN </a></li>
80   <li class="item8" ><a   href="https://connect.urbanlibraries.org/">MEMBER HUB </a></li>
81   <li class="item9" ><a class="last" href="products/donation/">DONATE </a></li>
82 </ul>
83
84</nav>
85        </div>
86        <button id="mainMenuToggle" type="button"><span class="fa fa-bars"></span> MENU</button>
87       
88    </div>
89</div>
90
91
92
93
94
95<div id="interiorContent">
96    <div class="wrapper">
97        <div class="flexRow">
98        
99                        <div id="sidebar" class="flexItem">
100            <div class="sidebox">
101                <div id="subMenu"><h3>ULC MEMBER HUB</h3>
102
103 <ul class="sub_menu subMenu" >
104   <li class="menuItemHighlight item1" ><a class="first current"   href="https://connect.urbanlibraries.org/">Home </a></li>
105   <li class="item2" ><a   href="https://connect.urbanlibraries.org/knowledgeexchange">Knowledge Exchange </a></li>
106   <li class="item3" ><a href="events/">Events </a></li>
107   <li class="item4" ><a   href="https://connect.urbanlibraries.org/member-directory">Member Directory </a></li>
108   <li class="item5" ><a   href="https://connect.urbanlibraries.org/ulclibrarydatahive">ULC Library Data Hive </a></li>
109   <li class="item6" ><a   href="https://connect.urbanlibraries.org/membercommunities/allcommunities">Member Groups </a></li>
110   <li class="item7 JobBoard" ><a class="last"   href="https://connect.urbanlibraries.org/job-board2">Job Board </a></li>
111 </ul>
112
113</div>
114             </div>
115             	<a class="button" href="index.php?src=membership&srctype=myaccount&intended_url=referer">LOGIN</a>
116             <div class="sidebox">
117    <h3>Need Help?</h3>
118    <p><i class="far fa-envelope">&nbsp;</i>&nbsp;Email&nbsp;<a href="/cdn-cgi/l/email-protection#761f1810193603041417181a1f140417041f130558190411490503141c1315024b3b131b141304534446251f02135344463e131a06"><span class="__cf_email__" data-cfemail="91f8fff7fed1e4e3f3f0fffdf8f3e3f0e3f8f4e2bffee3f6">[email&#160;protected]</span></a></p>
119<p><i class="fas fa-user-plus">&nbsp;</i>&nbsp;Is your library a ULC Member? Request a <a href="forms/request-for-member-login/">new member login</a> for yourself.</p>
vendor: 110 bytes, lines 119-120
119
120<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
120<script>// <![CDATA[
121document.addEventListener("DOMContentLoaded",function () {
122    if (window.location.search.indexOf("hlepembed=1") != -1 ) {
123      if (elems = document.querySelectorAll("#header, #sidebar, #footer, div.breadcrumb, .tr_misc7, .tr_misc0, .tr_meta__contact_mname, .tr_attr__linkedin")) {
124        for (i=0; i<elems.length; i++) {
125          elems[i].style.visibility="hidden";
126        }
127      }
128    }
129  if ( ( elem = document.querySelector("#content meta") ) && elem.outerHTML.indexOf('<meta http-equiv="refresh" content="0; url=https://urbanlibraries-accrisoft.auth') !== -1) {
130    elems = document.querySelectorAll(".button");
131    for (i=0; i < elems.length; i++) {
132        if (elems[i].textContent == "LOGIN") {
133          elems[i].innerText="Logging in... Please wait"; 
134          elems[i].style.visibility="visible";
135          elems[i].style.position="absolute";
136        }
137        
138    }
139  }
140});
141    if (window.location.href.match("src=membership&cmd=resetidp&")) {
142        setTimeout(function(){window.stop();},200);
143        window.alert("We're sorry.  The function allowing you to click the link in the 'Your Verification Code' email to reset your password is not working.\n\nInstead please copy the verification code in that email and paste it in the already-open browser window where you clicked 'Reset Password.'\n\nIf you've already closed that browser window/tab, please click the 'Forgot password' link again, but don't close the browser window when you go to check your email for the code.\n\nYou may aso email us at [email protected] and we'll be happy to help.\n\nThank you for your patience.\n---The ULC Member Hub Team");
144        window.close();
145    }
146// ]]></script>
146</div>
147             </div>
148             
148<script>checkSideMenu();</script>
148
149                        <div id="content" class="flexItem">
150            <div class="breadcrumb"><a href="">Member Hub</a>&nbsp;&gt;&nbsp;<a href="https://connect.urbanlibraries.org/">Home</a>
151 <span id="jsPageTitle"></span></div>
152            	
153                <!-- Accrisoft Freedom v/11 Sep 24, 2026 --><div class="productsModule moduleLister">
154    <h1>Products</h1>
155    <div><form action="index.php" method="get" id="form_products_search" style="margin:0px;">
156<div class="flexRow">
157    <div class="flexItem oneSixth">Search</div>
158    <div class="flexItem twoThirds"><input type="text" name="xsearch[0]" size="20" value="" class="directorySearchInput" /></div>
159    <div class="flexItem oneFifth"><input type="submit" name="submit" value="Go" /></div>
160</div><div style="display:none"><input type="hidden" name="xsearch_id" value="products_search" /><input type="hidden" name="src" value="directory" /><input type="hidden" name="srctype" value="products_lister" /><input type="hidden" name="view" value="products" /><input type="hidden" name="submenu" value="Home" /></div></form></div>
161
162<hr style="margin-top:10px; margin-bottom:10px" />
163
164<div>
165<div class="listerItem">
166    <h2>Donation</h2>
167    <div class="flexRow" style="align-items: flex-start;">
168        <div class="flexItem threeFourths">
169            <h3><span class="normalinline diritem_price" id="item_price_58702" origprice="varies">varies</span></h3>
170            <p><em>ULC is recognized by the IRS as a 501(c)3 nonprofit charitable organization.
171Please consult your tax advisor for questions about possible deductions.</em></p>
172            <p><b><em>Category: Donation</em></b></p>
173        </div>
174        <div class="flexItem oneFourth">
175            <form relid="58702" id="item_58702" class="cart_add" method="post" action="https://members.urbanlibraries.org/index.php">
176<script type="text/javascript">
177//<![CDATA[
178
179$(document).ready( function(){ CommerceOptions.fAddOptionForm( $('#item_58702') ); } ); 
180//]]>
181</script>
181
182
183<div style="display:none">
184<input type="hidden" name="cmd" value="add" />
185<input type="hidden" name="src" value="commerce" />
186<input type="hidden" name="srctype" value="cart" />
187<input type="hidden" name="back" value="products" />
188<input type="hidden" name="refno" value="58702" />
189<input type="hidden" name="category" value="donation" />
190<input type="hidden" name="view" value="products" />
191</div><div>
192	<div class="cart_add_qty">Quantity: <input type="text" name="quantity" size="2" value="1" class="shoppingFormQuantity" />
193</div><br/>
194	<div class="cart_add_select"><div id="shoppingOption1">
195  <span class="choice">Donation Amount: </span>
196  <select size="1" name="choice">
197    <option value="14">$5</option>
198    <option value="15">$10</option>
199    <option value="16">$20</option>
200    <option value="17">$50</option>
201    <option value="18">$100</option>
202    <option value="13">$250</option>
203    <option value="7">$500</option>
204    <option value="8">$750</option>
205    <option value="9">$1000</option>
206    <option value="10">$1500</option>
207    <option value="11">$2000</option>
208    <option value="12">$2500</option>
209  </select>
210</div>
211<script type="text/javascript">
212//<![CDATA[
213CommerceOptions.fAddOptionSet({"7":{"sku":"Donation_500","price":"$500.00","status":"normal"},"8":{"sku":"Donation_750","price":"$750.00","status":"normal"},"9":{"sku":"Donation_1000","price":"$1,000.00","status":"normal"},"10":{"sku":"Donation_1500","price":"$1,500.00","status":"normal"},"11":{"sku":"Donation_2000","price":"$2,000.00","status":"normal"},"12":{"sku":"Donation_2500","price":"$2,500.00","status":"normal"},"13":{"sku":"Donation_250","price":"$250.00","status":"normal"},"14":{"sku":"Donation_5","price":"$5.00","status":"normal"},"15":{"sku":"Donation_10","price":"$10.00","status":"normal"},"16":{"sku":"Donation_20","price":"$20.00","status":"normal"},"17":{"sku":"Donation_50","price":"$50.00","status":"normal"},"18":{"sku":"Donation_100","price":"$100.00","status":"normal"}});//]]>
214</script>
214
215
216</div><br/>
217	<div class="cart_add_submit"><input type="submit" value="Add To Cart" name="Submit" />
218</div><br/>
219</div>
220</form>
221        </div>
222    </div>
223</div>
224
225</div>
226
227<div class="pagination"><div style="text-align:center;width:100%;padding-top:10px" class="paginationText">Items 1-1 of 1  </div></div>
228<form method="POST" action="index.php" class="commerce_shoppingcart_mini">
229	<input type="hidden" name="cmd" value="set" />
230	<input type="hidden" name="src" value="directory" />
231	<input type="hidden" name="srctype" value="cart" />
232<input type="hidden" name="category" value="donation" />
233<input type="hidden" name="view" value="products" />
234<div class="shoppingCartMini">
235<p>No Items in Cart!</p>
236</div>
237<style>
238
239p.details {
240    background: #eee;
241    padding: 1em;
242    font-size: 0.8em;
243}
244
245span.toggle-details {
246     float: right; 
247}
248</style>
249<script>
250$(function(){
251$('.cartItem .details').hide();
252$('.product .info').append("<a href='javascript:void' class='toggle-details icon-info-sign'></a>");
253$('.info .toggle-details').on('click', function(){ var num = $(this).parent().data('number'); $('#details'+num).toggle();});
254});
255
256</script>
256
257
258</form>
259</div>
260            </div>
261
262        </div>
263    </div>
264</div>
265
266
267<div id="footer">
268    <div class="wrapper">
269        <div><p><a href="https://www.urbanlibraries.org/privacy-policy" target="_blank" rel="noopener noreferrer">Privacy Policy</a> | &copy;2025 Urban Libraries Council | <a href="admin.php" target="_blank" rel="noopener noreferrer">Admin Login</a></p>
270<!-- category  ,  name  fname   first_name  cat   today  name  website  membership_contact_first_name -->
271<script>// <![CDATA[
272let qs = document.querySelector.bind(document);
273let qsa = document.querySelectorAll.bind(document);
274let user_cat='';
275/* Modify the Edit Profile page to work as an embed on the Higher Logic site */
276if (window.location.href.indexOf("hlepembed=1") !== -1 ) {
277  if (elems = qsa("#header, #sidebar, #footer, div.breadcrumb, .tr_misc7, .tr_misc0, .tr_meta__contact_mname, .tr_attr__linkedin")) {
278    for (i=0; i<elems.length; i++) {
279      elems[i].style.display='none';
280    }
281  }
282  if ( (elem = qs(".imageBoxContainer")) && (elem=elem.closest("tr")) ) {
283    elem.style.display='none';
284    elem.nextElementSibling.style.display='none';
285    elem.nextElementSibling.nextElementSibling.style.display='none';
286  }
287  if (elem = document.form) elem.action = "index.php?hlepembed=1";
288  if (elem = qs("a.myaccountButton.cancelButton") ) {
289    elem.setAttribute("onclick","window.close();return false;");
290    elem.href="javascript:window.opener.focus();window.close(); return false;";
291  }
292  
293  /* Now fix the submission confirmation page */
294  if (elem = qs(".myaccountMessage.defaultSuccess") ) {
295    elems = qsa("*");
296    for (i=0; i<elems.length; i++) {
297      elems[i].style.visibility='hidden';
298    }
299    elem.style.visibility="visible";
300    elem.innerHTML = "Your profile has been successfully saved.<br>Please wait 15 minutes for your changes to take effect.";
301    newelem = document.createElement("a");
302    newelem.innerText="OK";
303    newelem.style.display="block";
304    newelem.style.margin = "2em auto";
305    newelem.style.width="fit-content";
306    newelem.classList="button";
307    elem.after(newelem);
308    newelem.style.visibility="visible";
309    newelem.href="javascript:window.close()";
310  }
311  
312}
313
314
315/* Fix Timezones on Events
316   Look for "?tz=PDT" or similar at the end of the thumbnail src
317*/
318
319$(".thumbnail img[src*='?tz=']").each(function(){
320  var $el=$(this); 
321  var tz=$el.attr("src").match(/\?tz=([A-Za-z0-9]*)/)[1];
322  
323  /* traverse to the Date line and replace the timezone indicated */
324  $el.parent().next().find(".date").html(function(){
325     $(this).html($(this).html().replace(/EST|EDT/,tz));
326     console.log("Changed display to " + tz);
327  });
328  
329  /* replace the href of the "Add to Calendar" button with adjusted times */
330  $("#eventRegister .button").each(function() {
331      var $btn=$(this);
332      var bHref=$btn.attr("href");
333      
334      /* fetch the current .vcs file */
335      $.get(bHref, function( data ) {
336      
337          /* search for date strings */
338          var newData=data.replace(/:(\d\d\d\d)(\d\d)(\d\d)T(\d\d)(\d\d)(\d\d)Z/g, function(match, y, mo, d, h, min, s, offset, str) {
339            
340            /* convert string to js date; note js months start with 0, so adjust accordingly */
341            var oldDate= new Date(y,mo-1,d,h,min,s);
342            
343            /* define adjustments for other timezones */
344            var tzOffsets={'HST':5, 'HDT':5, 'HT':5, 'AST':4, 'ADT':4, 'AT':4, 'PST':3, 'PDT':3, 'PT':3, 'MST':2, 'MDT':2, 'MT':2, 'CST':1, 'CDT':1, 'CT':1, 'EST':0, 'EDT':0, 'ET':0};
345            var useOS=(typeof tzOffsets[tz] !== "undefined") ? tzOffsets[tz] : 0;
346            var newDate = new Date(oldDate.getTime() + useOS*1000*60*60);
347            
348            /* make new string */
349            var formatted= ":" + newDate.getFullYear() + dpad((newDate.getMonth() + 1)) + dpad(newDate.getDate()) + 'T' + dpad(newDate.getHours()) + dpad(newDate.getMinutes()) + dpad(newDate.getSeconds()) + 'Z';
350            return formatted;
351          });
352          
353          /* client-defined download */
354          $btn.attr('href','data:application/x-vcalendar;charset=utf-8, ' + enc(newData)).attr('download', 'vcalendar.vcs');
355          console.log("Adjusted downloadable .vcs file");
356          
357          /* What the heck, let's make a Google calendar button too */
358          var title=newData.match(/SUMMARY;ENCODING=QUOTED-PRINTABLE:([^\r\n]*)[\r\n]/)[1].replaceAll('=0D=0A',' \r\n');
359          var details=newData.match(/DESCRIPTION;ENCODING=QUOTED-PRINTABLE:([^\r\n]*)[\r\n]/)[1].replaceAll('=0D=0A',' \r\n');
360          var location=newData.match(/LOCATION;ENCODING=QUOTED-PRINTABLE:([^\r\n]*)[\r\n]/)[1].replaceAll('=0D=0A',' \r\n');
361          var dates=newData.match(/DTSTART:([\dTZ]{16})/)[1] + "/" + newData.match(/DTEND:([\dTZ]{16})/)[1];
362          var gLink="https://calendar.google.com/calendar/r/eventedit?text=" + enc(title) + "&details=" + enc(details) + "&location=" + enc(location) + "&dates=" + enc(dates);
363          console.log("link is: " + gLink); 
364          $btn.after("<a href='" + gLink + "' class='button light' target='_blank''>Add to Android/Google Calendar</a>");
365          $btn.text("Add to Apple, Outlook, and Other Calendars").css("margin-right","1em");
366          
367          
368          
369      }); 
370  })     
371  function dpad(num) {
372      return num.toString().padStart(2, 0);
373  }
374  function enc(str) {
375    return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
376      return '%' + c.charCodeAt(0).toString(16).toUpperCase();
377    });
378  }
379});
380
381/* Change event not-logged-in text */
382if ( elem = document.evaluate("//p[contains(strong,'Login for Member Only Pricing')]", 
383        document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).
384        singleNodeValue ) { 
385    if ( document.getElementById("eventRegister") ) {
386        elem.outerHTML = "";
387    } else {
388        elem.outerHTML = 
389            '<p>' +
390            '<a class="button" ' +
391                'href="index.php?src=membership&amp;srctype=myaccount&amp;intended_url=referer">' +
392                'LOG IN' +
393            '</a> ' +
394            '&nbsp; to register.' +
395            '</p>';
396    }
397}
398
399/* Automatically log the person in if querystring includes "autologin=1" */
400if (window.location.href.includes("autologin=1") && 
401    (thebutton = qs("#sidebar a.button") ) &&
402    thebutton.innerText == "LOGIN" 
403) {
404  thebutton.click();
405}
406
407/* Change Logout buttons and links to go to tools logout */
408qsa("a[href*='cmd=logout']").forEach((el) => {
409  el.href="https://tools.urbanlibraries.org/oidc/logout.php";
410})
411
412/* Change Logo homepage link to link to www.urbanlibraries.org site */
413qs("a#logo").href="https://www.urbanlibraries.org/";
414
415/* Limit ULC Academy or donation items to Quantity:1 */
416qsa("form.cart_add input[name='sku'][value^='ulca_'], form.cart_add input[name='category'][value='donation']").forEach( (el) => {
417    el.closest("form").querySelector("input[name='quantity']").value=1;
418    el.closest("form").querySelector("div.cart_add_qty").style.display='none';
419});
420/* Fix in Cart if somehow Quantity greater than 1 */
421let ulca_refreshIt = false;
422qsa("a[href*='src=commerce'][href*='cmd=del'][href*='sku=ulca_'], a[href*='src=commerce'][href*='cmd=del'][href*='sku=Donation']").forEach( (el) => {
423  qtyBox = el.closest(".quantity").querySelector("input[type=text]");
424  if (qtyBox.value > 1) {
425    ulca_refreshIt = qtyBox.form;
426  }
427  qtyBox.value=1;
428  qtyBox.readOnly=true;
429});
430/* Submit form with new quantities if any have been changed */
431if (ulca_refreshIt) {
432  ulca_refreshIt.submit();
433}
434/* add submit button to all carts so people can change quantities */
435if (el = qs("form.commerce_shoppingcart")) {
436  el.insertAdjacentHTML(
437    'beforeend', 
438    "<input type='submit' style='position:fixed; left:10000px;'>" +
439    "<style>" +
440    "/* Fix trash can icon in cart */" +
441    "i.icon-trash:before {" +
442    "  font-family: FontAwesome;" +
443    "  content: '\\00f014';" +
444    "  font-style: normal;" +
445    "}" +
446    ".cartQuantityControl {" +
447    "  white-space: nowrap;" +
448    "}" +
449    "</style>"
450  );
451  
452  
453  /* Fix broken #loginAsk.logged-in */
454  if (qs("#sidebar a.button[href*='logout.php']") ) {
455	let loginAsk = qs("#loginAsk");
456	if (loginAsk) loginAsk.classList.add('logged-in')
457  }
458};
459
460/* If Cart or MiniCart contains donation, change Checkout button to invoke the donation checkout form */
461if ( qs(".cartQuantityControl a[href*='sku=Donation'], .shoppingCartMini a[href*='products/donation']") ) {
462let co_button=qs(".shoppingCartButtons a[href*='forms/'], .shoppingCartMini a[href*='forms/']");
463if (co_button) {
464	co_button.href = co_button.href.replace(/forms\/([^\/]+)($|\/)/, "forms/donation-form$2");
465}
466}
467
468
469/* Change Product list page if the URL has "donation" in it */
470if (window.location.href.match(/(\/|view=)products/) && window.location.href.match(/donation/) ) {
471	/* Change Heading */
472	let el = qs("#content .productsModule.moduleLister>h1");
473	if (el) el.innerHTML = 'Donate to Support ULC';
474	
475	/* remove product search row */
476	el = qs("#content .productsModule.moduleLister>div:has(>form#form_products_search)");
477	if (el) el.innerHTML = '<p>Thank you for supporting the Urban Libraries Council&rsquo;s mission to strengthen public libraries as engines of literacy, learning, workforce readiness, digital access, and economic mobility.</p>' +
478			'ULC represents nearly <strong>200 leading public library systems</strong> across the United States and Canada, <strong>serving 138 million people</strong>. Your support is truly appreciated.</p>' +
479			'<ul><li>To make a donation by <strong>credit card</strong>, please use the cart function below. <ul><li>If you have a ULC Member Hub account, you can ' +
480			'<strong><a href="https://members.urbanlibraries.org/index.php?src=membership&srctype=myaccount&intended_url=referer">
480' +
481			'log in first</a></strong> to retrieve your information and associate your donation with your account.</li><li>' +
482			'Otherwise, you can <strong>continue as a guest user</strong>.</li></ul></li>' +
483			'<li>If you prefer, you may<ul><li>give us a call at <strong><a href="tel:+12027508650">202-750-8650</a></strong>, or</li><li>feel free to <strong>mail in a check</strong>, made out to Urban Libraries Council, to:' +
484			'<div style="margin-left:1em">Donations<br>'+
485			'Urban Libraries Council<br>' +
486			'1333 H Street NW, Suite 1000 W<br>' +
487			'Washington DC, 20005</div></li></ul></li></ul>';
488	
489	/* remove HR */ 
490	el = qs("#content .productsModule.moduleLister>hr");
491	if (el) el.remove();
492	
493	/* Insert directions where product name would be */
494	el = qs("#content .productsModule.moduleLister .listerItem>h2");
495	if (el) el.outerHTML = "<hr><h2>Online Donation</h2><h5 style='color:#A33;'>Choose the amount to donate in the dropdown box to the right.</h5>";
496	
497	document.write('<style>#content .productsModule.moduleLister li {margin-bottom: 0.4em;margin-top: 0.4em;}</style>');
498} 
499
500else if (window.location.href.match(/(\/|view=)products/) ) {
501	/* Hide nonmember items if user is member; hide member items if user is nonmember;
502	   Show message to login if they are not logged in 
503	*/
504    /* If logged into members.urbanlibraries.org, there will be a cookie called "USERAUTH" */
505    if (!document.cookie.match(/(^|;)\s*USERAUTH\s*=\s*[a-z0-9A-Z%]/)) {
506		let el = qs("#content div.productsModule");
507		if (el) el.innerHTML=
508				'<h1>ULC Academy Access</h1>' +
509				'<p>To purchase an Academy product, you must first be logged in.</p>' +
510				'<ul>' +
511				'<li>If you already have an account please '+
512				'<a href="https://members.urbanlibraries.org/index.php?src=membership&srctype=myaccount&intended_url=referer' +
513				'">' +
514				'login</a></li>' +
515				'<li>If you don&rsquo;t yet have an account and you work for a ULC Member Library, you may ' +
516				'<a href="https://tools.urbanlibraries.org/library/selfadd.php?redirect=' +
517				encodeURIComponent(window.location.href) + '">' +
518				'create a member account here</a></li>' +
519				'<li>If you do not work for a ULC Member Library, you may ' +
520				'<a href="https://tools.urbanlibraries.org/academy/newaccount.php?redirect=' +
521				encodeURIComponent(window.location.href) + '">' +
522				'create a non-member account here</a></li>' +
523				'</ul>';
524    } else if ( 
525            !(uinfo = document.cookie.match(/(?:^|;)\s*ulc_user_info\s*=\s*([^;]*)(?:;|$)/ ))||
526            !(uinfoj = JSON.parse(decodeURIComponent(uinfo[1])) ) ||
527            !( uinfoj.roles) 
528    ) {
529        /* User is logged into Accrisoft but not Tools; we need that cookie so log them into tools */
530        qs("#content div.productsModule").innerHTML='<h1>Products</h1><p>Please wait, checking status...</p>';
531        window.location = 'https://tools.urbanlibraries.org/oidc/loginandredirect.php?redirect=' +
532            encodeURIComponent(window.location.href);
533        
534    } else {
535        let ismember = (uinfoj.roles.includes("IsMember"));
536        console.log("ismember = " + ismember);
537        if (ismember) {
538            /* Hide any nonmember product items */
539            qsa("#content div.productsModule .listerItem").forEach( (el) => {
540                if (el.querySelector("input[name=sku][value*=nm_]")) {
541                    if (theButton = el.querySelector("input[type=submit]") ) {
542                        theButton.value="Not available to Members";
543                        theButton.disabled=true;
544                    } else {
545                        el.style.display="none";
546                    }
547                }
548            })
549        } else {
550            /* Hide any academy items that aren't marked nm_ */
551            qsa("#content div.productsModule .listerItem").forEach( (el) => {
552                if (el.querySelector("input[name=sku][value*=ulca_]:not([value*=nm_]), input[name=sku][value*=mo_]:not([value*=nm_])")) {
553                    if (theButton = el.querySelector("input[type=submit]") ) {
554                        theButton.value="Not available to Non members";
555                        theButton.disabled=true;
556                    } else {
557                        el.style.display="none";
558                    }
559                }
560            })
561        }
562
563
564
565    }
566}
567// ]]></script>
567</div>
568        <a id="credits" target="_blank" href="https://www.accrisoft.com/">Website by Accrisoft</a>
569        <div class="clear"></div>
570    </div>
571</div>
572
573
574<div id="mobileBottom"><div id="backToTop">Back to top <span class="fa fa-arrow-circle-up"></span></div></div>
575
576<script>createMobileMenu();</script>
576
577
578
579<!-- Hotjar Tracking Code for https://www.urbanlibraries.org/ -->
580<script>
vendor: 125 bytes, lines 580-583
580
581    (function(h,o,t,j,a,r){
582        h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
583        h._hjSettings={hjid:
5833328351
vendor: 258 bytes, lines 583-588
583,hjsv:6};
584        a=o.getElementsByTagName('head')[0];
585        r=o.createElement('script');r.async=1;
586        r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
587        a.appendChild(r);
588    })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
589</script>
589
590
591</body>
592</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.