1<!DOCTYPE html> 2<html lang="en"> 3<head> 4<!-- ================================================================================================================= --> 5<!-- 6o Well, hello there! :-) 7o The Content Management System for this website is RocketFusion.com 8o RocketFusion and the RocketFusion logo are copyright Montague WebWorks, Inc. 9o Please direct code comments/feedback to https://MontagueWebWorks.com/contact 10o All content updated by the client: Athol Public Library 11--> 12<!-- ================================================================================================================= --> 13<!-- Title and App Tags --> 14<!-- 20260911135345 --> 15<title>Contact - Athol Public Library</title> 16<meta property="og:title" content="Contact"> 17<meta property="twitter:title" content="Contact - Athol Public Library"> 18<meta itemprop="name" content="Contact - Athol Public Library"> 19<!-- safari --> 20<meta name="apple-mobile-web-app-title" content="Contact - Athol Public Library"> 21<meta name="apple-mobile-web-app-capable" content="yes"> 22<meta name="apple-touch-fullscreen" content="yes"> 23<!-- chrome --> 24<meta name="mobile-web-app-capable" content="yes"> 25<!-- ie 10 --> 26<meta name="application-name" content="Contact - Athol Public Library"> 27<meta name="msapplication-tooltip" content="Contact - Athol Public Library"> 28<meta name="msapplication-starturl" content="/"> 29<!-- ================================================================================================================= --> 30<!-- Standard on all pages --> 31<meta charset="UTF-8" /> 32<meta http-equiv="content-type" content="text/html;charset=UTF-8"> 33<meta http-equiv="cache-control" content="public, max-age=86400"> 34<meta http-equiv="imagetoolbar" content="no"> 35<meta name="format-detection" content="telephone=yes"/><!-- was yes but Edge breaks it --> 36<!-- new google fonts --> 37<link rel="preconnect" href="https://fonts.googleapis.com"> 38<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 39<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=
39Fruktur"> 40<meta name="theme-color" content="white" /> 41<meta name="Language" content="en" /> 42<meta name="apple-mobile-web-app-status-bar-style" content="black" /> 43<meta name="verify-v1" content=" " /> 44<meta name="source" content="exists" /> 45<meta name="geo.placename" content="Athol" /> 46<meta name="google-site-verification" content=" " /> 47<meta name="p:domain_verify" content=" " /> 48<meta name="geo.position" content="" /> 49<meta name="msapplication-TileColor" content="white" /> 50<meta name="last-modified" content="2026-09-25" /> 51<meta name="geo.region" content="US-MA" /> 52<meta name="msvalidate.01" content=" " /> 53<!-- no Facebook Pixel ID --> 54<meta name="author" content="Athol Public Library" /> 55<meta name="owner" content="Athol Public Library" /> 56<meta name="copyright" content="Copyright 2026 Athol Public Library" /> 57<meta name="expires" content="Sep 25, 2026"> 58<meta name="generator" content="RocketFusion CMS" /> 59<meta name="Robots" content="noodp,noydir" /> 60<meta name="slurp" content="noydir" /> 61<meta name="googlebot" content="noodp" /> 62<meta name="msnbot" content="noodp" /> 63<meta name="MSSmartTagsPreventParsing" content="TRUE" /><!-- stops MS browsers from adding parsed keyword advertising on websites --> 64<meta name="viewport" content="width=device-width, initial-scale=1"><!-- , maximum-scale=1 --> 65<meta property="og:site_name" content="Athol Public Library"> 66<meta property="og:type" content="website" />
vendor: 77 bytes, lines 66-67
66 67<script src="https://www.google.com/recaptcha/api.js" async defer></script>
68<!-- ================================================================================================================= --> 69<!-- FAVICONS start --> 70<!-- favicon info --> 71<link rel="shortcut icon" href="/favicon.ico" /> 72<link rel="icon" href="/favicon.ico" type="image/x-icon" /> 73<link rel="apple-touch-icon" href="/favicon.ico"> 74<meta name="msapplication-TileImage" content="/favicon.ico"> 75<link rel="apple-touch-icon" sizes="16x16" href="/icons/favicon-16x16.png"> 76<link rel="icon" sizes="16x16" href="/icons/favicon-16x16.png"> 77<meta name="msapplication-square16x16logo" content="/icons/favicon-16x16.png"/> 78<link rel="apple-touch-icon" sizes="24x24" href="/icons/favicon-24x24.png"> 79<link rel="icon" sizes="24x24" href="/icons/favicon-24x24.png"> 80<meta name="msapplication-square24x24logo" content="/icons/favicon-24x24.png"/> 81<link rel="apple-touch-icon" sizes="32x32" href="/icons/favicon-32x32.png"> 82<link rel="icon" sizes="32x32" href="/icons/favicon-32x32.png"> 83<meta name="msapplication-square32x32logo" content="/icons/favicon-32x32.png"/> 84<link rel="apple-touch-icon" sizes="48x48" href="/icons/favicon-48x48.png"> 85<link rel="icon" sizes="48x48" href="/icons/favicon-48x48.png"> 86<meta name="msapplication-square48x48logo" content="/icons/favicon-48x48.png"/> 87<link rel="apple-touch-icon" sizes="57x57" href="/icons/favicon-57x57.png"> 88<link rel="icon" sizes="57x57" href="/icons/favicon-57x57.png"> 89<meta name="msapplication-square57x57logo" content="/icons/favicon-57x57.png"/> 90<link rel="apple-touch-icon" sizes="60x60" href="/icons/favicon-60x60.png"> 91<link rel="icon" sizes="60x60" href="/icons/favicon-60x60.png"> 92<meta name="msapplication-square60x60logo" content="/icons/favicon-60x60.png"/> 93<link rel="apple-touch-icon" sizes="64x64" href="/icons/favicon-64x64.png"> 94<link rel="icon" sizes="64x64" href="/icons/favicon-64x64.png"> 95<meta name="msapplication-square64x64logo" content="/icons/favicon-64x64.png"/> 96<link rel="apple-touch-icon" sizes="70x70" href="/icons/favicon-70x70.png"> 97<link rel="icon" sizes="70x70" href="/icons/favicon-70x70.png"> 98<meta name="msapplication-square70x70logo" content="/icons/favicon-70x70.png"/> 99<link rel="apple-touch-icon" sizes="72x72" href="/icons/favicon-72x72.png"> 100<link rel="icon" sizes="72x72" href="/icons/favicon-72x72.png"> 101<meta name="msapplication-square72x72logo" content="/icons/favicon-72x72.png"/> 102<link rel="apple-touch-icon" sizes="76x76" href="/icons/favicon-76x76.png"> 103<link rel="icon" sizes="76x76" href="/icons/favicon-76x76.png"> 104<meta name="msapplication-square76x76logo" content="/icons/favicon-76x76.png"/> 105<link rel="apple-touch-icon" sizes="96x96" href="/icons/favicon-96x96.png"> 106<link rel="icon" sizes="96x96" href="/icons/favicon-96x96.png"> 107<meta name="msapplication-square96x96logo" content="/icons/favicon-96x96.png"/> 108<link rel="apple-touch-icon" sizes="114x114" href="/icons/favicon-114x114.png"> 109<link rel="icon" sizes="114x114" href="/icons/favicon-114x114.png"> 110<meta name="msapplication-square114x114logo" content="/icons/favicon-114x114.png"/> 111<link rel="apple-touch-icon" sizes="120x120" href="/icons/favicon-120x120.png"> 112<link rel="icon" sizes="120x120" href="/icons/favicon-120x120.png"> 113<meta name="msapplication-square120x120logo" content="/icons/favicon-120x120.png"/> 114<link rel="apple-touch-icon" sizes="128x128" href="/icons/favicon-128x128.png"> 115<link rel="icon" sizes="128x128" href="/icons/favicon-128x128.png"> 116<meta name="msapplication-square128x128logo" content="/icons/favicon-128x128.png"/> 117<link rel="apple-touch-icon" sizes="144x144" href="/icons/favicon-144x144.png"> 118<link rel="icon" sizes="144x144" href="/icons/favicon-144x144.png"> 119<meta name="msapplication-square144x144logo" content="/icons/favicon-144x144.png"/> 120<link rel="apple-touch-icon" sizes="150x150" href="/icons/favicon-150x150.png"> 121<link rel="icon" sizes="150x150" href="/icons/favicon-150x150.png"> 122<meta name="msapplication-square150x150logo" content="/icons/favicon-150x150.png"/> 123<link rel="apple-touch-icon" sizes="152x152" href="/icons/favicon-152x152.png"> 124<link rel="icon" sizes="152x152" href="/icons/favicon-152x152.png"> 125<meta name="msapplication-square152x152logo" content="/icons/favicon-152x152.png"/> 126<link rel="apple-touch-icon" sizes="196x196" href="/icons/favicon-196x196.png"> 127<link rel="icon" sizes="196x196" href="/icons/favicon-196x196.png"> 128<meta name="msapplication-square196x196logo" content="/icons/favicon-196x196.png"/> 129<link rel="apple-touch-icon" sizes="310x310" href="/icons/favicon-310x310.png"> 130<link rel="icon" sizes="310x310" href="/icons/favicon-310x310.png"> 131<meta name="msapplication-square310x310logo" content="/icons/favicon-310x310.png"/> 132<link rel="manifest" href="/icons/manifest.json"> 133<meta name="apple-mobile-web-app-status-bar-style" content="black"> 134<meta name="msapplication-TileColor" content="white"> 135<meta name="theme-color" content="white"> 136<!-- MS Application Tasks (off for now) --> 137<!-- FAVICONS end --> 138<!-- this is the contact page --> 139<meta property="og:url" content="/contact"> 140<link rel="canonical" href="/contact"> 141<meta itemprop="image" content="/library/Exterior-2000_large.jpg"> 142<meta property="og:image" content="/library/Exterior-2000_large.jpg"> 143<meta property="twitter:image" content="/library/Exterior-2000_large.jpg"> 144<link rel="image_src" href="/library/Exterior-2000_large.jpg"> 145<meta property="og:image:alt" content="Contact"> 146<meta name="description" content="We have over 50,000 books, magazines, periodicals, books on tape, videos, c
146ompact discs, and other items, which are loaned to people who have a card."> 147<meta itemprop="description" content="We have over 50,000 books, magazines, periodicals, books on tape, videos, compact discs, and other items, which are loaned to people who have a card."> 148<meta property="og:description" content="We have over 50,000 books, magazines, periodicals, books on tape, videos, compact discs, and other items, which are loaned to people who have a card."> 149<meta property="twitter:description" content="We have over 50,000 books, magazines, periodicals, books on tape, videos, compact discs, and other items, which are loaned to people who have a card."> 150<!-- ================================================================================================================= -->
151<script src="https://kit.fontawesome.com/d3bffd01a6.js" crossorigin="anonymous"></script>
151 152<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"> 153<link rel="stylesheet" href="/RFassets/css/datatables-bs4.min.css"> 154<link rel="stylesheet" href="/RFAssets/css/RFtables.css?ver=20260911135345"> 155<link rel="stylesheet" href="/RFAssets/css/joey.css?ver=20260911135345"> 156<link rel="stylesheet" href="/site_style.css?ver=20260911135345"> 157<link rel="stylesheet" href="/header_style.css?ver=20260911135345"> 158<link rel="stylesheet" href="/RFAssets/css/_admin.css?ver=20260911135345"> 159<!-- custom stylesheet --> 160<link rel="stylesheet" href="/tmpl_Essence.css?ver=20260911135345">
161<script src="/RFAssets/js/boxover.js" type="text/javascript"></script>
vendor: 1 bytes, line 161
161
162<script type="text/javascript"> 163function toggleLayer(whichLayer,what) { 164if (document.getElementById) 165{ 166var style2 = document.getElementById(whichLayer).style; 167style2.display = what; 168} 169else if (document.all) 170{ 171var style2 = document.all[whichLayer].style; 172style2.display = what; 173} 174else if (document.layers) 175{ 176var style2 = document.layers[whichLayer].style; 177style2.display = what; 178} 179} 180function toggleCheckbox(source) { 181checkboxes = document.getElementsByName('file_delete'); 182for(var i=0, n=checkboxes.length;i<n;i++) { 183checkboxes[i].checked = source.checked; 184} 185} 186</script>
vendor: 1 bytes, line 186
186
187<script> 188/** 189* Function that tracks a click on an outbound link in Analytics. 190* This function takes a valid URL string as an argument, and uses that URL string 191* as the event label. Setting the transport method to 'beacon' lets the hit be sent 192* using 'navigator.sendBeacon' in browser that support it. 193*/ 194var trackOutboundLink = function(url) { 195ga('send', 'event', 'outbound', 'click', url, { 196'transport': 'beacon', 197'hitCallback': function(){document.location = url;} 198}); 199} 200</script>
200 201<!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 64 bytes, lines 201-202
201 202<script async src="https://www.googletagmanager.com/gtag/js?id=
202G-JMNTWSXRG4
vendor: 12 bytes, line 202
202"></script>
203<script>
vendor: 127 bytes, lines 204-207
204window.dataLayer = window.dataLayer || []; 205function gtag(){dataLayer.push(arguments);} 206gtag('js', new Date()); 207gtag('config', '
207G-JMNTWSXRG4
vendor: 4 bytes, line 207
207');
208</script>
208 209<!-- No text_Google_Tag_Manager_ID defined --> 210<!-- end of metatags --> 211</head> 212<body class="notMobile" 213id="default"> 214<!-- THESE ARE HERE (ADMIN) BECAUSE THEY NEED TO BE AT THE TOP OF THE BODY, NOT IN THE META TAGS --> 215<!-- No text_Google_Tag_Manager_ID defined --> 216<!-- ************************** start of head_header ***********************--> 217<style> 218@media (min-width:993px) { 219body { margin-top:100px!important; } 220} 221@media (min-width:769px) and (max-width:992px) { 222body { margin-top:97px!important; } 223} 224@media (min-width:577px) and (max-width:768px) { 225body { margin-top:92px!important; } 226} 227@media (min-width:516px) and (max-width:576px) { 228body { margin-top:100px!important; } 229} 230@media (min-width:471px and max-width:515px) { 231body { margin-top:115px!important; } 232} 233@media (max-width:470px) { 234body { margin-top:165px!important; } 235} 236</style> 237<header class="header_default fixed-top "> 238<div class=" inside-header-container"> 239<div class=" inside-header-row"> 240<div class=" inside-header-col"> 241<div class="NavInfoBar"> 242<!-- woot navbar --> 243<div class="nav-info-bar pl-0 pr-0 pt-2 pb-2 mt-0 mb-0 noprint"> 244<div class="brand-not-info-bar-1"> 245<div class="brand-not-info-bar-2"> 246<div class="container pl-0 pr-0"> 247<div class="row m-0 pl-0 pr-0 align-items-center"> 248<div class="col-sm-6 iconset-list text-left pl-0"> 249<span class="iconset text1"> 250<a id="infobar_1" href="/p/92/Directions-to-Athol-Public-Library" class="IBTextColorClass"> 251<i class="fa fa-map-marker-alt" aria-hidden="true" aria-label="map-marker-alt icon"></i> 252<span class="IBTextColorClass">568 Main Street, Athol, MA, 01331</span> 253</a> 254</span> 255<span class="iconset text2"> 256<i class="fa fa-phone" aria-hidden="true" aria-label="phone icon"></i> 257<span class=""> (978) 249-9515</span> 258</span> 259</div> 260<div class="col-sm-6 pr-0 text-right"> 261<span class="iconset text5"> 262<a id="infobar_5" href="/p/100/Hours" class=""> 263<i class="fa fa-clock" aria-hidden="true" aria-label="clock icon"></i> 264<span class="">Hours</span> 265</a> 266</span> 267<span class="iconset text6"> 268<a id="infobar_6" href="/p/92/Directions" class=""> 269<i class="fa fa-map-marker-alt" aria-hidden="true" aria-label="map-marker-alt icon"></i> 270<span class="">Directions</span> 271</a> 272</span> 273</div> 274</div> 275</div> 276</div> 277</div> 278</div> 279</div> 280<!-- start pagenav tag --> 281<nav id="navmainpageNavID2" class="navbar pagenav-dropdown navbar-expand-md 282pl-0 pr-0 pt-1 pb-1 mt-0 mb-0 ml-0 mr-0"> 283<div class="container pl-0 pr-0"> 284<a class="navbar-brand-img navbar-brand pt-0 pb-0 pl-2 pr-2 d-flex align-items-center" href="/"> 285<span class="brand-text">Athol Public Library</span> 286</a> 287<button class="navbar-toggler navbar-dark" data-toggle="collapse" aria-label="Open Menu" data-target="#navbar-1"> 288<span class="navbar-toggler-icon navbar-dark"></span> 289</button> 290<div id="navbar-1" class="navbar-collapse collapse"> 291<!-- REALESTATE ERROR 161 Invalid object name 'custom_MLSPIN.dbo.mls_listing_all'.: --> 292<ul class='nav navbar-nav ml-auto'><li class='nav-item'> 293<a id="menu_h" class="nav-link" href="/"><span>Home</span></a> 294<!-- IMAGES!! --> 295<!-- no images drop-down --> 296</li><li class='nav-item'> 297<a id="menu_p8" 298class="nav-link" 299href="/p/8/Athol-Public-Library-Services"><span>Services</span></a><!-- yo1 --> 300<!-- yo4 --> 301</li><li class='dropdown nav-item'> 302<a id="menu_p3" 303class="nav-link dropdown-toggle" 304href="/p/3/Youth-Services"><span>Youth Services</span></a><!-- yo1 --> 305<!-- yo2 --> 306<!-- hello from pagenav! --> 307<!-- sub-nav start --> 308<!-- qsImagesCat.recordCount = 17 --> 309<div class='subnav_p3 dropdown-menu dropdown-menu-left'><ul><li class='dropdown-item'> 310<!-- hoohah 167 --> 311<!-- PAGES! --> 312<!-- hoohah 202 --> 313<!-- thecount = 1 --> 314<a id="menu_p34" 315href="/Children"> 316<span>Childrenâs Library</span> 317</a> 318<!-- thecount = 2 --> 319</li><li class='dropdown-item'> 320<a id="menu_p39" 321href="/teens"> 322<span>Teen Library</span> 323</a> 324</li></ul></div> 325<!-- yo3 --> 326<!-- yo4 --> 327</li><li class='nav-item'> 328<a id="menu_p6" 329class="nav-link" 330href="/about-us"><span>About Us</span></a><!-- yo1 --> 331<!-- yo4 --> 332</li><li class='nav-item'> 333<a id="menu_p5" 334class="nav-link" 335target="_blank" 336href="https://athol.librarycalendar.com/events/month"><span>Calendar</span></a><!-- yo1 --> 337<!-- yo4 --> 338</li><li class='nav-item'> 339<a id="menu_n" 340class="nav-link" 341href="/news"><span>News</span></a> 342</li><li class='nav-item'> 343<a id="menu_c" 344class="nav-link" 345href="/contact"><span>Contact</span></a> 346</li></ul> 347</div><!-- /.nav-collapse --> 348</div> 349</nav> 350<!-- end pagenav tag --> 351</div> 352</div> 353</div> 354</header> 355<!-- ************************** end of header head ***********************--> 356<main> 357<!-- START PAGE DIV --> 358<div class="page c c0 " style=""> 359<div class="container maincontent"> 360<div class="row"> 361<div class="col-sm-12"> 362<h1 class="contact page"><span>Contact</span></h1> 363<h3>
363<strong class="textownername">Athol Public Library</strong></h3> 364<span class="social fa-size" style="float:right;font-size:2em"> 365<span class="text-info iconset"><a href="https://www.facebook.com/AtholPublicLibrary/" target="_blank" alt="facebook"><i aria-label="facebook icon" class="fab fa-facebook"></i><span class="sr-only">facebook</span></a></span> 366<span class="text-info iconset"><a href="https://www.instagram.com/atholpubliclibrary/" target="_blank" alt="instagram"><i aria-label="instagram icon" class="fab fa-instagram"></i><span class="sr-only">instagram</span></a></span> 367<span class="text-info iconset"><a href="https://www.pinterest.com/athollibrary/" target="_blank" alt="pinterest"><i aria-label="pinterest icon" class="fab fa-pinterest"></i><span class="sr-only">pinterest</span></a></span> 368<span class="text-info iconset"><a href="https://www.youtube.com/channel/UCwlbKkLR2Bhnsp_LOxdFwQQ/videos" target="_blank" alt="youtube"><i aria-label="youtube icon" class="fab fa-youtube"></i><span class="sr-only">youtube</span></a></span> 369</span> 370<p> 371<p>568 Main St. Athol, MA 01331<br /> 372Phone: (978) 249-9515<br /> 373Fax: (978) 249-7636<br /> 374Email: <a href="mailto:[email protected]">[email protected]</a><br /> 375Director: <a href="mailto:[email protected]">[email protected]</a><br /> 376Assistant Director: <a href="mailto:[email protected]">[email protected]</a><br /> 377Children's Librarian: <a href="mailto:[email protected]">[email protected]</a><br /> 378<a href="http://athollibrary.org/">www.athollibrary.org</a></p> 379</p> 380<span class="contactIntro"> 381<p>Use this form to subscribe to library updates, or share a comment or question. </p> 382</span> 383<form action="/action.cfm?p=c.add" method="post" role="form"> 384<input type="hidden" name="cc" value=""> 385<input type="hidden" name="cc_email" value=""> 386<input type="hidden" name="include" value="contact"> 387<input type="hidden" name="run" value="1"> 388<input type="hidden" name="referer" value=""> 389<input type="hidden" name="site" value="http://athollibrary.org"> 390<input type="Hidden" name="fu" value="%+N0%%50"> 391<input type="Hidden" name="fullform" value="1"> 392<div class="form-group"> 393<label for="email">Your Email: (required)</label> 394<input type="text" name="email" id="email" class="email form-control" placeholder="Your email address" required="yes"> 395</div> 396<div class="form-group"> 397<label for="Name">Your Name:</label> 398<input type="Text" name="Name" id="Name" class="Name form-control" maxlength="250"> 399</div> 400<div class="form-group"> 401<label for="City">Your City:</label> 402<input type="Text" name="City" id="City" class="City form-control" maxlength="250"> 403</div> 404<div class="form-group"> 405<label for="Phone">Your Phone:</label> 406<input type="Text" name="Phone" id="Phone" class="Phone form-control" data-mask="000-000-0000"> 407</div> 408<div class="form-group"> 409<label for="Comments">Your Questions / Comments:<br/>(1000 char max)</label>
410<script type="text/javascript"> 411/*********************************************** 412* Textarea Maxlength script- Dynamic Drive (www.dynamicdrive.com) 413* This notice must stay intact for legal use. 414* Visit http://www.dynamicdrive.com/ for full source code 415***********************************************/ 416function ismaxlength(obj){ 417var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : "" 418if (obj.getAttribute && obj.value.length>mlength) 419obj.value=obj.value.substring(0,mlength) 420} 421</script>
421 422<textarea name="Comments" id="Comments" class="Comments form-control" rows="5" maxlength="1000" onkeyup="return ismaxlength(this)"></textarea> 423</div> 424<div class="form-groop"> 425<label for="field_0"><h5>Your Friday Color*</h5></label> 426<input class="form-control" type="text" name="field_0" maxlength="25" value=""> 427</div> 428<div class="form-group row"> 429<div class="col-sm-4"> 430<label for="typeid">Please inform me of:</label> 431</div> 432<div class="col-sm-8"> 433<div class="contactListItem" title="list"> 434<input type="Checkbox" name="typeid" value="1" > 435All News and Programs 436</div> 437<div class="contactListItem" title="list"> 438<input type="Checkbox" name="typeid" value="4" > 439Adult News and Programs 440</div> 441<div class="contactListItem" title="list"> 442<input type="Checkbox" name="typeid" value="8" > 443Childrenâs News and Programs 444</div> 445<div class="contactListItem" title="list"> 446<input type="Checkbox" name="typeid" value="7" > 447Teen News and Programs 448</div> 449<div title="list"> 450</div> 451<div class="contactListItem" title="list"> 452<input type="Checkbox" name="typeid" value="1012" > 453New Materials (Wowbrary) 454</div> 455<div title="list"> 456</div> 457</div> 458</div> 459<div class="form-group row"> 460<div class="col-sm-12"> 461<div class="g-recaptcha" data-sitekey="6Lfo-HAUAAAAABch_SFTJZYTJnx2X40d-Uc217Ib"></div> 462</div> 463</div> 464<div class="form-group row"> 465<div class="col-sm-12"> 466<span class="privacyPolicy button btn btn-default pull-right" 467title="cssbody=[ttbdy] cssheader=[tthdr] offsety=[-100] offsetx=[5] header=[Privacy Notice:] body=[By filling in this form and checking any of the boxes above, you are opting-in to receive emails from this website. All emails you receive from this website will have instructions at the bottom on how to unsubscribe. When filling in the form, please do not include any sensitive personal information, such as financial or social security numbers. That type of information will never be requested from this website.]" 468>Privacy Notice</span> 469<p><button type="Submit" name="submit" id="submitbutton" class="btn btn-primary pull-left mt-4 mb-3" onclick="document.getElementById('submitbutton').style.opacity='0.5';" title="Click only ONCE!">Send Now</button></p> 470</div> 471</div> 472<div class="form-group row"> 473<div class="col-sm-12"><p style="font-size:10px;"><input type="Checkbox" name="neversend" style="float:left;margin-right:10px;" value="1"><em>On occasion we send out newsletters, announcements or alerts to those who fill out this form. If you would like to never receive this kind of email from us, check the box to the left to opt-out.</em></p></div> 474</div> 475</form> 476</div> 477</div> 478</div> 479</div> 480<!-- END PAGE DIV --> 481<div class="lowercontent"> 482<!-- START PAGE SECTIONS --> 483<!-- inside page sections --> 484<!-- this is NOT a p (62) --> 485<!-- canview = 1 (83) --> 486<!-- END PAGE SECTIONS --> 487</div> 488</main> 489<div class="social noprint" style="text-align:center!important; margin:25px auto;width:auto!important;"> 490<a href="https://www.instagram.com/atholpubliclibrary/" target="_blank"><img class="social" src="/RFAssets/ui/icon-Instagram.png" alt="Instagram"></a> 491<a href="https://www.facebook.com/AtholPublicLibrary/" target="_blank"><img class="social" src="/RFAssets/ui/icon-Facebook.png" alt="Facebook"></a> 492<a href="https://www.youtube.com/channel/UCwlbKkLR2Bhnsp_LOxdFwQQ/videos" target="_blank"><img class="social" src="/RFAssets/ui/icon-YouTube.png" alt="YouTube"></a> 493<a href="https://www.pinterest.com/athollibrary/" target="_blank"><img class="social" src="/RFAssets/ui/icon-Pinterest.png" alt="Pinterest"></a> 494</div> 495<footer> 496<div class="footer_default noprint"> 497<div id="footer" class="container-fluid"> 498<div class="footerO row pt-2"> 499<!-- starting from 1 --> 500<!-- this is c: 1 --> 501<div class="col-sm-12 col-md-6 col-lg-3 text-center" id="footerRow1"> 502<!-- listfind(attributes.staticPageCol,'col1') --> 503<!-- yes --> 504<div class="static footer-defaultcol1"> 505<!-- from var application.static.footer_defaultcol1 --> 506<h3><strong>Quick Links</strong></h3> 507<ul> 508<li><a href="/index.cfm" target="_blank">Home</a></li> 509<li><a href="https://www.cwmars.org/" target="_blank">CW MARS</a></li> 510<li><a href="https://commonwealthcatalog.org/login?cid=MASSVC&lid=MASSVC">Commonwealth Catalog</a></li> 511<li><a href="/files/Meeting_Room_Policy_and_Application.pdf" target="_blank">Request a Meeting Room</a></li> 512<li><a href="https://athol.librarycalendar.com/index.php/reserve-room/room?room_type=85&op=Apply&form_build_id=form-uOR4F8sxTchEKyN7fsXkA5HsJG_d7L2Jx55BAssPcqo&form_id=lc_reserve_by_time" target="_blank">Reserve a Study Room</a></li> 513</ul> 514</div> 515<!-- attributes.footerSocialCol eq 'col1' --> 516<!-- attributes.footerNavCol eq 'col1' --> 517<!-- attributes.footerShowSearchCol eq 'col1' --> 518<!-- attributes.loginCol eq 'col1' --> 519</div> 520<!-- this is c: 2 --> 521<div class="col-sm-12 col-md-6 col-lg-3 text-center" id="footerRow2"> 522<!-- listfind(attributes.staticPageCol,'col2') --> 523<!-- yes --> 524<div class="static footer-defaultcol2"> 525<!-- from var application.static.footer_defaultcol2 --> 526<h3><strong>Resources</strong></h3> 527<ul> 528<li><a href="/index.cfm?p=p.16" target="_blank">Local History</a></li> 529<li><a href="/p/82/Athol-Public-Library-Art-Exhibition" target="_blank">Art Exhibit</a></li> 530<li><a href="/p/15/Museum-Passes" target="_blank">Museum Passes</a></li> 531<li><a href="https://www.ancestrylibrary.com/" target="_blank">Ancestry Library Edition</a> - In Library Use Only</li> 532<li><a href="https://www.galepages.com/mlin_c_atholpl" target="_blank">Newspaper Archives and Research Databases</a></li> 533</ul> 534</div> 535<!-- attributes.footerSocialCol eq 'col2' --> 536<!-- attributes.footerNavCol eq 'col2' --> 537<!-- attributes.footerShowSearchCol eq 'col2' --> 538<!-- attributes.loginCol eq 'col2' --> 539</div> 540<!-- this is c: 3 --> 541<div class="col-sm-12 col-md-6 col-lg-3 text-center" id="footerRow3"> 542<!-- listfind(attributes.staticPageCol,'col3') --> 543<!-- yes --> 544<div class="static footer-defaultcol3"> 545<!-- from var application.static.footer_defaultcol3 --> 546<h3><strong>Digital Media</strong></h3> 547<ul> 548<li><a href="https://www.bpl.org/ecard/" target="_blank">BPL eCard</a></li> 549<li><a href="https://cwmars.overdrive.com/" target="_blank">CW MARS Overdrive</a></li> 550<li><a href="/p/1118/Kanopy">Kanopy</a></li> 551<li><a href="https://www.overdrive.com/apps/libby/" target="_blank">Libby </a></li> 552<li><a href="https://www.digitallearn.org/" target="_blank">Digital Learn</a></li> 553</ul> 554</div> 555<!-- attributes.footerSocialCol eq 'col3' --> 556<!-- attributes.footerNavCol eq 'col3' --> 557<!-- attributes.footerShowSearchCol eq 'col3' --> 558<!-- attributes.loginCol eq 'col3' --> 559</div> 560<!-- this is c: 4 --> 561<div class="col-sm-12 col-md-6 col-lg-3 text-center" id="footerRow4"> 562<!-- listfind(attributes.staticPageCol,'col4') --> 563<!-- yes --> 564<div class="static footer-defaultcol4"> 565<!-- from var application.static.footer_defaultcol4 --> 566<p>568 Main St. Athol, MA 01331<br /> 567Phone: (978) 249-9515<br /> 568Fax: (978) 249-7636<br /> 569Email: <a href="mailto:[email protected]">[email protected]</a><br /> 570<a href="http://athollibrary.org/">www.athollibrary.org</a></p> 571</div> 572<!-- attributes.footerSocialCol eq 'col4' --> 573<!-- yes --> 574<span class="social fa-size" style=""> 575<span class="text-info iconset"><a href="https://www.facebook.com/AtholPublicLibrary/" target="_blank" alt="facebook"><i aria-label="facebook icon" class="fab fa-facebook"></i><span class="sr-only">facebook</span></a></span> 576<span class="text-info iconset"><a href="https://www.instagram.com/atholpubliclibrary/" target="_blank" alt="instagram"><i aria-label="instagram icon" class="fab fa-instagram"></i><span class="sr-only">instagram</span></a></span> 577<span class="text-info iconset"><a href="https://www.pinterest.com/athollibrary/" target="_blank" alt="pinterest"><i aria-label="pinterest icon" class="fab fa-pinterest"></i><span class="sr-only">pinterest</span></a></span> 578<span class="text-info iconset"><a href="https://www.youtube.com/channel/UCwlbKkLR2Bhnsp_LOxdFwQQ/videos" target="_blank" alt="youtube"><i aria-label="youtube icon" class="fab fa-youtube"></i><span class="sr-only">youtube</span></a></span> 579</span> 580<!-- attributes.footerNavCol eq 'col4' --> 581<!-- attributes.footerShowSearchCol eq 'col4' --> 582<!-- attributes.loginCol eq 'col4' --> 583</div> 584</div> 585</div> 586</div> 587<div id="lowerFooter" class="text-center"> 588<div id="footer"> 589<span class="footerO"> 590<span class="footerL"> 591© 2026 Athol Public Library 592|
593All rights reserved. APL Header Photo Credit: Dennis Washburn 594</span> 595<span class="footerM"> 596| 597</span> 598<span class="footerR"> 599<a href="https://RocketFusion.com" target="_blank">Powered by RocketFusion 123</a> 600</span> 601</span> 602</div> 603<span class="login-link"> 604<a class="login noprint p-3" href="" style="cursor:pointer;" rel="nofollow" aria-label="log in" data-toggle="modal" data-target="#Login" data-remote="/inc/divLogin.cfm?edit=Login">Admin Login</a> 605<div class="modal fade" id="Login" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-body"></div></div></div></div> 606</span> 607</div> 608</footer> 609<!-- BS4 Init --> 610<div class="modal fade" id="reserve" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-body"></div></div></div><div id="load-res" class="loading-reserve d-none"></div></div>
611<script>let croppedWidth = 1200; let croppedHeight = 200;</script>
vendor: 1 bytes, line 611
611
612<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
vendor: 1 bytes, line 612
612
613<script type="text/javascript" src="https://scaleflex.cloudimg.io/v7/plugins/filerobot-image-editor/latest/filerobot-image-editor.min.js?func=proxy"></script>
vendor: 1 bytes, line 613
613
614<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>
vendor: 1 bytes, line 614
614
615<script> 616// Assuming we have a div with id="editor_container" 617const filerobotImageEditor = new window.FilerobotImageEditor( 618document.querySelector("#rf-image-editor-edit") 619); 620const image_file_upload = document.getElementById("rf-image-upload"); 621// const btn_image_upload_edit = document.getElementById("btn-image-upload-edit"); 622var source_image = ''; // the HTMLImageElement 623var save_image_name = ''; // name to save image with 624var global_fr_folder = ''; // where to upload 625var global_fr_table = ''; // db table to update 626var global_fr_prefix = ''; // image file prefix, ie; blocks_ 627var global_fr_pid = 0; // image ID, ie; blocks_2323 628var dropzone_website_dir = 'AtholLibrary.org\\httpdocs'; 629const file_robot_defaults = { 630save_image_quality : 1, // 0.1 - 1 (default 0.92) - applies to jpeg, jpg and webp images only 631}; 632function renderFileRobotEditor(source,fr_folder=global_fr_folder,fr_table=global_fr_table,fr_prefix=global_fr_prefix,fr_pid=global_fr_pid) { 633console.group("renderFileRobotEditor() called"); 634console.log('source:', source); 635console.log('fr_folder:', fr_folder); 636console.log('fr_table:', fr_table); 637console.log('fr_prefix:', fr_prefix); 638console.log('fr_pid:', fr_pid); 639console.groupEnd(); 640source_image = source; 641filerobotImageEditor.render({ 642source: source_image, 643useBackendTranslations: false, 644defaultSavedImageName: save_image_name, 645defaultSavedImageQuality: file_robot_defaults.save_image_quality, 646tabsIds: [ 647window.FilerobotImageEditor.TABS.ADJUST, 648window.FilerobotImageEditor.TABS.FINETUNE, 649window.FilerobotImageEditor.TABS.FILTERS, 650window.FilerobotImageEditor.TABS.ANNOTATE, 651window.FilerobotImageEditor.TABS.WATERMARK], // or ['Adjust', 'Annotate', 'Watermark'] 652defaultTabId: window.FilerobotImageEditor.TABS.ADJUST, 653Crop: { 654minWidth: 14, 655minHeight: 14, 656maxWidth: null, 657maxHeight: null, 658ratio: 'custom', 659ratioTitleKey: 'custom', 660noPresets: false, 661autoResize: false, 662presetsItems: [], 663presetsFolders: [], 664lockCropAreaAt: null, // 'top-left' 665}, 666// disable save modal 667onBeforeSave: () => { 668return false; 669}, 670onSave: async (imageInfo, designState) => { 671// console.log('onSave() imageInfo', imageInfo); 672// console.log('onSave() designState', designState); 673// create formData object to populate and send with fetch request 674const formData = new FormData(); 675formData.append('image64', imageInfo.imageBase64); 676formData.append('image_extension', imageInfo.extension); 677formData.append('image_height', imageInfo.height); 678formData.append('image_name', imageInfo.name); 679formData.append('image_name_with_extension', imageInfo.fullName); 680formData.append('image_quality', imageInfo.quality); 681formData.append('image_width', imageInfo.width); 682formData.append('dropzone_website_dir', dropzone_website_dir); // e.g. MikMuller.com\httpdocs 683formData.append('rf_dropzone_dir', fr_folder); 684console.log('onSave() formData [2]', formData); 685// add dropzone options for compatibility with current upload script 686const drop_zone_options = { 687tbl: fr_table, 688imgbase: `${fr_prefix}${fr_pid}`, 689imgname: imageInfo.fullName, 690id: fr_pid 691} 692formData.append("dropzone_options", JSON.stringify(drop_zone_options)); 693console.log('onSave() drop_zone_options', drop_zone_options); 694try { 695// _dropzone-file-upload-ajax.cfm 696// _upload-base64.cfm (for testing) 697console.log('renderFileRobotEditor.onSave() imageInfo', imageInfo); 698const upload_request = await fetch('/inc/_dropzone-file-upload-ajax.cfm', { 699method: 'POST', 700body: formData 701}); 702const upload_result = await upload_request.json(); 703// console.log('DEBUG: [onSave] upload_result', upload_result); 704// close modal 705$('#rfImageModalEdit').modal('hide'); 706// page reload 707window.location.reload(); 708} catch (error) { 709console.log('onSave() error', error); 710const upload_result = { 711code: 1, 712message: error.message, 713success: false 714} 715} 716}, 717onClose: (closingReason) => { 718console.log("Closing reason", closingReason); 719filerobotImageEditor.terminate(); 720// reset the input field 721document.getElementById('rf-image-upload').value = ''; 722}, 723}); 724} 725/** 726* Function to handle image selection from the file input field 727* async as we use a promise to await image load 728*/ 729async function onImageSelected(event, file_obj, fr_folder, fr_table, fr_prefix, fr_pid) { 730let file; 731if (file_obj) { 732console.log('onImageSelected file_obj', file_obj, fr_folder, fr_table, fr_prefix, fr_pid); 733file = file_obj; 734} else { 735file = event.target.files[0]; 736} 737save_image_name = file.name; 738console.log('onImageSelected file', file); 739// const reader = new FileReader(); 740const image = new Image(); 741const img_max_width = 1600; 742image.src = URL.createObjectURL(file); 743// Promise to await image load 744await new Promise((resolve) => { 745image.onload = () => { 746const img_width = image.width; 747const img_height = image.height; 748// console.log('onImageSelected img load', img_width, img_height); 749if (img_width > img_max_width) { 750const img_scale = img_max_width / img_width;
751image.width = img_width * img_scale; 752image.height = img_height * img_scale; 753} 754// resolve the promise 755resolve(); 756}; 757}); 758// open the modal 759$('#rfImageModalEdit').modal('show'); 760// Render file robot 761renderFileRobotEditor(image, fr_folder, fr_table, fr_prefix, fr_pid); 762} 763/** Function to handle image editing */ 764function editExistingImage(image_url, image_name, fr_folder=global_fr_folder, fr_table=global_fr_table, fr_prefix=global_fr_prefix, fr_pid=global_fr_pid) { 765console.log('[DEBUG] editExistingImage() called.'); 766console.log('image_url:', image_url); 767console.log('image_name:', image_name); 768console.log('fr_folder:', fr_folder); 769console.log('fr_table:', fr_table); 770console.log('fr_prefix:', fr_prefix); 771console.log('fr_pid:', fr_pid); 772save_image_name = image_name; 773renderFileRobotEditor(image_url, fr_folder, fr_table, fr_prefix, fr_pid); 774} 775/** Function to open the hidden input file field */ 776function openFileInput(fr_folder='', fr_table='', fr_prefix='', fr_pid=0) { 777console.log('[DEBUG] openFileInput() called.', fr_folder, fr_table, fr_prefix, fr_pid); 778global_fr_folder = fr_folder; // where to upload 779global_fr_table = fr_table; // db table to update 780global_fr_prefix = fr_prefix; // image file prefix, ie; blocks_ 781global_fr_pid = fr_pid; 782image_file_upload.click(); 783} 784/** Function to open RF File Manager in a modal 785* Will be used by ckeditor/plugins/rffilemanager/browse.cfm 786* Need the image full url to make a copy of for ai images 787*/ 788function openRFFileManager(current_image_url, fr_folder=global_fr_folder, fr_table=global_fr_table, fr_prefix=global_fr_prefix, fr_pid=global_fr_pid) { 789// $($(this).data( "target" ) + ' .modal-body').load( data_remote ); 790console.group("bs4_init openRFFileManager() called"); 791console.log("current_image_url:", current_image_url); 792console.log("fr_folder:", fr_folder); 793console.log("fr_table:", fr_table); 794console.log("fr_prefix:", fr_prefix); 795console.log("fr_pid:", fr_pid); 796console.groupEnd(); 797const rfFileManagerModalIframe = document.getElementById('rfFileManagerModalIframe'); 798rfFileManagerModalIframe.src = `/ckeditor/plugins/rffilemanager/browse.cfm?CKEditor=editor1&CKEditorFuncNum=1&langCode=en&direct=true&rf_website_dir=${fr_folder}&pid=` + fr_pid + `&image_url=` + encodeURIComponent(current_image_url) + `&page_parent_directory=${fr_folder}&image_prefix=${fr_prefix}&image_table=${fr_table}`; ; 799$('#rfFileManagerModal').modal('show'); 800} 801/** Function to close the RF File Manager modal 802* Will be used by ckeditor/plugins/rffilemanager/browse.cfm 803* Need to upload the image and then close the modal 804*/ 805function closeRFFileManagerModal(image_path, img_name='', fr_folder='', fr_table='', fr_prefix='', fr_pid=0) { 806console.group("bs4_init closeRFFileManagerModal() called"); 807console.log("image_path:",image_path); 808console.log("img_name:",img_name); 809console.log("fr_folder:",fr_folder); 810console.log("fr_table:",fr_table); 811console.log("fr_prefix:",fr_prefix); 812console.log("fr_pid:",fr_pid); 813console.groupEnd(); 814$('#rfFileManagerModal').modal('hide'); 815$('#rfImageModalEdit').modal('show'); 816save_image_name = img_name; 817// renderFileRobotEditor(image_path); 818renderFileRobotEditor(image_path, fr_folder, fr_table, fr_prefix, fr_pid); 819} 820/** Function to close the RF File Manager modal without opening File Robot 821* Will be used by ckeditor/plugins/rffilemanager/browse.cfm 822*/ 823function closeRFFileManagerModalOnly(reload=false) { 824$('#rfFileManagerModal').modal('hide');
825if (reload) { 826setTimeout(() => { 827window.location.reload(); 828}, 500); 829} 830} 831// Handle closing of modal without saving (must cleanup file robot editor) 832$('#rfImageModalEdit').on('hidden.bs.modal', function (event) { 833// console.log('modal closed'); 834filerobotImageEditor.terminate(); 835image_file_upload.value = ''; 836}); 837/** Rocketfusion - enable drag/drop zone on an image with the .rf-image-dropzone class */ 838// Create dropzone object for all images with the .rf-image-dropzone class 839const rf_image_drop_zone = document.querySelectorAll('.rf-image-dropzone'); 840// Attach event listeners to all instances of rf_image_drop_zone 841rf_image_drop_zone.forEach(function (i) { 842// Handle drag over event 843i.addEventListener('dragover', function(e) { 844event.target.classList.add('image-dragover'); 845dragOverHandler(e); 846}); 847// Handle drag leave event 848i.addEventListener('dragleave', function(e) { 849// console.log('Image dropzone dragleave'); 850event.target.classList.remove('image-dragover'); 851}); 852// Handle drop event 853i.addEventListener('drop', function(e) { 854event.target.classList.remove('image-dragover'); 855dropHandler(e); 856}); 857}); 858/** 859* Handles the drop event of files in the drop zone. 860* Prevents the default behavior of opening the file and logs the names of the dropped files. 861* 862* @param {Event} ev - The drop event. 863* @returns {undefined} 864*/ 865function dropHandler(ev) { 866// console.log('File(s) dropped'); 867// Prevent default behavior (Prevent file from being opened) 868ev.preventDefault(); 869if (ev.dataTransfer.items) { 870// Use DataTransferItemList interface to access the file(s) 871[...ev.dataTransfer.items].forEach((item, i) => { 872// If dropped items aren't files, reject them 873if (item.kind === 'file') { 874const file = item.getAsFile(); 875console.log(`file[${i}].name = ${file.name}`); 876onImageSelected(i, file); 877} 878}); 879} else { 880// Use DataTransfer interface to access the file(s) 881[...ev.dataTransfer.files].forEach((file, i) => { 882console.log(`file[${i}].name = ${file.name}`); 883onImageSelected(i, file); 884}); 885} 886} 887/** 888* Handles the drag over event of files in the drop zone. 889* Prevents the default behavior of opening the file. 890* 891* @param {Event} ev - The drag over event. 892* @returns {undefined} 893*/ 894function dragOverHandler(ev) { 895// Prevent default behavior (Prevent file from being opened) 896ev.preventDefault(); 897} 898</script>
898 899<style> 900.modal-fullscreen { 901width: 100vw; 902max-width: none; 903height: 100%; 904margin: 0; 905} 906.modal-content { 907height: 100%; 908border: 0; 909@include border-radius(0); 910} 911.modal-body { 912overflow-y: auto; 913} 914.image-dragover { 915opacity: 0.5; 916} 917</style>
918<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
vendor: 1 bytes, line 918
918
919<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
919 920<!-- contact and forms -->
921<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script>
vendor: 1 bytes, line 921
921
922<script src="//cdnjs.cloudflare.com/ajax/libs/parsley.js/2.8.1/parsley.js"></script>
vendor: 1 bytes, line 922
922
923<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/js/bootstrap-datepicker.min.js"></script>
vendor: 1 bytes, line 923
923
924<script> 925function limitText(limitField, limitNum) { 926if (limitField.value.length > limitNum) { 927limitField.value = limitField.value.substring(0, limitNum); 928} 929} 930$(document).ready(function(){ 931// this code is in bs4_init 932// Real time formatting, added by Andrew Kelly, 2/14/19 933// (US phone formatter) - on document load, attach handler to the phone-us class and mask the input 934$('.phone-us').mask('000-000-0000'); 935// Max length of a number input 936$('.numbers-only').keyup(function() { 937var maxLen = $(this).data('max-length'); 938var input = $('.numbers-only').val() 939var inputLen = input.length; 940console.log('[DEBUG] inputLen:' + inputLen); 941console.log('[DEBUG] maxLen:' + maxLen); 942if ( inputLen >= 9 ) { 943console.log('[DEBUG] Trim to 9 chars'); 944$('.numbers-only').val( input.substring(0, 9) ); 945} 946}); 947}); 948// Validation performed on form SUBMIT 949$("#fRocketfusion").parsley({ 950errorClass: 'is-invalid text-danger', 951//successClass: 'is-valid', // Comment this option if you don't want the field to become green when valid. Recommended in Google material design to prevent too many hints for user experience. Only report when a field is wrong. 952errorsWrapper: '<span class="form-text text-danger"></span>', 953errorTemplate: '<span></span>', 954trigger: 'change' 955}); 956</script>
vendor: 1 bytes, line 956
956
957<script type="text/javascript" src="/RFAssets/js/joey.js?ver=20260911135345" charset="UTF-8"></script>
vendor: 1 bytes, line 957
957
958<script type="text/javascript"> 959$( 'body' ).on( 'click', '[data-toggle="modal"]', function(){ 960let data_remote = $(this).data( "remote" ); 961if ( data_remote && data_remote.length >= 2 ) { 962$($(this).data( "target" ) + ' .modal-content').load( data_remote ); 963} 964}); 965</script>
vendor: 1 bytes, line 965
965
966<script> 967$(document).ready(function() { 968//$('nav').animate({opacity:'1'}, 50);<!-- set to 0.25 to make see thru --> 969//$(img).animate({opacity:'1'}); 970$initNavHgt = $('nav').outerHeight(); 971$initHeadLogoHgt = $('#headerLogo').outerHeight(); 972}); 973</script>
vendor: 1 bytes, line 973
973
974<script> 975(function(d) 976{ 977var s = d.createElement("script"); 978s.setAttribute("data-account", "efy2WEGV1m"); 979s.setAttribute("src", "https://cdn.userway.org/widget.js"); 980(d.body || d.head).appendChild(s); 981} 982) 983(document) 984</script>
984 985<noscript> 986<p>Please ensure Javascript is enabled for purposes of <a href="https://userway.org" target="_blank">website accessibility</a></p> 987</noscript> 988</body> 989</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.