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: Western Mass Emergency Medical Services 11--> 12<!-- ================================================================================================================= --> 13<!-- Title and App Tags --> 14<!-- 20260911135356 --> 15<title>Contact - Western Mass Emergency Medical Services</title> 16<meta property="og:title" content="Contact"> 17<meta property="twitter:title" content="Contact - Western Mass Emergency Medical Services"> 18<meta itemprop="name" content="Contact - Western Mass Emergency Medical Services"> 19<!-- safari --> 20<meta name="apple-mobile-web-app-title" content="Contact - Western Mass Emergency Medical Services"> 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 - Western Mass Emergency Medical Services"> 27<meta name="msapplication-tooltip" content="Contact - Western Mass Emergency Medical Services"> 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=Alegreya+SC|Oxygen"> 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="Northampton" /> 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-06-17" /> 51<meta name="geo.region" content="US-MA" /> 52<meta name="msvalidate.01" content="" /> 53<!-- no Facebook Pixel ID --> 54<meta name="author" content="Western Massachusetts Emergency Medical Services Inc." /> 55<meta name="owner" content="Western Massachusetts Emergency Medical Services Inc." /> 56<meta name="copyright" content="Copyright 2026 Western Massachusetts Emergency Medical Services Inc." /> 57<meta name="expires" content="Sep 26, 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="Western Mass Emergency Medical Services"> 66<meta property="twitter:site" content="@@WMEMSRegion1" /> 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<!-- warning: favicons file doesn't exist --> 72<!-- FAVICONS end --> 73<!-- this is the contact page --> 74<meta property="og:url" content="/contact"> 75<link rel="canonical" href="/contact"> 76<meta itemprop="image" content="/library/Always-In-Service.jpg"> 77<meta property="og:image" content="/library/Always-In-Service.jpg"> 78<meta property="twitter:image" content="/library/Always-In-Service.jpg"> 79<link rel="image_src" href="/library/Always-In-Service.jpg"> 80<meta property="og:image:alt" content="Contact"> 81<meta name="description" content="We are regional nonprofit corporation committed to improving the delivery of emergency medical services to residents of Weastern, MA."> 82<meta itemprop="description" content="We are regional nonprofit corporation committed to improving the delivery of emergency medical services to residents of Weastern, MA."> 83<meta property="og:description" content="We are regional nonprofit corporation committed to improving the delivery of emergency medical services to residents of Weastern, MA."> 84<meta property="twitter:description" content="We are regional nonprofit corporation committed to improving the delivery of emergency medical services to residents of Weastern, MA."> 85<!-- ================================================================================================================= -->
86<script src="https://kit.fontawesome.com/d3bffd01a6.js" crossorigin="anonymous"></script>
86 87<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"> 88<link rel="stylesheet" href="/RFassets/css/datatables-bs4.min.css"> 89<link rel="stylesheet" href="/RFAssets/css/RFtables.css?ver=20260911135356"> 90<link rel="stylesheet" href="/RFAssets/css/joey.css?ver=20260911135356"> 91<link rel="stylesheet" href="/site_style.css?ver=20260911135356"> 92<link rel="stylesheet" href="/header_style.css?ver=20260911135356"> 93<link rel="stylesheet" href="/RFAssets/css/_admin.css?ver=20260911135356"> 94<!-- custom stylesheet --> 95<link rel="stylesheet" href="/tmpl_GranvilleFire.css?ver=20260911135356">
96<script src="/RFAssets/js/boxover.js" type="text/javascript"></script>
vendor: 1 bytes, line 96
96
97<script type="text/javascript"> 98function toggleLayer(whichLayer,what) { 99if (document.getElementById) 100{ 101var style2 = document.getElementById(whichLayer).style; 102style2.display = what; 103} 104else if (document.all) 105{ 106var style2 = document.all[whichLayer].style; 107style2.display = what; 108} 109else if (document.layers) 110{ 111var style2 = document.layers[whichLayer].style; 112style2.display = what; 113} 114} 115function toggleCheckbox(source) { 116checkboxes = document.getElementsByName('file_delete'); 117for(var i=0, n=checkboxes.length;i<n;i++) { 118checkboxes[i].checked = source.checked; 119} 120} 121</script>
121 122<!-- No text_Google_Analytics_account defined --> 123<!-- No text_Google_Tag_Manager_ID defined --> 124<!-- end of metatags --> 125</head> 126<body class="notMobile" 127id="default"> 128<!-- THESE ARE HERE (ADMIN) BECAUSE THEY NEED TO BE AT THE TOP OF THE BODY, NOT IN THE META TAGS --> 129<!-- No text_Google_Tag_Manager_ID defined --> 130<!-- start pagenav tag --> 131<style> 132#navmainmain *, #navmainmain1 *, #navBarContainer { 133color: dark!important; 134background-color :dark!important; 135} 136</style> 137<nav style="position:sticky;top:0;z-index:2000;" id="navmainmain" class="navbar pagenav-dropdown sticky navbar-expand-md pl-0 pr-0 pt-0 pb-0 mt-0 mb-0"> 138<div class="container"> 139<!-- no title bar --> 140<a class="navbar-brand" href="/">Home</a> 141<button class="navbar-toggler navbar-dark" data-toggle="collapse" aria-label="Open Menu" data-target="#navbar-1"> 142<span class="navbar-toggler-icon"></span> 143</button> 144<div id="navbar-1" class="navbar-collapse collapse"> 145<!-- REALESTATE ERROR 161 Invalid object name 'custom_MLSPIN.dbo.mls_listing_all'.: --> 146<ul class='nav navbar-nav ml-auto'><li class='nav-item'> 147</li><li class='dropdown nav-item'> 148<a id="menu_p26" 149class="nav-link dropdown-toggle" 150href="/p/26/Committees"><span>Committees</span></a> 151<!-- hello from pagenav! --> 152<!-- SHOW PARENT = 0 --> 153<!-- qsImagesCat.recordCount = 0 --> 154<div class='dropdown-menu dropdown-menu-left'><ul><li class='dropdown-item'><span class='hi'></span> 155<!-- hoohah 167 --> 156<!-- PAGES! --> 157<!-- hoohah 202 --> 158<!-- thecount = 1 --> 159<a id="menu_p27" 160href="/p/27/Executive-Committee-and-Regional-Council"> 161<span>Executive Committee and Regional Council</span> 162</a> 163<!-- thecount = 2 --> 164</li><li class='dropdown-item'> 165<a id="menu_p29" 166href="/p/29/Region-1-County-EMS-Committees"> 167<span>Region 1 County EMS Committees</span> 168</a> 169<!-- thecount = 3 --> 170</li><li class='dropdown-item'> 171<a id="menu_p30" 172href="/p/30/Standing--Special-Committees-of-the-Board"> 173<span>Standing & Special Committees of the Board</span> 174</a> 175<!-- thecount = 4 --> 176</li><li class='dropdown-item'> 177<a id="menu_p28" 178href="/p/28/WMEMS-Meetings--Minutes"> 179<span>WMEMS Meetings & Minutes</span> 180</a> 181<!-- thecount = 5 --> 182</li><li class='dropdown-item'> 183<a id="menu_p31" 184href="/p/31/WMEMS-Staff"> 185<span>WMEMS Staff</span> 186</a> 187</li></ul></div> 188</li><li class='dropdown nav-item'> 189<a id="menu_p32" 190class="nav-link dropdown-toggle" 191href="/p/32/Classes--Training"><span>Classes / Training</span></a> 192<!-- hello from pagenav! --> 193<!-- SHOW PARENT = 0 --> 194<!-- qsImagesCat.recordCount = 0 --> 195<div class='dropdown-menu dropdown-menu-left'><ul><li class='dropdown-item'><span class='hi'></span> 196<!-- hoohah 167 --> 197<!-- PAGES! --> 198<!-- hoohah 202 --> 199<!-- thecount = 1 --> 200<a id="menu_p35" 201href="/p/35/MA-OEMS-Links"> 202<span>MA OEMS Links</span> 203</a> 204<!-- thecount = 2 --> 205</li><li class='dropdown-item'> 206<a id="menu_p40" 207href="/p/40/OPEN-MMs-and-MM-Policy"> 208<span>Open M&Ms</span> 209</a> 210<!-- thecount = 3 --> 211</li><li class='dropdown-item'> 212<a id="menu_p45" 213href="/p/45/Recert-Info-for-Affiliated-and-Unaffiliated-EMTs"> 214<span>Recertification</span> 215</a> 216<!-- thecount = 4 --> 217</li><li class='dropdown-item'> 218<a id="menu_p42" 219href="/p/42/Region-1-Training-Officers"> 220<span>Region 1 Training Officers</span> 221</a> 222<!-- thecount = 5 --> 223</li><li class='dropdown-item'> 224<a id="menu_p34" 225href="/p/34/WMEMS-Training-Information"> 226<span>WMEMS Training Information</span> 227</a> 228<!-- thecount = 6 --> 229</li><li class='dropdown-item'> 230<a id="menu_p1049" 231href="/p/1049/Neros-Law"> 232<span>Neroâs Law</span> 233</a> 234<!-- thecount = 7 --> 235</li><li class='dropdown-item'> 236<a id="menu_p1051" 237href="/p/1051/First-Responder-Training"> 238<span>First Responder Training</span> 239</a> 240</li></ul></div> 241</li><li class='dropdown nav-item'> 242<a id="menu_p46" 243class="nav-link dropdown-toggle" 244href="/p/46/DPHOEMS-docs-and-Region-1-Forms"><span>Advisories/Forms/Protocols/Lists</span></a> 245<!-- hello from pagenav! --> 246<!-- SHOW PARENT = 0 --> 247<!-- qsImagesCat.recordCount = 0 --> 248<div class='dropdown-menu dropdown-menu-left'><ul><li class='dropdown-item'><span class='hi'></span> 249<!-- hoohah 167 --> 250<!-- PAGES! --> 251<!-- hoohah 202 --> 252<!-- thecount = 1 --> 253<a id="menu_p48" 254href="/p/48/DPH-and-OEMS-WaiversAdvisoriesGuidance"> 255<span>DPH and OEMS Waivers/Advisories/Guidance</span> 256</a> 257<!-- thecount = 2 --> 258</li><li class='dropdown-item'> 259<a id="menu_p1052" 260href="/p/1052/Protocols-Point-of-Entry-Plans--EquipmentMedication-Lists"> 261<span>Protocols/Point of Entry/Equipment & Medication Lists</span> 262</a> 263</li></ul></div> 264</li><li class='dropdown nav-item'> 265<a id="menu_p17" 266class="nav-link dropdown-toggle" 267href="/p/17/Resources"><span>Resources</span></a> 268<!-- hello from pagenav! --> 269<!-- SHOW PARENT = 0 --> 270<!-- qsImagesCat.recordCount = 0 --> 271<div class='dropdown-menu dropdown-menu-left'><ul><li class='dropdown-item'><span class='hi'></span> 272<!-- hoohah 167 --> 273<!-- PAGES! --> 274<!-- hoohah 202 --> 275<!-- thecount = 1 --> 276<a id="menu_p21" 277href="/p/21/Critical-Incident-Stress-Management"> 278<span>Critical Incident Stress Management</span> 279</a> 280<!-- thecount = 2 --> 281</li><li class='dropdown-item'> 282<a id="menu_p23" 283href="/p/23/EMS-Week-Info"> 284<span>EMS Week Info</span> 285</a> 286<!-- thecount = 3 --> 287</li><li class='dropdown-item'> 288<a id="menu_p25" 289href="/p/25/Map-of-WMEMS-Coverage-AreaRegion-1"> 290<span>Map of WMEMS Coverage Area/Region 1</span> 291</a> 292<!-- thecount = 4 --> 293</li><li class='dropdown-item'> 294<a id="menu_p20" 295href="/p/20/Regional-AwardsSave-Awards"> 296<span>Regional Awards/Save Awards</span> 297</a> 298<!-- thecount = 5 --> 299</li><li class='dropdown-item'> 300<a id="menu_p22" 301href="/p/22/WMEMS-Projects--Programs"> 302<span>WMEMS Projects & Programs</span> 303</a> 304<!-- thecount = 6 --> 305</li><li class='dropdown-item'> 306<a id="menu_p24" 307href="/p/24/Equipment-Rental"> 308<span>Equipment Rental</span> 309</a> 310<!-- thecount = 7 --> 311</li><li class='dropdown-item'> 312<a id="menu_p18" 313href="/p/18/Western-Massachusetts-Ambulance-Services"> 314<span>Western Massachusetts Ambulance Services</span> 315</a> 316<!-- thecount = 8 --> 317</li><li class='dropdown-item'> 318<a id="menu_p19" 319href="/p/19/Western-Massachusetts-Hospitals"> 320<span>Western Massachusetts Hospitals</span> 321</a> 322</li></ul></div> 323</li><li class='nav-item'> 324<a id="menu_p41" 325class="nav-link" 326href="/p/41/Mass-Casualty-Incident-Resources"><span>MCI</span></a> 327</li><li class='nav-item'> 328<a id="menu_p39" 329class="nav-link" 330href="/p/39/Links"><span>Links</span></a> 331</li><li class='nav-item'> 332<a id="menu_c" 333class="nav-link" 334href="/contact"><span>Contact</span></a> 335</li></ul> 336</div><!-- /.nav-collapse --> 337</div> 338</nav> 339<!-- end pagenav tag --> 340<div class="jumbotron"> 341<span class="h1">Western Mass Emergency Medical Services</span> 342<span class="h2"> </span> 343</div> 344<div class="container page-wrap"> 345<div class="row"> 346<div class="col-sm-8 col-md-9"> 347<main> 348<!-- START PAGE DIV --> 349<div class="page c c0 " style=""> 350<div class="container maincontent"> 351<div class="row"> 352<div class="col-sm-12"> 353<h1 class="contact page"><span>Contact</span></h1> 354<h3>
354<strong class="textownername">Western Massachusetts Emergency Medical Services Inc.</strong></h3> 355<span class="social fa-size" style="float:right;font-size:2em"> 356<span class="text-info iconset"><a href="https://www.facebook.com/wmemsinc/" target="_blank" alt="facebook"><i aria-label="facebook icon" class="fab fa-facebook"></i><span class="sr-only">facebook</span></a></span> 357<span class="text-info iconset"><a href="@WMEMSRegion1" target="_blank" alt="twitter"><i aria-label="twitter icon" class="fab fa-twitter"></i><span class="sr-only">twitter</span></a></span> 358</span> 359<p> 360<p>30 Locust St, McCallum Building, Northampton, MA 01060 -- <strong>413-586-6065</strong></p> 361</p> 362<span class="contactIntro"> 363<p>To get in touch with us via email please fill out the form below:</p> 364</span> 365<form action="/action.cfm?p=c.add" method="post" role="form"> 366<input type="hidden" name="cc" value=""> 367<input type="hidden" name="cc_email" value=""> 368<input type="hidden" name="include" value="contact"> 369<input type="hidden" name="run" value="1"> 370<input type="hidden" name="referer" value=""> 371<input type="hidden" name="site" value="http://wmems.org"> 372<input type="Hidden" name="fu" value="%(T7[AMH"> 373<input type="Hidden" name="fullform" value="1"> 374<div class="form-group"> 375<label for="email">Your Email: (required)</label> 376<input type="text" name="email" id="email" class="email form-control" placeholder="Your email address" required="yes"> 377</div> 378<div class="form-group"> 379<label for="Name">Your Name:</label> 380<input type="Text" name="Name" id="Name" class="Name form-control" maxlength="250"> 381</div> 382<div class="form-group"> 383<label for="Company">Your Company:</label> 384<input type="Text" name="Company" id="Company" class="Company form-control" maxlength="250"> 385</div> 386<div class="form-group"> 387<label for="Address">Your Address:</label> 388<input type="Text" name="Address" id="Address" class="Address form-control" maxlength="250"> 389</div> 390<div class="form-group"> 391<label for="City">Your City:</label> 392<input type="Text" name="City" id="City" class="City form-control" maxlength="250"> 393</div> 394<div class="form-group"> 395<label for="State">Your State:</label> 396<input type="Text" name="State" id="State" class="State form-control" maxlength="2"> 397</div> 398<div class="form-group"> 399<label for="Phone">Your Phone:</label> 400<input type="Text" name="Phone" id="Phone" class="Phone form-control" data-mask="000-000-0000"> 401</div> 402<div class="form-group"> 403<label for="custom1">Where did you hear about us?</label> 404<input type="Text" name="custom1" id="custom1" class="custom1 form-control" maxlength="250"> 405</div> 406<div class="form-group"> 407<label for="Comments">Your Questions / Comments:<br/>(1000 char max)</label>
408<script type="text/javascript"> 409/*********************************************** 410* Textarea Maxlength script- Dynamic Drive (www.dynamicdrive.com) 411* This notice must stay intact for legal use. 412* Visit http://www.dynamicdrive.com/ for full source code 413***********************************************/ 414function ismaxlength(obj){ 415var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : "" 416if (obj.getAttribute && obj.value.length>mlength) 417obj.value=obj.value.substring(0,mlength) 418} 419</script>
419 420<textarea name="Comments" id="Comments" class="Comments form-control" rows="5" maxlength="1000" onkeyup="return ismaxlength(this)"></textarea> 421</div> 422<div class="form-groop"> 423<label for="field_0"><h5>Your Saturday Color*</h5></label> 424<input class="form-control" type="text" name="field_0" maxlength="25" value=""> 425</div> 426<div class="form-group row"> 427<div class="col-sm-4"> 428<label for="typeid">Please inform me of:</label> 429</div> 430<div class="col-sm-8"> 431<div class="contactListItem" title="list"> 432<input type="Checkbox" name="typeid" value="9" CHECKED="checked" > 433General Information 434</div> 435<div class="contactListItem" title="list"> 436<input type="Checkbox" name="typeid" value="10" > 437Open Con-Ed Class Info 438</div> 439</div> 440</div> 441<div class="form-group row"> 442<div class="col-sm-12"> 443<div class="g-recaptcha" data-sitekey="6Lfo-HAUAAAAABch_SFTJZYTJnx2X40d-Uc217Ib"></div> 444</div> 445</div> 446<div class="form-group row"> 447<div class="col-sm-12"> 448<span class="privacyPolicy button btn btn-default pull-right" 449title="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.]" 450>Privacy Notice</span> 451<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> 452</div> 453</div> 454<div class="form-group row"> 455<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> 456</div> 457</form> 458</div> 459</div> 460</div> 461</div> 462<!-- END PAGE DIV --> 463<div class="lowercontent"> 464<!-- START PAGE SECTIONS --> 465<!-- inside page sections --> 466<!-- this is NOT a p (62) --> 467<!-- canview = 1 (83) --> 468<!-- END PAGE SECTIONS --> 469</div> 470</main> 471</div> 472<div class="col-sm-4 col-md-3 top"> 473<search class="center inline-block" style=""> 474<form method="get" action="/z/0/" class="sitesearch noprint mb-0" role="search" aria-label="search" class="inline-block" id="search" style=""> 475<div class="input-group" > 476<label for="term" class="sr-only" aria-label="Search">Search</label> 477<input title="Search Term" type="search" class="form-control" maxlength="30" name="term" id="term" placeholder="Search our website" value="" style="background:white!important;color:black!important;"> 478<span class="input-group-btn"> 479<button id="go" type="submit" aria-label="submit" class="btn btn-default black">Go!</button> 480</span> 481</div> 482<input type="hidden" name="module" value=""> 483</form> 484</search> 485<div class="static side"> 486<!-- from var application.static.side --> 487<h3><strong class="textownername">Western Massachusetts Emergency Medical Services Inc.</strong></h3> 488<p><u><strong>Physical Address:</strong></u> 30 Locust St (1st floor of McCallum Building @ Cooley-Dickinson Hospital), Northampton, MA 01060</p> 489<p><u><strong>Mailing Address:</strong></u> P.O. Box 1278, Northampton, MA 01601</p> 490<p>M-F 0800-1600</p> 491<p>Closed on State/Federal Holidays</p> 492<h3><strong>Office: 413-586-6065</strong></h3> 493<h3><strong>Fax: 413-586-0947</strong></h3> 494<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> 495<p><span style="color:#ff0033;"><strong>SEE CALENDAR AND NEWS AT THE LINK BELOW!</strong></span></p> 496<p><a href="https://calendar.google.com/calendar/embed?src=c_d1a4979470774798ecf602f4543b8d698ca6bacdaa820127373201ca7cb30557%40group.calendar.google.com&ctz=America%2FNew_York">Agency Calendar</a></p> 497<div id="amznCharityBanner">
497<script type="text/javascript">(function() {var iFrame = document.createElement('iframe'); iFrame.style.display = 'none'; iFrame.style.border = "none"; iFrame.width = 310; iFrame.height = 256; iFrame.setAttribute && iFrame.setAttribute('scrolling', 'no'); iFrame.setAttribute('frameborder', '0'); setTimeout(function() {var contents = (iFrame.contentWindow) ? iFrame.contentWindow : (iFrame.contentDocument.document) ? iFrame.contentDocument.document : iFrame.contentDocument; contents.document.open(); contents.document.write(decodeURIComponent("%3Cdiv%20id%3D%22amznCharityBannerInner%22%3E%3Ca%20href%3D%22https%3A%2F%2Fsmile.amazon.com%2Fch%2F04-2658109%22%20target%3D%22_blank%22%3E%3Cdiv%20class%3D%22text%22%20height%3D%22%22%3E%3Cdiv%20class%3D%22support-wrapper%22%3E%3Cdiv%20class%3D%22support%22%20style%3D%22font-size%3A%2018px%3B%20line-height%3A%2021px%3B%20margin-top%3A%201px%3B%20margin-bottom%3A%201px%3B%22%3ESupport%20%3Cspan%20id%3D%22charity-name%22%20style%3D%22display%3A%20inline-block%3B%22%3EWestern%20Mass%20Emergency%20Medical%20Services%20Committee%20Inc.%3C%2Fspan%3E%3C%2Fdiv%3E%3C%2Fdiv%3E%3Cp%20class%3D%22when-shop%22%3EWhen%20you%20shop%20at%20%3Cb%3Esmile.amazon.com%2C%3C%2Fb%3E%3C%2Fp%3E%3Cp%20class%3D%22donates%22%3EAmazon%20donates.%3C%2Fp%3E%3C%2Fdiv%3E%3C%2Fa%3E%3C%2Fdiv%3E%3Cstyle%3E%23amznCharityBannerInner%7Bbackground-image%3Aurl(https%3A%2F%2Fm.media-amazon.com%2Fimages%2FG%2F01%2Fx-locale%2Fpaladin%2Fcharitycentral%2Fbanner-background-image._CB309675353_.png)%3Bwidth%3A300px%3Bheight%3A250px%3Bposition%3Arelative%7D%23amznCharityBannerInner%20a%7Bdisplay%3Ablock%3Bwidth%3A100%25%3Bheight%3A100%25%3Bposition%3Arelative%3Bcolor%3A%23000%3Btext-decoration%3Anone%7D.text%7Bposition%3Aabsolute%3Btop%3A20px%3Bleft%3A15px%3Bright%3A15px%3Bbottom%3A100px%7D.support-wrapper%7Boverflow%3Ahidden%3Bmax-height%3A86px%7D.support%7Bfont-family%3AArial%2Csans%3Bfont-weight%3A700%3Bline-height%3A28px%3Bfont-size%3A25px%3Bcolor%3A%23333%3Btext-align%3Acenter%3Bmargin%3A0%3Bpadding%3A0%3Bbackground%3A0%200%7D.when-shop%7Bfont-family%3AArial%2Csans%3Bfont-size%3A15px%3Bfont-weight%3A400%3Bline-height%3A25px%3Bcolor%3A%23333%3Btext-align%3Acenter%3Bmargin%3A0%3Bpadding%3A0%3Bbackground%3A0%200%7D.donates%7Bfont-family%3AArial%2Csans%3Bfont-size%3A15px%3Bfont-weight%3A400%3Bline-height%3A21px%3Bcolor%3A%23333%3Btext-align%3Acenter%3Bmargin%3A0%3Bpadding%3A0%3Bbackground%3A0%200%7D%3C%2Fstyle%3E")); contents.document.close(); iFrame.style.display = 'block';}); document.getElementById('amznCharityBanner').appendChild(iFrame); })(); </script>
497</div> 498</form> 499</div> 500<div class="social noprint" style="text-align:center!important; margin:25px auto;width:auto!important;"> 501<a href="https://www.facebook.com/wmemsinc/" target="_blank"><img class="social" src="/RFAssets/ui/icon-Facebook.png" alt="Facebook"></a> 502<a href="@WMEMSRegion1" target="_blank"><img class="social" src="/RFAssets/ui/icon-Twitter.png" alt="Twitter"></a> 503</div> 504<hr> 505<div class="card border-default box_news noprint" id="box_news"> 506<div class="card-header bg-default btn-default text-center"> 507<span class="card-title">Latest News</span> 508</div> 509<div class="card-body"> 510<div class="card-item"> 511<div class="card-title"> 512<a href="/n/8101/Its-Regional-Awards-Time"> 513<img class="news img-fluid" src="/news/news_8101_small.jpg?20260926065016" alt=""> 514<p class="title">It's Regional Awards Time!</p> 515</a> 516</div> 517<!-- hoohah Yes 0 0 --> 518<em class="postdate"><span>Posted: Tue, Feb 10, 2026</span></em> 519</div> 520<div class="card-item"> 521<div class="card-title"> 522<a href="/n/8100/UPDATED-Stroke-Point-of-Entry-Plan-effective-1142026"> 523<img class="news img-fluid" src="/news/news_8100_small.jpg?20260926065016" alt=""> 524<p class="title">UPDATED Stroke Point of Entry Plan effective 1/14/2026</p> 525</a> 526</div> 527<!-- hoohah Yes 0 0 --> 528<em class="postdate"><span>Posted: Fri, Jan 09, 2026</span></em> 529</div> 530<div class="card-item"> 531<div class="card-title"> 532<a href="/n/8098/New-Advisory-and-FAQ-from-OEMS"> 533<img class="news img-fluid" src="/news/news_8098_small.jpg?20260926065016" alt=""> 534<p class="title">New Advisory and FAQ from OEMS</p> 535</a> 536</div> 537<div class="synopsis"><span>You must be aware of the limitations of your role as an EMT or Paramedic. Please review the Advisory and FAQ for more information</span></div> 538<!-- hoohah Yes 0 0 --> 539<em class="postdate"><span>Posted: Mon, Dec 01, 2025</span></em> 540</div> 541</div> 542<div class="card-footer text-muted"> 543<span><a href="/news">Read more News...</a></span> 544</div> 545</div> 546</div> 547</div> 548<hr> 549<footer class="row"> 550<div class="col-md-12 text-center"> 551<div id="footer"> 552<span class="footerO"> 553<span class="footerL"> 554© 2026 Western Massachusetts Emergency Medical Services Inc. 555| 556Software by <a href=http://MontagueWebWorks.com target=_blank>Montague WebWorks</a> 557</span> 558<span class="footerM"> 559| 560</span> 561<span class="footerR"> 562<a href="https://RocketFusion.com" target="_blank">Powered by RocketFusion 123</a> 563</span> 564</span> 565</div> 566</div> 567<div class="col-md-12 text-center"> 568<span class="login-link"> 569<a class="login noprint" 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> 570<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> 571</span> 572</div> 573</footer> 574<hr> 575</div> 576<!-- BS4 Init --> 577<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>
578<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
vendor: 1 bytes, line 578
578
579<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 579
579
580<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 580
580
581<script> 582// Assuming we have a div with id="editor_container" 583const filerobotImageEditor = new window.FilerobotImageEditor( 584document.querySelector("#rf-image-editor-edit") 585); 586const image_file_upload = document.getElementById("rf-image-upload"); 587// const btn_image_upload_edit = document.getElementById("btn-image-upload-edit"); 588var source_image = ''; // the HTMLImageElement 589var save_image_name = ''; // name to save image with 590var global_fr_folder = ''; // where to upload 591var global_fr_table = ''; // db table to update 592var global_fr_prefix = ''; // image file prefix, ie; blocks_ 593var global_fr_pid = 0; // image ID, ie; blocks_2323 594var dropzone_website_dir = 'WMEMS.org\\httpdocs'; 595const file_robot_defaults = { 596save_image_quality : 1, // 0.1 - 1 (default 0.92) - applies to jpeg, jpg and webp images only 597}; 598function renderFileRobotEditor(source,fr_folder=global_fr_folder,fr_table=global_fr_table,fr_prefix=global_fr_prefix,fr_pid=global_fr_pid) { 599console.group("renderFileRobotEditor() called"); 600console.log('source:', source); 601console.log('fr_folder:', fr_folder); 602console.log('fr_table:', fr_table); 603console.log('fr_prefix:', fr_prefix); 604console.log('fr_pid:', fr_pid); 605console.groupEnd(); 606source_image = source; 607filerobotImageEditor.render({ 608source: source_image, 609useBackendTranslations: false, 610defaultSavedImageName: save_image_name, 611defaultSavedImageQuality: file_robot_defaults.save_image_quality, 612tabsIds: [ 613window.FilerobotImageEditor.TABS.ADJUST, 614window.FilerobotImageEditor.TABS.FINETUNE, 615window.FilerobotImageEditor.TABS.FILTERS, 616window.FilerobotImageEditor.TABS.ANNOTATE, 617window.FilerobotImageEditor.TABS.WATERMARK], // or ['Adjust', 'Annotate', 'Watermark'] 618defaultTabId: window.FilerobotImageEditor.TABS.ADJUST, 619Crop: { 620minWidth: 14, 621minHeight: 14, 622maxWidth: null, 623maxHeight: null, 624ratio: 'custom', 625ratioTitleKey: 'custom', 626noPresets: false, 627autoResize: false, 628presetsItems: [], 629presetsFolders: [], 630lockCropAreaAt: null, // 'top-left' 631}, 632// disable save modal 633onBeforeSave: () => { 634return false; 635}, 636onSave: async (imageInfo, designState) => { 637// console.log('onSave() imageInfo', imageInfo); 638// console.log('onSave() designState', designState); 639// create formData object to populate and send with fetch request 640const formData = new FormData(); 641formData.append('image64', imageInfo.imageBase64); 642formData.append('image_extension', imageInfo.extension); 643formData.append('image_height', imageInfo.height); 644formData.append('image_name', imageInfo.name); 645formData.append('image_name_with_extension', imageInfo.fullName); 646formData.append('image_quality', imageInfo.quality); 647formData.append('image_width', imageInfo.width); 648formData.append('dropzone_website_dir', dropzone_website_dir); // e.g. MikMuller.com\httpdocs 649formData.append('rf_dropzone_dir', fr_folder); 650console.log('onSave() formData [2]', formData); 651// add dropzone options for compatibility with current upload script 652const drop_zone_options = { 653tbl: fr_table, 654imgbase: `${fr_prefix}${fr_pid}`, 655imgname: imageInfo.fullName, 656id: fr_pid 657} 658formData.append("dropzone_options", JSON.stringify(drop_zone_options)); 659console.log('onSave() drop_zone_options', drop_zone_options); 660try { 661// _dropzone-file-upload-ajax.cfm 662// _upload-base64.cfm (for testing) 663console.log('renderFileRobotEditor.onSave() imageInfo', imageInfo); 664const upload_request = await fetch('/inc/_dropzone-file-upload-ajax.cfm', { 665method: 'POST', 666body: formData 667}); 668const upload_result = await upload_request.json(); 669// console.log('DEBUG: [onSave] upload_result', upload_result); 670// close modal 671$('#rfImageModalEdit').modal('hide'); 672// page reload 673window.location.reload(); 674} catch (error) { 675console.log('onSave() error', error); 676const upload_result = { 677code: 1, 678message: error.message, 679success: false 680} 681} 682}, 683onClose: (closingReason) => { 684console.log("Closing reason", closingReason); 685filerobotImageEditor.terminate(); 686// reset the input field 687document.getElementById('rf-image-upload').value = ''; 688}, 689}); 690} 691/** 692* Function to handle image selection from the file input field 693* async as we use a promise to await image load 694*/ 695async function onImageSelected(event, file_obj, fr_folder, fr_table, fr_prefix, fr_pid) { 696let file; 697if (file_obj) { 698console.log('onImageSelected file_obj', file_obj, fr_folder, fr_table, fr_prefix, fr_pid); 699file = file_obj; 700} else { 701file = event.target.files[0]; 702} 703save_image_name = file.name; 704console.log('onImageSelected file', file); 705// const reader = new FileReader(); 706const image = new Image(); 707const img_max_width = 1600; 708image.src = URL.createObjectURL(file); 709// Promise to await image load 710await new Promise((resolve) => { 711image.onload = () => { 712const img_width = image.width; 713const img_height = image.height; 714// console.log('onImageSelected img load', img_width, img_height); 715if (img_width > img_max_width) { 716const img_scale = img_max_width / img_width;
717image.width = img_width * img_scale; 718image.height = img_height * img_scale; 719} 720// resolve the promise 721resolve(); 722}; 723}); 724// open the modal 725$('#rfImageModalEdit').modal('show'); 726// Render file robot 727renderFileRobotEditor(image, fr_folder, fr_table, fr_prefix, fr_pid); 728} 729/** Function to handle image editing */ 730function 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) { 731console.log('[DEBUG] editExistingImage() called.'); 732console.log('image_url:', image_url); 733console.log('image_name:', image_name); 734console.log('fr_folder:', fr_folder); 735console.log('fr_table:', fr_table); 736console.log('fr_prefix:', fr_prefix); 737console.log('fr_pid:', fr_pid); 738save_image_name = image_name; 739renderFileRobotEditor(image_url, fr_folder, fr_table, fr_prefix, fr_pid); 740} 741/** Function to open the hidden input file field */ 742function openFileInput(fr_folder='', fr_table='', fr_prefix='', fr_pid=0) { 743console.log('[DEBUG] openFileInput() called.', fr_folder, fr_table, fr_prefix, fr_pid); 744global_fr_folder = fr_folder; // where to upload 745global_fr_table = fr_table; // db table to update 746global_fr_prefix = fr_prefix; // image file prefix, ie; blocks_ 747global_fr_pid = fr_pid; 748image_file_upload.click(); 749} 750/** Function to open RF File Manager in a modal 751* Will be used by ckeditor/plugins/rffilemanager/browse.cfm 752* Need the image full url to make a copy of for ai images 753*/ 754function openRFFileManager(current_image_url, fr_folder=global_fr_folder, fr_table=global_fr_table, fr_prefix=global_fr_prefix, fr_pid=global_fr_pid) { 755// $($(this).data( "target" ) + ' .modal-body').load( data_remote ); 756console.group("bs4_init openRFFileManager() called"); 757console.log("current_image_url:", current_image_url); 758console.log("fr_folder:", fr_folder); 759console.log("fr_table:", fr_table); 760console.log("fr_prefix:", fr_prefix); 761console.log("fr_pid:", fr_pid); 762console.groupEnd(); 763const rfFileManagerModalIframe = document.getElementById('rfFileManagerModalIframe'); 764rfFileManagerModalIframe.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}`; ; 765$('#rfFileManagerModal').modal('show'); 766} 767/** Function to close the RF File Manager modal 768* Will be used by ckeditor/plugins/rffilemanager/browse.cfm 769* Need to upload the image and then close the modal 770*/ 771function closeRFFileManagerModal(image_path, img_name='', fr_folder='', fr_table='', fr_prefix='', fr_pid=0) { 772console.group("bs4_init closeRFFileManagerModal() called"); 773console.log("image_path:",image_path); 774console.log("img_name:",img_name); 775console.log("fr_folder:",fr_folder); 776console.log("fr_table:",fr_table); 777console.log("fr_prefix:",fr_prefix); 778console.log("fr_pid:",fr_pid); 779console.groupEnd(); 780$('#rfFileManagerModal').modal('hide'); 781$('#rfImageModalEdit').modal('show'); 782save_image_name = img_name; 783// renderFileRobotEditor(image_path); 784renderFileRobotEditor(image_path, fr_folder, fr_table, fr_prefix, fr_pid); 785} 786/** Function to close the RF File Manager modal without opening File Robot 787* Will be used by ckeditor/plugins/rffilemanager/browse.cfm 788*/ 789function closeRFFileManagerModalOnly(reload=false) { 790$('#rfFileManagerModal').modal('hide');
791if (reload) { 792setTimeout(() => { 793window.location.reload(); 794}, 500); 795} 796} 797// Handle closing of modal without saving (must cleanup file robot editor) 798$('#rfImageModalEdit').on('hidden.bs.modal', function (event) { 799// console.log('modal closed'); 800filerobotImageEditor.terminate(); 801image_file_upload.value = ''; 802}); 803/** Rocketfusion - enable drag/drop zone on an image with the .rf-image-dropzone class */ 804// Create dropzone object for all images with the .rf-image-dropzone class 805const rf_image_drop_zone = document.querySelectorAll('.rf-image-dropzone'); 806// Attach event listeners to all instances of rf_image_drop_zone 807rf_image_drop_zone.forEach(function (i) { 808// Handle drag over event 809i.addEventListener('dragover', function(e) { 810event.target.classList.add('image-dragover'); 811dragOverHandler(e); 812}); 813// Handle drag leave event 814i.addEventListener('dragleave', function(e) { 815// console.log('Image dropzone dragleave'); 816event.target.classList.remove('image-dragover'); 817}); 818// Handle drop event 819i.addEventListener('drop', function(e) { 820event.target.classList.remove('image-dragover'); 821dropHandler(e); 822}); 823}); 824/** 825* Handles the drop event of files in the drop zone. 826* Prevents the default behavior of opening the file and logs the names of the dropped files. 827* 828* @param {Event} ev - The drop event. 829* @returns {undefined} 830*/ 831function dropHandler(ev) { 832// console.log('File(s) dropped'); 833// Prevent default behavior (Prevent file from being opened) 834ev.preventDefault(); 835if (ev.dataTransfer.items) { 836// Use DataTransferItemList interface to access the file(s) 837[...ev.dataTransfer.items].forEach((item, i) => { 838// If dropped items aren't files, reject them 839if (item.kind === 'file') { 840const file = item.getAsFile(); 841console.log(`file[${i}].name = ${file.name}`); 842onImageSelected(i, file); 843} 844}); 845} else { 846// Use DataTransfer interface to access the file(s) 847[...ev.dataTransfer.files].forEach((file, i) => { 848console.log(`file[${i}].name = ${file.name}`); 849onImageSelected(i, file); 850}); 851} 852} 853/** 854* Handles the drag over event of files in the drop zone. 855* Prevents the default behavior of opening the file. 856* 857* @param {Event} ev - The drag over event. 858* @returns {undefined} 859*/ 860function dragOverHandler(ev) { 861// Prevent default behavior (Prevent file from being opened) 862ev.preventDefault(); 863} 864</script>
864 865<style> 866.modal-fullscreen { 867width: 100vw; 868max-width: none; 869height: 100%; 870margin: 0; 871} 872.modal-content { 873height: 100%; 874border: 0; 875@include border-radius(0); 876} 877.modal-body { 878overflow-y: auto; 879} 880.image-dragover { 881opacity: 0.5; 882} 883</style>
884<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 884
884
885<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
885 886<!-- contact and forms -->
887<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script>
vendor: 1 bytes, line 887
887
888<script src="//cdnjs.cloudflare.com/ajax/libs/parsley.js/2.8.1/parsley.js"></script>
vendor: 1 bytes, line 888
888
889<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/js/bootstrap-datepicker.min.js"></script>
vendor: 1 bytes, line 889
889
890<script> 891function limitText(limitField, limitNum) { 892if (limitField.value.length > limitNum) { 893limitField.value = limitField.value.substring(0, limitNum); 894} 895} 896$(document).ready(function(){ 897// this code is in bs4_init 898// Real time formatting, added by Andrew Kelly, 2/14/19 899// (US phone formatter) - on document load, attach handler to the phone-us class and mask the input 900$('.phone-us').mask('000-000-0000'); 901// Max length of a number input 902$('.numbers-only').keyup(function() { 903var maxLen = $(this).data('max-length'); 904var input = $('.numbers-only').val() 905var inputLen = input.length; 906console.log('[DEBUG] inputLen:' + inputLen); 907console.log('[DEBUG] maxLen:' + maxLen); 908if ( inputLen >= 9 ) { 909console.log('[DEBUG] Trim to 9 chars'); 910$('.numbers-only').val( input.substring(0, 9) ); 911} 912}); 913}); 914// Validation performed on form SUBMIT 915$("#fRocketfusion").parsley({ 916errorClass: 'is-invalid text-danger', 917//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. 918errorsWrapper: '<span class="form-text text-danger"></span>', 919errorTemplate: '<span></span>', 920trigger: 'change' 921}); 922</script>
vendor: 1 bytes, line 922
922
923<script type="text/javascript" src="/RFAssets/js/joey.js?ver=20260911135356" charset="UTF-8"></script>
vendor: 1 bytes, line 923
923
924<script type="text/javascript"> 925$( 'body' ).on( 'click', '[data-toggle="modal"]', function(){ 926let data_remote = $(this).data( "remote" ); 927if ( data_remote && data_remote.length >= 2 ) { 928$($(this).data( "target" ) + ' .modal-content').load( data_remote ); 929} 930}); 931</script>
vendor: 1 bytes, line 931
931
932<script> 933$(document).ready(function() { 934//$('nav').animate({opacity:'1'}, 50);<!-- set to 0.25 to make see thru --> 935//$(img).animate({opacity:'1'}); 936$initNavHgt = $('nav').outerHeight(); 937$initHeadLogoHgt = $('#headerLogo').outerHeight(); 938}); 939</script>
939 940<!-- no userway account --> 941</body> 942</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.