PageSourceSearch

https://villagrande.org/fovg-store

html villagrande.org collected 2026-10-09 23:04:10 UTC 48,204 bytes, 1,171 lines download raw bytes

1<!DOCTYPE html>
2<!--[if lt IE 7 ]><html lang="en" class="no-js ie6 "><![endif]-->
3<!--[if IE 7 ]><html lang="en" class="no-js ie7 "> <![endif]-->
4<!--[if IE 8 ]><html lang="en" class="no-js ie8 "> <![endif]-->
5<!--[if IE 9 ]><html lang="en" class="no-js ie9 "><![endif]-->
6<!--[if (gt IE 9)|!(IE)]><!--><html lang="en" class="no-js "> <!--<![endif]-->
7  <head id="Head1">
8		<link rel="stylesheet" type="text/css" href="https://kit-pro.fontawesome.com/releases/latest/css/pro.min.css" />
9<meta name="viewport" content="width=device-width, initial-scale=1">
10<link href="https://villagrande.org/BuiltTheme/firma_above_the_clouds.v3.0/f1fd0565/Styles/combined.css" rel="stylesheet" type="text/css" /><link href="https://villagrande.org/resources/theme/customStyles.css?t=638841299562890000" rel="stylesheet" type="text/css" /><link href="https://villagrande.org/resources/theme/user.css?t=639256974480000000" rel="stylesheet" type="text/css" /><link href="https://live-sf.wildapricot.org/WebUI/built9.19.2-1c681d6/scripts/public/react/index-84b33b4.css" rel="stylesheet" type="text/css" /><link href="https://live-sf.wildapricot.org/WebUI/built9.19.2-1c681d6/css/shared/ui/shared-ui-compiled.css" rel="stylesheet" type="text/css" />
10<script type="text/javascript" language="javascript" id="idJavaScriptEnvironment">var bonaPage_BuildVer='9.19.2-1c681d6';
11var bonaPage_AdminBackendUrl = '/admin/';
12var bonaPage_StatRes='https://live-sf.wildapricot.org/WebUI/';
13var bonaPage_InternalPageType = { isUndefinedPage : false,isWebPage : true,isAdminPage : false,isDialogPage : false,isSystemPage : false,isErrorPage : false,isError404Page : false };
14var bonaPage_PageView = { isAnonymousView : true,isMemberView : false,isAdminView : false };
15var WidgetMode = 0;
16var bonaPage_IsUserAnonymous = true;
17var bonaPage_ThemeVer='f1fd0565639256974480000000638841299562890000'; var bonaPage_ThemeId = 'firma_above_the_clouds.v3.0'; var bonaPage_ThemeVersion = '3.0';
18var bonaPage_id='18089'; version_id='';
19if (bonaPage_InternalPageType && (bonaPage_InternalPageType.isSystemPage || bonaPage_InternalPageType.isWebPage) && window.self !== window.top) { var success = true; try { var tmp = top.location.href; if (!tmp) { top.location = self.location; } } catch (err) { try { if (self != top) { top.location = self.location; } } catch (err) { try { if (self != top) { top = self; } success = false; } catch (err) { success = false; } } success = false; } if (!success) { window.onload = function() { document.open('text/html', 'replace');
19 document.write('<ht'+'ml><he'+'ad></he'+'ad><bo'+'dy><h1>Wrong document context!</h1></bo'+'dy></ht'+'ml>'); document.close(); } } }
20try { function waMetricsGlobalHandler(args) { if (WA.topWindow.waMetricsOuterGlobalHandler && typeof(WA.topWindow.waMetricsOuterGlobalHandler) === 'function') { WA.topWindow.waMetricsOuterGlobalHandler(args); }}} catch(err) {}
21 try { if (parent && parent.BonaPage) parent.BonaPage.implementBonaPage(window); } catch (err) { }
22try { document.write('<style type="text/css"> .WaHideIfJSEnabled, .HideIfJSEnabled { display: none; } </style>'); } catch(err) {}
23var bonaPage_WebPackRootPath = 'https://live-sf.wildapricot.org/WebUI/built9.19.2-1c681d6/scripts/public/react/';</script>
23<script type="text/javascript" language="javascript" src="https://live-sf.wildapricot.org/WebUI/built9.19.2-1c681d6/scripts/shared/bonapagetop/bonapagetop-compiled.js" id="idBonaPageTop"></script>
23<script type="text/javascript" language="javascript" src="https://live-sf.wildapricot.org/WebUI/built9.19.2-1c681d6/scripts/public/react/index-84b33b4.js" id="ReactPublicJs"></script>
23<script type="text/javascript" language="javascript" src="https://live-sf.wildapricot.org/WebUI/built9.19.2-1c681d6/scripts/shared/ui/shared-ui-compiled.js" id="idSharedJs"></script>
23<script type="text/javascript" language="javascript" src="https://live-sf.wildapricot.org/WebUI/built9.19.2-1c681d6/General.js" id=""></script>
23<script type="text/javascript" language="javascript" src="https://villagrande.org/BuiltTheme/firma_above_the_clouds.v3.0/f1fd0565/Scripts/combined.js" id=""></script>
23<title>Friends of Villa Grande (FoVG) - Our store</title>
24<link rel="search" type="application/opensearchdescription+xml" title="villagrande.org" href="/opensearch.ashx" /></head>
25  <body id="PAGEID_18089" class="publicContentView LayoutMain">
26<div class="mLayout layoutMain state1" id="mLayout">
27<div class="mobilePanelContainer">
28<div id="id_MobilePanel" data-componentId="MobilePanel" class="WaPlaceHolder WaPlaceHolderMobilePanel" style=""><div style=""><div id="id_xaBsq8r" class="WaGadgetOnly WaGadgetMobilePanel  gadgetStyleNone" style="" data-componentId="xaBsq8r" ><div class="mobilePanel">
29	
30	<div class="mobilePanelButton buttonMenu" title="Menu">Menu</div>
31<div class="mobilePanelButton buttonLogin" title="Log in">Log in</div>
32<div class="menuInner">
33		<ul class="firstLevel">
34<li class=" ">
35	<div class="item">
36		<a href="https://villagrande.org/" title="Home"><span>Home</span></a>
37</div>
38</li>
39	
40<li class=" dir">
41	<div class="item">
42		<a href="https://villagrande.org/friends-of-villa-grande" title="Friends of Villa Grande"><span>Friends of Villa Grande</span></a>
43<ul class="secondLevel">
44<li class=" ">
45	<div class="item">
46		<a href="https://villagrande.org/welcome-to-fovg" title="Welcome to FoVG"><span>Welcome to FoVG</span></a>
47</div>
48</li>
49	
50<li class=" ">
51	<div class="item">
52		<a href="https://villagrande.org/history-of-fovg" title="History of FoVG"><span>History of FoVG</span></a>
53</div>
54</li>
55	
56<li class=" ">
57	<div class="item">
58		<a href="https://villagrande.org/board" title="Board"><span>Board</span></a>
59</div>
60</li>
61	
62<li class=" ">
63	<div class="item">
64		<a href="https://villagrande.org/Contact" title="Contact"><span>Contact</span></a>
65</div>
66</li>
67	
68<li class=" ">
69	<div class="item">
70		<a href="https://villagrande.org/volunteer" title="Volunteer Opportunities"><span>Volunteer Opportunities</span></a>
71</div>
72</li>
73	
74<li class=" ">
75	<div class="item">
76		<a href="https://villagrande.org/events" title="Events"><span>Events</span></a>
77</div>
78</li>
79	
80<li class=" ">
81	<div class="item">
82		<a href="https://villagrande.org/fovg-event-photos" title="FOVG Event photo albums"><span>FOVG Event photo albums</span></a>
83</div>
84</li>
85	
86<li class=" ">
87	<div class="item">
88		<a href="https://villagrande.org/anchorage" title="Boat Anchorage"><span>Boat Anchorage</span></a>
89</div>
90</li>
91	
92<li class=" ">
93	<div class="item">
94		<a href="https://villagrande.org/propane" title="Propane"><span>Propane</span></a>
95</div>
96</li>
97	
98<li class=" ">
99	<div class="item">
100		<a href="https://villagrande.org/vgfd-and-firehouse-plaza" title="VGFD &amp; Firehouse Plaza"><span>VGFD &amp; Firehouse Plaza</span></a>
101</div>
102</li>
103	
104</ul>
105</div>
106</li>
107	
108<li class=" dir">
109	<div class="item">
110		<a href="https://villagrande.org/patterson-point-preserve" title="Patterson Point Preserve"><span>Patterson Point Preserve</span></a>
111<ul class="secondLevel">
112<li class=" ">
113	<div class="item">
114		<a href="https://villagrande.org/about-ppp" title="About PPP"><span>About PPP</span></a>
115</div>
116</li>
117	
118<li class=" ">
119	<div class="item">
120		<a href="https://villagrande.org/history-of-ppp" title="History of PPP"><span>History of PPP</span></a>
121</div>
122</li>
123	
124<li class=" dir">
125	<div class="item">
126		<a href="https://villagrande.org/restoration" title="Restoration"><span>Restoration</span></a>
127<ul class="secondLevel">
128<li class=" ">
129	<div class="item">
130		<a href="https://villagrande.org/Restoration-Reports" title="Restoration Reports"><span>Restoration Reports</span></a>
131</div>
132</li>
133	
134</ul>
135</div>
136</li>
137	
138<li class=" ">
139	<div class="item">
140		<a href="https://villagrande.org/birds" title="Birds"><span>Birds</span></a>
141</div>
142</li>
143	
144<li class=" ">
145	<div class="item">
146		<a href="https://villagrande.org/plants" title="Plants"><span>Plants</span></a>
147</div>
148</li>
149	
150<li class=" ">
151	<div class="item">
152		<a href="https://villagrande.org/recreation" title="Recreation"><span>Recreation</span></a>
153</div>
154</li>
155	
156</ul>
157</div>
158</li>
159	
160<li class=" dir">
161	<div class="item">
162		<a href="https://villagrande.org/our-community" title="Our Community"><span>Our Community</span></a>
163<ul class="secondLevel">
164<li class=" ">
165	<div class="item">
166		<a href="https://villagrande.org/about-our-community" title="About Our Community"><span>About Our Community</span></a>
167</div>
168</li>
169	
170<li class=" dir">
171	<div class="item">
172		<a href="https://villagrande.org/history-of-vg" title="History of VG"><span>History of VG</span></a>
173<ul class="secondLevel">
174<li class=" ">
175	<div class="item">
176		<a href="https://villagrande.org/flood-of-1986" title="Flood of 1986"><span>Flood of 1986</span></a>
177</div>
178</li>
179	
180<li class=" ">
181	<div class="item">
182		<a href="https://villagrande.org/photo-albums" title="Historical photo albums"><span>Historical photo albums</span></a>
183</div>
184</li>
185	
186<li class=" ">
187	<div class="item">
188		<a href="https://villagrande.org/VG-Fourth-of-July" title="Fourth of July"><span>Fourth of July</span></a>
189</div>
190</li>
191	
192</ul>
193</div>
194</li>
195	
196<li class=" ">
197	<div class="item">
198		<a href="https://villagrande.org/community-identification" title="Community Identification"><span>Community Identification</span></a>
199</div>
200</li>
201	
202<li class=" ">
203	<div class="item">
204		<a href="https://villagrande.org/water-quality-and-septic" title="Water Quality &amp; Septic"><span>Water Quality &amp; Septic</span></a>
205</div>
206</li>
207	
208<li class=" dir">
209	<div class="item">
210		<a href="https://villagrande.org/emergency-information" title="Emergency Information"><span>Emergency Information</span></a>
211<ul class="secondLevel">
212<li class=" ">
213	<div class="item">
214		<a href="https://villagrande.org/emergency-preparedness" title="Emergency Preparedness"><span>Emergency Preparedness</span></a>
215</div>
216</li>
217	
218</ul>
219</div>
220</li>
221	
222<li class=" ">
223	<div class="item">
224		<a href="https://villagrande.org/community-connections" title="Community Connections"><span>Community Connections</span></a>
225</div>
226</li>
227	
228<li class=" dir">
229	<div class="item">
230		<a href="https://villagrande.org/special-projects" title="Special Projects"><span>Special Projects</span></a>
231<ul class="secondLevel">
232<li class=" ">
233	<div class="item">
234		<a href="https://villagrande.org/roads-and-drainage" title="Roads &amp; Drainage"><span>Roads &amp; Drainage</span></a>
235</div>
236</li>
237	
238</ul>
239</div>
240</li>
241	
242</ul>
243</div>
244</li>
245	
246<li class=" dir">
247	<div class="item">
248		<a href="https://villagrande.org/MENU-HIDE" title="MENU HIDE"><span>MENU HIDE</span></a>
249<ul class="secondLevel">
250<li class=" dir">
251	<div class="item">
252		<a href="https://villagrande.org/news" title="News"><span>News</span></a>
253<ul class="secondLevel">
254<li class=" ">
255	<div class="item">
256		<a href="https://villagrande.org/Announcements" title="Announcements"><span>Announcements</span></a>
257</div>
258</li>
259	
260<li class=" ">
261	<div class="item">
262		<a href="https://villagrande.org/Newsletters" title="Newsletters"><span>Newsletters</span></a>
263</div>
264</li>
265	
266</ul>
267</div>
268</li>
269	
270</ul>
271</div>
272</li>
273	
274<li class=" ">
275	<div class="item">
276		<a href="https://villagrande.org/Search" title="Search"><span>Search</span></a>
277</div>
278</li>
279	
280</ul>
281	</div>
282
283	<div class="loginInner">
284<div class="loginContainerForm oAuthIstrue">
285<div class="openAuthFormContainer">
286<form method="post" action="https://villagrande.org/Sys/Login/ExternalLogin" id="id_xaBsq8r_oAuthForm" class="oAuthForm"  data-disableInAdminMode="true">
287<div id="id_xaBsq8r_container" class="oAuthButtonsContainer">
288			  <!--  <a class="wa-authenticateLoginLink facebook" provider="Facebook">
289					<span class="authenticateLoginIcon" provider="Facebook"></span>
290					<span class="authenticateLoginText" provider="Facebook">
290Log in with Facebook</span>
291			  </a> --> <a class="wa-authenticateLoginLink googlePlus" provider="GooglePlus">
292					<span class="authenticateLoginIcon" provider="GooglePlus"></span>
293					<span class="authenticateLoginText" provider="GooglePlus">Log in with Google</span>
294			  </a><a class="wa-authenticateLoginLink microsoft" provider="Microsoft">
295					<span class="authenticateLoginIcon" provider="Microsoft"></span>
296					<span class="authenticateLoginText" provider="Microsoft">Log in with Microsoft</span>
297			  </a> <a class="wa-authenticateLoginLink apple" provider="Apple">
298					<span class="authenticateLoginIcon" provider="Apple"></span>
299					<span class="authenticateLoginText" provider="Apple">Log in with Apple</span>
300			  </a>
301			  <input type="hidden" name="ReturnUrl" value="" />
302			  <input type="hidden" name="Provider" class="oAuthProvider" value="Undefined" />   
303              <input type="hidden" id="id_xaBsq8r_browserCapabilities" name="browserCapabilities" />  
304			</div>
305</form></div>
306 
307    
307<script type="text/javascript" language="javascript">
308        jq$(document).ready(function()
309		{
310            new OAuthButtons({id:'id_xaBsq8r', formId: 'id_xaBsq8r_oAuthForm'});
311		});
312    </script>
312
313<form method="post" action="https://villagrande.org/Sys/Login" id="id_xaBsq8r_form" class="generalLoginBox"  data-disableInAdminMode="true">
314<input type="hidden" name="ReturnUrl" id="id_xaBsq8r_returnUrl" value="">
315				<input type="hidden" name="browserData" id="id_xaBsq8r_browserField">
316<div class="loginUserName">
317<div class="loginUserNameTextBox">
318		<input name="email" type="text" maxlength="100" placeholder="Email"  id="id_xaBsq8r_userName" tabindex="1" class="emailTextBoxControl"/>
319	</div>
320</div><div class="loginPassword">
321<div class="loginPasswordTextBox">
322		<input name="password" type="password" placeholder="Password" maxlength="50" id="id_xaBsq8r_password" tabindex="2" class="passwordTextBoxControl" autocomplete="off"/>
323	</div>
324</div> 
325    <input id="g-recaptcha-invisible_xaBsq8r" name="g-recaptcha-invisible" value="recaptcha" type="hidden"/> 
326    <div id="recapcha_placeholder_xaBsq8r" style="display:none"></div>
327    <span id="idReCaptchaValidator_xaBsq8r" errorMessage="Please verify that you are not a robot" style="display:none" validatorType="method" ></span>
328    
328<script>
329        $("#idReCaptchaValidator_xaBsq8r").on( "wavalidate", function(event, validationResult) {
330            if (grecaptcha.getResponse(widgetId_xaBsq8r).length == 0){
331                grecaptcha.execute(widgetId_xaBsq8r);	
332                validationResult.shouldStopValidation = true;
333                return;
334            }
335
336            validationResult.result = true;
337        });
338  
339            var widgetId_xaBsq8r;
340
341            var onloadCallback_xaBsq8r = function() {
342                // Renders the HTML element with id 'recapcha_placeholder_xaBsq8r' as a reCAPTCHA widget.
343                // The id of the reCAPTCHA widget is assigned to 'widgetId_xaBsq8r'.
344                widgetId_xaBsq8r = grecaptcha.render('recapcha_placeholder_xaBsq8r', {
345                'sitekey' : '6LfmM_UhAAAAAJSHT-BwkAlQgN0mMViOmaK7oEIV',
346                'size': 'invisible',
347                'callback': function(){
348                    document.getElementById('g-recaptcha-invisible_xaBsq8r').form.submit();
349                },
350                'theme' : 'light'
351            });
352        };
353    </script>
vendor: 131 bytes, lines 353-357
353
354	
355    <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback_xaBsq8r&render=explicit" async defer></script>
356
357 
357<div class="loginActionRememberMe">
358		<input id="id_xaBsq8r_rememberMe" type="checkbox" name="rememberMe" tabindex="3" class="rememberMeCheckboxControl"/>
359		<label for="id_xaBsq8r_rememberMe">Remember me</label>
360	</div>
361<div class="loginPasswordForgot">
362		<a href="https://villagrande.org/Sys/ResetPasswordRequest">Forgot password</a>
363	</div>
364<div class="loginAction">
365	<input type="submit" name="ctl03$ctl02$loginViewControl$loginControl$Login" value="Log in" id="id_xaBsq8r_loginAction" onclick="if (!browserInfo.clientCookiesEnabled()) {alert('Warning: browser cookies disabled. Please enable them to use this website.'); return false;}" tabindex="4" class="loginButton loginButtonControl"/>
366</div></form></div>
367</div>
368
369</div>
370
371<script type="text/javascript">
372
373jq$(function()
374{
375	var gadget = jq$('#id_xaBsq8r'),
376		menuContainer = gadget.find('.menuInner'),
377		loginContainer = gadget.find('.loginInner');
378
379	gadget.find('.buttonMenu').on("click",function()
380	{
381		menuContainer.toggle();
382		loginContainer.hide();
383		jq$(this).toggleClass('active');
384        jq$('.buttonLogin').removeClass('active');
385		return false;
386	});
387
388	gadget.find('.buttonLogin').on("click",function()
389	{
390		loginContainer.toggle();
391		menuContainer.hide();
392		jq$(this).toggleClass('active');
393        jq$('.buttonMenu').removeClass('active');
394		return false;
395	});
396
397	gadget.find('.mobilePanel').on("click",function(event)
398	{
399        if( !(jq$(event.target).parents('.loginInner').size() || event.target.className == 'loginInner') )
400        {
401            menuContainer.hide();
402            loginContainer.hide();
403            jq$('.buttonLogin').removeClass('active');
404            jq$('.buttonMenu').removeClass('active');
405        }
406
407        event.stopPropagation();
408	});
409
410	jq$('body').on("click",function()
411	{
412		menuContainer.hide();
413		loginContainer.hide();
414		jq$('.buttonLogin').removeClass('active');
415        jq$('.buttonMenu').removeClass('active');
416	});
417
418
419	// login
420	var browserField = document.getElementById('id_xaBsq8r' + '_browserField');
421
422	if (browserField)
423	{
424		browserField.value = browserInfo.getBrowserCapabilitiesData();
425	}
426
427	jq$('#id_xaBsq8r' + '_form').FormValidate();
428	jq$('.WaGadgetMobilePanel form').attr('data-disableInAdminMode', 'false');
429
430});
431
432</script>
432</div></div>
433</div></div>
434
435		<!-- header zone -->
436		<div class="zoneHeaderOuter">
437			<div class="zoneHeader container_12">
438				<div class="zoneHeaderInner s1_grid_12 s2_grid_12 s3_grid_12">
439<div id="id_Header" data-componentId="Header" class="WaPlaceHolder WaPlaceHolderHeader" style=""><div style="padding-top:0px;padding-bottom:0px;"><div id="id_RLYBugg" data-componentId="P75wC6y" class="WaLayoutContainerFirst" style="margin-bottom:0px;"><table cellspacing="0" cellpadding="0" class="WaLayoutTable" style=""><tr data-componentId="RLYBugg_row" class="WaLayoutRow"><td id="id_fFMWDZA" data-componentId="2JtVF1E" class="WaLayoutItem" style="width:40%;"><div id="id_JTQDQ3O" class="WaLayoutPlaceHolder placeHolderContainer" data-componentId="1nUr5JJ" style=""><div style="padding-top:30px;padding-bottom:10px;"><div id="id_HeaderLogo" class="WaGadgetOnly WaGadgetContent  gadgetStyleNone" style="" data-componentId="8BqVSyB" ><div class="gadgetStyleBody gadgetContentEditableArea" style="" data-editableArea="0" data-areaHeight="auto">
440<div align="left"><a href="/" title="FoVG - Home"><img src="/resources/Pictures/FoVG/FoVG_Logo-web-large.png" title="" alt="Friends of Villa Grande logo" border="0"></a></div></div>
441</div></div></div></td><td style="" data-componentId="2JtVF1E_separator" class="WaLayoutSeparator"><div style="width: inherit;"></div></td><td id="id_pYda7KE" data-componentId="DiRJBlB" class="WaLayoutItem" style="width:60%;"><div id="id_MhMQ5ZE" class="WaLayoutPlaceHolder placeHolderContainer" data-componentId="aITXLZY" style=""><div style="padding-top:40px;padding-right:8px;padding-left:8px;"><div id="id_Header_Login" class="WaGadgetFirst WaGadgetLoginButton  gadgetStyleNone" style="margin-bottom:15px;" data-componentId="qaISEe5" ><div class="loginButtonBackground"></div>
442<div class="loginButtonWrapper alignRight">
443  <div class="loginBoxLinkContainer">
444    <a class="loginBoxLinkButton" href="https://villagrande.org/Sys/Login">Log in</a>
445  </div>
446  </div>
447<script type="text/javascript">
448  jq$(function() {
449    var gadgetLoginButton = jq$('#id_Header_Login');
450    var leftOffset;
451    
452    function resizeBgLogin() {
453      // background track
454      leftOffset = (gadgetLoginButton.closest('.WaLayoutTable').length > 0) ? gadgetLoginButton.closest('.WaLayoutTable').width() : gadgetLoginButton.width();
455        
456      gadgetLoginButton.find('.loginButtonBackground').css({
457        'width': jq$('body').width(),
458        'left': ( ( jq$('body').width() - leftOffset ) * -0.5 )
459      });
460    }
461
462    resizeBgLogin();
463    jq$(window).resize(function() { resizeBgLogin(); });
464  });
465</script>
465
466</div><div id="id_LLKksfN" class="WaGadgetLast WaGadgetCustomMenu  gadgetStyle001" style="" data-componentId="LLKksfN" ><div class="gadgetStyleBody " style=""  data-areaHeight="auto">
467<div class="customMenuWrapper alignRight">
468	<ul class="orientationHorizontal">
469
470<li>
471				<a href="/membership" title="Join Us">Join Us</a>
472			</li>
473<li>
474				<a href="/members-area" title="Members">Members</a>
475			</li>
476<li>
477				<a href="/emergency-information/" title="Emergency Info">Emergency Info</a>
478			</li>
479<li>
480				<a href="/news" title="News">News</a>
481			</li>
482<li>
483				<a href="/events" title="Events">Events</a>
484			</li>
485<li>
486				<a href="/fovg-store" title="Store">Store</a>
487			</li>
488<li>
489				<a href="/donate" title="Donate">Donate</a>
490			</li>
491</ul>
492</div>
493</div>
494</div></div></div></td></tr></table> </div><div id="id_H8b9tTl" class="WaGadgetLast WaGadgetMenuHorizontal invert menuStyle002" style="margin-bottom:0px;" data-componentId="H8b9tTl" ><div data-sticky-wrapper="true">
495    <div class="stickness">
496        <div class="menuBackground"></div>
497        <div class="menuInner">
498            <ul class="firstLevel">
499                <li class=" ">
500	<div class="item">
501		<a href="https://villagrande.org/" title="Home"><span>Home</span></a>
502</div>
503</li>
504	
505<li class=" dir">
506	<div class="item">
507		<a href="https://villagrande.org/friends-of-villa-grande" title="Friends of Villa Grande"><span>Friends of Villa Grande</span></a>
508<ul class="secondLevel">
509<li class=" ">
510	<div class="item">
511		<a href="https://villagrande.org/welcome-to-fovg" title="Welcome to FoVG"><span>Welcome to FoVG</span></a>
512</div>
513</li>
514	
515<li class=" ">
516	<div class="item">
517		<a href="https://villagrande.org/history-of-fovg" title="History of FoVG"><span>History of FoVG</span></a>
518</div>
519</li>
520	
521<li class=" ">
522	<div class="item">
523		<a href="https://villagrande.org/board" title="Board"><span>Board</span></a>
524</div>
525</li>
526	
527<li class=" ">
528	<div class="item">
529		<a href="https://villagrande.org/Contact" title="Contact"><span>Contact</span></a>
530</div>
531</li>
532	
533<li class=" ">
534	<div class="item">
535		<a href="https://villagrande.org/volunteer" title="Volunteer Opportunities"><span>Volunteer Opportunities</span></a>
536</div>
537</li>
538	
539<li class=" ">
540	<div class="item">
541		<a href="https://villagrande.org/events" title="Events"><span>Events</span></a>
542</div>
543</li>
544	
545<li class=" ">
546	<div class="item">
547		<a href="https://villagrande.org/fovg-event-photos" title="FOVG Event photo albums"><span>FOVG Event photo albums</span></a>
548</div>
549</li>
550	
551<li class=" ">
552	<div class="item">
553		<a href="https://villagrande.org/anchorage" title="Boat Anchorage"><span>Boat Anchorage</span></a>
554</div>
555</li>
556	
557<li class=" ">
558	<div class="item">
559		<a href="https://villagrande.org/propane" title="Propane"><span>Propane</span></a>
560</div>
561</li>
562	
563<li class=" ">
564	<div class="item">
565		<a href="https://villagrande.org/vgfd-and-firehouse-plaza" title="VGFD &amp; Firehouse Plaza"><span>VGFD &amp; Firehouse Plaza</span></a>
566</div>
567</li>
568	
569</ul>
570</div>
571</li>
572	
573<li class=" dir">
574	<div class="item">
575		<a href="https://villagrande.org/patterson-point-preserve" title="Patterson Point Preserve"><span>Patterson Point Preserve</span></a>
576<ul class="secondLevel">
577<li class=" ">
578	<div class="item">
579		<a href="https://villagrande.org/about-ppp" title="About PPP"><span>About PPP</span></a>
580</div>
581</li>
582	
583<li class=" ">
584	<div class="item">
585		<a href="https://villagrande.org/history-of-ppp" title="History of PPP"><span>History of PPP</span></a>
586</div>
587</li>
588	
589<li class=" dir">
590	<div class="item">
591		<a href="https://villagrande.org/restoration" title="Restoration"><span>Restoration</span></a>
592<ul class="secondLevel">
593<li class=" ">
594	<div class="item">
595		<a href="https://villagrande.org/Restoration-Reports" title="Restoration Reports"><span>Restoration Reports</span></a>
596</div>
597</li>
598	
599</ul>
600</div>
601</li>
602	
603<li class=" ">
604	<div class="item">
605		<a href="https://villagrande.org/birds" title="Birds"><span>Birds</span></a>
606</div>
607</li>
608	
609<li class=" ">
610	<div class="item">
611		<a href="https://villagrande.org/plants" title="Plants"><span>Plants</span></a>
612</div>
613</li>
614	
615<li class=" ">
616	<div class="item">
617		<a href="https://villagrande.org/recreation" title="Recreation"><span>Recreation</span></a>
618</div>
619</li>
620	
621</ul>
622</div>
623</li>
624	
625<li class=" dir">
626	<div class="item">
627		<a href="https://villagrande.org/our-community" title="Our Community"><span>Our Community</span></a>
628<ul class="secondLevel">
629<li class=" ">
630	<div class="item">
631		<a href="https://villagrande.org/about-our-community" title="About Our Community"><span>About Our Community</span></a>
632</div>
633</li>
634	
635<li class=" dir">
636	<div class="item">
637		<a href="https://villagrande.org/history-of-vg" title="History of VG"><span>History of VG</span></a>
638<ul class="secondLevel">
639<li class=" ">
640	<div class="item">
641		<a href="https://villagrande.org/flood-of-1986" title="Flood of 1986"><span>Flood of 1986</span></a>
642</div>
643</li>
644	
645<li class=" ">
646	<div class="item">
647		<a href="https://villagrande.org/photo-albums" title="Historical photo albums"><span>Historical photo albums</span></a>
648</div>
649</li>
650	
651<li class=" ">
652	<div class="item">
653		<a href="https://villagrande.org/VG-Fourth-of-July" title="Fourth of July"><span>Fourth of July</span></a>
654</div>
655</li>
656	
657</ul>
658</div>
659</li>
660	
661<li class=" ">
662	<div class="item">
663		<a href="https://villagrande.org/community-identification" title="Community Identification"><span>Community Identification</span></a>
664</div>
665</li>
666	
667<li class=" ">
668	<div class="item">
669		<a href="https://villagrande.org/water-quality-and-septic" title="Water Quality &amp; Septic"><span>Water Quality &amp; Septic</span></a>
670</div>
671</li>
672	
673<li class=" dir">
674	<div class="item">
675		<a href="https://villagrande.org/emergency-information" title="Emergency Information"><span>Emergency Information</span></a>
676<ul class="secondLevel">
677<li class=" ">
678	<div class="item">
679		<a href="https://villagrande.org/emergency-preparedness" title="Emergency Preparedness"><span>Emergency Preparedness</span></a>
680</div>
681</li>
682	
683</ul>
684</div>
685</li>
686	
687<li class=" ">
688	<div class="item">
689		<a href="https://villagrande.org/community-connections" title="Community Connections"><span>Community Connections</span></a>
690</div>
691</li>
692	
693<li class=" dir">
694	<div class="item">
695		<a href="https://villagrande.org/special-projects" title="Special Projects"><span>Special Projects</span></a>
696<ul class="secondLevel">
697<li class=" ">
698	<div class="item">
699		<a href="https://villagrande.org/roads-and-drainage" title="Roads &amp; Drainage"><span>Roads &amp; Drainage</span></a>
700</div>
701</li>
702	
703</ul>
704</div>
705</li>
706	
707</ul>
708</div>
709</li>
710	
711<li class=" dir">
712	<div class="item">
713		<a href="https://villagrande.org/MENU-HIDE" title="MENU HIDE"><span>MENU HIDE</span></a>
714<ul class="secondLevel">
715<li class=" dir">
716	<div class="item">
717		<a href="https://villagrande.org/news" title="News"><span>News</span></a>
718<ul class="secondLevel">
719<li class=" ">
720	<div class="item">
721		<a href="https://villagrande.org/Announcements" title="Announcements"><span>Announcements</span></a>
722</div>
723</li>
724	
725<li class=" ">
726	<div class="item">
727		<a href="https://villagrande.org/Newsletters" title="Newsletters"><span>Newsletters</span></a>
728</div>
729</li>
730	
731</ul>
732</div>
733</li>
734	
735</ul>
736</div>
737</li>
738	
739<li class=" ">
740	<div class="item">
741		<a href="https://villagrande.org/Search" title="Search"><span>Search</span></a>
742</div>
743</li>
744	
745</ul>
746        </div>
747    </div>
748</div>
749
750<script type="text/javascript">
751    if (window.WaMenuHorizontal)
752    {
753        jq$(document).ready(function()
754        {
755            new stickyPlaceholder();
756            new WaMenuHorizontal({ id: "id_H8b9tTl" });
757        });
758    }
759</script>
759
760
761
762<script type="text/javascript">
763    jq$(function()
764    {
765        var gadgetHorMenu = jq$('#id_H8b9tTl');
766        var leftOffset;
767
768        function resizeBg()
769        {
770            // background track
771
772            leftOffset = (gadgetHorMenu.closest('.WaLayoutTable').length > 0) ? gadgetHorMenu.closest('.WaLayoutTable').width() : gadgetHorMenu.width();
773
774            gadgetHorMenu.find('.menuBackground').css(
775            {
776                'width': jq$('body').width(),
777                'left': ( ( jq$('body').width() - leftOffset ) * -0.5 )
778            });
779        }
780
781        resizeBg();
782
783        jq$(window).resize(function()
784        {
785            resizeBg();
786        });
787    });
788</script>
788</div></div>
789</div></div>
790			</div>
791		</div>
792
793		<div class="zoneHeader1Outer">
794			<div class="zoneHeader1 container_12">
795				<div class="zoneHeader1Inner s1_grid_12 s2_grid_12 s3_grid_12">
796					<div class="color"></div>
797</div>
798			</div>
799		</div>
800
801		<div class="zoneHeader2Outer">
802			<div class="zoneHeader2 container_12">
803				<div class="zoneHeader2Inner s1_grid_12 s2_grid_12 s3_grid_12">
804<div id="id_Header2" data-componentId="Header2" class="WaPlaceHolder WaPlaceHolderHeader2" style=""><div style="padding-top:15px;padding-bottom:15px;"><div id="id_GZbLnvn" class="WaGadgetOnly WaGadgetBreadcrumbs alignCenter gadgetStyleNone" style="" data-componentId="GZbLnvn" ><div class="gadgetStyleBody " style=""  data-areaHeight="auto">
805<ul>
806<li><a href="https://villagrande.org/">Home</a></li>
807<li class="last"><span>Our store</span></li>
808</ul>
809</div>
810</div></div>
811</div></div>
812			</div>
813		</div>
814		<!-- /header zone -->
815
816<!-- content zone -->
817	<div class="zoneContentOuter">
818		<div class="zoneContent container_12">
819			<div class="zoneContentInner s1_grid_12 s2_grid_12 s3_grid_12">
820<div id="id_Content" data-componentId="Content" class="WaPlaceHolder WaPlaceHolderContent" style=""><div style="margin-bottom: 30px;padding-top:30px;padding-right:30px;padding-bottom:40px;padding-left:30px;padding-top:60px;padding-bottom:60px;"><div id="id_gSQNL1H" class="WaGadgetFirst WaGadgetContent  gadgetStyleNone" style="" data-componentId="gSQNL1H" ><div class="gadgetStyleBody gadgetContentEditableArea" style="" data-editableArea="0" data-areaHeight="auto">
821<h1>FOVG Online Store</h1></div>
822</div><div id="id_92VHbmH" class="WaGadget WaGadgetContent  gadgetStyleNone" style="" data-componentId="92VHbmH" ><div class="gadgetStyleBody gadgetContentEditableArea" style="" data-editableArea="0" data-areaHeight="auto">
823<p>Support the Friends of Villa Grande by purchasing our custom wear.</p></div>
824</div><div id="id_pFXRZwP" class="WaGadgetLast WaGadgetOnlineStoreCatalog  gadgetStyleNone" style="" data-componentId="pFXRZwP" ><ul class="OnlineStoreCatalog_list"><li class="OnlineStoreCatalog_list_item">
825  <a class="OnlineStoreCatalog_list_item_img" href="/Sys/Store/Products/394389"><img src="https://friendsofvillagrande.wildapricot.org/resources/68667072/IvyJunge.jpeg" /></a>
826  <a class="OnlineStoreCatalog_list_item_link" href="/Sys/Store/Products/394389">We Bought An Ivy Jungle: The First 10 Years of Restoring Patterson Point Preserve</a>
827  <div>
828	<span class="OnlineStoreCatalog_list_price">
829$20.00</span>
830</div>
831<div>
832<span class="OnlineStoreCatalog_list_price_alt">
833$15.00 - Member price
834</span>
835</div></li><li class="OnlineStoreCatalog_list_item">
836  <a class="OnlineStoreCatalog_list_item_img" href="/Sys/Store/Products/357663"><img src="https://friendsofvillagrande.wildapricot.org/resources/68667072/IMG_0265.jpeg" /></a>
837  <a class="OnlineStoreCatalog_list_item_link" href="/Sys/Store/Products/357663">V-Neck: FOVG</a>
838  <div>
839	<span class="OnlineStoreCatalog_list_price">
840$15.00</span>
841</div>
842<div>
843<span class="OnlineStoreCatalog_list_price_alt">
844$10.00 - Member price
845</span>
846</div></li><li class="OnlineStoreCatalog_list_item">
847  <a class="OnlineStoreCatalog_list_item_img" href="/Sys/Store/Products/357662"><img src="https://friendsofvillagrande.wildapricot.org/resources/68667072/IMG_0271.jpeg" /></a>
848  <a class="OnlineStoreCatalog_list_item_link" href="/Sys/Store/Products/357662">V-Neck: Villa Grande</a>
849  <div>
850	<span class="OnlineStoreCatalog_list_price">
851$15.00</span>
852</div>
853<div>
854<span class="OnlineStoreCatalog_list_price_alt">
855$10.00 - Member price
856</span>
857</div></li><li class="OnlineStoreCatalog_list_item">
858  <a class="OnlineStoreCatalog_list_item_img" href="/Sys/Store/Products/355491"><img src="https://friendsofvillagrande.wildapricot.org/resources/68667072/IMG_0242.jpeg" /></a>
859  <a class="OnlineStoreCatalog_list_item_link" href="/Sys/Store/Products/355491">Black Cap: Villa Grande</a>
860  <div>
861	<span class="OnlineStoreCatalog_list_price">
862$20.00</span>
863</div>
864<div>
865</div></li><li class="OnlineStoreCatalog_list_item">
866  <a class="OnlineStoreCatalog_list_item_img" href="/Sys/Store/Products/355480"><img src="https://friendsofvillagrande.wildapricot.org/resources/68667072/67CC36BB-06AC-4F6D-B40D-8C524DFB5CF2_1_105_c.jpeg" /></a>
867  <a class="OnlineStoreCatalog_list_item_link" href="/Sys/Store/Products/355480">Zip Up Hoodie: Forest Green</a>
868  <div>
869	<span class="OnlineStoreCatalog_list_price">
870$40.00</span>
871</div>
872<div>
873</div></li><li class="OnlineStoreCatalog_list_item">
874  <a class="OnlineStoreCatalog_list_item_img" href="/Sys/Store/Products/355476"><img src="https://friendsofvillagrande.wildapricot.org/resources/68667072/568F6B4F-5BE2-4082-9B3C-719CEE9A4A26_1_105_c.jpeg" /></a>
875  <a class="OnlineStoreCatalog_list_item_link" href="/Sys/Store/Products/355476">Crew Neck: FOVG</a>
876  <div>
877	<span class="OnlineStoreCatalog_list_price">
878$15.00</span>
879</div>
880<div>
881<span class="OnlineStoreCatalog_list_price_alt">
882$10.00 - Member price
883</span>
884</div></li><li class="OnlineStoreCatalog_list_item">
885  <a class="OnlineStoreCatalog_list_item_img" href="/Sys/Store/Products/355475"><img src="https://friendsofvillagrande.wildapricot.org/resources/68667072/AA37C413-D0C2-4633-9802-4514DC115D64_1_105_c.jpeg" /></a>
886  <a class="OnlineStoreCatalog_list_item_link" href="/Sys/Store/Products/355475">
886Crew Neck: Villa Grande VG</a>
887  <div>
888	<span class="OnlineStoreCatalog_list_price">
889$15.00</span>
890</div>
891<div>
892<span class="OnlineStoreCatalog_list_price_alt">
893$10.00 - Member price
894</span>
895</div></li><li class="OnlineStoreCatalog_list_item">
896  <a class="OnlineStoreCatalog_list_item_img" href="/Sys/Store/Products/339164"><img src="https://friendsofvillagrande.wildapricot.org/resources/68667072/D9D71EFE-6780-49FB-AC66-57401C4285B5_1_105_c.jpeg" /></a>
897  <a class="OnlineStoreCatalog_list_item_link" href="/Sys/Store/Products/339164">Tank top: Villa Grande, Gray w Black Trim</a>
898  <div>
899	<span class="OnlineStoreCatalog_list_price">
900$15.00</span>
901</div>
902<div>
903<span class="OnlineStoreCatalog_list_price_alt">
904$10.00 - Member price
905</span>
906</div></li><li class="OnlineStoreCatalog_list_item">
907  <a class="OnlineStoreCatalog_list_item_img" href="/Sys/Store/Products/339163"><img src="https://friendsofvillagrande.wildapricot.org/resources/68667072/D385DA04-2097-4C6E-B3C0-C992B3238E0E_1_105_c.jpeg" /></a>
908  <a class="OnlineStoreCatalog_list_item_link" href="/Sys/Store/Products/339163">Tank Top: FOVG, Blue w Red Trim</a>
909  <div>
910	<span class="OnlineStoreCatalog_list_price">
911$15.00</span>
912</div>
913<div>
914<span class="OnlineStoreCatalog_list_price_alt">
915$10.00 - Member price
916</span>
917</div></li></ul>
918</div></div>
919</div></div>
920		</div>
921	</div>
922	<!-- /content zone -->
923
924<!-- footer zone -->
925		<div class="zoneFooterOuter">
926			<div class="zoneFooter container_12">
927				<div class="zoneFooterInner s1_grid_12 s2_grid_12 s3_grid_12">
928<div id="id_Footer" data-componentId="Footer" class="WaPlaceHolder WaPlaceHolderFooter" style=""><div style="padding-top:0px;padding-right:0px;padding-left:0px;"><div id="id_GHQRGWh" class="WaGadgetOnly WaGadgetMenuHorizontal invert menuStyle001" style="" data-componentId="GHQRGWh" ><div data-sticky-wrapper="true">
929    <div class="stickness">
930        <div class="menuBackground"></div>
931        <div class="menuInner">
932            <ul class="firstLevel">
933                <li class=" ">
934	<div class="item">
935		<a href="https://villagrande.org/" title="Home"><span>Home</span></a>
936</div>
937</li>
938	
939<li class=" ">
940	<div class="item">
941		<a href="https://villagrande.org/friends-of-villa-grande" title="Friends of Villa Grande"><span>Friends of Villa Grande</span></a>
942</div>
943</li>
944	
945<li class=" ">
946	<div class="item">
947		<a href="https://villagrande.org/patterson-point-preserve" title="Patterson Point Preserve"><span>Patterson Point Preserve</span></a>
948</div>
949</li>
950	
951<li class=" ">
952	<div class="item">
953		<a href="https://villagrande.org/our-community" title="Our Community"><span>Our Community</span></a>
954</div>
955</li>
956	
957<li class=" ">
958	<div class="item">
959		<a href="https://villagrande.org/MENU-HIDE" title="MENU HIDE"><span>MENU HIDE</span></a>
960</div>
961</li>
962	
963<li class=" ">
964	<div class="item">
965		<a href="https://villagrande.org/Search" title="Search"><span>Search</span></a>
966</div>
967</li>
968	
969</ul>
970        </div>
971    </div>
972</div>
973
974<script type="text/javascript">
975    if (window.WaMenuHorizontal)
976    {
977        jq$(document).ready(function()
978        {
979            new stickyPlaceholder();
980            new WaMenuHorizontal({ id: "id_GHQRGWh" });
981        });
982    }
983</script>
983
984
985
986<script type="text/javascript">
987    jq$(function()
988    {
989        var gadgetHorMenu = jq$('#id_GHQRGWh');
990        var leftOffset;
991
992        function resizeBg()
993        {
994            // background track
995
996            leftOffset = (gadgetHorMenu.closest('.WaLayoutTable').length > 0) ? gadgetHorMenu.closest('.WaLayoutTable').width() : gadgetHorMenu.width();
997
998            gadgetHorMenu.find('.menuBackground').css(
999            {
1000                'width': jq$('body').width(),
1001                'left': ( ( jq$('body').width() - leftOffset ) * -0.5 )
1002            });
1003        }
1004
1005        resizeBg();
1006
1007        jq$(window).resize(function()
1008        {
1009            resizeBg();
1010        });
1011    });
1012</script>
1012</div></div>
1013</div></div>
1014			</div>
1015		</div>
1016
1017        <div class="zoneFooter1Outer">
1018            <div class="zoneFooter1 container_12">
1019                <div class="zoneFooter1Inner s1_grid_12 s2_grid_12 s3_grid_12">
1020                    <div id="id_Footer1" data-componentId="Footer1" class="WaPlaceHolder WaPlaceHolderFooter1" style=""><div style="padding-right:0px;padding-bottom:0px;padding-left:0px;"><div id="id_vPTGQ7j" data-componentId="vPTGQ7j" class="WaLayoutContainerOnly" style=""><table cellspacing="0" cellpadding="0" class="WaLayoutTable" style=""><tr data-componentId="vPTGQ7j_row" class="WaLayoutRow"><td id="id_iS2J2bd" data-componentId="iS2J2bd" class="WaLayoutItem" style="width:100%;"><div id="id_vJAaO9J" class="WaLayoutPlaceHolder placeHolderContainer" data-componentId="vJAaO9J" style=""><div style="padding-top:40px;padding-right:40px;padding-bottom:30px;padding-left:40px;"><div id="id_tLAXTEI" class="WaGadgetFirst WaGadgetContent  gadgetStyleNone" style="" data-componentId="tLAXTEI" ><div class="gadgetStyleBody gadgetContentEditableArea" style="" data-editableArea="0" data-areaHeight="auto">
1021<div align="center">
1022  <a href="/" title="FoVG - Home"><img src="/resources/Pictures/FoVG/FoVG_Logo-web-large-white.png" title="" alt="Friends of Villa Grande logo" border="0" width="352"></a>
1023</div></div>
1024</div><div id="id_FaRDwin" class="WaGadgetLast WaGadgetContent  gadgetStyleNone" style="margin-bottom:30px;" data-componentId="VWtpbgk" ><div class="gadgetStyleBody gadgetContentEditableArea" style="" data-editableArea="0" data-areaHeight="auto">
1025<div align="center">
1026  <font color="#FFFFFF">P.O. Box 28, Villa Grande CA 95486</font>
1027</div>
1028
1029<div align="center">
1030  <font color="#FFFFFF">Friends of Villa Grande&nbsp;is a 501(c)(3), non-profit organization (tax ID 64-0964108)</font>
1031</div>
1032
1033<div align="center">
1034  <font color="#FFFFFF"><a href="http://www.friendsofvillagrande.org">www.friendsofvillagrande.org</a> | <a href="mailto:[email protected]" target="_blank">[email protected]</a> | <a href="/accessibility">Accessibility</a></font>
1035</div></div>
1036</div></div></div></td></tr></table> </div></div>
1037</div></div>
1038            </div>
1039        </div>
1040		<!-- /footer zone -->
1041
1042		<!-- branding zone -->
1043<div class="zoneBrandingOuter">
1044			<div class="zoneBranding container_12">
1045				<div class="zoneBrandingInner s1_grid_12 s2_grid_12 s3_grid_12">
1046<div id="idFooterPoweredByContainer">
1047	<span id="idFooterPoweredByWA">
1048Powered by <a href="http://www.wildapricot.com" target="_blank">Wild Apricot</a> Membership Software</span>
1049</div>
1050</div>
1051			</div>
1052		</div>
1053<!-- /branding zone -->
1054<div id="idCustomJsContainer" class="cnCustomJsContainer">
1055<script>
1056try
1057{
1058    
1059/* FOVG accessibility shim v1.1 — Peter Otte Productions — built 2026-09-22 11:12 PDT (v1.0 2026-09-21 = blocks 1–6; v1.1 2026-09-22 = blocks 7–10).
1060   Paste this whole block into Website → Settings → Site settings → Global JavaScript (with the GA4 tag, if any).
1061   Wild Apricot's system gadgets (login, forms, store, mobile panel) render without labels or accessible
1062   names and cannot be edited in the theme, so this adds them at page load. Safe to remove at any time. */
1063(function () {
1064  function ready(fn) { if (document.readyState !== 'loading') fn(); else document.addEventListener('DOMContentLoaded', fn); }
1065  ready(function () {
1066    try {
1067      /* 1. Main landmark + skip link (WCAG 2.4.1) */
1068      var main = document.getElementById('id_Content') || document.getElementById('id_Header1');
1069      if (!main) {
1070        var ph = document.querySelectorAll('.WaPlaceHolder');
1071        for (var i = 0; i < ph.length; i++) {
1072          var c = ph[i].className;
1073          if (c.indexOf('MobilePanel') < 0 && c.indexOf('PlaceHolderHeader') < 0 && c.indexOf('Footer') < 0) { main = ph[i]; break; }
1074        }
1075      }
1076      if (main) {
1077        main.id = main.id || 'fovg-main';
1078        if (!document.querySelector('[role="main"], main')) main.setAttribute('role', 'main');
1079        main.setAttribute('tabindex', '-1');
1080        var skip = document.createElement('a');
1081        skip.className = 'fovg-skip'; skip.href = '#' + main.id; skip.textContent = 'Skip to main content';
1082        skip.addEventListener('click', function (e) { e.preventDefault(); main.focus(); main.scrollIntoView(); });
1083        document.body.insertBefore(skip, document.body.firstChild);
1084      }
1085      var nav = document.querySelector('.WaGadgetMenuHorizontal');
1086      if (nav && !nav.getAttribute('role')) { nav.setAttribute('role', 'navigation'); nav.setAttribute('aria-label', 'Main menu'); }
1087
1088      /* 2. Inputs that only have a placeholder (login box, search) get an accessible name from it */
1089      var inputs = document.querySelectorAll('input, select, textarea');
1090      for (var j = 0; j < inputs.length; j++) {
1091        var el = inputs[j], t = (el.getAttribute('type') || '').toLowerCase();
1092        if (t === 'hidden' || t === 'submit' || t === 'button' || t === 'image') continue;
1093        var labelled = el.getAttribute('aria-label') || el.getAttribute('aria-labelledby') || (el.id && document.querySelector('label[for="' + el.id + '"]')) || el.closest('label');
1094        if (labelled) continue;
1095        /* 3. Wild Apricot form fields: the visible title sits in .fieldLabel span[id$="_titleLabel"] in the same row */
1096        var row = el.closest('tr') || el.closest('.fieldContainer') || el.closest('.fieldSubContainer');
1097        var title = row && row.querySelector('.fieldLabel span[id$="_titleLabel"], .fieldLabel .mandatoryLabel, .fieldLabel');
1098        if (title && title.textContent.trim()) {
1099          if (!title.id) title.id = 'fovg-lbl-' + j;
1100          el.setAttribute('aria-labelledby', title.id);
1101          if (row.querySelector('.mandatorySymbol')) el.setAttribute('aria-required', 'true');
1102        } else if (el.getAttribute('placeholder')) {
1103          el.setAttribute('aria-label', el.getAttribute('placeholder'));
1104        }
1105      }
1106
1107      /* 4. Store catalog: the image link duplicates the title link and has no name — make the image
1108            describe the product and take the duplicate link out of the tab order (WCAG 1.1.1, 2.4.4) */
1109      var items = document.querySelectorAll('.OnlineStoreCatalog_list_item');
1110      for (var k = 0; k < items.length; k++) {
1111        var link = items[k].querySelector('.OnlineStoreCatalog_list_item_link');
1112        var imgLink = items[k].querySelector('.OnlineStoreCatalog_list_item_img');
1113        var name = link ? link.textContent.trim() : '';
1114        var img = imgLink && imgLink.querySelector('img');
1115        if (img && !img.getAttribute('alt')) img.setAttribute('alt', name);
1116        if (imgLink && link) { imgLink.setAttribute('aria-hidden', 'true'); imgLink.setAttribute('tabindex', '-1'); }
1117      }
1118      /* Product detail pages: the big photo usually has no alt either */
1119      var detailImgs = document.querySelectorAll('.OnlineStoreProduct img:not([alt]), .WaGadgetOnlineStoreProduct img:not([alt])');
1120      var h1 = document.querySelector('h1');
1121      for (var d = 0; d < detailImgs.length; d++) detailImgs[d].setAttribute('alt', h1 ? h1.textContent.trim() : 'Product photo');
1122
1123      /* 5. Mobile panel "Menu" / "Log in" are divs — make them real keyboard buttons (WCAG 2.1.1) */
1124      var btns = document.querySelectorAll('.mobilePanelButton');
1125      for (var b = 0; b < btns.length; b++) {
1126        btns[b].setAttribute('role', 'button'); btns[b].setAttribute('tabindex', '0');
1127        btns[b].addEventListener('keydown', function (e) { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); this.click(); } });
1128      }
1129
1130      /* 6. Empty headings that Wild Apricot emits for blank title gadgets add noise to the outline */
1131      var hs = document.querySelectorAll('h1, h2, h3, h4, h5, h6');
1132      for (var h = 0; h < hs.length; h++) {
1133        if (!hs[h].textContent.trim() && !hs[h].querySelector('img')) hs[h].parentNode.removeChild(hs[h]);
1134      }
1135
1136      /* 7. Heading outline repair (drop 2, 9/22): Wild Apricot's system gadgets emit h3/h4 titles with no h2 above
1137         them (Donation, Select membership level, Upcoming/Past events), and content pages jump h1 -> h4. Screen
1138         readers honour aria-level, so a heading that skips a level is announced at the next level down instead. */
1139      var last = 0, all = document.querySelectorAll('h1, h2, h3, h4, h5, h6');
1140      for (var k = 0; k < all.length; k++) {
1141        var lvl = parseInt(all[k].tagName.charAt(1), 10);
1142        if (last && lvl > last + 1) { all[k].setAttribute('role', 'heading'); all[k].setAttribute('aria-level', String(last + 1)); lvl = last + 1; }
1143        last = lvl;
1144      }
1145
1146      /* 8. Events gadget: the list/calendar view-switcher icon is a system image with no alt (decorative; the
1147         switch itself is a labelled control) */
1148      var deco = document.querySelectorAll('img.calendarModeIcon, img[id$="calendarModeIcon"], img[id$="listModeIcon"], img[src*="async-load-progress"], img.lb
1148-image');
1149      for (var i2 = 0; i2 < deco.length; i2++) { if (!deco[i2].hasAttribute('alt')) { deco[i2].setAttribute('alt', ''); deco[i2].setAttribute('role', 'presentation'); } }
1150
1151      /* 9. The events gadget prints a second, text-less <h1 class="SystemPageTitle"> that only holds the RSS link.
1152         Keep the link, drop the heading semantics so the page has one title. */
1153      var sys = document.querySelectorAll('h1.SystemPageTitle, h2.SystemPageTitle');
1154      for (var i3 = 0; i3 < sys.length; i3++) { if (!sys[i3].textContent.trim()) sys[i3].setAttribute('role', 'presentation'); }
1155
1156      /* 10. Wild Apricot writes autocomplete="nope" on donation/membership fields to defeat autofill; "nope" is not a
1157         valid token (WCAG 1.3.5), "off" is. And the icon-only RSS link on the events page gets a name. */
1158      var ac = document.querySelectorAll('[autocomplete="nope"]');
1159      for (var i4 = 0; i4 < ac.length; i4++) ac[i4].setAttribute('autocomplete', 'off');
1160      var rss = document.querySelectorAll('a[id$="_rssLink"], a[href$="/events/RSS"]');
1161      for (var i5 = 0; i5 < rss.length; i5++) { if (!rss[i5].textContent.trim() && !rss[i5].getAttribute('aria-label')) rss[i5].setAttribute('aria-label', 'Events RSS feed'); }
1162    } catch (err) { if (window.console) console.warn('FOVG a11y shim:', err); }
1163  });
1164})();
1165
1166}
1167catch(err)
1168{}</script>
1168</div>
1169</div></body>
1170</html>
1171<script type="text/javascript">if (window.BonaPage && BonaPage.setPageState) { BonaPage.setPageState(BonaPage.PAGE_PARSED); }</script>

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.