gridtracker/package.nw/GridTracker.html

1843 wiersze
96 KiB
HTML

<!DOCTYPE html>
<!--
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>
<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>
<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">&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>
<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>
<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>
<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>
<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 .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><th>Key</th><th align='left'>Action</th><th>Condition</th><th>Key</th><th align='left'>Action</th><th>Condition</th>
<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>
<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>
<tr>
<td >Application Status</td>
</tr>
<tr>
<td id="runningAppsDiv" class="roundBorderValue" >Neither WSJT-X or JTDX are running.</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<table align=center>
<tr >
<td>
<div class="mapItem" >
<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, CheckNotRemoteIpPort ) ) setUdpPort();" /></td>
</tr>
</table>
</div>
</td>
<td>
<div class="mapItem">
<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, CheckNotLocalPort ) ) setForwardPort(); " /></td>
</tr>
<tr>
<td> Enabled?<input title="Enable / Disable UDP Message forwarding" type="checkbox" id="udpForwardEnable" onclick="setUdpForwardEnable(this);" /></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<table align=center>
<tr>
<td >
<div id="CenterGridDiv" class="mapItem" >
<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>
</table>
</div>
</td>
<td>
<div class="mapItem">
<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>
</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>
</table>
</div>
</td>
<td>
<div id="CheckForNewVersionDiv" class="mapItem">
<table align=center>
<tr>
<td>Check for new version</td>
</tr>
<tr>
<td><div class="button" onclick="checkForNewVersion(true);">Go!</div></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<table align=center>
<tr>
<td>
<div class="mapItem">
<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>
</table>
</div>
</td>
<td>
<div class="mapItem">
<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></td>
</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/>
<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>
</tr>
<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/>
<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>
<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>
<tr><td style="display:none" id="nightMapTd" >
<div class="mapItem">
<table align="center">
<tr >
<td title="Change map">Night Map</td>
</tr>
<tr>
<td>
<select id="mapNightSelect" value="18" onchange="changeMapNightValues();">
</select>
</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()"/></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()"/></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();"/></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()"/></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><td><div class="button" id="selectAdifButton">Add File</div></td>
<td><div id="startupLogFileDiv" >No file(s) selected</div></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);"/>
</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></td>
<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 >
<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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
<H3>Contributors</H3>
<b>NR&Oslash;Q</b><p>
"d3jake" KE&Oslash;RIY - "Don" KB2YSI - K4KPW - "Paul" K6PST
<br />
<img src="./gridview.png" /> <br />
</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>
</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>
<td>
Stop asking?<input type="checkbox" checked="false" id="stopAskingCheckbox" onclick="stopAsking(this);" />
</td>
</tr>
</table>
</div>
</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>
</div>
</body>
</html>