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: Shea Theater Arts Center 11--> 12<!-- ================================================================================================================= --> 13<!-- Title and App Tags --> 14<!-- 20260911135311 --> 15<title>Spirit and Song: A Psychic Medium Fair and Concert, Sat, Sep 26, 2026 - Shea Theater Arts Center</title> 16<meta property="og:title" content="Spirit and Song: A Psychic Medium Fair and Concert, Sat, Sep 26, 2026"> 17<meta property="twitter:title" content="Spirit and Song: A Psychic Medium Fair and Concert, Sat, Sep 26, 2026 - Shea Theater Arts Center"> 18<meta itemprop="name" content="Spirit and Song: A Psychic Medium Fair and Concert, Sat, Sep 26, 2026 - Shea Theater Arts Center"> 19<!-- safari --> 20<meta name="apple-mobile-web-app-title" content="Spirit and Song: A Psychic Medium Fair and Concert, Sat, Sep 26, 2026 - Shea Theater Arts Center"> 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="Spirit and Song: A Psychic Medium Fair and Concert, Sat, Sep 26, 2026 - Shea Theater Arts Center"> 27<meta name="msapplication-tooltip" content="Spirit and Song: A Psychic Medium Fair and Concert, Sat, Sep 26, 2026 - Shea Theater Arts Center"> 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=Glass+Antiqua|Oxygen|Roboto+Condensed"> 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="Turners Falls" /> 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-24" /> 51<meta name="geo.region" content="US-MA" /> 52<meta name="msvalidate.01" content="" /> 53<!-- no Facebook Pixel ID --> 54<meta name="author" content="Shea Theater Arts Center" /> 55<meta name="owner" content="Shea Theater Arts Center" /> 56<meta name="copyright" content="Copyright 2026 Shea Theater Arts Center" /> 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="Shea Theater Arts Center"> 66<meta property="twitter:site" content="@SheaTheater" /> 67<meta property="og:type" content="website" />
vendor: 77 bytes, lines 67-68
67 68<script src="https://www.google.com/recaptcha/api.js" async defer></script>
69<!-- ================================================================================================================= --> 70<!-- FAVICONS start --> 71<link rel="shortcut icon" href="/icons/favicon.ico" /> 72<link rel="icon" href="/icons/favicon.ico" type="image/x-icon" /> 73<link rel="apple-touch-icon" href="/icons/favicon.ico"> 74<meta name="msapplication-TileImage" content="/icons/favicon.ico"> 75<link rel="manifest" href="/icons/manifest.json"> 76<meta name="apple-mobile-web-app-status-bar-style" content="black"> 77<meta name="msapplication-TileColor" content="white"> 78<meta name="theme-color" content="white"> 79<!-- MS Application Tasks (off for now) --> 80<!-- FAVICONS end --> 81<meta property="og:url" content="/d/23314/Spirit-and-Song-A-Psychic-Medium-Fair-and-Concert"> 82<link rel="canonical" href="/d/23314/Spirit-and-Song-A-Psychic-Medium-Fair-and-Concert"> 83<meta itemprop="image" content="/calendar/calendar_23314_large.jpg"> 84<meta property="og:image" content="/calendar/calendar_23314_large.jpg"> 85<meta property="twitter:image" content="/calendar/calendar_23314_large.jpg"> 86<link rel="image_src" href="/calendar/calendar_23314_large.jpg"> 87<meta property="og:image:alt" content="Spirit and Song: A Psychic Medium Fair and Concert, Sat, Sep 26, 2026"> 88<meta name="description" content="Sat, Sep 26, 2026 11:00 AM - Presented by the National Spirit Alliance. Join us for an inspiring day where music, healing, creativity, history, and community come together under one roof. Psychic Fair"> 89<meta itemprop="description" content="Sat, Sep 26, 2026 11:00 AM - Presented by the National Spirit Alliance. Join us for an inspiring day where music, healing, creativity, history, and community come together under one roof. Psychic Fair"> 90<meta property="og:description" content="Sat, Sep 26, 2026 11:00 AM - Presented by the National Spirit Alliance. Join us for an inspiring day where music, healing, creativity, history, and community come together under one roof. Psychic Fair"> 91<meta property="twitter:description" content="Sat, Sep 26, 2026 11:00 AM - Presented by the National Spirit Alliance. Join us for an inspiring day where music, healing, creativity, history, and community come together under one roof. Psychic Fair"> 92<!-- ================================================================================================================= -->
93<script src="https://kit.fontawesome.com/d3bffd01a6.js" crossorigin="anonymous"></script>
93 94<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"> 95<link rel="stylesheet" href="/RFassets/css/datatables-bs4.min.css"> 96<link rel="stylesheet" href="/RFAssets/css/RFtables.css?ver=20260911135311"> 97<link rel="stylesheet" href="/RFAssets/css/joey.css?ver=20260911135311"> 98<link rel="stylesheet" href="/site_style.css?ver=20260911135311"> 99<link rel="stylesheet" href="/header_style.css?ver=20260911135311"> 100<link rel="stylesheet" href="/RFAssets/css/_admin.css?ver=20260911135311"> 101<!-- custom stylesheet --> 102<link rel="stylesheet" href="/tmpl_Carousel-Nav-1-3.css?ver=20260911135311">
103<script src="/RFAssets/js/boxover.js" type="text/javascript"></script>
103 104<!-- calendar -->
105<script src="/RFAssets/js/ouical.min.js"></script>
105 106<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/css/bootstrap-datepicker.min.css" />
107<script type="text/javascript"> 108function toggleLayer(whichLayer,what) { 109if (document.getElementById) 110{ 111var style2 = document.getElementById(whichLayer).style; 112style2.display = what; 113} 114else if (document.all) 115{ 116var style2 = document.all[whichLayer].style; 117style2.display = what; 118} 119else if (document.layers) 120{ 121var style2 = document.layers[whichLayer].style; 122style2.display = what; 123} 124} 125function toggleCheckbox(source) { 126checkboxes = document.getElementsByName('file_delete'); 127for(var i=0, n=checkboxes.length;i<n;i++) { 128checkboxes[i].checked = source.checked; 129} 130} 131</script>
vendor: 1 bytes, line 131
131
132<script> 133/** 134* Function that tracks a click on an outbound link in Analytics. 135* This function takes a valid URL string as an argument, and uses that URL string 136* as the event label. Setting the transport method to 'beacon' lets the hit be sent 137* using 'navigator.sendBeacon' in browser that support it. 138*/ 139var trackOutboundLink = function(url) { 140ga('send', 'event', 'outbound', 'click', url, { 141'transport': 'beacon', 142'hitCallback': function(){document.location = url;} 143}); 144} 145</script>
145 146<!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 64 bytes, lines 146-147
146 147<script async src="https://www.googletagmanager.com/gtag/js?id=
147UA-91585429-1
vendor: 12 bytes, line 147
147"></script>
148<script>
vendor: 127 bytes, lines 149-152
149window.dataLayer = window.dataLayer || []; 150function gtag(){dataLayer.push(arguments);} 151gtag('js', new Date()); 152gtag('config', '
152UA-91585429-1
vendor: 4 bytes, line 152
152');
153</script>
153 154<!-- No text_Google_Tag_Manager_ID defined --> 155<!-- end of metatags --> 156</head> 157<body class="notMobile" 158> 159<!-- THESE ARE HERE (ADMIN) BECAUSE THEY NEED TO BE AT THE TOP OF THE BODY, NOT IN THE META TAGS --> 160<!-- No text_Google_Tag_Manager_ID defined --> 161<!-- ************************** start of head_header ***********************--> 162<style> 163@media (min-width:993px) { 164body { margin-top:110px!important; } 165} 166@media (min-width:769px) and (max-width:992px) { 167body { margin-top:106.7px!important; } 168} 169@media (min-width:577px) and (max-width:768px) { 170body { margin-top:101.2px!important; } 171} 172@media (min-width:516px) and (max-width:576px) { 173body { margin-top:110px!important; } 174} 175@media (min-width:471px and max-width:515px) { 176body { margin-top:126.5px!important; } 177} 178@media (max-width:470px) { 179body { margin-top:181.5px!important; } 180} 181</style> 182<style> 183nav .navbar-brand img { 184height: 70px; /*!important*/ 185transition: all .25s ease-in-out; 186-webkit-transition: all .25s ease-in-out; 187} 188nav.shrink .navbar-brand img { 189height: 50px; /*!important*/ 190transition: all .25s ease-in-out; 191-webkit-transition: all .25s ease-in-out; 192} 193</style> 194<header class="header_default fixed-top "> 195<div class=" inside-header-container"> 196<div class=" inside-header-row"> 197<div class=" inside-header-col"> 198<div class="NavInfoBar"> 199<!-- woot navbar --> 200<div class="nav-info-bar pl-0 pr-0 pt-1 pb-1 mt-0 mb-0 noprint"> 201<div class="brand-not-info-bar-1"> 202<div class="brand-not-info-bar-2"> 203<div class="container pl-0 pr-0"> 204<div class="row m-0 pl-0 pr-0 align-items-center"> 205<div class="col-sm-12 pr-0 text-right"> 206<span class="iconset text5"> 207<a id="infobar_5" target="_blank" href="https://goo.gl/maps/Gv1YDXat7HQtr6EX8" class=""> 208<i class="fa fa-map-marker-alt" aria-hidden="true" aria-label="map-marker-alt icon"></i> 209<span class="">71 Avenue A, Turners Falls, MA</span> 210</a> 211</span> 212<span class="iconset text6"> 213<i class="fa fa-phone" aria-hidden="true" aria-label="phone icon"></i> 214<span class="">413-648-SHEA</span> 215</span> 216<span class="social fa-size" style=""> 217<span class="text-info iconset"><a href="https://www.facebook.com/sheatheater/" target="_blank" alt="facebook"><i aria-label="facebook icon" class="fab fa-facebook"></i><span class="sr-only">facebook</span></a></span> 218<span class="text-info iconset"><a href="https://www.instagram.com/sheatheater/" target="_blank" alt="instagram"><i aria-label="instagram icon" class="fab fa-instagram"></i><span class="sr-only">instagram</span></a></span> 219<span class="text-info iconset"><a href="https://twitter.com/SheaTheater" target="_blank" alt="twitter"><i aria-label="twitter icon" class="fab fa-twitter"></i><span class="sr-only">twitter</span></a></span> 220</span> 221</div> 222</div> 223</div> 224</div> 225</div> 226</div> 227</div> 228<!-- start pagenav tag --> 229<nav id="navmainpageNavID2" class="navbar pagenav-dropdown navbar-expand-md 230pl-0 pr-0 pt-1 pb-1 mt-0 mb-0 ml-0 mr-0"> 231<div class="container pl-0 pr-0"> 232<a class="navbar-brand-img navbar-brand pt-0 pb-0 pl-2 pr-2 d-flex align-items-center" href="/"> 233<span class="brand-image"><img src="/header/SheaTheater-tiny-Logo.png" alt="Shea Theater Arts Center" class="img-responsive mb-0 navbar-image mr-2" id="headerLogo"></span> 234</a> 235<button class="navbar-toggler navbar-dark" data-toggle="collapse" aria-label="Open Menu" data-target="#navbar-1"> 236<span class="navbar-toggler-icon navbar-dark"></span> 237</button> 238<div id="navbar-1" class="navbar-collapse collapse"> 239<!-- REALESTATE ERROR 161 Invalid object name 'custom_MLSPIN.dbo.mls_listing_all'.: --> 240<ul class='nav navbar-nav ml-auto'><li class='nav-item'> 241<!-- IMAGES!! --> 242<!-- no images drop-down --> 243<a id="menu_p8" 244class="nav-link" 245href="/p/8/Shea-Theater-Arts-Center"><span>About</span></a><!-- yo1 --> 246<!-- yo4 --> 247</li><li class='nav-item'> 248<a id="menu_p7" 249class="nav-link" 250href="/p/7/The-History-of-the-Shea-Theater-Turners-Falls-MA"><span>History</span></a><!-- yo1 --> 251<!-- yo4 --> 252</li><li class='nav-item'> 253<a id="menu_p10" 254class="nav-link" 255href="/p/10/Help-the-Shea-keep-dreaming-on-Avenue-A"><span>Donate</span></a><!-- yo1 --> 256<!-- yo4 --> 257</li><li class='dropdown nav-item'> 258<a id="menu_d" 259class="nav-link" 260href="/calendar"><span>Shows & Tickets</span></a> 261</li><li class='nav-item'> 262<a id="menu_c" 263class="nav-link" 264href="/contact"><span>Contact</span></a> 265</li></ul> 266</div><!-- /.nav-collapse --> 267</div> 268</nav> 269<!-- end pagenav tag --> 270</div> 271</div> 272</div> 273</header> 274<!-- ************************** end of header head ***********************--> 275<main> 276<!-- START PAGE DIV --> 277<div class="page d d23314 " style=""> 278<div class="container maincontent"> 279<div class="row"> 280<div class="col-sm-12"> 281<!-- INSIDE CALENDAR --> 282<!-- INSIDE CFOUTPUT --> 283<div class="calendarEvent" > 284<a name="title"></a> 285<h1 class="news">Spirit and Song: A Psychic Medium Fair and Concert </h1>
286<!-- HELLO FROM INSIDE FIGURE --> 287<figure 288class="pos-rel figure col-xs-12 col-sm-6 col-md-5" 289style="float:right; margin:0 0 10px 10px;padding:0px;text-align:center;"> 290<!-- call image --> 291<!-- hello from inside figure_image --> 292<div class="calendar_image "> 293<!-- hoohah 4 --> 294<!-- yes --> 295<img id="topImg" 296class="calendar img-responsive img-fluid figure-img rf-image-dropzone" 297style="margin:0 auto; border:0; " 298src="/calendar/calendar_23314_small.jpg?20260805205119" 299alt=""> 300<!-- hoohah 34 --> 301</div> 302<!-- goodbye from inside figure_image --> 303</figure> 304<div id="myModal" class="modal-img" style="display:none;"> 305<div class="modal-img-container"> 306<span class="close"><i class="fas fa-times-circle"></i></span> 307<img class="modal-content" id="img01" alt=""> 308</div> 309</div> 310<style> 311img.page:hover { cursor: pointer; } 312</style> 313<!-- ======== File robot modals / scripts ======== -->
314<script> 315// Get the modal 316var modal = document.getElementById('myModal'); 317// Set Parameters for image and generate image src 318var imgParam = { name: 'calendar_', imgID: '23314', size: 'large', fileType: 'jpg' }; 319console.log('imgParam', imgParam); 320var imageChange = '/calendar/' + imgParam.name + imgParam.imgID + '_' + imgParam.size + '.' + imgParam.fileType; 321// Get the image and insert it inside the modal - use its "alt" text as a caption 322var img = document.getElementById('topImg'); 323var modalImg = document.getElementById("img01"); 324// onClick display modal 325if (img) { 326img.onclick = function () { 327console.log('[DEBUG] Image clicked. - ' + imageChange); 328modal.classList.add('modalFadeImg'); 329modalImg.src = this.innerHTML = imageChange; 330// modalImg.onerror = function(event) { 331// console.log(event); 332// modalImg.src = this.innerHTML = '/calendar/' + imgParam.name + '_' + imgParam.imgID + '_' + 'large' + '.' + imgParam.fileType; 333// } 334} 335}; 336// Get the <span> element that closes the modal 337var span = document.getElementsByClassName("close")[0]; 338//close the modal 339if(span) { 340span.onclick = function () { 341modal.classList.remove('modalFadeImg'); 342} 343}; 344if(modal) { 345modal.onclick = function() { 346modal.classList.remove('modalFadeImg'); 347} 348}; 349</script>
349 350<!-- GOODBYE FROM INSIDE FIGURE --> 351<p> 352<strong><em>Saturday, September 26, 2026, 11:00 am until 9:00 pm</em></strong> 353<br><span class="synopsysfull"><em>Presented by the National Spirit Alliance. Join us for an inspiring day where music, healing, creativity, history, and community come together under one roof. Psychic Fair by day and Concert by night!</em></span> 354</p> 355<p class="ticketURL"><a href="https://events.leapevents.com/event/eightvoicesonestage-spiritsong" target="_blank" class="btn btn-xl btn-success">Buy Tickets</a></p> 356<span class="noprint"> 357<div class="add-cal"></div>
358<script> 359var myCalendar = createCalendar({ 360options: { 361class: 'btn btn-append', 362id: 'cal-23314' // You need to pass an ID. If you don't, one will be generated for you. 363}, 364data: { 365title: 'Spirit and Song: A Psychic Medium Fair and Concert', // Event title 366start: new Date('September 26, 2026 11:00'), // 367duration: 120, // Event duration (IN MINUTES) 368end: new Date('September 26, 2026 21:00'), 369// You can also choose to set an end time. 370// If an end time is set, this will take precedence over duration 371address: 'Presented by the National Spirit Alliance. Join us for an inspiring day where music, healing, creativity, history, and community come together under one roof. Psychic Fair by day and Concert by night!', 372description: 'https://sheatheater.org/d/23314/Spirit-and-Song-A-Psychic-Medium-Fair-and-Concert' 373} 374}) 375document.querySelector('.add-cal').appendChild(myCalendar); 376</script>
376 377<style> 378#add-to-calendar-checkbox-label { 379cursor: pointer; 380} 381.add-to-calendar-checkbox ~ a { 382display: none; 383} 384.add-to-calendar-checkbox:checked ~ a { 385display: block; 386width: 150px; 387margin-left: 20px; 388} 389input[type=checkbox].add-to-calendar-checkbox { 390position: absolute; 391top: -9999px; 392left: -9999px; 393} 394.add-to-calendar-checkbox ~ a:before { 395width: 16px; 396height: 16px; 397display: inline-block; 398margin-right: .5em; 399content: ' '; 400} 401</style> 402</span> 403<p> </p> 404<p><meta charset="utf-8" /></p> 405<p dir="ltr"><b id="docs-internal-guid-2cdd7ca5-7fff-9a99-6b52-10cb68c329ab">Spirit & Song: A Day of Community, Connection & Co-Creation<br /> 406Saturday, September 26, 2026<br /> 407<br /> 408Spend the afternoon exploring the Spirit & Song Psychic Medium Fair, featuring private appointments with experienced psychic mediums, Reiki practitioners, healers, tarot readers, and intuitive practitioners. Throughout the day you'll also find a historical exhibit celebrating Lake Pleasant, a presentation on local history, a public demonstration of mediumship, and opportunities to connect with musicians, practitioners, and community members.</b></p> 409<p dir="ltr"><b>As evening falls, the celebration continues with Eight Voices, One Stage, the culminating concert of the Pond Lily Project. Five Artists in Residence and three Artist Mentors come together for one unforgettable evening of original music created through months of collaboration, mentorship, songwriting, and recording.</b></p> 410<p dir="ltr"><b>Whether you're seeking personal guidance, live music, local history, creative inspiration, or simply a welcoming community to spend the day with, Spirit & Song<br /> 411offers something for everyone. Presented by The National Spiritual Alliance, Spirit & Song supports our nonprofit mission while celebrating the Spirit, arts, healing, education, and community that have been at the heart of Lake Pleasant for more than a century.</b></p> 412<p dir="ltr"><br /> 413<b>Spirit & Song Schedule<br /> 41411:00 a.m.–4:00 p.m.<br /> 415Spirit & Song Psychic Medium Fair</b></p> 416<p dir="ltr"><b>TICKETS FOR PSYCHIC MEDIUNM FAIR:<br /> 417https://spiritualallianceusa.org/p/68/Spirit--Song-Psychic-Medium-Fair-Tickets</b></p> 418<p dir="ltr"><b><u>SCHEDULE</u><br /> 419All Day<br /> 420Lake Pleasant: Then, Now & Through the Artist's Eye Exhibit<br /> 4214:30 p.m.<br /> 422Lake Pleasant Historical Presentation<br /> 4235:30 p.m.<br /> 424Mediumship Demonstration<br /> 4256:00 p.m. Doors | 7:00 p.m. Music<br /> 426Eight Voices, One Stage Concert<br /> 427Tickets: https://events.leapevents.com/event/eightvoicesonestage-spiritsong<br /> 428PLEASE NOTE: Psychic Medium Fair appointments and concert tickets are reserved<br /> 429separately.</b></p> 430<p dir="ltr"><br /> 431<b>For the complete schedule, Psychic Medium Fair appointments, concert tickets, participating practitioners, artist information, parking, accessibility information,<br /> 432and everything you need to plan your visit, please visit our complete event page:<br /> 433https://spiritualallianceusa.org/p/67/Spirit--Song</b></p> 434<p dir="ltr"> </p> 435<p>For More Information:</p> 436<p>Kara Kharmah<br /> 437<a rel="noopener">contact@SpiritualAllianceUSA.<wbr />org</a></p> 438<p><strong>Thank you to the Spirit & Song event sponsors:</strong></p> 439<p><strong>RiverCulture<br /> 440Greenfield Savings Bank<br /> 441Montague Village Store<br /> 442Renaissance Painters<br /> 443Delta House Press<br /> 444PRIA Mindful Marketing & Branding</strong></p> 445<p><strong>Thank you to the community and project partners:</strong></p> 446<p><strong>Susan Paquet Photography<br /> 447Sean Byrne Foundation<br /> 448Creatures of the Night Collective<br /> 449MCTV<br /> 450Simon Says Booking</strong></p> 451</div> 452<!-- INSIDE CFOUTPUT --> 453<!-- INSIDE CALENDAR --> 454</div> 455</div> 456</div> 457</div> 458<!-- END PAGE DIV --> 459<div class="lowercontent"> 460<!-- START PAGE SECTIONS --> 461<!-- inside page sections --> 462<!-- this is NOT a p (62) --> 463<!-- canview = 1 (83) --> 464<!-- END PAGE SECTIONS --> 465</div> 466</main> 467<div class="thanks"><div class="container"><div class="row"> 468<div class="static sponsors"> 469<!-- from var application.static.sponsors --> 470<h3 style="text-align: center;">Special Thanks to Our Sponsors and Underwriters</h3> 471<p style="text-align: center;"><a href="http://thebetterfish.com" target="_blank">Australis Aquaculture</a> • <a href="http://artbev.coop" target="_blank">Artisan Beverage Cooperative</a> • <a href="http://www.thebenjamincompany.net/" target="_blank">Benjamin Company</a> • <a href="http://www.berkshire-brewing.com/" target="_blank">Berkshire Brewing Company</a> • <a href="http://bigdaddysrv.com/">Big Daddy's RV Sales and Service</a> • <a href="http://cohnandcompany.com/" target="_blank">Cohn and Company Real Estate Agency</a> • <a href="https://myccu.org/" target="_blank">Community Credit</a> • <a href="https://www.common-capital.org/" target="_blank">Common Capital</a> • <a href="http://communityfoundation.org">Community Foundation of Western Massachusetts</a> • <a href="http://ctriverinternists.com" target="_blank">Connecticut River Internists</a> • <a href="https://deansbeans.com/" target="_blank">Dean's Beans</a> • <a href="https://www.bankesb.com/" target="_blank">Easthampton Savings Bank</a> • <a href="gdfsuezna.com/firstlight-power-resources" target="_blank">FirstLight GDF Suezna</a> •
471<a href="https://www.northwesternmutual.com/financial/advisor/m-gagne/">Gagne Wealth Management Group</a> • <a href="http://thegilltavern.com" target="_blank">Gill Tavern</a> • <a href="https://www.gilmoreandfarrell.com/">Gilmore and Farrell Insurance Agency</a> • <a href="http://goffmedia.com" target="_blank">Goff Media</a> • <a href="http://greatfallsharvest.com" target="_blank">Great Falls Harvest</a> • <a href="http://greenriverfestival.com" target="_blank">Green River Festival</a> • <a href="http://www.gcc.mass.edu" target="_blank">Greenfield Community College</a> • <a href="https://www.greenfieldcoopbank.com" target="_blank">Greenfield Cooperative Bank</a> • <a href="https://www.greenfieldsavings.com/" target="_blank">Greenfield Savings Bank</a> • <a href="https://loottheshop.com" target="_blank">Loot</a> • <a href="https://massculturalcouncil.org/">Massachusetts Cultural Council</a> • <a href="https://montaguebookmill.com/" target="_blank">Montague Bookmill</a> • <a href="https://MontagueWebWorks.com" target="_blank">Montague WebWorks</a> • <a href="https://northeast-solar.com" target="_blank">Northeast Solar</a> • <a href="https://thepeoplespint.com" target="_blank">People's Pint</a> • <a href="https://rainmkr.com/" target="_blank">Rainmaker Consulting</a> • <a href="http://rendezvoustfma.com/" target="_blank">The Rendezvous</a> • <a href="http://solarstoreofgreenfield.com" target="_blank">Solar Store of Greenfield</a> • <a href="http://stobierski.com" target="_blank">Stobierski and Connor</a> • <a href="http://toldvideo.com" target="_blank">Told Video</a> • <a href="http://www.ridemaxbus.com/tntg" target="_blank">True North Transit</a> • <a href="http://www.turnitup.com/" target="_blank">Turn It Up</a></p> 472<p style="text-align: center;"> </p> 473<p style="text-align: center;"><strong>Thanks to the Mass Cultural Council for their vital support this year. </strong><strong>We'd also like to thank the Community Foundation of Western Massachusetts for their support in the form of a Flexible Funding grant. We couldn't do this work without you!</strong></p> 474<p style="text-align: center;"> </p> 475<p style="text-align: center;"><strong><img alt="" class="img-responsive" height="88" src="/library/mcc-logo-rgb-notag.jpg" width="242" /> <img alt="" class="img-responsive" src="/library/CF.jpg" /></strong></p> 476</div> 477</div></div></div> 478<footer> 479<div class="footer_default noprint"> 480<div id="footer" class="container"> 481<div class="footerO row pt-2"> 482<!-- starting from 1 --> 483<!-- this is c: 1 --> 484<div class="col-sm-12 col-md-6 text-center" id="footerRow1"> 485<!-- listfind(attributes.staticPageCol,'col1') --> 486<!-- attributes.footerSocialCol eq 'col1' --> 487<!-- attributes.footerNavCol eq 'col1' --> 488<!-- yes --> 489<!-- hello from pagenav! --> 490<!-- SHOW PARENT = 0 --> 491<!-- qsImagesCat.recordCount = 1 --> 492<ul><li> 493<!-- hoohah 167 --> 494<!-- PAGES! --> 495<!-- hoohah 202 --> 496<!-- thecount = 1 --> 497<a id="menu_p8" 498href="/p/8/Shea-Theater-Arts-Center"> 499<span>About</span> 500</a> 501<!-- thecount = 2 --> 502</li><li> 503<a id="menu_p7" 504href="/p/7/The-History-of-the-Shea-Theater-Turners-Falls-MA"> 505<span>History</span> 506</a> 507<!-- thecount = 3 --> 508</li><li> 509<a id="menu_p10" 510href="/p/10/Help-the-Shea-keep-dreaming-on-Avenue-A"> 511<span>Donate</span> 512</a> 513</li><li><a id="menu_d" 514title="Shows & Tickets" 515class="active" 516href="/calendar"><span>Shows & Tickets</span></a> 517</li><li><a id="menu_c" 518title="Contact" 519href="/contact"><span>Contact</span></a> 520</li></ul> 521<!-- attributes.footerShowSearchCol eq 'col1' --> 522<!-- attributes.loginCol eq 'col1' --> 523</div> 524<!-- this is c: 2 --> 525<div class="col-sm-12 col-md-6 text-center" id="footerRow2"> 526<!-- listfind(attributes.staticPageCol,'col2') --> 527<!-- yes --> 528<div class="static footer-defaultcol2"> 529<!-- from var application.static.footer_defaultcol2 --> 530<p style="text-align: center;"><strong>SHEA THEATER ARTS CENTER</strong><br /> 531<a href="https://goo.gl/maps/oQeWV6HTEMiTmF6Y6" target="_blank"><span class="LrzXr">71 Avenue A, </span>Turners Falls, MA 01376</a></p> 532<p style="text-align: center;"><strong>Mailing Address:</strong> P.O Box 773, Turners Falls, MA 01376</p> 533<p style="text-align: center;"><a href="/x/1/Booking-Inquiries">Booking and Rental Inquiries</a></p> 534</div> 535<!-- attributes.footerSocialCol eq 'col2' --> 536<!-- yes --> 537<span class="social fa-size" style=""> 538<span class="text-info iconset"><a href="https://www.facebook.com/sheatheater/" target="_blank" alt="facebook"><i aria-label="facebook icon" class="fab fa-facebook"></i><span class="sr-only">facebook</span></a></span> 539<span class="text-info iconset"><a href="https://www.instagram.com/sheatheater/" target="_blank" alt="instagram"><i aria-label="instagram icon" class="fab fa-instagram"></i><span class="sr-only">instagram</span></a></span> 540<span class="text-info iconset"><a href="https://twitter.com/SheaTheater" target="_blank" alt="twitter"><i aria-label="twitter icon" class="fab fa-twitter"></i><span class="sr-only">twitter</span></a></span> 541</span> 542<!-- attributes.footerNavCol eq 'col2' --> 543<!-- attributes.footerShowSearchCol eq 'col2' --> 544<!-- attributes.loginCol eq 'col2' --> 545</div> 546</div> 547</div> 548</div> 549<div id="lowerFooter" class="text-center"> 550<div id="footer"> 551<span class="footerO"> 552<span class="footerL"> 553© 2026 Shea Theater Arts Center 554| 55571 Avenue A, Turners Falls, MA 01376. 413-648-SHEA | <a href=http://MontagueWebWorks.com target=_blank>MWW</a> 556</span> 557<span class="footerM"> 558| 559</span> 560<span class="footerR">
561<a href="https://RocketFusion.com" target="_blank">Powered by RocketFusion 123</a> 562</span> 563</span> 564</div> 565<span class="login-link"> 566<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> 567<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> 568</span> 569</div> 570</footer> 571<!-- BS4 Init --> 572<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>
573<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
vendor: 1 bytes, line 573
573
574<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 574
574
575<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 575
575
576<script> 577// Assuming we have a div with id="editor_container" 578const filerobotImageEditor = new window.FilerobotImageEditor( 579document.querySelector("#rf-image-editor-edit") 580); 581const image_file_upload = document.getElementById("rf-image-upload"); 582// const btn_image_upload_edit = document.getElementById("btn-image-upload-edit"); 583var source_image = ''; // the HTMLImageElement 584var save_image_name = ''; // name to save image with 585var global_fr_folder = ''; // where to upload 586var global_fr_table = ''; // db table to update 587var global_fr_prefix = ''; // image file prefix, ie; blocks_ 588var global_fr_pid = 0; // image ID, ie; blocks_2323 589var dropzone_website_dir = 'SheaTheater.org\\httpdocs'; 590const file_robot_defaults = { 591save_image_quality : 1, // 0.1 - 1 (default 0.92) - applies to jpeg, jpg and webp images only 592}; 593function renderFileRobotEditor(source,fr_folder=global_fr_folder,fr_table=global_fr_table,fr_prefix=global_fr_prefix,fr_pid=global_fr_pid) { 594console.group("renderFileRobotEditor() called"); 595console.log('source:', source); 596console.log('fr_folder:', fr_folder); 597console.log('fr_table:', fr_table); 598console.log('fr_prefix:', fr_prefix); 599console.log('fr_pid:', fr_pid); 600console.groupEnd(); 601source_image = source; 602filerobotImageEditor.render({ 603source: source_image, 604useBackendTranslations: false, 605defaultSavedImageName: save_image_name, 606defaultSavedImageQuality: file_robot_defaults.save_image_quality, 607tabsIds: [ 608window.FilerobotImageEditor.TABS.ADJUST, 609window.FilerobotImageEditor.TABS.FINETUNE, 610window.FilerobotImageEditor.TABS.FILTERS, 611window.FilerobotImageEditor.TABS.ANNOTATE, 612window.FilerobotImageEditor.TABS.WATERMARK], // or ['Adjust', 'Annotate', 'Watermark'] 613defaultTabId: window.FilerobotImageEditor.TABS.ADJUST, 614Crop: { 615minWidth: 14, 616minHeight: 14, 617maxWidth: null, 618maxHeight: null, 619ratio: 'custom', 620ratioTitleKey: 'custom', 621noPresets: false, 622autoResize: false, 623presetsItems: [], 624presetsFolders: [], 625lockCropAreaAt: null, // 'top-left' 626}, 627// disable save modal 628onBeforeSave: () => { 629return false; 630}, 631onSave: async (imageInfo, designState) => { 632// console.log('onSave() imageInfo', imageInfo); 633// console.log('onSave() designState', designState); 634// create formData object to populate and send with fetch request 635const formData = new FormData(); 636formData.append('image64', imageInfo.imageBase64); 637formData.append('image_extension', imageInfo.extension); 638formData.append('image_height', imageInfo.height); 639formData.append('image_name', imageInfo.name); 640formData.append('image_name_with_extension', imageInfo.fullName); 641formData.append('image_quality', imageInfo.quality); 642formData.append('image_width', imageInfo.width); 643formData.append('dropzone_website_dir', dropzone_website_dir); // e.g. MikMuller.com\httpdocs 644formData.append('rf_dropzone_dir', fr_folder); 645console.log('onSave() formData [2]', formData); 646// add dropzone options for compatibility with current upload script 647const drop_zone_options = { 648tbl: fr_table, 649imgbase: `${fr_prefix}${fr_pid}`, 650imgname: imageInfo.fullName, 651id: fr_pid 652} 653formData.append("dropzone_options", JSON.stringify(drop_zone_options)); 654console.log('onSave() drop_zone_options', drop_zone_options); 655try { 656// _dropzone-file-upload-ajax.cfm 657// _upload-base64.cfm (for testing) 658console.log('renderFileRobotEditor.onSave() imageInfo', imageInfo); 659const upload_request = await fetch('/inc/_dropzone-file-upload-ajax.cfm', { 660method: 'POST', 661body: formData 662}); 663const upload_result = await upload_request.json(); 664// console.log('DEBUG: [onSave] upload_result', upload_result); 665// close modal 666$('#rfImageModalEdit').modal('hide'); 667// page reload 668window.location.reload(); 669} catch (error) { 670console.log('onSave() error', error); 671const upload_result = { 672code: 1, 673message: error.message, 674success: false 675} 676} 677}, 678onClose: (closingReason) => { 679console.log("Closing reason", closingReason); 680filerobotImageEditor.terminate(); 681// reset the input field 682document.getElementById('rf-image-upload').value = ''; 683}, 684}); 685} 686/** 687* Function to handle image selection from the file input field 688* async as we use a promise to await image load 689*/ 690async function onImageSelected(event, file_obj, fr_folder, fr_table, fr_prefix, fr_pid) { 691let file; 692if (file_obj) { 693console.log('onImageSelected file_obj', file_obj, fr_folder, fr_table, fr_prefix, fr_pid); 694file = file_obj; 695} else { 696file = event.target.files[0]; 697} 698save_image_name = file.name; 699console.log('onImageSelected file', file); 700// const reader = new FileReader(); 701const image = new Image(); 702const img_max_width = 1600; 703image.src = URL.createObjectURL(file); 704// Promise to await image load 705await new Promise((resolve) => { 706image.onload = () => { 707const img_width = image.width; 708const img_height = image.height; 709// console.log('onImageSelected img load', img_width, img_height); 710if (img_width > img_max_width) { 711const img_scale = img_max_width / img_width;
712image.width = img_width * img_scale; 713image.height = img_height * img_scale; 714} 715// resolve the promise 716resolve(); 717}; 718}); 719// open the modal 720$('#rfImageModalEdit').modal('show'); 721// Render file robot 722renderFileRobotEditor(image, fr_folder, fr_table, fr_prefix, fr_pid); 723} 724/** Function to handle image editing */ 725function 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) { 726console.log('[DEBUG] editExistingImage() called.'); 727console.log('image_url:', image_url); 728console.log('image_name:', image_name); 729console.log('fr_folder:', fr_folder); 730console.log('fr_table:', fr_table); 731console.log('fr_prefix:', fr_prefix); 732console.log('fr_pid:', fr_pid); 733save_image_name = image_name; 734renderFileRobotEditor(image_url, fr_folder, fr_table, fr_prefix, fr_pid); 735} 736/** Function to open the hidden input file field */ 737function openFileInput(fr_folder='', fr_table='', fr_prefix='', fr_pid=0) { 738console.log('[DEBUG] openFileInput() called.', fr_folder, fr_table, fr_prefix, fr_pid); 739global_fr_folder = fr_folder; // where to upload 740global_fr_table = fr_table; // db table to update 741global_fr_prefix = fr_prefix; // image file prefix, ie; blocks_ 742global_fr_pid = fr_pid; 743image_file_upload.click(); 744} 745/** Function to open RF File Manager in a modal 746* Will be used by ckeditor/plugins/rffilemanager/browse.cfm 747* Need the image full url to make a copy of for ai images 748*/ 749function openRFFileManager(current_image_url, fr_folder=global_fr_folder, fr_table=global_fr_table, fr_prefix=global_fr_prefix, fr_pid=global_fr_pid) { 750// $($(this).data( "target" ) + ' .modal-body').load( data_remote ); 751console.group("bs4_init openRFFileManager() called"); 752console.log("current_image_url:", current_image_url); 753console.log("fr_folder:", fr_folder); 754console.log("fr_table:", fr_table); 755console.log("fr_prefix:", fr_prefix); 756console.log("fr_pid:", fr_pid); 757console.groupEnd(); 758const rfFileManagerModalIframe = document.getElementById('rfFileManagerModalIframe'); 759rfFileManagerModalIframe.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}`; ; 760$('#rfFileManagerModal').modal('show'); 761} 762/** Function to close the RF File Manager modal 763* Will be used by ckeditor/plugins/rffilemanager/browse.cfm 764* Need to upload the image and then close the modal 765*/ 766function closeRFFileManagerModal(image_path, img_name='', fr_folder='', fr_table='', fr_prefix='', fr_pid=0) { 767console.group("bs4_init closeRFFileManagerModal() called"); 768console.log("image_path:",image_path); 769console.log("img_name:",img_name); 770console.log("fr_folder:",fr_folder); 771console.log("fr_table:",fr_table); 772console.log("fr_prefix:",fr_prefix); 773console.log("fr_pid:",fr_pid); 774console.groupEnd(); 775$('#rfFileManagerModal').modal('hide'); 776$('#rfImageModalEdit').modal('show'); 777save_image_name = img_name; 778// renderFileRobotEditor(image_path); 779renderFileRobotEditor(image_path, fr_folder, fr_table, fr_prefix, fr_pid); 780} 781/** Function to close the RF File Manager modal without opening File Robot 782* Will be used by ckeditor/plugins/rffilemanager/browse.cfm 783*/ 784function closeRFFileManagerModalOnly(reload=false) { 785$('#rfFileManagerModal').modal('hide');
786if (reload) { 787setTimeout(() => { 788window.location.reload(); 789}, 500); 790} 791} 792// Handle closing of modal without saving (must cleanup file robot editor) 793$('#rfImageModalEdit').on('hidden.bs.modal', function (event) { 794// console.log('modal closed'); 795filerobotImageEditor.terminate(); 796image_file_upload.value = ''; 797}); 798/** Rocketfusion - enable drag/drop zone on an image with the .rf-image-dropzone class */ 799// Create dropzone object for all images with the .rf-image-dropzone class 800const rf_image_drop_zone = document.querySelectorAll('.rf-image-dropzone'); 801// Attach event listeners to all instances of rf_image_drop_zone 802rf_image_drop_zone.forEach(function (i) { 803// Handle drag over event 804i.addEventListener('dragover', function(e) { 805event.target.classList.add('image-dragover'); 806dragOverHandler(e); 807}); 808// Handle drag leave event 809i.addEventListener('dragleave', function(e) { 810// console.log('Image dropzone dragleave'); 811event.target.classList.remove('image-dragover'); 812}); 813// Handle drop event 814i.addEventListener('drop', function(e) { 815event.target.classList.remove('image-dragover'); 816dropHandler(e); 817}); 818}); 819/** 820* Handles the drop event of files in the drop zone. 821* Prevents the default behavior of opening the file and logs the names of the dropped files. 822* 823* @param {Event} ev - The drop event. 824* @returns {undefined} 825*/ 826function dropHandler(ev) { 827// console.log('File(s) dropped'); 828// Prevent default behavior (Prevent file from being opened) 829ev.preventDefault(); 830if (ev.dataTransfer.items) { 831// Use DataTransferItemList interface to access the file(s) 832[...ev.dataTransfer.items].forEach((item, i) => { 833// If dropped items aren't files, reject them 834if (item.kind === 'file') { 835const file = item.getAsFile(); 836console.log(`file[${i}].name = ${file.name}`); 837onImageSelected(i, file); 838} 839}); 840} else { 841// Use DataTransfer interface to access the file(s) 842[...ev.dataTransfer.files].forEach((file, i) => { 843console.log(`file[${i}].name = ${file.name}`); 844onImageSelected(i, file); 845}); 846} 847} 848/** 849* Handles the drag over event of files in the drop zone. 850* Prevents the default behavior of opening the file. 851* 852* @param {Event} ev - The drag over event. 853* @returns {undefined} 854*/ 855function dragOverHandler(ev) { 856// Prevent default behavior (Prevent file from being opened) 857ev.preventDefault(); 858} 859</script>
859 860<style> 861.modal-fullscreen { 862width: 100vw; 863max-width: none; 864height: 100%; 865margin: 0; 866} 867.modal-content { 868height: 100%; 869border: 0; 870@include border-radius(0); 871} 872.modal-body { 873overflow-y: auto; 874} 875.image-dragover { 876opacity: 0.5; 877} 878</style>
879<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 879
879
880<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
vendor: 1 bytes, line 880
880
881<script>$(window).scroll(function() { if ($(document).scrollTop() > 50) { $('nav').addClass('shrink'); } else { $('nav').removeClass('shrink'); } }); </script>
881 882<!-- contact and forms -->
883<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script>
vendor: 1 bytes, line 883
883
884<script src="//cdnjs.cloudflare.com/ajax/libs/parsley.js/2.8.1/parsley.js"></script>
vendor: 1 bytes, line 884
884
885<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/js/bootstrap-datepicker.min.js"></script>
vendor: 1 bytes, line 885
885
886<script> 887function limitText(limitField, limitNum) { 888if (limitField.value.length > limitNum) { 889limitField.value = limitField.value.substring(0, limitNum); 890} 891} 892$(document).ready(function(){ 893// this code is in bs4_init 894// Real time formatting, added by Andrew Kelly, 2/14/19 895// (US phone formatter) - on document load, attach handler to the phone-us class and mask the input 896$('.phone-us').mask('000-000-0000'); 897// Max length of a number input 898$('.numbers-only').keyup(function() { 899var maxLen = $(this).data('max-length'); 900var input = $('.numbers-only').val() 901var inputLen = input.length; 902console.log('[DEBUG] inputLen:' + inputLen); 903console.log('[DEBUG] maxLen:' + maxLen); 904if ( inputLen >= 9 ) { 905console.log('[DEBUG] Trim to 9 chars'); 906$('.numbers-only').val( input.substring(0, 9) ); 907} 908}); 909}); 910// Validation performed on form SUBMIT 911$("#fRocketfusion").parsley({ 912errorClass: 'is-invalid text-danger', 913//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. 914errorsWrapper: '<span class="form-text text-danger"></span>', 915errorTemplate: '<span></span>', 916trigger: 'change' 917}); 918</script>
vendor: 1 bytes, line 918
918
919<script> 920let calendar = document.getElementById('calendar'); 921// Check if IOS 922let iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; 923// Find window width 924let clientW = window.innerWidth; 925// Set Custom style 926let oStyle; 927// Data-title attribute 928let data; 929// set a left num for break points 930let cordsLeft; 931let cordsCenter; 932if(clientW > 768){ 933cordsLeft = 315; 934cordsCenter = 130; 935} else if (clientW > 576 ) { 936cordsLeft = 200; 937cordsCenter = 70; 938} else { 939cordsLeft = 100; 940cordsCenter = 50; 941} 942// Create Outer DIV 943function OutDiv(style){ 944return '<div style="' + style + '" class="append-div"></div>'; 945} 946$( '#calendar' ).find( 'div.calendarDateItems' ).append(OutDiv()) 947// Create Inner DIV with params 948function oDiv(style, data, addClass){ 949return '<div style="' + style + '" class="append-calendar ' + addClass +'" id="append-calendar">' + data + '</div>'; 950}; 951// If not IOS run code if IOS run other code 952if(!iOS){ 953// On mouseenter add div [oDIv] with params 954$( '#calendar' ).find( 'td.calendarDateItemsTD' ).on('mouseenter', function(event) { 955// Create HTMLCollection 956let targetInner = $( this ).find( '.calendarDateItems' ).find( '.calendarItem' ); 957let targetInnerChildren = []; 958targetInnerChildren.push(Array.from(targetInner)) 959let target = this; 960let targetColData = target.getAttribute('data-align'); 961let jTarget = $( this ) 962let targetDiv = $( this ).find( 'div.append-div' ); 963// If div.calendarDateItems is on the end add class on-end else add no class 964// target.parentElement.offsetLeft > (calendar.offsetWidth / 7) * 4 965if(targetColData == 'cal-right'){ 966// Loop Through HTMLCollection add class of on-end 967jTarget.on('mousemove', function(event){ 968targetDiv.css({'top': event.pageY + 8, 'left': event.pageX - cordsLeft}); 969}) 970targetInnerChildren[0].forEach(part => { 971if( $( part ).hasClass('calendarItem') ){ 972$( targetDiv ).append(oDiv(oStyle, part.getAttribute('data-title'), '')); 973} 974}) 975} else if(targetColData == 'cal-center'){ 976jTarget.on('mousemove', function(event){ 977targetDiv.css({'top': event.pageY + 15, 'left': event.pageX - cordsCenter}); 978}) 979targetInnerChildren[0].forEach(part => { 980if( $( part ).hasClass('calendarItem') ){ 981$( targetDiv ).append(oDiv(oStyle, part.getAttribute('data-title'), '')); 982} 983}) 984} else if(targetColData == 'cal-left') { 985// Loop Through HTMLCollection add no class 986jTarget.on('mousemove', function(event){ 987targetDiv.css({'top': event.pageY + 8, 'left': event.pageX + 10}); 988}) 989targetInnerChildren[0].forEach(part => { 990if( $( part ).hasClass('calendarItem') ){ 991$( targetDiv ).append(oDiv(oStyle, part.getAttribute('data-title'), '')); 992} 993}) 994} 995}); 996// on mouseleave remove div [oDiv] 997$( '#calendar' ).find( 'td.calendarDateItemsTD' ).on('mouseleave', function(event) { 998$( '.append-calendar' ).remove( '.append-calendar' ); 999}); 1000} else { 1001// If IOS == true 1002// On click add div [oDiv] with params 1003$( '#calendar' ).find( 'td' ).on('click', function(event) { 1004let targetInner = $( this ).find( '.calendarDateItems' ).find( '.calendarItem' ); 1005let targetInnerChildren = []; 1006targetInnerChildren.push(Array.from(targetInner)) 1007let target = this; 1008let targetColData = target.getAttribute('data-align'); 1009let targetParent = $( event.target ).parent().css({'position': 'relative'}) 1010let targetDiv = $( this ).find(' div.append-div' ) 1011let oDivCreated = document.getElementById('append-calendar'); 1012let jTargetDiv = $( this ).find( 'div.append-div' ).css({ 'width': '200px', 'max-width': '300%', 'top': '100%' }) 1013$( this ).css({ 'position': 'relative' }) 1014if( oDivCreated ){ 1015// if div already exists remove div 1016$( '.append-calendar' ).remove( '.append-calendar' ); 1017} else if ( !oDivCreated ) { 1018// if div doesn't exist and has required class add div [oDiv] with params 1019// if event.target.parentElement is on the end add class on-end else add no class 1020if(targetColData == 'cal-right'){ 1021jTargetDiv.addClass('on-end') 1022targetInnerChildren[0].forEach(part => { 1023if( $( part ).hasClass('calendarItem') ){ 1024$( targetDiv ).append(oDiv(oStyle, part.getAttribute('data-title'), '')); 1025} 1026}) 1027} else { 1028targetInnerChildren[0].forEach(part => { 1029if( $( part ).hasClass('calendarItem') ){ 1030$( targetDiv ).append(oDiv(oStyle, part.getAttribute('data-title'), '')); 1031} 1032}) 1033} 1034} 1035}); 1036} 1037</script>
vendor: 1 bytes, line 1037
1037
1038<script type="text/javascript" src="/RFAssets/js/joey.js?ver=20260911135311" charset="UTF-8"></script>
vendor: 1 bytes, line 1038
1038
1039<script type="text/javascript"> 1040$( 'body' ).on( 'click', '[data-toggle="modal"]', function(){ 1041let data_remote = $(this).data( "remote" ); 1042if ( data_remote && data_remote.length >= 2 ) { 1043$($(this).data( "target" ) + ' .modal-content').load( data_remote ); 1044} 1045}); 1046</script>
vendor: 1 bytes, line 1046
1046
1047<script> 1048$(document).ready(function() { 1049//$('nav').animate({opacity:'1'}, 50);<!-- set to 0.25 to make see thru --> 1050//$(img).animate({opacity:'1'}); 1051$initNavHgt = $('nav').outerHeight(); 1052$initHeadLogoHgt = $('#headerLogo').outerHeight(); 1053}); 1054</script>
1054 1055<!-- no userway account --> 1056</body> 1057</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.