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='18122'; 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) - News</title> 24<link rel="search" type="application/opensearchdescription+xml" title="villagrande.org" href="/opensearch.ashx" /></head> 25 <body id="PAGEID_18122" 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 & Firehouse Plaza"><span>VGFD & 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 & Septic"><span>Water Quality & 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 & Drainage"><span>Roads & 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="sel 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 & Firehouse Plaza"><span>VGFD & 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 & Septic"><span>Water Quality & 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 & Drainage"><span>Roads & 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="sel 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><a href="https://villagrande.org/MENU-HIDE">MENU HIDE</a></li> 808<li class="last"><span>News</span></li> 809</ul> 810</div> 811</div></div> 812</div></div> 813 </div> 814 </div> 815 <!-- /header zone --> 816 817<!-- content zone --> 818 <div class="zoneContentOuter"> 819 <div class="zoneContent container_12"> 820 <div class="zoneContentInner s1_grid_12 s2_grid_12 s3_grid_12"> 821<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_DFGVLij" data-componentId="DFGVLij" class="WaLayoutContainerFirst" style=""><table cellspacing="0" cellpadding="0" class="WaLayoutTable" style=""><tr data-componentId="DFGVLij_row" class="WaLayoutRow"><td id="id_ssJLloI" data-componentId="ssJLloI" class="WaLayoutItem" style="width:8%;"></td><td style="" data-componentId="ssJLloI_separator" class="WaLayoutSeparator"><div style="width: inherit;"></div></td><td id="id_CVgkiuk" data-componentId="CVgkiuk" class="WaLayoutItem" style="width:83%;"><div id="id_vzcaq57" class="WaLayoutPlaceHolder placeHolderContainer" data-componentId="vzcaq57" style=""><div style=""><div id="id_2Apu8TZ" class="WaGadgetFirst WaGadgetContent gadgetStyleNone" style="" data-componentId="2Apu8TZ" ><div class="gadgetStyleBody gadgetContentEditableArea" style="" data-editableArea="0" data-areaHeight="auto"> 822<h1 align="center">News</h1></div> 823</div><div id="id_fe9Un1X" class="WaGadgetLast WaGadgetContent gadgetStyleNone" style="" data-componentId="fe9Un1X" ><div class="gadgetStyleBody gadgetContentEditableArea" style="" data-editableArea="0" data-areaHeight="auto"> 824<p align="center">Stay up to date on news from the Friends of Villa Grande. Click the links below to see timely announcements and read our current and past newsletters.</p></div> 825</div></div></div></td><td style="" data-componentId="CVgkiuk_separator" class="WaLayoutSeparator"><div style="width: inherit;"></div></td><td id="id_EOSjTBB" data-componentId="EOSjTBB" class="WaLayoutItem" style="width:8%;"></td></tr></table> </div><div id="id_bBzWdMD" class="WaGadgetLast WaGadgetContent gadgetStyleNone" style="" data-componentId="bBzWdMD" ><div class="gadgetStyleBody gadgetContentEditableArea" style="" data-editableArea="0" data-areaHeight="auto"> 826<p align="center"><a href="/Announcements" class="stylizedButton buttonStyle002">Announcements</a><a href="/Newsletters" class="stylizedButton buttonStyle002">Newsletters</a></p></div> 827</div></div> 828</div></div> 829 </div> 830 </div> 831 <!-- /content zone --> 832 833<!-- footer zone --> 834 <div class="zoneFooterOuter"> 835 <div class="zoneFooter container_12"> 836 <div class="zoneFooterInner s1_grid_12 s2_grid_12 s3_grid_12"> 837<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"> 838 <div class="stickness"> 839 <div class="menuBackground"></div> 840 <div class="menuInner"> 841 <ul class="firstLevel"> 842 <li class=" "> 843 <div class="item"> 844 <a href="https://villagrande.org/" title="Home"><span>Home</span></a> 845</div> 846</li> 847 848<li class=" "> 849 <div class="item"> 850 <a href="https://villagrande.org/friends-of-villa-grande" title="Friends of Villa Grande"><span>Friends of Villa Grande</span></a> 851</div> 852</li> 853 854<li class=" "> 855 <div class="item"> 856 <a href="https://villagrande.org/patterson-point-preserve" title="Patterson Point Preserve"><span>Patterson Point Preserve</span></a> 857</div> 858</li> 859 860<li class=" "> 861 <div class="item"> 862 <a href="https://villagrande.org/our-community" title="Our Community"><span>Our Community</span></a> 863</div> 864</li> 865 866<li class=" "> 867 <div class="item"> 868 <a href="https://villagrande.org/MENU-HIDE" title="MENU HIDE"><span>MENU HIDE</span></a> 869</div> 870</li> 871 872<li class=" "> 873 <div class="item"> 874 <a href="https://villagrande.org/Search" title="Search"><span>Search</span></a> 875</div> 876</li> 877 878</ul> 879 </div> 880 </div> 881</div> 882
883<script type="text/javascript"> 884 if (window.WaMenuHorizontal) 885 { 886 jq$(document).ready(function() 887 { 888 new stickyPlaceholder(); 889 new WaMenuHorizontal({ id: "id_GHQRGWh" }); 890 }); 891 } 892</script>
892 893 894
895<script type="text/javascript"> 896 jq$(function() 897 { 898 var gadgetHorMenu = jq$('#id_GHQRGWh'); 899 var leftOffset; 900 901 function resizeBg() 902 { 903 // background track 904 905 leftOffset = (gadgetHorMenu.closest('.WaLayoutTable').length > 0) ? gadgetHorMenu.closest('.WaLayoutTable').width() : gadgetHorMenu.width(); 906 907 gadgetHorMenu.find('.menuBackground').css( 908 { 909 'width': jq$('body').width(), 910 'left': ( ( jq$('body').width() - leftOffset ) * -0.5 ) 911 }); 912 } 913 914 resizeBg(); 915 916 jq$(window).resize(function() 917 { 918 resizeBg(); 919 }); 920 }); 921</script>
921</div></div> 922</div></div> 923 </div> 924 </div> 925 926 <div class="zoneFooter1Outer"> 927 <div class="zoneFooter1 container_12"> 928 <div class="zoneFooter1Inner s1_grid_12 s2_grid_12 s3_grid_12"> 929 <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"> 930<div align="center"> 931 <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> 932</div></div> 933</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"> 934<div align="center"> 935 <font color="#FFFFFF">P.O. Box 28, Villa Grande CA 95486</font> 936</div> 937 938<div align="center"> 939 <font color="#FFFFFF">Friends of Villa Grande is a 501(c)(3), non-profit organization (tax ID 64-0964108)</font> 940</div> 941 942<div align="center"> 943 <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> 944</div></div> 945</div></div></div></td></tr></table> </div></div> 946</div></div> 947 </div> 948 </div> 949 <!-- /footer zone --> 950 951 <!-- branding zone --> 952<div class="zoneBrandingOuter"> 953 <div class="zoneBranding container_12"> 954 <div class="zoneBrandingInner s1_grid_12 s2_grid_12 s3_grid_12"> 955<div id="idFooterPoweredByContainer"> 956 <span id="idFooterPoweredByWA"> 957Powered by <a href="http://www.wildapricot.com" target="_blank">Wild Apricot</a> Membership Software</span> 958</div> 959</div> 960 </div> 961 </div> 962<!-- /branding zone --> 963<div id="idCustomJsContainer" class="cnCustomJsContainer">
964<script> 965try 966{ 967 968/* 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). 969 Paste this whole block into Website â Settings â Site settings â Global JavaScript (with the GA4 tag, if any). 970 Wild Apricot's system gadgets (login, forms, store, mobile panel) render without labels or accessible 971 names and cannot be edited in the theme, so this adds them at page load. Safe to remove at any time. */ 972(function () { 973 function ready(fn) { if (document.readyState !== 'loading') fn(); else document.addEventListener('DOMContentLoaded', fn); } 974 ready(function () { 975 try { 976 /* 1. Main landmark + skip link (WCAG 2.4.1) */ 977 var main = document.getElementById('id_Content') || document.getElementById('id_Header1'); 978 if (!main) { 979 var ph = document.querySelectorAll('.WaPlaceHolder'); 980 for (var i = 0; i < ph.length; i++) { 981 var c = ph[i].className; 982 if (c.indexOf('MobilePanel') < 0 && c.indexOf('PlaceHolderHeader') < 0 && c.indexOf('Footer') < 0) { main = ph[i]; break; } 983 } 984 } 985 if (main) { 986 main.id = main.id || 'fovg-main'; 987 if (!document.querySelector('[role="main"], main')) main.setAttribute('role', 'main'); 988 main.setAttribute('tabindex', '-1'); 989 var skip = document.createElement('a'); 990 skip.className = 'fovg-skip'; skip.href = '#' + main.id; skip.textContent = 'Skip to main content'; 991 skip.addEventListener('click', function (e) { e.preventDefault(); main.focus(); main.scrollIntoView(); }); 992 document.body.insertBefore(skip, document.body.firstChild); 993 } 994 var nav = document.querySelector('.WaGadgetMenuHorizontal'); 995 if (nav && !nav.getAttribute('role')) { nav.setAttribute('role', 'navigation'); nav.setAttribute('aria-label', 'Main menu'); } 996 997 /* 2. Inputs that only have a placeholder (login box, search) get an accessible name from it */ 998 var inputs = document.querySelectorAll('input, select, textarea'); 999 for (var j = 0; j < inputs.length; j++) { 1000 var el = inputs[j], t = (el.getAttribute('type') || '').toLowerCase(); 1001 if (t === 'hidden' || t === 'submit' || t === 'button' || t === 'image') continue; 1002 var labelled = el.getAttribute('aria-label') || el.getAttribute('aria-labelledby') || (el.id && document.querySelector('label[for="' + el.id + '"]')) || el.closest('label'); 1003 if (labelled) continue; 1004 /* 3. Wild Apricot form fields: the visible title sits in .fieldLabel span[id$="_titleLabel"] in the same row */ 1005 var row = el.closest('tr') || el.closest('.fieldContainer') || el.closest('.fieldSubContainer'); 1006 var title = row && row.querySelector('.fieldLabel span[id$="_titleLabel"], .fieldLabel .mandatoryLabel, .fieldLabel'); 1007 if (title && title.textContent.trim()) { 1008 if (!title.id) title.id = 'fovg-lbl-' + j; 1009 el.setAttribute('aria-labelledby', title.id); 1010 if (row.querySelector('.mandatorySymbol')) el.setAttribute('aria-required', 'true'); 1011 } else if (el.getAttribute('placeholder')) { 1012 el.setAttribute('aria-label', el.getAttribute('placeholder')); 1013 } 1014 } 1015 1016 /* 4. Store catalog: the image link duplicates the title link and has no name â make the image 1017 describe the product and take the duplicate link out of the tab order (WCAG 1.1.1, 2.4.4) */ 1018 var items = document.querySelectorAll('.OnlineStoreCatalog_list_item'); 1019 for (var k = 0; k < items.length; k++) { 1020 var link = items[k].querySelector('.OnlineStoreCatalog_list_item_link'); 1021 var imgLink = items[k].querySelector('.OnlineStoreCatalog_list_item_img'); 1022 var name = link ? link.textContent.trim() : ''; 1023 var img = imgLink && imgLink.querySelector('img'); 1024 if (img && !img.getAttribute('alt')) img.setAttribute('alt', name); 1025 if (imgLink && link) { imgLink.setAttribute('aria-hidden', 'true'); imgLink.setAttribute('tabindex', '-1'); } 1026 } 1027 /* Product detail pages: the big photo usually has no alt either */ 1028 var detailImgs = document.querySelectorAll('.OnlineStoreProduct img:not([alt]), .WaGadgetOnlineStoreProduct img:not([alt])'); 1029 var h1 = document.querySelector('h1'); 1030 for (var d = 0; d < detailImgs.length; d++) detailImgs[d].setAttribute('alt', h1 ? h1.textContent.trim() : 'Product photo'); 1031 1032 /* 5. Mobile panel "Menu" / "Log in" are divs â make them real keyboard buttons (WCAG 2.1.1) */ 1033 var btns = document.querySelectorAll('.mobilePanelButton'); 1034 for (var b = 0; b < btns.length; b++) { 1035 btns[b].setAttribute('role', 'button'); btns[b].setAttribute('tabindex', '0'); 1036 btns[b].addEventListener('keydown', function (e) { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); this.click(); } }); 1037 } 1038 1039 /* 6. Empty headings that Wild Apricot emits for blank title gadgets add noise to the outline */ 1040 var hs = document.querySelectorAll('h1, h2, h3, h4, h5, h6'); 1041 for (var h = 0; h < hs.length; h++) { 1042 if (!hs[h].textContent.trim() && !hs[h].querySelector('img')) hs[h].parentNode.removeChild(hs[h]); 1043 } 1044 1045 /* 7. Heading outline repair (drop 2, 9/22): Wild Apricot's system gadgets emit h3/h4 titles with no h2 above 1046 them (Donation, Select membership level, Upcoming/Past events), and content pages jump h1 -> h4. Screen 1047 readers honour aria-level, so a heading that skips a level is announced at the next level down instead. */ 1048 var last = 0, all = document.querySelectorAll('h1, h2, h3, h4, h5, h6'); 1049 for (var k = 0; k < all.length; k++) { 1050 var lvl = parseInt(all[k].tagName.charAt(1), 10); 1051 if (last && lvl > last + 1) { all[k].setAttribute('role', 'heading'); all[k].setAttribute('aria-level', String(last + 1)); lvl = last + 1; } 1052 last = lvl; 1053 } 1054 1055 /* 8. Events gadget: the list/calendar view-switcher icon is a system image with no alt (decorative; the 1056 switch itself is a labelled control) */ 1057 var deco = document.querySelectorAll('img.calendarModeIcon, img[id$="calendarModeIcon"], img[id$="listModeIcon"], img[src*="async-load-progress"], img.lb
1057-image'); 1058 for (var i2 = 0; i2 < deco.length; i2++) { if (!deco[i2].hasAttribute('alt')) { deco[i2].setAttribute('alt', ''); deco[i2].setAttribute('role', 'presentation'); } } 1059 1060 /* 9. The events gadget prints a second, text-less <h1 class="SystemPageTitle"> that only holds the RSS link. 1061 Keep the link, drop the heading semantics so the page has one title. */ 1062 var sys = document.querySelectorAll('h1.SystemPageTitle, h2.SystemPageTitle'); 1063 for (var i3 = 0; i3 < sys.length; i3++) { if (!sys[i3].textContent.trim()) sys[i3].setAttribute('role', 'presentation'); } 1064 1065 /* 10. Wild Apricot writes autocomplete="nope" on donation/membership fields to defeat autofill; "nope" is not a 1066 valid token (WCAG 1.3.5), "off" is. And the icon-only RSS link on the events page gets a name. */ 1067 var ac = document.querySelectorAll('[autocomplete="nope"]'); 1068 for (var i4 = 0; i4 < ac.length; i4++) ac[i4].setAttribute('autocomplete', 'off'); 1069 var rss = document.querySelectorAll('a[id$="_rssLink"], a[href$="/events/RSS"]'); 1070 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'); } 1071 } catch (err) { if (window.console) console.warn('FOVG a11y shim:', err); } 1072 }); 1073})(); 1074 1075} 1076catch(err) 1077{}</script>
1077</div> 1078</div></body> 1079</html>
1080<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.