gridtracker/package.nw/GridTracker.html

3493 wiersze
128 KiB
HTML
Czysty Zwykły widok Historia

2020-08-19 16:55:41 +00:00
<!DOCTYPE html>
2020-09-28 19:28:09 +00:00
<!--
2020-09-28 16:35:59 +00:00
This file is part of GridTracker.
GridTracker is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, version 3 of the License.
GridTracker is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GridTracker. If not, see <https://www.gnu.org/licenses/>.
-->
<html lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>GridTracker &copy;2020 N0TTL</title>
<link rel="stylesheet" href="./lib/dp-dark.css" />
<link rel="stylesheet" href="./lib/ol.css" />
<link rel="stylesheet" href="./lib/style.css" />
<script src="./lib/defaults.js" type="text/javascript"></script>
<script src="./lib/protos.js" type="text/javascript"></script>
<script src="./lib/alerts.js" type="text/javascript"></script>
<script src="./lib/third-party.js" type="text/javascript"></script>
<script src="./lib/adif.js" type="text/javascript"></script>
<script src="./lib/ol.js" type="text/javascript"></script>
<script src="./lib/arc.js" type="text/javascript"></script>
<script src="./lib/moment-with-locales.js" type="text/javascript"></script>
<script src="./lib/moment-timezone-with-data.js" type="text/javascript"></script>
<script src="./lib/datepicker.js"></script>
<script src="./lib/callsigns.js" type="text/javascript"></script>
<script src="./lib/shadow.js" type="text/javascript"></script>
<script src="./lib/gtws.js" type="text/javascript"></script>
<script src="./lib/gt.js" type="text/javascript"></script>
<script src="./lib/screens.js"></script>
</head>
<body id="mainBody" onload="initialDatabases();">
<div id="startupDiv">
<div class="fill">
<img src="gridview.png" alt="" />
<div>
<h1>GridTracker by</h1>
<h1>N&Oslash;TTL</h1>
<h2>&amp;</h2>
<h1>N2VFL</h1>
</div>
</div>
<div id="startupStatusDiv">Initial Startup</div>
</div>
<div id="documentsDiv" style="display: none">
<div>
<div>
Your documents folder (
<div id="searchedDocFolder"></div>
) could not be located.
</div>
<br />
<div>GridTracker can not continue without it.</div>
<br />
<div>Please select a directory so that GridTracker can store important files.</div>
<br />
<input id="documentDirectoryInput" type="file" nwdirectory onchange="directoryInput(this)" />
</div>
</div>
<div id="main" style="display: none">
<div id="mapDiv" class="mapDivEnd"></div>
<div id="mouseTrackDiv" style="display: none" class="mouseTrack"></div>
<div id="LegendDiv" style="display: none" class="legendDivEnd">
<table align="center">
<tr>
<td>Legend</td>
<td>
<div
id="qsoDiv"
title="Grids with worked station(s) by you"
style="
padding-top: 2px;
border: 2px solid #000000;
width: 42px;
height: 16px;
background-color: #eeee00;
color: #000;
"
>
QSO
</div>
</td>
<td>
<div
id="qslDiv"
title="Grids with confirmed station(s) by you"
style="
padding-top: 2px;
border: 2px solid #000000;
width: 42px;
height: 16px;
background-color: #dd0000;
color: #000;
"
>
QSL
</div>
</td>
</tr>
<tr>
<td>
<div
id="deDiv"
title="Grids with station(s) communicating with stations other than you"
style="
padding-top: 2px;
border: 2px solid #0000ff;
width: 42px;
height: 16px;
background-color: #000088;
"
>
QSX
</div>
</td>
<td>
<div
id="cxDiv"
title="Grids with station(s) calling CQ"
style="
padding-top: 2px;
border: 2px solid #008888;
width: 42px;
height: 16px;
background-color: #00ff00;
color: #000;
"
>
CQ
</div>
</td>
<td>
<div
id="cqdxDiv"
title="Grids with station(s) calling CQ distance"
style="
padding-top: 2px;
border: 2px solid #008888;
width: 42px;
height: 16px;
background-color: cyan;
color: #000;
"
>
CQDX
</div>
</td>
</tr>
<tr>
<td>
<div
id="qrzDiv"
title="Grids with station(s) calling you!"
style="
padding-top: 2px;
border: 2px solid #ff0000;
width: 42px;
height: 16px;
background-color: #eeee00;
color: #000;
"
>
QRZ
</div>
</td>
<td>
<div
id="dxDiv"
title="Your home grid square!"
style="
padding-top: 2px;
border: 2px solid #000000;
width: 42px;
height: 16px;
background-color: orange;
color: #000;
"
>
QTH
</div>
</td>
<td>
<div
id="wsprDiv"
title="WSPR Stations"
style="
padding-top: 2px;
border: 2px solid grey;
width: 42px;
height: 16px;
font-weight: bold;
text-shadow: 0 0 3px #000;
"
>
<div class="rainbow" style="text-shadow: 0 0 3px #000">WSPR</div>
</div>
</td>
</tr>
</table>
</div>
2020-09-28 19:28:09 +00:00
<div id="chevronDiv" class="chevronDivStart" title="Click to show menu" onclick="collapseMenu(false)"></div>
<div id="menuDiv" class="menuDivEnd">
<div
id="localInfoDiv"
style="border: 1px solid white; margin: 1px; margin-top: 1px; margin-bottom: 1px; padding: 0px"
class="roundBorder"
>
<table align="center">
<tr>
<td colspan="2">
<div
class="button"
title="Click to hide menu"
style="
color: #fff;
margin: 0;
padding: 0;
font-weight: bold;
width: 150px;
padding-top: 2px;
border-width: 2px;
"
onclick="collapseMenu(true);"
>
GridTracker
</div>
</td>
</tr>
<tr>
<td>
<div id="frequency" title="Frequency (Band)" style="font-weight: bold">0.000.000 Hz (?)</div>
</td>
<td>
<div id="wsjtxMode" title="Mode"></div>
</td>
</tr>
</table>
<div id="currentTime" style="cursor: pointer" title="Toggle Local / UTC Time" onclick="toggleTime();"></div>
2020-09-28 19:28:09 +00:00
<table align="center" style="border-collapse: collapse; margin-bottom: 2px">
<tr id="dxCallBoxDiv" class="DXCallBox">
<td>
<div
id="localDXcall"
style="cursor: pointer"
title="Who you're calling or last called"
onclick="startLookup(g_localDXcall,localDXGrid.innerHTML);"
oncontextmenu="showWorkedByCall(g_localDXcall, event);"
>
-
</div>
</td>
<td>
<div
id="localDXGrid"
style="cursor: pointer"
title="Their Gridsquare"
onclick="centerOn(localDXGrid.innerHTML);"
>
-
</div>
</td>
<td>
<div id="localDXReport" title="Last known SNR">&nbsp;</div>
</td>
</tr>
<tr>
<td>
<div
id="localDXCountry"
style="font-size: smaller; font-weight: italic; color: lightgreen"
title="DXCC"
>
2020-08-19 16:55:41 +00:00
&nbsp;
</div>
</td>
<td>
<div
id="localDXDistance"
style="font-size: smaller; font-weight: italic; color: lightblue"
title="Distance"
>
&nbsp;
</div>
</td>
<td>
<div
id="localDXAzimuth"
style="font-size: smaller; font-weight: italic; color: lightgreen"
title="Heading"
>
&nbsp;
</div>
</td>
</tr>
</table>
</div>
<div
id="rigWrap"
style="
display: none;
background-color: blue;
border-style: inset;
border-color: lightblue;
border-width: 3px;
margin: 0;
margin-bottom: 1px;
color: yellow;
padding: 2px;
"
class="roundBorder"
>
<div style="display: inline-block; padding-top: 0px; cursor: pointer; left: 0px" onClick="rigChange(false);">
🡄&nbsp;
</div>
<div style="display: inline-block" id="rigDiv">-no rig-</div>
<div style="display: inline-block; cursor: pointer; right: 0px" onClick="rigChange(true);">&nbsp;🡆</div>
</div>
<div
id="operatingMode"
style="margin: 0; margin-bottom: 1px; cursor: pointer"
onclick="ignoreMessagesToggle()"
title="Click to ignore incoming messages"
>
<div
id="txrxdec"
style="background-color: Green; border-style: outset; border-color: yellow; border-width: 3px"
class="roundBorder"
>
waiting for message
</div>
</div>
2020-09-28 19:28:09 +00:00
<div
id="pskReporterBandActivityDiv"
class="roundBorder"
style="
position: relative;
background-color: #000;
border: 1px solid purple;
margin: 1px;
height: 49px;
margin-bottom: 1px;
padding: 0px;
"
title="PSK-Reporter Band Activity"
oncontextmenu="toggleBaWindow(event)"
>
<div id="graphDiv" style="bottom: 0; position: absolute; width: 100%; padding: 0px; margin-bottom: 2px">
<br />...no data yet...<br />
&nbsp;
</div>
</div>
2020-09-28 19:28:09 +00:00
<div
id="actionDiv"
style="border: 1px solid blue; margin: 1px; margin-bottom: 1px; padding: 3px"
class="roundBorder"
title="Quick Stats"
>
<table align="center">
<tr>
<td
style="cursor: pointer"
onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox)"
title="Callsigns Heard"
align="right"
>
Rx Calls
</td>
<td
style="cursor: pointer"
onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox)"
title="Callsigns Heard"
class="roundBorderValue"
align="center"
>
<div id="callsignCount">0</div>
</td>
<td
style="cursor: pointer"
onclick="resetSearch(); openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox);"
title="Worked Stations"
align="right"
>
QSO
</td>
<td
style="cursor: pointer"
class="roundBorderValue"
onclick="resetSearch(); openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox);"
title="Confirmed Stations"
align="center"
>
<div id="qsoCount">0</div>
</td>
</tr>
<tr>
<td
style="cursor: pointer"
onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox);"
title="DXCC Heard"
align="right"
>
Rx DXCC
</td>
<td
style="cursor: pointer"
class="roundBorderValue"
onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox);"
title="DXCC Heard"
align="center"
>
<div id="countryCount">0</div>
</td>
<td
style="cursor: pointer"
onclick="resetSearch(); g_filterQSL = 'true'; openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox)"
title="Show Confirmed List"
align="right"
>
QSL
</td>
<td
style="cursor: pointer"
class="roundBorderValue"
onclick="resetSearch(); g_filterQSL = 'true'; openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox)"
title="Show Confirmed List"
align="center"
>
<div id="qslCount">0</div>
</td>
</tr>
2020-09-28 19:28:09 +00:00
<tr>
<td colspan="2">
<div class="button" onclick="clearLive();" title="Clear Live Data from GridTracker">Clear Live</div>
</td>
<td colspan="2">
<div
style="min-width: 58px"
id="clearOrLoadButton"
class="button"
onclick="clearOrLoadQSOs();updateCountStats();"
title="Clear or Reload Log Data&#10;(does not delete files)"
>
Clear Log
</div>
</td>
</tr>
</table>
</div>
<div
id="filterDiv"
class="roundBorder"
style="position: relative; background-color: #000; border: 1px solid cyan; margin: 1px; margin-bottom: 1px"
title="Map View Control Panel"
>
<table align="center">
<tr>
<td colspan="2">Map View Filters</td>
</tr>
2020-09-28 19:28:09 +00:00
<tr title="Select Band&#10;(Auto tracks WSJT-X)">
<td><font color="lightgreen">Band</font></td>
<td>
<select id="gtBandFilter" onkeypress="return false;" onchange="gtBandFilterChanged(this);">
<option value="auto">Auto</option>
<option value="xx" disabled>--------</option>
<option value="">Mixed</option>
<option value="4000m">4000m</option>
<option value="2200m">2200m</option>
<option value="630m">630m</option>
<option value="160m">160m</option>
<option value="80m">80m</option>
<option value="60m">60m</option>
<option value="40m">40m</option>
<option value="30m">30m</option>
<option value="20m">20m</option>
<option value="17m">17m</option>
<option value="15m">15m</option>
<option value="12m">12m</option>
<option value="11m">11m</option>
<option value="10m">10m</option>
<option value="6m">6m</option>
<option value="4m">4m</option>
<option value="2m">2m</option>
<option value="1.25m">1.25m</option>
<option value="70cm">70cm</option>
<option value="23cm">23cm</option>
<option value="oob">OOB</option>
</select>
</td>
</tr>
<tr title="Select Mode">
<td><font color="orange">Mode</font></td>
<td>
<select id="gtModeFilter" onkeypress="return false;" onchange="gtModeFilterChanged(this);">
<option value="auto">Auto</option>
<option value="xx" disabled>----------</option>
<option value="">Mixed</option>
<option value="Digital">Digital</option>
<option value="Phone">Phone</option>
</select>
</td>
</tr>
<tr title="Select Propagation Mode">
<td><font color="yellow">Prop</font></td>
<td>
<select id="gtPropFilter" onkeypress="return false;" onchange="gtPropFilterChanged(this);">
<option value="mixed">Mixed</option>
<option value="xx" disabled>----------</option>
<option value="">Unknown</option>
<option value="xx" disabled>----------</option>
<option value="AS">Aircraft Scatter</option>
<option value="AUE">Aurora-E</option>
<option value="AUR">Aurora</option>
<option value="BS">Back Scatter</option>
<option value="ECH">EchoLink</option>
<option value="EME">EME</option>
<option value="ES">Sporadic E</option>
<option value="F2">F2 Reflection</option>
<option value="FAI">Field Aligned I</option>
<option value="INTERNET">Inet-assist</option>
<option value="ION">Ionoscatter</option>
<option value="IRL">IRLP</option>
<option value="MS">Meteor Scatter</option>
<option value="RPT">Repeater</option>
<option value="RS">Rain Scatter</option>
<option value="SAT">Satellite</option>
<option value="TEP">Trans-equatorial</option>
<option value="TR">Tropo-ducting</option>
</select>
</td>
</tr>
<tr>
<td><font color="cyan">Data</font></td>
<td>
<div
id="gridViewButton"
onclick="cycleGridView()"
class="button"
title="Cycle Grid View"
style="
min-width: 94px;
background-color: darkgreen;
color: #ff0;
font-size: 13.3333px;
text-align: left;
margin-bottom: 2px;
"
>
Logbook &amp; Live
</div>
</td>
</tr>
</table>
</div>
<div id="buttonsDiv" style="margin-left: 0px; white-space: normal">
<div
id="callRosterButton"
class="iconButton"
style="padding: 0px"
onclick="openCallRosterWindow();"
title="Open Call Roster"
>
<img src="./img/roster-button.svg" class="buttonImgWide" />
</div>
<div id="pushPinButton" onclick="togglePushPinMode();" class="iconButton" title="Toggle Push-Pin Mode">
<img id="pinImg" src="" class="buttonImg" />
</div>
<div id="lookupButton" onclick="openLookupWindow(true)" class="iconButton" title="Open Lookup Window">
<img style="" src="./img/lookup.svg" class="buttonImg" />
</div>
<div id="statsDiv" onclick="showRootInfoBox();" class="iconButton" title="Show Stats">
<img src="./img/stats-button.svg" class="buttonImg" />
</div>
<div id="modeModeDiv" onclick="toggleOffline()" class="iconButton" title="Toggle Online/Offline Mode">
<img id="offlineImg" src="" class="buttonImg" />
</div>
<div id="earthShadow" onclick="toggleEarth()" class="iconButton" title="Toggle Grayline">
<img id="earthImg" src="" class="buttonImg" />
</div>
<div id="legendToggleDiv" onclick="toggleLegend()" class="iconButton" title="Toggle Map Legend">
<img id="legendImg" src="./img/gt_key.png" class="buttonImg" />
</div>
<div
id="gtShareButton"
onclick="toggleGtShareEnable();"
class="iconButton"
title="Share your On-Air Status with other GridTracker users"
>
<img id="gtShareFlagImg" src="./img/share-off.png" class="buttonImg" />
</div>
<div id="helpButton" onclick="toggleHelp();" class="iconButton" title="Toggle Hotkey List">
<img src="./img/help.svg" class="buttonImg" />
</div>
<div id="trophyButton" onclick="cycleTrophyOverlay();" class="iconButton" title="Cycle Award Overlays">
<img id="trophyImg" src="./img/blank_trophy.png" class="buttonImg" />
</div>
<div id="buttonStrikesDiv" onclick="toggleStrikesValue()" class="iconButton" title="Toggle Lightning Strikes">
<img id="strikesImg" src="./img/lw.png" class="buttonImg" />
</div>
<div id="lunaButton" onclick="toggleMoon();" class="iconButton" title="Toggle Moon">
<img id="lunaButonImg" src="./img/luna.png" class="buttonImg" />
</div>
<div id="gridModeDiv" onclick="toggleGridMode()" class="iconButton" title="Toggle Maidenhead Width">
<img id="modeImg" src="" class="buttonImg" />
</div>
<div id="settingsButton" onclick="showSettingsBox();" class="iconButton" title="Settings">
<img src="./img/settings-button.svg" class="buttonImg" />
</div>
<div id="adifLoadDiv" onclick="adifLoadDialog()" class="iconButton" title="Load ADIF Log">
<img src="./img/adif.png" class="buttonImg" />
</div>
<div id="conditionsButton" onclick="showConditionsBox();" class="iconButton" title="View Current Conditions">
<img src="./img/conditions.svg" class="buttonImg" />
</div>
<div id="donateButton" onclick="gotoDonate();" class="iconButton" title="Donate with PayPal">
<img style="-webkit-filter: brightness(50%)" src="./img/donate.svg" class="buttonImg" />
</div>
<div id="alterMuteDiv" onclick="toggleAlertMute()" class="iconButton" title="Toggle Audio Mute">
<img id="alertMuteImg" src="" class="buttonImg" />
</div>
<div id="buttonPSKSpotsBoxDiv" onClick="togglePskSpots();" class="iconButton" title="View Spot Reports">
<img id="pskSpotsImg" src="./img/spots.svg" class="buttonImg" />
</div>
<div id="buttonPsk24CheckBoxDiv" onclick="grabPsk24()" class="iconButton" title="Your PSK 24hour report">
<img id="pskImg" src="./img/psk_24_32.png" class="buttonImg" />
</div>
<div
id="buttonQRZCheckBoxDiv"
onclick="if ( ValidateQrzApi(qrzApiKey ) ) grabQrzComLog()"
class="iconButton"
title="Download log from QRZ.com"
>
<img id="qrzLogImg" src="./img/log_QRZ.png" class="buttonImg" />
</div>
<div
id="buttonLOTWCheckBoxDiv"
onclick="if ( ValidateText(lotwLogin) && ValidateText(lotwPassword) ) { grabLOtWLog(false); } "
class="iconButton"
title="Download log from Logbook of the World"
>
<img id="lotwLogImg" src="./img/log_LoTW.png" class="buttonImg" />
</div>
<div
id="buttonClubCheckBoxDiv"
onclick="if ( ValidateText(clubEmail) && ValidateText(clubPassword) ) grabClubLog()"
class="iconButton"
title="Download log from ClubLog"
>
<img id="ClubLogImg" src="./img/log_club.png" class="buttonImg" />
</div>
<div
id="buttonAdifCheckBoxDiv"
onclick="startupAdifLoadFunction()"
class="iconButton"
title="Reload Local ADIF Files"
>
<img src="./img/log_local.png" class="buttonImg" />
</div>
<div id="timezoneButton" onclick="toggleTimezones()" class="iconButton" title="Toggle Timezone Layer">
<img src="./img/timezone-button.svg" class="buttonImg" />
</div>
<div id="radarButton" onclick="toggleNexrad()" class="iconButton" title="Toggle US Nexrad">
<img src="./img/radar-button.svg" class="buttonImg" />
</div>
<div id="gridOverlayButton" onclick="toggleAllGrids()" class="iconButton" title="Toggle All Grid Overlay">
<img src="./img/grid-overlay.svg" class="buttonImg" />
</div>
<div id="gtFlagButton" onclick="toggleGtMap();" class="iconButton" title="Toggle View GridTracker Users">
<img id="gtFlagImg" src="" class="buttonImg" />
</div>
<div id="msgButton" onclick="showMessaging();" class="iconButton" title="Messaging Window">
<img id="msgImg" src="./img/gt_chat.png" class="buttonImg" />
</div>
</div>
<div
id="SpotsDiv"
style="display: none; border: 1px solid yellow; margin: 1px; margin-bottom: 1px; margin-top: 2px"
class="roundBorder"
>
<table align="center">
<tr>
<td id="spotCountDiv">Spots: 0</td>
<td id="spotRefreshDiv">Refresh: -</td>
</tr>
<tr>
<td colspan="2" align="center" id="spotHistoryTimeTd"></td>
</tr>
<tr>
<td colspan="2">
<input
type="range"
min="5"
max="1440"
value="15"
step="5"
class="slider"
id="spotHistoryTimeValue"
oninput="changeSpotValues();"
onkeyup="redrawSpots();"
onmouseup="redrawSpots();"
/>
</td>
</tr>
</table>
</div>
<div
id="trafficDiv"
class="roundBorder"
style="
position: relative;
background-color: #000;
color: #888;
border: 1px solid black;
margin: 2px;
bottom: 2px;
right: 2px;
white-space: no-wrap;
overflow: hidden;
"
></div>
</div>
<div id="myFlagtip" class="myFlagtipEnd"></div>
<div
id="myTooltip"
style="
-webkit-user-select: text;
background-color: black;
padding: 5px;
text-align: center;
display: block;
position: absolute;
z-index: -500;
left: -1000px;
top: -1000px;
border: 2px solid white;
white-space: nowrap;
overflow: hidden;
"
class="roundBorder"
></div>
<div
id="myGridTooltip"
style="
background-color: black;
padding: 5px;
text-align: center;
display: block;
position: absolute;
z-index: -499;
left: 50px;
top: 50px;
border: 2px solid white;
white-space: nowrap;
overflow: hidden;
"
class="roundBorder"
></div>
<div
id="myTrophyTooltip"
style="
background-color: black;
padding: 5px;
text-align: center;
display: block;
position: absolute;
z-index: -499;
left: 50px;
top: 50px;
border: 2px solid white;
white-space: nowrap;
overflow: hidden;
"
class="roundBorder"
></div>
<div
id="myMoonTooltip"
style="
background-color: black;
padding: 5px;
text-align: center;
display: block;
position: absolute;
z-index: -499;
left: 50px;
top: 50px;
border: 2px solid white;
white-space: nowrap;
overflow: hidden;
"
class="roundBorder"
></div>
<div
id="helpDiv"
style="
animation: fadeInEffect 0.1s;
margin: 2px;
left: 30px;
top: 20px;
display: none;
background-color: black;
padding: 5px;
text-align: center;
vertical-align: middle;
position: absolute;
z-index: 600;
border: 1px cyan;
"
class="roundBorder"
>
<div id="printHotKeyDiv" style="border: 1px solid cyan; color: white; text-align: auto">
<table align="center" class="darkTable">
<tr>
<th colspan="6">Hot Key List (v1.20.0825+)</th>
</tr>
<tr>
<th>Key</th>
<th align="left">Action</th>
<th>Condition</th>
<th>Key</th>
<th align="left">Action</th>
<th>Condition</th>
</tr>
<tr>
<td>1</td>
<td align="left">Show General Map Layer</td>
<td></td>
<td>Q</td>
<td align="left">Cycle Logbook/Live View</td>
<td></td>
</tr>
<tr>
<td>2</td>
<td align="left">Show CQ Zones Award Layer</td>
<td></td>
<td>R</td>
<td align="left">Open Call Roster Window</td>
<td></td>
</tr>
<tr>
<td>3</td>
<td align="left">Show ITU Zones Award Layer</td>
<td></td>
<td>S</td>
<td align="left">Open Settings</td>
<td></td>
</tr>
<tr>
<td>4</td>
<td align="left">Show Continents Award Layer</td>
<td></td>
<td>T</td>
<td align="left">Toggle RX Spots over Grids</td>
<td></td>
</tr>
<tr>
<td>5</td>
<td align="left">Show US States Award Layer</td>
<td></td>
<td>T</td>
<td align="left">Add TTS Alert</td>
<td>right-click<br />empty grid</td>
</tr>
<tr>
<td>6</td>
<td align="left">Show DXCC Award Layer</td>
<td></td>
<td>U</td>
<td align="left">Toggle Award Layer Merge</td>
<td></td>
</tr>
<tr>
<td>7</td>
<td align="left">Show US Counties Award Layer</td>
<td></td>
<td>V</td>
<td align="left">Add PopUp Alert</td>
<td>right-click<br />empty grid</td>
</tr>
<tr>
<td>8</td>
<td align="left">Show US Continental Grids Award Layer</td>
<td></td>
<td>W</td>
<td align="left">Toggle Maidenhead Grid Size</td>
<td></td>
</tr>
<tr>
<td>9</td>
<td align="left">Toggle Timezone Overlay</td>
<td></td>
<td>X</td>
<td align="left">Toggle Map Position Info</td>
<td></td>
</tr>
<tr>
<td>0</td>
<td align="left">Toggle US Nexrad Overlay</td>
<td></td>
<td>Y</td>
<td align="left">Toggle Global Lightning</td>
<td></td>
</tr>
<tr>
<td>=</td>
<td align="left">Cycle Award Layers</td>
<td></td>
<td>Z</td>
<td align="left">Center Map on QTH Grid</td>
<td></td>
</tr>
<tr>
<td>A</td>
<td align="left">Toggle Active Path Animation</td>
<td></td>
<td>F1</td>
<td align="left">Hot Key List (This List)</td>
<td></td>
</tr>
<tr>
<td>B</td>
<td align="left">Toggle All Grid Overlay</td>
<td></td>
<td>F5</td>
<td align="left">Recall Map Position 1</td>
<td></td>
</tr>
<tr>
<td>C</td>
<td align="left">Open Conditions Windows</td>
<td></td>
<td>F5</td>
<td align="left">Store Map Position 1</td>
<td>Shift-Key</td>
</tr>
<tr>
<td>D</td>
<td align="left">Toggle Moon Tracking</td>
<td></td>
<td>F6</td>
<td align="left">Recall Map Position 2</td>
<td></td>
</tr>
<tr>
<td>E</td>
<td align="left">Toggle 24h Moon Trajectory</td>
<td></td>
<td>F6</td>
<td align="left">Store Map Position 2</td>
<td>Shift-Key</td>
</tr>
<tr>
<td>F</td>
<td align="left">Toggle RX Spots Flight</td>
<td></td>
<td>F7</td>
<td align="left">Recall Map Position 3</td>
<td></td>
</tr>
<tr>
<td>G</td>
<td align="left">Toggle GridTracker Flags</td>
<td></td>
<td>F7</td>
<td align="left">Store Map Position 3</td>
<td>Shift-Key</td>
</tr>
<tr>
<td>H</td>
<td align="left">Toggle RX Spots Heatmap</td>
<td></td>
<td>F8</td>
<td align="left">Recall Map Position 4</td>
<td></td>
</tr>
<tr>
<td>I</td>
<td align="left">Open Stats/Info</td>
<td></td>
<td>F8</td>
<td align="left">Store Map Position 4</td>
<td>Shift-Key</td>
</tr>
<tr>
<td>K</td>
<td align="left">Capture Screenshot</td>
<td></td>
<td>F9</td>
<td align="left">Recall Map Position 5</td>
<td></td>
</tr>
<tr>
<td>L</td>
<td align="left">Open ADIF file</td>
<td></td>
<td>F9</td>
<td align="left">Store Map Position 5</td>
<td>Shift-Key</td>
</tr>
<tr>
<td>M</td>
<td align="left">Toggle Audio Mute</td>
<td></td>
<td>F10</td>
<td align="left">Recall Map Position 6</td>
<td></td>
</tr>
<tr>
<td>M</td>
<td align="left">Add MapCenter Alert</td>
<td>right-click<br />empty grid</td>
<td>F10</td>
<td align="left">Store Map Position 6</td>
<td>Shift-Key</td>
</tr>
<tr>
<td>N</td>
<td align="left">Toggle Grayline</td>
<td></td>
<td>F11</td>
<td align="left">Toggle Fullscreen</td>
<td></td>
</tr>
<tr>
<td>O</td>
<td align="left">Toggle RX Spots</td>
<td></td>
<td>F12</td>
<td align="left">Toggle Sidebar Menu</td>
<td></td>
</tr>
<tr>
<td>P</td>
<td align="left">Toggle Grid/PushPin Mode</td>
<td></td>
</tr>
</table>
</div>
<div>
<br />
<div class="button" onclick="require('nw.gui').Shell.openExternal('https://tagloomis.com/gt/gt_print.html');">
Print
</div>
</div>
<div style="top: 6px; right: 6px; position: absolute">
<button class="Xbutton" onclick="g_helpShow=false;helpDiv.style.display='none';">X</button>
</div>
</div>
2020-09-28 19:28:09 +00:00
<div
id="rootSettingsDiv"
style="
margin: 0;
top: 1px;
display: none;
background-color: #00000000;
padding: 0px;
text-align: center;
vertical-align: middle;
position: relative;
z-index: 600;
"
class="roundBorder"
>
<div class="settingstab">
<button id="generalbut" class="settingsTablinks active" onclick="openSettingsTab(event, 'udpSettingsDiv')">
General
</button>
<button id="lookupbut" class="settingsTablinks" onclick="openSettingsTab(event, 'lookupsSettingsDiv')">
Lookups
</button>
<button class="settingsTablinks" onclick="openSettingsTab(event, 'SpeechSettingsDiv')">Audio</button>
<button class="settingsTablinks" onclick="openSettingsTab(event, 'mapSettingsDiv')">Map</button>
<button class="settingsTablinks" onclick="openSettingsTab(event, 'logSettingsDiv');">Logging</button>
<button class="settingsTablinks" onclick="openSettingsTab(event, 'alertsDiv')">Alerts</button>
<button class="settingsTablinks" onclick="openSettingsTab(event, 'callRosterDiv')">Call Roster</button>
<button class="settingsTablinks" onclick="openSettingsTab(event, 'chatSettingsDiv')">OAMS</button>
<button id="logbut" class="settingsTablinks" onclick="openSettingsTab(event, 'logbookSettingsDiv')">
Logbook
</button>
<button id="updatebut" class="settingsTablinks" onclick="openSettingsTab(event, 'updateSettingsDiv')">
Update
</button>
<button class="settingsTablinks" style="margin-right: 25px" onclick="openSettingsTab(event, 'aboutDiv')">
About
</button>
</div>
<div id="udpSettingsDiv" class="settingsTabcontent" style="display: block; vertical-align: top">
<table align="center">
<tr>
<td colspan="3">
<div class="mapItem">
<table align="center">
2020-08-19 16:55:41 +00:00
<tr>
<td>Application Status</td>
</tr>
2020-08-19 16:55:41 +00:00
<tr>
<td id="runningAppsDiv" class="roundBorderValue">Neither WSJT-X or JTDX are running.</td>
2020-08-19 16:55:41 +00:00
</tr>
</table>
</div>
</td>
</tr>
</table>
<table align="center">
<tr>
<td>
<div class="mapItem">
2020-08-19 16:55:41 +00:00
<table align="center">
<tr>
<td><b>Receive UDP Messages</b></td>
</tr>
<tr>
<td id="lastMsgTimeDiv">No messages yet.</td>
</tr>
<tr>
<td id="secondsAgoMsg" class="roundBorderValue">Never</td>
</tr>
<tr>
<td>
Multicast?
<input
title="Enable / Disable Local Network Multicast"
type="checkbox"
id="multicastEnable"
onclick="setMulticastEnable(this);"
/>
</td>
</tr>
<tr>
<td id="multicastTD" style="display: none">
IP
<input
id="multicastIpInput"
type="text"
class="inputTextValue"
maxlength="15"
size="10"
onkeypress="return validIpKeys(event.charCode);"
oninput=" if ( ValidateMulticast(this) ) setMulticastIp(); "
/>
</td>
</tr>
<tr>
<td>
Port
<input
id="udpPortInput"
type="text"
class="inputTextValue"
maxlength="5"
size="5"
onkeypress="return validNumberKeys(event.charCode);"
oninput="if ( ValidatePort(this, null, CheckReceivePortIsNotForwardPort) ) setUdpPort();"
/>
</td>
</tr>
2020-08-19 16:55:41 +00:00
</table>
</div>
</td>
<td>
<div class="mapItem">
2020-08-19 16:55:41 +00:00
<table align="center">
<tr>
<td><b>Forward UDP Messsages</b></td>
</tr>
<tr>
<td><i>e.g. GridTracker on another host</i></td>
</tr>
<tr>
<td>
IP
<input
id="udpForwardIpInput"
type="text"
class="inputTextValue"
maxlength="15"
size="10"
onkeypress="return validIpKeys(event.charCode);"
oninput=" if ( ValidateIPaddress(this, udpForwardEnable) ) setForwardIp(); "
/>
</td>
</tr>
<tr>
<td>
Port
<input
id="udpForwardPortInput"
type="text"
class="inputTextValue"
maxlength="5"
size="5"
onkeypress="return validNumberKeys(event.charCode);"
oninput="if ( ValidatePort(this, udpForwardEnable, CheckForwardPortIsNotReceivePort) ) setForwardPort(); "
/>
</td>
</tr>
<tr>
<td>
Enabled?<input
title="Enable / Disable UDP Message forwarding"
type="checkbox"
id="udpForwardEnable"
onclick="setUdpForwardEnable(this);"
/>
</td>
</tr>
2020-08-19 16:55:41 +00:00
</table>
</div>
</td>
</tr>
</table>
<table align="center">
<tr>
<td>
<div id="CenterGridDiv" class="mapItem">
2020-08-19 16:55:41 +00:00
<table align="center">
<tr>
<td>Center Gridsquare</td>
</tr>
<tr>
<td>
<input
id="homeQTHInput"
type="text"
class="inputTextValue"
maxlength="6"
size="3"
oninput="{ if ( ValidateGridsquare(this,null) ) { setCenterGridsquare(); }}"
/>
</td>
</tr>
2020-08-19 16:55:41 +00:00
</table>
</div>
</td>
<td>
<div class="mapItem">
2020-08-19 16:55:41 +00:00
<table align="center">
<tr>
<td title="Distance Units">Distance Units</td>
</tr>
<tr>
<td>
<select id="distanceUnit" value="KM" onchange="changeDistanceUnit();">
<option value="KM">Kilometres</option>
<option value="MI">Statute Miles</option>
<option value="NM">Nautical Miles</option>
<option value="DG">Degrees</option>
</select>
</td>
</tr>
2020-08-19 16:55:41 +00:00
</table>
</div>
</td>
</tr>
</table>
<table align="center">
<tr>
<td>
<div class="mapItem">
<table align="center" title="Enable Decode Traffic Visual in Menu">
<tr>
<td>Decode Traffic Waterfall</td>
</tr>
<tr>
<td>
<input type="checkbox" id="trafficDecode" onclick="changeTrafficDecode()" />
</td>
</tr>
2020-08-19 16:55:41 +00:00
</table>
</div>
</td>
<td>
<div id="CheckForNewVersionDiv" class="mapItem">
2020-08-19 16:55:41 +00:00
<table align="center">
<tr>
<td>Check for new version</td>
</tr>
<tr>
<td>
<div class="button" onclick="checkForNewVersion(true);">Go!</div>
</td>
</tr>
2020-08-19 16:55:41 +00:00
</table>
</div>
</td>
</tr>
</table>
<table align="center">
<tr>
<td>
<div class="mapItem">
2020-08-19 16:55:41 +00:00
<table align="center">
<tr>
<td>
<div class="button" onclick="if ( imSureCheck.checked ) { clearAndReload(); }">
Clear All Settings!
</div>
</td>
</tr>
<tr>
<td>
Yes, I'm sure!<input
type="checkbox"
id="imSureCheck"
title="Must be checked to enable clearing of settings"
/>
</td>
</tr>
2020-08-19 16:55:41 +00:00
</table>
</div>
</td>
<td>
<div class="mapItem">
2020-08-19 16:55:41 +00:00
<table align="center">
<tr>
<td>
<div class="button" onclick="exportSettings();">Export Settings</div>
</td>
</tr>
<tr>
<td>
<div style="display: none" id="importSettingsButton" class="button" onclick="importSettings();">
Import Settings
</div>
</td>
</tr>
<tr>
<td>
<font style="display: none" id="importSettingsFile"></font>
</td>
</tr>
2020-08-19 16:55:41 +00:00
</table>
</div>
</td>
</tr>
</table>
</div>
<div id="lookupsSettingsDiv" class="settingsTabcontent">
<div class="mapItem">
<table align="center">
<tr align="center">
<td align="center" style="font-weight: bold; color: cyan">Callsign Lookup Service</td>
</tr>
<tr align="center">
<td colspan="1">
<select id="lookupService" value="CALLOOK" onchange="lookupValueChanged();">
<option value="CALLOOK">C A L L O O K (US only)</option>
<option value="HAMQTH">HamQTH (Free Login Required)</option>
<option value="QRZ">QRZ.com (Free and Paid Members Only)</option>
<option value="QRZCQ">QRZCQ.com (Paid Members Only)</option>
</select>
</td>
</tr>
<tr align="center" id="lookupCredentials" style="display: none">
<td>
Username<input id="lookupLogin" type="text" class="inputTextValue" size="8"
oninput="lookupValueChanged();" / > Password<input id="lookupPassword" type="password"
class="inputTextValue" size="8" oninput="lookupValueChanged();" / >
</td>
<td>
<div class="button" onclick="GetSessionID(lookupQrzTestResult);">Test</div>
</td>
<td id="lookupQrzTestResult">&nbsp;</td>
</tr>
</table>
</div>
<br />
<div class="mapItem">
<table align="center">
<tr>
<td align="center">Add Lookup Data to QSO Log event</td>
</tr>
<tr align="center">
<td title="When finsihing a QSO...&#10;add extra data from Lookup service">
<input type="checkbox" id="lookupMerge" onclick="changeLookupMerge(this)" />
</td>
</tr>
</table>
</div>
<div class="mapItem" id="lookupMissingGridDiv" style="display: none">
<table align="center">
<tr>
<td align="center">Add Lookup Grid if QSO Grid missing</td>
</tr>
<tr align="center">
<td title="Add Lookup Grid if QSO Grid Missing">
<input type="checkbox" id="lookupMissingGrid" onclick="changeLookupMerge(this)" />
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem">
<table align="center">
<tr>
<td align="center">Open Lookup On Transmit</td>
</tr>
<tr align="center">
<td title="Open Lookup Window On Transmit">
<input type="checkbox" id="lookupOnTx" onclick="changelookupOnTx()" />
</td>
</tr>
</table>
</div>
<div class="mapItem" id="lookupCloseLogDiv">
<table align="center">
<tr>
<td align="center">Close Lookup After Logging</td>
</tr>
<tr align="center">
<td title="Close Lookup Window After Logging">
<input type="checkbox" id="lookupCloseLog" onclick="changelookupOnTx()" />
</td>
</tr>
</table>
</div>
<br />
2020-09-28 19:28:09 +00:00
<div id="callsignDatabaseDiv" class="mapItem">
<table align="center" class="darkTable">
<tr>
<th colspan="6" style="font-weight: bold; color: yellow">Callsign Databases</th>
</tr>
<tr>
<th>Database</th>
<th>Enabled</th>
<th>Last Download</th>
<th>Count</th>
</tr>
<tr>
<td>United States ULS</td>
<td>
<input type="checkbox" id="ulsUseEnable" onclick="ulsValuesChanged();" />
</td>
<td id="ulsUpdatedTd">Never</td>
<td id="ulsCountTd">0</td>
</tr>
<tr>
<td>Logbook of The World</td>
<td>
<input type="checkbox" id="lotwUseEnable" onclick="lotwValuesChanged();" />
</td>
<td id="lotwUpdatedTd">Never</td>
<td id="lotwCountTd">0</td>
</tr>
<tr>
<td>eQSL</td>
<td>
<input type="checkbox" id="eqslUseEnable" onclick="eqslValuesChanged();" />
</td>
<td id="eqslUpdatedTd">Never</td>
<td id="eqslCountTd">0</td>
</tr>
<tr>
<td>ClubLog OQRS</td>
<td>
<input type="checkbox" id="oqrsUseEnable" onclick="oqrsValuesChanged();" />
</td>
<td id="oqrsUpdatedTd">Never</td>
<td id="oqrsCountTd">0</td>
</tr>
</table>
</div>
</div>
<div id="SpeechSettingsDiv" class="settingsTabcontent">
<div class="roundBorder" style="border: 1px solid #666; margin: 2px; padding: 5px">
<div class="mapItem">
<table align="center">
<tr align="center">
<td align="center">Text-to-speech Voice</td>
</tr>
<tr align="center">
<td colspan="1">
<div id="voicesDiv"></div>
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem">
<table align="center">
<tr align="center">
<td align="center">Speech Rate</td>
<td align="center" id="speechRateTd">1</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0.1"
max="10"
value="1"
step="0.1"
class="slider"
id="speechRate"
oninput="changeSpeechValues()"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td align="center">Speech Pitch</td>
<td align="center" id="speechPitchTd">1</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0"
max="2"
value="1"
step="0.1"
class="slider"
id="speechPitch"
oninput="changeSpeechValues()"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td align="center">Speech Volume</td>
<td align="center" id="speechVolumeTd">1</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0.1"
max="1"
value="1"
step="0.05"
class="slider"
id="speechVolume"
oninput="changeSpeechValues()"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td title="Speak Callsigns and Gridsquares phonetically">Phonetics</td>
</tr>
<tr>
<td title="Speak Callsigns and Gridsquares phonetically">
<input type="checkbox" id="speechPhonetics" onclick="changeSpeechValues()" />
</td>
</tr>
</table>
</div>
</div>
<div class="mapItem">
<table align="center">
<tr align="center">
<td align="center">Audio Device</td>
</tr>
<tr align="center">
<td colspan="1">
<div id="soundCardDiv"></div>
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem" style="white-space: nowrap">
<table align="center">
<tr>
<td align="center">File Audio Volume</td>
<td align="center" id="audioVolumeTd">1</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0.00"
max="1"
value="1"
step="0.01"
class="slider"
id="audioVolume"
oninput="changeAudioValues()"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td title="Lightning Strike Audio Alert">Lightning Strike Audio Alert</td>
</tr>
<tr>
<td>
<select id="strikesAlert" value="0" onchange="changeStrikesAlert();">
<option value="0">None</option>
<option value="1">Short</option>
<option value="2">Long</option>
<option value="3">Voice</option>
</select>
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem" style="white-space: nowrap">
<table align="center">
<tr>
<td align="center">QSO Log Event Notification</td>
</tr>
<tr align="center">
<td>
<select id="logEventMedia" onchange="newLogEventSetting(this); alertLogMessage();"></select>
</td>
</tr>
</table>
</div>
</div>
<div id="logbookSettingsDiv" class="settingsTabcontent" style="padding: 5px">
<div style="padding: 5px" class="mapItem">
<div
style="padding: 5px"
class="mapItem"
title="Filter Logbook QSOs to include these Callsigns only&#10;(comma separated)"
>
<table align="center">
<tr>
<td><b>Working Callsign(s)</b></td>
</tr>
<tr>
<td>
Enable?
<input
title="Enable Filtering"
type="checkbox"
id="workingCallsignEnable"
onclick="workingCallsignEnableChanged(this);"
/>
</td>
</tr>
<tr>
<td id="workingCallsignsTd" style="">
Callsign(s)<input
id="workingCallsignsValue"
type="text"
class="inputTextValue"
size="15"
onkeypress="return validCallsignsKeys(event.charCode);"
oninput="if ( ValidateCallsigns(this) ) workingCallsignsChanged(this);"
/>
</td>
</tr>
</table>
</div>
<div style="padding: 5px" class="mapItem" title="Filter Logbook QSOs from before this Date">
<table align="center">
<tr>
<td><b>Working Date</b></td>
</tr>
<tr>
<td>
Enable?
<input
title="Enable Filtering"
type="checkbox"
id="workingDateEnable"
onclick="workingDateEnableChanged(this);"
/>
</td>
</tr>
<tr>
<td>
<div
class="roundBorderValue"
style="width: auto; font-size: larger; font-weight: bold"
id="workingDateString"
>
No Date
</div>
</td>
2020-09-28 19:28:09 +00:00
<td></td>
</tr>
2020-09-28 19:28:09 +00:00
<tr>
<td id="workingDateTd" title="Date is UTC">
<input style="display: none" type="text" id="workingDateValue" />
<div id="pick-inline"></div>
</td>
</tr>
</table>
</div>
<br />
<div
style="padding: 5px; display: none; font-size: larger; font-weight: bold; color: cyan"
id="applyCallsignsAndDateDiv"
class="button"
onclick="applyCallsignsAndDates();"
title="Apply Changes and Re-Import Logbook(s)"
>
Apply Changes
</div>
</div>
</div>
<div
id="mapSettingsDiv"
class="settingsTabcontent"
style="background-color: #00000044; text-shadow: 0 0 5px #000000ff"
>
<div class="mapItem">
<table align="center">
<tr>
<td title="Change map">Current Map</td>
</tr>
<tr>
<td>
<select id="mapSelect" value="terrain-background" onchange="changeMapValues();"></select>
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td colspan="1" align="center">Animate Active Paths</td>
</tr>
<tr align="center">
<td style="padding: 0px; margin: 0px" title="Toggle Traffic Path Animation">
<input type="checkbox" id="animateValue" onclick="changeAnimate()" />
</td>
</tr>
<tr style="display: none" id="animationSpeedTd">
<td>
<input
title="Animation Speed"
type="range"
min="1"
max="20"
value="10"
step="1"
class="slider"
id="animateSpeedValue"
oninput="changeAnimateSpeedValue()"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem" id="decayRateDiv">
<table align="center">
<tr align="center">
<td align="center">Live Grid Decay</td>
</tr>
<tr>
<td align="center" id="decayRateTd">10m</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0"
max="86400"
value="600"
step="60"
class="slider"
id="gridDecay"
oninput="changeGridDecay()"
onkeyup="redrawGrids()"
onmouseup="redrawGrids()"
/>
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem">
<table align="center">
<tr>
<td align="center">QSX Path Width</td>
<td align="left" id="pathWidthTd">1.5</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0.0"
max="8"
value="1.5"
step="0.1"
class="slider"
id="pathWidthValue"
oninput="changePathWidth()"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem" id="pathColorDiv">
<table align="center">
<tr align="center">
<td align="center"><b>QSX Path Color</b></td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0"
max="361"
value="0"
class="slider"
id="pathColorValue"
oninput="changeMapValues()"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td align="center">QRZ Path Width</td>
<td align="left" id="qrzPathWidthTd">1.5</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0.0"
max="10"
value="1.5"
step="0.1"
class="slider"
id="qrzPathWidthValue"
oninput="changePathWidth()"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem" id="qrzPathColorDiv">
<table align="center">
<tr align="center">
<td align="center"><b>QRZ Path Color</b></td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0"
max="361"
value="360"
class="slider"
id="qrzPathColorValue"
oninput="changeMapValues()"
/>
</td>
</tr>
</table>
</div>
<br />
2020-09-28 19:28:09 +00:00
<div class="mapItem">
<table align="center">
<tr>
<td align="center">Grayline Darkness</td>
<td align="left" id="showDarknessTd">10%</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0.03"
max="0.70"
value="0.1"
step="0.01"
class="slider"
id="shadowValue"
oninput="changeShadow()"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td align="center">Brightness</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0"
max="1"
value="1"
step="0.01"
class="slider"
id="brightnessValue"
oninput="changeMapValues()"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td align="center">Grid Opacity</td>
<td align="left" id="showOpacityTd">10%</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="16"
max="255"
value="136"
step="1"
class="slider"
id="opacityValue"
oninput="changeGridOpacity()"
onkeyup="redrawGrids()"
onmouseup="redrawGrids()"
/>
</td>
</tr>
</table>
</div>
2020-09-28 19:28:09 +00:00
<div class="mapItem">
<table align="center">
<tr>
<td align="center">Split QSL Grids</td>
</tr>
<tr align="center">
<td title="Toggle Split QSL Grids with Live Grids">
<input type="checkbox" id="splitQSLValue" onclick="changeSplitQSL()" />
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem">
<table align="center">
<tr>
<td align="center">Grid Mouse-Over Tables</td>
</tr>
<tr align="center">
<td title="Toggle Grid Mouse-Over Tables">
<input type="checkbox" id="mouseOverValue" onclick="changeMouseOverValue()" />
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td align="center">Merge Award Overlay</td>
</tr>
<tr align="center">
<td title="Toggle Merge Award Overlay">
<input type="checkbox" id="mergeOverlayValue" onclick="changeMergeOverlayValue()" />
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td align="center">Fit Map To QRZ</td>
</tr>
<tr align="center">
<td title="Toggle Fit Map To QRZ">
<input type="checkbox" id="fitQRZvalue" onclick="changeFitQRZvalue()" />
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td align="center">'CQ' Highlighting</td>
</tr>
<tr align="center">
<td title="Toggle 'CQ XX' Highlighting">
<input type="checkbox" id="CqHiliteValue" onclick="changeCqHiliteValue(this);" />
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem">
<table align="center">
<tr>
<td align="center">QRZ Missing Grid<br />DXCC Fallback</td>
</tr>
<tr align="center">
<td title="If a station grid is not known use the DXCC">
<input type="checkbox" id="qrzDxccFallbackValue" onclick="changeQrzDxccFallbackValue();" />
</td>
</tr>
</table>
</div>
<div class="mapItem" id="spotPathColorDiv">
<table align="center">
<tr align="center">
<td align="center"><b>PSK-Spot Color</b></td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="-1"
max="361"
value="-1"
class="slider"
id="spotPathColorValue"
oninput="spotPathChange();"
onkeyup="redrawSpots();"
onmouseup="redrawSpots();"
/>
</td>
</tr>
<tr align="center">
<td id="spotPathInfoTd">PSK-Reporter Palette</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td title="Place RX Spots over Grid Layer">PSK-Spots Over Grids</td>
</tr>
<tr>
<td title="Place RX Spots over Grid Layer">
<input type="checkbox" id="spotMergeValue" onclick="changeSpotValues();redrawSpots();" />
</td>
</tr>
</table>
</div>
<div class="mapItem" id="spotPathsDiv">
<table align="center">
<tr>
<td title="Toggle flight paths to spots">PSK-Spot Paths</td>
</tr>
<tr>
<td title="Toggle flight paths to spots">
<input type="checkbox" id="spotPathsValue" onclick="changeSpotValues();redrawSpots();" />
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem" id="spotPathWidthDiv">
<table align="center">
<tr>
<td align="center">PSK-Spot Path Width</td>
<td align="left" id="spotWidthTd">1.5</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0.0"
max="5"
value="1.5"
step="0.05"
class="slider"
id="spotWidthValue"
oninput="spotPathChange();"
onkeyup="redrawSpots();"
onmouseup="redrawSpots();"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td align="center" colspan="2">Map Settings Transparency</td>
</tr>
<tr>
<td align="center" id="mapTransTd">50%</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0"
max="1"
value="0.5"
step="0.01"
class="slider"
id="mapTransValue"
oninput="mapTransChange();"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
<td title="Night Map">Auto Night Map</td>
</tr>
<tr align="center">
<td title="Toggle Automatic Night Map Switching">
<input type="checkbox" id="nightMapEnable" onclick="changeNightMapEnable(this);" />
</td>
</tr>
2020-09-06 23:50:53 +00:00
<tr>
<td style="display: none" id="nightMapTd">
<div class="mapItem">
<table align="center">
<tr>
<td title="Change map">Night Map</td>
</tr>
<tr>
2020-08-19 16:55:41 +00:00
<td>
<select id="mapNightSelect" value="18" onchange="changeMapNightValues();"></select>
2020-08-19 16:55:41 +00:00
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem" id="pathNightColorDiv">
<table align="center">
<tr align="center">
<td align="center"><b>Night QSX Path Color</b></td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0"
max="361"
value="0"
class="slider"
id="nightPathColorValue"
oninput="changeMapNightValues()"
/>
2020-08-19 16:55:41 +00:00
</td>
</tr>
</table>
</div>
<div class="mapItem" id="pathNightQrzColorDiv">
<table align="center">
<tr align="center">
<td align="center"><b>Night QRZ Path Color</b></td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0"
max="361"
value="0"
class="slider"
id="nightQrzPathColorValue"
oninput="changeMapNightValues()"
/>
2020-08-19 16:55:41 +00:00
</td>
</tr>
</table>
</div>
<div class="mapItem" id="spotNightPathColorDiv" style="display: none">
<table align="center">
<tr align="center">
<td align="center"><b>Night PSK-Spot Color</b></td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="-1"
max="361"
value="-1"
class="slider"
id="spotNightPathColorValue"
oninput="spotPathChange();"
onkeyup="redrawSpots();"
onmouseup="redrawSpots();"
/>
2020-08-19 16:55:41 +00:00
</td>
</tr>
<tr align="center">
<td id="spotNightPathInfoTd">PSK-Reporter Palette</td>
</tr>
</table>
</div>
<br />
<div class="mapItem">
<table align="center">
<tr>
<td align="center">Night Brightness</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="0"
max="1"
value="1"
step="0.01"
class="slider"
id="nightBrightnessValue"
oninput="changeMapNightValues()"
/>
2020-08-19 16:55:41 +00:00
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
</div>
<div id="logSettingsDiv" class="settingsTabcontent">
<div
id="LoadAdifOnStartupDiv"
style="left: 0; padding: 1px; overflow: auto; overflow-x: hidden; display: inline-block; height: 602px"
class="roundBorder"
>
<table class="darkTable" align="center">
<tr>
<th>Source/Sync</th>
<th>Menu?</th>
<th>Startup?</th>
<th>Log?</th>
<th>Details</th>
<th>Test</th>
<th>Result</th>
</tr>
<tr>
<td>GridTracker</td>
<td></td>
<td>
<input
type="checkbox"
checked="false"
id="loadGTCheckBox"
onclick="adifStartupCheckBoxChanged(this);"
/>
</td>
<td>
<input
type="checkbox"
checked="false"
id="logGTqsoCheckBox"
onclick="adifLogQsoCheckBoxChanged(this);"
/>
</td>
<td>GridTracker QSO Logfile</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Local File(s)</td>
<td>
<input
type="checkbox"
checked="false"
id="buttonAdifCheckBox"
onclick="adifMenuCheckBoxChanged(this);"
/>
</td>
<td>
<input
type="checkbox"
checked="false"
id="loadAdifCheckBox"
onclick="adifStartupCheckBoxChanged(this);"
/>
</td>
<td></td>
<td>
<div id="selectFileOnStartupDiv" style="display: none">
<table align="center" class="subtable">
<tr>
2020-08-19 16:55:41 +00:00
<td>
<div class="button" id="selectAdifButton">Add File</div>
2020-08-19 16:55:41 +00:00
</td>
<td>
<div id="startupLogFileDiv">No file(s) selected</div>
2020-08-19 16:55:41 +00:00
</td>
</tr>
</table>
</div>
</td>
<td></td>
<td></td>
</tr>
<tr id="pskTr">
<td>PSK-Reporter</td>
<td>
<input
type="checkbox"
checked="false"
id="buttonPsk24CheckBox"
onclick="adifMenuCheckBoxChanged(this);"
/>
</td>
<td>
<input
type="checkbox"
checked="false"
id="loadPsk24CheckBox"
onclick="adifStartupCheckBoxChanged(this);"
/>
</td>
<td></td>
<td>
<div id="pskDaysDiv">24 Hour History</div>
</td>
<td></td>
<td></td>
</tr>
<tr>
<td>QRZ.com</td>
<td>
<input
type="checkbox"
checked="false"
id="buttonQRZCheckBox"
onclick="adifMenuCheckBoxChanged(this);"
/>
</td>
<td>
<input
type="checkbox"
checked="false"
id="loadQRZCheckBox"
onclick="adifStartupCheckBoxChanged(this);"
/>
</td>
<td>
<input
type="checkbox"
checked="false"
id="logQRZqsoCheckBox"
onclick="adifLogQsoCheckBoxChanged(this);"
/>
</td>
<td>
API Key<input
id="qrzApiKey"
type="password"
class="inputTextValue"
maxlength="19"
size="21"
oninput="ValidateQrzApi(this); adifTextValueChange(this);"
/>
</td>
<td>
<div class="button" onclick="if ( ValidateQrzApi(qrzApiKey ) ) grabQrzComLog(true);">Test</div>
</td>
<td id="qrzTestResult"></td>
</tr>
<tr>
<td>ClubLog</td>
<td>
<input
type="checkbox"
checked="false"
id="buttonClubCheckBox"
onclick="adifMenuCheckBoxChanged(this);"
/>
</td>
<td>
<input
type="checkbox"
checked="false"
id="loadClubCheckBox"
onclick="adifStartupCheckBoxChanged(this);"
/>
</td>
<td>
<input
type="checkbox"
checked="false"
id="logClubqsoCheckBox"
onclick="adifLogQsoCheckBoxChanged(this);"
/>
</td>
<td>
Callsign<input id="clubCall" type="text" class="inputTextValue" size="8" oninput=" ValidateText(this);
adifTextValueChange(this);" / > Password<input id="clubPassword" type="password"
class="inputTextValue" size="8" oninput=" ValidateText(this); adifTextValueChange(this);" / >
<br />Email<input id="clubEmail" type="text" class="inputTextValue" size="20"
oninput="ValidateText(this); adifTextValueChange(this);" / >
</td>
<td>
<div
class="button"
onclick="if ( ValidateText(clubEmail) && ValidateText(clubPassword) ) grabClubLog(true);"
>
Test
</div>
</td>
<td id="clubTestResult"></td>
</tr>
<tr>
<td>HRDLOG.net</td>
<td></td>
<td></td>
<td>
<input
type="checkbox"
checked="false"
id="logHRDLOGqsoCheckBox"
onclick="adifLogQsoCheckBoxChanged(this);"
/>
</td>
<td>
Callsign<input
id="HRDLOGCallsign"
type="text"
class="inputTextValue"
size="12"
oninput="ValidateText(this); adifTextValueChange(this);"
/>
Upload Code<input
id="HRDLOGUploadCode"
type="password"
class="inputTextValue"
size="8"
oninput=" ValidateText(this); adifTextValueChange(this);"
/>
<br />
<a
href="http://www.hrdlog.net/docs/Tips.aspx#upcode"
target="_blank"
title="Click to learn how to get upload code"
>*** How to get upload code ***</a
>
</td>
<td>
<div
class="button"
onclick="if ( ValidateText(HRDLOGCallsign) && ValidateText(HRDLOGUploadCode) ) hrdCredentialTest(true);"
>
Test
</div>
</td>
<td id="HRDLogTestResult"></td>
</tr>
<tr>
<td>Cloudlog</td>
<td></td>
<td></td>
<td>
<input
type="checkbox"
checked="false"
id="logCloudlogQSOCheckBox"
onclick="adifLogQsoCheckBoxChanged(this);"
/>
</td>
<td>
URL<input
id="CloudlogURL"
type="text"
class="inputTextValue"
size="35"
oninput="ValidateText(this); adifTextValueChange(this);"
/>
<br />
API Key<input
id="CloudlogAPI"
type="text"
class="inputTextValue"
size="12"
oninput=" ValidateText(this); adifTextValueChange(this);"
/>
</td>
<td>
<div
class="button"
onclick="if ( ValidateText(CloudlogURL) && ValidateText(CloudlogAPI) ) ClublogTest(true);"
>
Test
</div>
</td>
<td id="CloudlogTestResult"></td>
</tr>
<tr>
<td>eQSL.cc</td>
<td></td>
<td></td>
<td>
<input
type="checkbox"
checked="false"
id="logeQSLQSOCheckBox"
onclick="adifLogQsoCheckBoxChanged(this);"
/>
</td>
<td>
User<input
id="eQSLUser"
type="text"
class="inputTextValue"
size="8"
oninput="ValidateText(this); adifTextValueChange(this);"
/>
Password<input
id="eQSLPassword"
type="password"
class="inputTextValue"
size="8"
oninput=" ValidateText(this); adifTextValueChange(this);"
/><br />
QTH Nickname<input
type="checkbox"
checked="false"
id="nicknameeQSLCheckBox"
onclick="adifNicknameCheckBoxChanged(this);"
/>
<input
id="eQSLNickname"
style="display: none"
type="text"
class="inputTextValue"
size="12"
oninput=" ValidateText(this); adifTextValueChange(this);"
/>
</td>
<td>
<div
class="button"
onclick="if ( ValidateText(eQSLUser) && ValidateText(eQSLPassword) ) eQSLTest(true);"
>
Test
</div>
</td>
<td id="eQSLTestResult"></td>
</tr>
<tr>
<td>LotW</td>
<td>
<input
type="checkbox"
checked="false"
id="buttonLOTWCheckBox"
onclick="adifMenuCheckBoxChanged(this);"
/>
</td>
<td>
<input
type="checkbox"
checked="false"
id="loadLOTWCheckBox"
onclick="adifStartupCheckBoxChanged(this);"
/>
</td>
<td>
<input
type="checkbox"
checked="false"
id="logLOTWqsoCheckBox"
onclick="adifLogQsoCheckBoxChanged(this);"
/>
</td>
<td>
Login<input id="lotwLogin" type="text" class="inputTextValue" size="8" oninput="ValidateText(this);
adifTextValueChange(this);" / > Password<input id="lotwPassword" type="password"
class="inputTextValue" size="8" oninput="ValidateText(this); adifTextValueChange(this);" / ><br />
<div id="lotwUpload" style="display: none">
<div class="button" id="selectTQSLButton">TQSL Path</div>
<text id="tqslFileDiv" style="margin-top: 2px; padding: 2px" class="roundBorderValue"
>No file selected</text
><br />
TQSL Password<input id="lotwTrusted" type="password" class="inputTextValue" size="8"
oninput="ValidateText(this); adifTextValueChange(this);" / ><br />
Station Name<select
id="lotwStation"
class="inputTextValue"
onchange="ValidateText(this); adifTextValueChange(this);"
></select>
</div>
</td>
<td>
<div
class="button"
onclick="if ( ValidateText(lotwLogin) && ValidateText(lotwPassword) ) grabLOtWLog(true);"
>
Test Download
</div>
<br />
<div id="trustedTestButton" style="margin-top: 25px" class="button" onclick="testTrustedQSL(true);">
Test TQSL
</div>
</td>
<td id="lotwTestResult"></td>
</tr>
<tr>
<td>N1MM Logger+</td>
<td></td>
<td></td>
<td>
<input
type="checkbox"
checked="false"
class="inputTextValue"
id="buttonN1MMCheckBox"
onclick=" ValidateIPaddress(N1MMIpInput,this); ValidatePort(N1MMPortInput,this, null ); n1mmLoggerChanged(); "
/>
</td>
<td>
IP<input id="N1MMIpInput" type="text" class="inputTextValue" maxlength="15" size="15"
onkeypress='return validIpKeys(event.charCode);' oninput="ValidateIPaddress(this,buttonN1MMCheckBox);
n1mmLoggerChanged(); "/ > Port<input id="N1MMPortInput" type="text" class="inputTextValue"
maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);'
oninput="ValidatePort(this,buttonN1MMCheckBox, null ); n1mmLoggerChanged(); " / >
</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Log4OM</td>
<td></td>
<td></td>
<td>
<input
type="checkbox"
checked="false"
class="inputTextValue"
id="buttonLog4OMCheckBox"
onclick=" ValidateIPaddress(log4OMIpInput,this); ValidatePort(log4OMPortInput,this, null ); log4OMLoggerChanged(); "
/>
</td>
<td>
IP<input id="log4OMIpInput" type="text" class="inputTextValue" maxlength="15" size="15"
onkeypress='return validIpKeys(event.charCode);'
oninput="ValidateIPaddress(this,buttonLog4OMCheckBox); log4OMLoggerChanged(); "/ > Port<input
id="log4OMPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress='return
validNumberKeys(event.charCode);' oninput="ValidatePort(this,buttonLog4OMCheckBox, null );
log4OMLoggerChanged(); " / >
</td>
<td></td>
<td></td>
</tr>
<tr>
<td>N3FJP Loggers</td>
<td></td>
<td></td>
<td>
<input
type="checkbox"
checked="false"
class="inputTextValue"
id="buttonacLogCheckBox"
onclick=" ValidateIPaddress(acLogIpInput,this); ValidatePort(acLogPortInput,this, null ); acLogLoggerChanged(); "
/>
</td>
<td>
IP<input id="acLogIpInput" type="text" class="inputTextValue" maxlength="15" size="15"
onkeypress='return validIpKeys(event.charCode);' oninput="ValidateIPaddress(this,buttonacLogCheckBox);
acLogLoggerChanged(); "/ > Port<input id="acLogPortInput" type="text" class="inputTextValue"
maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);'
oninput="ValidatePort(this,buttonacLogCheckBox, null ); acLogLoggerChanged(); " / >
</td>
<td></td>
<td></td>
</tr>
<tr>
<td>DXKeeper</td>
<td></td>
<td></td>
<td>
<input
type="checkbox"
checked="false"
class="inputTextValue"
id="buttondxkLogCheckBox"
onclick=" ValidateIPaddress(dxkLogIpInput,this); ValidatePort(dxkLogPortInput,this, null ); dxkLogLoggerChanged(); "
/>
</td>
<td>
IP<input id="dxkLogIpInput" type="text" class="inputTextValue" maxlength="15" size="15"
onkeypress='return validIpKeys(event.charCode);'
oninput="ValidateIPaddress(this,buttondxkLogCheckBox); dxkLogLoggerChanged(); "/ > Port<input
id="dxkLogPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress='return
validNumberKeys(event.charCode);' oninput="ValidatePort(this,buttondxkLogCheckBox, null );
dxkLogLoggerChanged(); " / >
</td>
<td></td>
<td></td>
</tr>
<tr>
<td>HRD Logbook</td>
<td></td>
<td></td>
<td>
<input
type="checkbox"
checked="false"
class="inputTextValue"
id="buttonHrdLogbookCheckBox"
onclick=" ValidateIPaddress(hrdLogbookIpInput,this); ValidatePort(hrdLogbookPortInput,this, null ); hrdLogbookLoggerChanged(); "
/>
</td>
<td>
IP<input id="hrdLogbookIpInput" type="text" class="inputTextValue" maxlength="15" size="15"
onkeypress='return validIpKeys(event.charCode);'
oninput="ValidateIPaddress(this,buttonHrdLogbookCheckBox); hrdLogbookLoggerChanged(); "/ > Port<input
id="hrdLogbookPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress='return
validNumberKeys(event.charCode);' oninput="ValidatePort(this,buttonHrdLogbookCheckBox, null );
hrdLogbookLoggerChanged(); " / >
</td>
<td></td>
<td></td>
</tr>
</table>
</div>
</div>
<div id="callRosterDiv" class="settingsTabcontent">
<div class="mapItem">
<table align="center">
<tr align="center">
<td align="center">Window Always On Top</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="checkbox" id="rosterAlwaysOnTop" onchange="changeRosterTop(this);" />
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr align="center">
<td align="center">Call Roster Max Age</td>
</tr>
<tr align="center">
<td align="center" id="rosterTimeTd">2m 0s</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="15"
max="300"
value="120"
step="15"
class="slider"
id="rosterTime"
oninput="changeRosterTime()"
/>
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem" id="haltTXDiv" style="display: none">
<table align="center">
<tr align="center">
<td align="center">On QSO Reply</td>
</tr>
<tr align="center">
<td align="center">Halt TX On All Other Instances</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="checkbox" id="haltAllOnTxValue" onchange="changeHaltOntTxValue(this);" />
</td>
</tr>
</table>
</div>
<div class="mapItem" id="multiRigCRDiv" style="display: none">
<table align="center">
<tr align="center">
<td align="center">On QSO Reply</td>
</tr>
<tr align="center">
<td align="center">Switch View To Transmitting Instance</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="checkbox" id="focusRigValue" onchange="changeFocusRigValue(this);" />
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem">
<table align="center" title="Alert when new 'Wanted Row(s)' appear in the Call Roster">
<tr>
<td colspan="2">Audio Alert On <b>New Wanted</b></td>
</tr>
<tr>
<td colspan="2">
<input type="checkbox" id="huntRoster" onchange="wantedChanged(this);" />
</td>
</tr>
<tr>
<td>
<select id="huntRosterNotify" onchange="wantedChanged(this);">
<option value="1">Text-to-Speech</option>
<option value="0">Media File</option>
</select>
</td>
<td>
<input
id="huntRosterNotifyWord"
type="text"
class="inputTextValue"
size="14"
onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}"
oninput="ValidateText(this);wantedChanged(this);"
/>
<select id="huntRosterNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select>
</td>
</tr>
</table>
</div>
</div>
<div id="alertsDiv" class="settingsTabcontent">
<div id="alertMatrixDiv" style="display: inline-block">
<table class="roundBorder" align="left" style="border: 1px solid #066; margin: auto; padding: 1px">
<tr>
<th colspan="5">Audio Alerts</th>
</tr>
<tr colspan="5" title="Log file reference">
<td align="right" colspan="3">Reference</td>
<td align="left" colspan="2">
<select id="referenceNeed" onchange="exceptionValuesChanged();">
<option value="0">Current Band and Mode</option>
<option value="1">Current Band, Any Mode</option>
<option value="2">Current Band, Any Digi Mode</option>
<option value="3">Current Mode, Any Band</option>
<option value="4">Any Band, Any Mode</option>
<option value="5">Any Band, Any Digi Mode</option>
</select>
</td>
</tr>
<tr>
<td></td>
<td>Enable</td>
<td>Status</td>
<td>Notify</td>
<td>Value</td>
</tr>
<tr>
<th>Callsign</th>
<td>
<input type="checkbox" id="huntCallsign" onchange="wantedChanged(this);" />
</td>
<td>
<select title="Used by All Classic Alerts" id="huntCallsignNeed" onchange="wantedChanged(this);">
<option value="worked">New</option>
<option value="confirmed">New+Unconf</option>
</select>
</td>
<td>
<select id="huntCallsignNotify" onchange="wantedChanged(this);">
<option value="1">Text-to-Speech</option>
<option value="0">Media File</option>
</select>
</td>
<td>
<input
id="huntCallsignNotifyWord"
type="text"
class="inputTextValue"
size="14"
onkeyup="if (event.keyCode === 13) { speakAlertString(this.value); }"
oninput="ValidateText(this);wantedChanged(this);"
/>
<select id="huntCallsignNotifyMedia" onchange="wantedChanged(this);"></select>
</td>
</tr>
<tr>
<th>Grid</th>
<td>
<input type="checkbox" id="huntGrid" onchange="wantedChanged(this);" />
</td>
<td>
<select id="huntGridNeed" onchange="wantedChanged(this);">
<option value="worked">New</option>
<option value="confirmed">New+Unconf</option>
</select>
</td>
<td>
<select id="huntGridNotify" onchange="wantedChanged(this);">
<option value="1">Text-to-Speech</option>
<option value="0">Media File</option>
</select>
</td>
<td>
<input
id="huntGridNotifyWord"
type="text"
class="inputTextValue"
size="14"
onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}"
oninput="ValidateText(this);wantedChanged(this);"
/>
<select id="huntGridNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select>
</td>
</tr>
<tr>
<th>DXCC</th>
<td>
<input type="checkbox" id="huntDXCC" onchange="wantedChanged(this);" />
</td>
<td>
<select id="huntDXCCNeed" onchange="wantedChanged(this);">
<option value="worked">New</option>
<option value="confirmed">New+Unconf</option>
</select>
</td>
<td>
<select id="huntDXCCNotify" onchange="wantedChanged(this);">
<option value="1">Text-to-Speech</option>
<option value="0">Media File</option>
</select>
</td>
<td>
<input
id="huntDXCCNotifyWord"
type="text"
class="inputTextValue"
size="14"
onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}"
oninput="ValidateText(this);wantedChanged(this);"
/>
<select id="huntDXCCNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select>
</td>
</tr>
<tr>
<th>CQ Zone</th>
<td>
<input type="checkbox" id="huntCQz" onchange="wantedChanged(this);" />
</td>
<td>
<select id="huntCQzNeed" onchange="wantedChanged(this);">
<option value="worked">New</option>
<option value="confirmed">New+Unconf</option>
</select>
</td>
<td>
<select id="huntCQzNotify" onchange="wantedChanged(this);">
<option value="1">Text-to-Speech</option>
<option value="0">Media File</option>
</select>
</td>
<td>
<input
id="huntCQzNotifyWord"
type="text"
class="inputTextValue"
size="14"
onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}"
oninput="ValidateText(this);wantedChanged(this);"
/>
<select id="huntCQzNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select>
</td>
</tr>
<tr>
<th>ITU Zone</th>
<td>
<input type="checkbox" id="huntITUz" onchange="wantedChanged(this);" />
</td>
<td>
<select id="huntITUzNeed" onchange="wantedChanged(this);">
<option value="worked">New</option>
<option value="confirmed">New+Unconf</option>
</select>
</td>
<td>
<select id="huntITUzNotify" onchange="wantedChanged(this);">
<option value="1">Text-to-Speech</option>
<option value="0">Media File</option>
</select>
</td>
<td>
<input
id="huntITUzNotifyWord"
type="text"
class="inputTextValue"
size="14"
onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}"
oninput="ValidateText(this);wantedChanged(this);"
/>
<select id="huntITUzNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select>
</td>
</tr>
<tr>
<th>US States</th>
<td>
<input type="checkbox" id="huntStates" onchange="wantedChanged(this);" />
</td>
<td>
<select id="huntStatesNeed" onchange="wantedChanged(this);">
<option value="worked">New</option>
<option value="confirmed">New+Unconf</option>
</select>
</td>
<td>
<select id="huntStatesNotify" onchange="wantedChanged(this);">
<option value="1">Text-to-Speech</option>
<option value="0">Media File</option>
</select>
</td>
<td>
<input
id="huntStatesNotifyWord"
type="text"
class="inputTextValue"
size="14"
onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}"
oninput="ValidateText(this);wantedChanged(this);"
/>
<select id="huntStatesNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select>
</td>
</tr>
</table>
<table
class="roundBorder"
align="left"
style="border: 1px solid #622; margin: auto; padding: 1px; text-align: left"
>
<tr>
<th colspan="6" align="center">Exceptions</th>
</tr>
<tr>
<td>
<table>
<tr>
<td colspan="2">
<input type="checkbox" id="cqOnly" onchange="exceptionValuesChanged();" />CQ Only
</td>
</tr>
<tr>
<td colspan="2">
<input type="checkbox" id="wantGrid" onchange="exceptionValuesChanged();" />Require Grid
</td>
</tr>
<tr>
<td><input type="checkbox" id="wantMinDB" onchange="exceptionValuesChanged();" />Min dB</td>
<td>
<input
type="range"
min="-25"
max="0"
step="1"
class="slider"
id="minDb"
oninput="exceptionValuesChanged();"
style="width: 75px"
/>
</td>
<td align="center" id="minDbView" class="roundBorderValue">-24</td>
</tr>
<tr>
<td><input type="checkbox" id="wantMaxDT" onchange="exceptionValuesChanged();" />Max DT</td>
<td>
<input
type="range"
min="0.1"
max="2"
step="0.1"
class="slider"
id="maxDT"
oninput="exceptionValuesChanged();"
style="width: 75px"
/>
</td>
<td align="center" id="maxDTView" class="roundBorderValue">.5</td>
</tr>
<tr>
<td><input type="checkbox" id="wantMinFreq" onchange="exceptionValuesChanged();" />Min freq</td>
<td>
<input
type="range"
min="0"
max="2500"
step="10"
class="slider"
id="minFreq"
oninput="exceptionValuesChanged();"
style="width: 75px"
/>
</td>
<td align="center" id="minFreqView" class="roundBorderValue">400</td>
</tr>
<tr>
<td><input type="checkbox" id="wantMaxFreq" onchange="exceptionValuesChanged();" />Max freq</td>
<td>
<input
type="range"
min="500"
max="3000"
step="10"
class="slider"
id="maxFreq"
oninput="exceptionValuesChanged();"
style="width: 75px"
/>
</td>
<td align="center" id="maxFreqView" class="roundBorderValue">3000</td>
</tr>
2020-08-19 16:55:41 +00:00
</table>
</td>
<td>
<table>
<tr>
<td colspan="2">
<input
type="checkbox"
id="noMyDxcc"
onchange="onlyMyDxcc.checked=false; exceptionValuesChanged();"
/>Not My DXCC
</td>
</tr>
<tr>
<td colspan="2">
<input
type="checkbox"
id="onlyMyDxcc"
onchange="noMyDxcc.checked=false; exceptionValuesChanged();"
/>Only My DXCC
</td>
</tr>
<tr>
<td colspan="2">
<input
type="checkbox"
id="noRoundUp"
onchange="onlyRoundUp.checked=false; exceptionValuesChanged();"
/>No Round-Up
</td>
</tr>
<tr>
<td colspan="2">
<input
type="checkbox"
id="onlyRoundUp"
onchange="noRoundUp.checked=false; exceptionValuesChanged();"
/>Only Round-Up
</td>
</tr>
<tr>
<td colspan="2">
<div id="usesLoTWDiv" style="display: none">
<input type="checkbox" id="usesLoTW" onchange="exceptionValuesChanged();" />Uses LoTW
</div>
</td>
</tr>
<tr>
<td colspan="2">
<div id="useseQSLDiv" style="display: none">
<input type="checkbox" id="useseQSL" onchange="exceptionValuesChanged();" />Uses eQSL
</div>
</td>
</tr>
2020-08-19 16:55:41 +00:00
</table>
</td>
</tr>
</table>
</div>
<br />
<div id="alertFormDiv" style="display: inline-block">
<table align="center" class="roundBorder" style="border: 3px groove darkred; margin: 0 auto">
<th colspan="8">Custom Alerts</th>
<tr>
<td>Type</td>
<td>Value</td>
<td>Notify</td>
<td></td>
<td>Repeat</td>
</tr>
<tr>
<td>
<select id="alertTypeSelect" name="alertTypeSelect" onchange="alertTypeChanged();">
<option value="0">Callsign (exact)</option>
<option value="5">Callsign (partial)</option>
<option value="6">Callsign (regex)</option>
<option value="2">Gridsquare</option>
<option value="4">QRZ</option>
</select>
</td>
<td id="alertValueSelect">
<input id="alertValueInput" type="text" class="inputTextValue" size="7"
oninput="ValidateCallsign(this,null);" / >
</td>
<td>
<select id="alertNotifySelect" name="alertNotifySelect" onchange="alertNotifyChanged();">
<option value="1">Text-to-speech</option>
<option value="0">Media File</option>
<option value="2">Visual Popup</option>
<option value="3">Map Center</option>
</select>
</td>
<td>
<select style="display: none" id="alertMediaSelect" onchange="alertNotifyChanged('media');"></select>
</td>
<td>
<select id="alertRepeatSelect" name="alertRepeatSelect">
<option value="2">Until Deleted</option>
<option value="3">Until Exit</option>
<option value="1">Once</option>
<option value="0">Never</option>
</select>
</td>
<td id="addButton">
<div class="button" style="min-width: 26px; width: 26px" onclick="addNewAlert();">ADD</div>
</td>
<td id="addError" style="color: red"></td>
</tr>
</table>
</div>
<br />
<div id="alertListDiv" style="margin: 4px; padding: 4px"></div>
</div>
<div id="chatSettingsDiv" class="settingsTabcontent">
<div class="mapItem">
<table align="center">
<tr>
<td title="Messaging Enable">Messaging Enable</td>
</tr>
<tr>
<td>
<input
title="Enable / Disable Messaging"
type="checkbox"
id="msgEnable"
onclick="setMsgEnable(this);"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem" id="GTspotDiv">
<table align="center">
<tr>
<td title="Send and Recieve Spot Reports through the OAMS network">Spotting</td>
</tr>
<tr>
<td>
<input
title="Enable / Disable Spotting"
type="checkbox"
id="GTspotEnable"
onclick="setGTspotEnable(this);"
/>
</td>
</tr>
</table>
</div>
<br />
<div id="msgSettingsDiv" class="mapItem" style="padding: 5px">
<div class="mapItem">
<table align="center">
<tr>
<td title="New Message Alert">New Message Alert</td>
</tr>
<tr>
<td>
<select
id="msgAlertSelect"
name="msgAlertSelect"
onchange="newMessageSetting(this); alertChatMessage();"
>
<option value="0">None</option>
<option value="1">Text-to-Speech</option>
<option value="2">Media File</option>
</select>
</td>
</tr>
<tr>
<td>
<input
id="msgAlertWord"
type="text"
class="inputTextValue"
size="14"
onkeyup="if (event.keyCode === 13) {newMessageSetting(this); alertChatMessage(); }"
oninput="ValidateText(this);newMessageSetting(this);"
/>
<select id="msgAlertMedia" onchange="newMessageSetting(this); alertChatMessage();"></select>
</td>
</tr>
</table>
2020-08-19 16:55:41 +00:00
</div>
<br />
<div class="mapItem" id="msgFrequencySelectDiv">
<table align="center">
<tr>
<td title="New Message Alert Frequency">Alert Frequency</td>
</tr>
<tr>
<td>
<select id="msgFrequencySelect" name="msgFrequencySelect" onchange="newMessageSetting(this);">
<option value="0">Once</option>
<option value="1">1 minute</option>
<option value="3">3 minutes</option>
<option value="5">5 minutes</option>
<option value="10">10 minutes</option>
<option value="15">15 minutes</option>
<option value="30">30 minutes</option>
<option value="60">1 hour</option>
</select>
</td>
</tr>
</table>
2020-08-19 16:55:41 +00:00
</div>
<div class="mapItem">
<table align="center">
<tr>
<td title="New Message Action">New Message Action</td>
</tr>
<tr>
<td>
<select id="msgActionSelect" name="msgActionSelect" onchange="newMessageSetting(this);">
<option value="0">Do nothing</option>
<option value="1">Open Messaging Window</option>
</select>
</td>
</tr>
</table>
2020-08-19 16:55:41 +00:00
</div>
<br />
<div class="mapItem">
<table align="center">
<tr>
<td title="Away Mode">Away Mode</td>
</tr>
<tr>
<td>
<select id="msgAwaySelect" name="msgAwaySelect" onchange="newMessageSetting(this);">
<option value="0">Not Away</option>
<option value="1">I Am Away</option>
</select>
</td>
</tr>
</table>
2020-08-19 16:55:41 +00:00
</div>
<br />
<div class="mapItem" id="msgAwayTextDiv">
<table align="center">
<tr>
<td title="Away Text">Away Text</td>
</tr>
<tr>
<td>
<input id="msgAwayText" type="text" class="inputTextValue" size="30" oninput="ValidateText(this);
newMessageSetting(this);" / >
</td>
</tr>
</table>
2020-08-19 16:55:41 +00:00
</div>
</div>
</div>
<div id="aboutDiv" class="settingsTabcontent">
<div class="mapItem" style="padding: 4px">
<h2>GridTracker</h2>
<br />
GridTracker listens to traffic from WSJT-X and displays it on a map<br />
<i>It will also load ADIF log files</i> - Feb 2018<br />
<br />
&copy;2020 Stephen "Tag" Loomis / N&Oslash;TTL<br />
<br />
&copy;2020 Henry "atouk" Forte / N2VFL<br />
<p></p>
<h3>Contributors</h3>
<b>NR&Oslash;Q</b>
<p>
"d3jake" KE&Oslash;RIY - "Don" KB2YSI - K4KPW - "Paul" K6PST
<br />
<img src="./gridview.png" /> <br />
</p>
</div>
</div>
<div id="updateSettingsDiv" class="settingsTabcontent">
<div style="left: 0; display: inline-block; height: 510px; width: 740px" id="updateText">
<embed src="./gt_update.pdf" style="width: 100%; height: 100%" frameborder="0" scrolling="yes" />
</div>
</div>
<div style="top: 0; right: 1px; position: absolute">
<button class="Xbutton" onclick="rootSettingsDiv.style.display='none';">X</button>
</div>
2020-08-19 16:55:41 +00:00
</div>
</div>
<div
id="alertsPopDiv"
style="
margin: 0 auto;
top: 2px;
min-height: 80px;
max-height: 80%;
left: 2px;
display: none;
background-color: white;
padding: 0px;
text-align: center;
vertical-align: middle;
position: absolute;
z-index: 650;
border: 3px groove red;
white-space: nowrap;
overflow: hidden;
"
class="roundBorder"
>
<b>New Alerts!!!</b>
<div id="alertPopListDiv" style="margin: 2px; padding: 2px"></div>
<div class="button" onclick="ackAlerts();">DISMISS</div>
</div>
<div
id="versionDiv"
style="
margin: 0 auto;
left: 0;
right: 0;
top: 0;
width: 100%;
height: 100%;
display: none;
background-color: black;
text-align: center;
vertical-align: middle;
position: absolute;
z-index: 800;
"
>
<h1>GridTracker Updated!</h1>
<div id="newVersionMustDownloadDiv" style="color: LightGreen"></div>
<table align="center">
<tr>
<td>
<div class="button" onclick="cancelVersion();">No, thanks.</div>
</td>
<td>
<div class="button" onclick="onExitAppToGoWebsite();">Yes, please!</div>
</td>
</tr>
<tr>
<td>
Stop asking?<input type="checkbox" checked="false" id="stopAskingCheckbox" onclick="stopAsking(this);" />
</td>
</tr>
</table>
</div>
<div
id="upToDateDiv"
style="
margin: 0 auto;
left: 0;
right: 0;
top: 0;
height: 100%;
width: 100%;
display: none;
background-color: black;
text-align: center;
vertical-align: middle;
position: absolute;
z-index: 800;
white-space: nowrap;
overflow: hidden;
"
>
<h2>GridTracker is up to date!</h2>
<div class="button" onclick="closeUpdateToDateDiv();">OK</div>
</div>
<div id="selectNodeDiv" style="-webkit-user-select: text; display: block; zindex: -10000"></div>
</body>
</html>