kopia lustrzana https://gitlab.com/gridtracker.org/gridtracker
3642 wiersze
134 KiB
HTML
3642 wiersze
134 KiB
HTML
<!DOCTYPE html>
|
|
<!--
|
|
GridTracker Copyright © 2018-2022 GridTracker.org
|
|
All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are met:
|
|
|
|
1. Redistributions of source code must retain the above copyright notice, this
|
|
list of conditions and the following disclaimer.
|
|
|
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
this list of conditions and the following disclaimer in the documentation
|
|
and/or other materials provided with the distribution.
|
|
|
|
3. Neither the name of the copyright holder nor the names of its
|
|
contributors may be used to endorse or promote products derived from
|
|
this software without specific prior written permission.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
-->
|
|
<html lang="en" xml:lang="en">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<title>GridTracker</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>
|
|
<div>
|
|
<h1><div id="startupVersionDiv">GridTracker</div></h1>
|
|
</div>
|
|
<div>
|
|
<h3><i>An Amateur Radio Companion</i></h3>
|
|
</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="LegendDivQSO"
|
|
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="LegendDivQSL"
|
|
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="LegendDivQSX"
|
|
title="Grids with station(s) communicating with stations other than you"
|
|
style="
|
|
padding-top: 2px;
|
|
border: 2px solid #000000;
|
|
width: 42px;
|
|
height: 16px;
|
|
background-color: #000088;
|
|
color:#eee;
|
|
"
|
|
>
|
|
QSX
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div
|
|
id="LegendDivCQ"
|
|
title="Grids with station(s) calling CQ"
|
|
style="
|
|
padding-top: 2px;
|
|
border: 2px solid #000000;
|
|
width: 42px;
|
|
height: 16px;
|
|
background-color: #00ff00;
|
|
color: #000;
|
|
"
|
|
>
|
|
CQ
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div
|
|
id="LegendDivCQDX"
|
|
title="Grids with station(s) calling CQ distance"
|
|
style="
|
|
padding-top: 2px;
|
|
border: 2px solid #000000;
|
|
width: 42px;
|
|
height: 16px;
|
|
background-color: #00FFFF;
|
|
color: #000;
|
|
"
|
|
>
|
|
CQDX
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<div
|
|
id="LegendDivQRZ"
|
|
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="LegendDivQTH"
|
|
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="LegendDivWSPR"
|
|
title="WSPR Stations"
|
|
style="
|
|
padding-top: 2px;
|
|
border: 2px solid black;
|
|
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"> </div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<div
|
|
id="localDXCountry"
|
|
style="font-size: smaller; font-weight: italic; color: lightgreen"
|
|
title="DXCC"
|
|
>
|
|
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div
|
|
id="localDXDistance"
|
|
style="font-size: smaller; font-weight: italic; color: lightblue"
|
|
title="Distance"
|
|
>
|
|
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div
|
|
id="localDXAzimuth"
|
|
style="font-size: smaller; font-weight: italic; color: lightgreen"
|
|
title="Heading"
|
|
>
|
|
|
|
</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);">
|
|
🡄
|
|
</div>
|
|
<div style="display: inline-block" id="rigDiv">-no rig-</div>
|
|
<div style="display: inline-block; cursor: pointer; right: 0px" onClick="rigChange(true);"> 🡆</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 />
|
|
|
|
</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 (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 (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 & 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.png" 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 src="./img/lookup.png" class="buttonImg" />
|
|
</div>
|
|
<div id="statsDiv" onclick="showRootInfoBox();" class="iconButton" title="Show Stats">
|
|
<img src="./img/stats-button.png" 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.png" 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.png" 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.png" class="buttonImg" />
|
|
</div>
|
|
<div id="donateButton" onclick="gotoDonate();" class="iconButton" title="Donate with PayPal">
|
|
<img
|
|
style="-webkit-filter: brightness(50%); filter: brightness(50%)"
|
|
src="./img/donate.png"
|
|
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.png" 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.png" class="buttonImg" />
|
|
</div>
|
|
<div id="radarButton" onclick="toggleNexrad()" class="iconButton" title="Toggle US Nexrad">
|
|
<img src="./img/radar-button.png" class="buttonImg" />
|
|
</div>
|
|
<div id="gridOverlayButton" onclick="toggleAllGrids()" class="iconButton" title="Toggle All Grid Overlay">
|
|
<img src="./img/grid-overlay.png" 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;
|
|
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://storage.googleapis.com/gt_app/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, 'gridSettingsDiv')">Grids</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">
|
|
<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="255"
|
|
size="16"
|
|
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>
|
|
</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="255"
|
|
size="16"
|
|
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>
|
|
</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="8"
|
|
size="8"
|
|
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>
|
|
</tr>
|
|
</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"> </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... 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>
|
|
<div class="mapItem" id="lookupCallookPreferredDiv">
|
|
<table align="center">
|
|
<tr>
|
|
<td align="center">Use Callook before using other service</td>
|
|
</tr>
|
|
<tr align="center">
|
|
<td title="Use Callook before using other service. Free Callook yields more data than free QRZ.">
|
|
<input type="checkbox" id="lookupCallookPreferred" onclick="lookupValueChanged()" />
|
|
</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 (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">
|
|
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>
|
|
|
|
<td></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="gridSettingsDiv" class="settingsTabcontent">
|
|
<div class="mapItem"style="padding:10px;">
|
|
<div class="mapItem" style="height:49px;">
|
|
<table align="center">
|
|
<tr align="center">
|
|
<td align="center"><b><i>Gridsquare Colors</i></b>
|
|
</tr>
|
|
<tr align="center">
|
|
<td title="Reset Gridsquare Colors To Default">
|
|
<div class="button" onclick="resetLegendColors()">Reset Colors</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="mapItem" id="QSOgridDiv" >
|
|
<table align="center">
|
|
<tr align="center">
|
|
<td align="center"><b>QSO / Worked</b></td>
|
|
</tr>
|
|
<tr align="center">
|
|
<td colspan="2">
|
|
<input type="color" id="QSOgridValue" value="#000000" oninput="changeLegendColor(this)" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="mapItem" id="QSLgridDiv" >
|
|
<table align="center">
|
|
<tr align="center">
|
|
<td align="center"><b>QSL / Confirmed</b></td>
|
|
</tr>
|
|
<tr align="center">
|
|
<td colspan="2">
|
|
<input type="color" id="QSLgridValue" value="#000000" oninput="changeLegendColor(this)" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="mapItem" id="QSXgridDiv" >
|
|
<table align="center">
|
|
<tr align="center">
|
|
<td align="center"><b>QSX / Station-2-Station</b></td>
|
|
</tr>
|
|
<tr align="center">
|
|
<td colspan="2">
|
|
<input type="color" id="QSXgridValue" value="#000000" oninput="changeLegendColor(this)" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br />
|
|
<div class="mapItem" id="CQgridDiv" >
|
|
<table align="center">
|
|
<tr align="center">
|
|
<td align="center"><b>'CQ' Stations</b></td>
|
|
</tr>
|
|
<tr align="center">
|
|
<td colspan="2">
|
|
<input type="color" id="CQgridValue" value="#000000" oninput="changeLegendColor(this)" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="mapItem" id="CQDXgridDiv" >
|
|
<table align="center">
|
|
<tr align="center">
|
|
<td align="center"><b>'CQ DX' Stations</b></td>
|
|
</tr>
|
|
<tr align="center">
|
|
<td colspan="2">
|
|
<input type="color" id="CQDXgridValue" value="#000000" oninput="changeLegendColor(this)" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="mapItem" id="QRZgridDiv" >
|
|
<table align="center">
|
|
<tr align="center">
|
|
<td align="center"><b>QRZ / Your Traffic</b></td>
|
|
</tr>
|
|
<tr align="center">
|
|
<td colspan="2">
|
|
<input type="color" id="QRZgridValue" value="#000000" oninput="changeLegendColor(this)" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="mapItem" id="QTHgridDiv" >
|
|
<table align="center">
|
|
<tr align="center">
|
|
<td align="center"><b>QTH / Home Gridsquare</b></td>
|
|
</tr>
|
|
<tr align="center">
|
|
<td colspan="2">
|
|
<input type="color" id="QTHgridValue" value="#000000" oninput="changeLegendColor(this)" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<br />
|
|
<br />
|
|
<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">
|
|
<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>
|
|
<div class="mapItem">
|
|
<table align="center">
|
|
<tr>
|
|
<td align="center">Auto Mouseover Grids</td>
|
|
</tr>
|
|
<tr align="center">
|
|
<td title="Toggle Auto Mouseover Grid Tables">
|
|
<input type="checkbox" id="mouseOverValue" onclick="changeMouseOverValue()" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br/>
|
|
<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>
|
|
</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">
|
|
<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>
|
|
<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">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>
|
|
<br />
|
|
<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>
|
|
<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" 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>
|
|
|
|
<br />
|
|
<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);" />
|
|
</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="5"
|
|
max="300"
|
|
value="120"
|
|
step="15"
|
|
class="slider"
|
|
id="rosterTime"
|
|
oninput="changeRosterTime()"
|
|
/>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="mapItem">
|
|
<table align="center">
|
|
<tr align="center">
|
|
<td align="center">Clear Call Roster on Band change</td>
|
|
</tr>
|
|
<tr align="center">
|
|
<td colspan="2">
|
|
<input type="checkbox" id="clearRosterOnBandChange" onchange="clearRosterOnBandChangeValueChanged(this);" />
|
|
</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>
|
|
</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><div id="aboutVersionDiv">GridTracker</div></h2>
|
|
<p>
|
|
GridTracker is a warehouse of amateur radio information presented in an easy to use interface<br />
|
|
<br />
|
|
From Live Traffic Decodes<br />
|
|
Logbooks<br />
|
|
Real-time Spot Reports<br />
|
|
Weather<br />
|
|
Current Solar Conditions and More!<br />
|
|
Learn more at
|
|
<a
|
|
href="#"
|
|
style="cursor: pointer"
|
|
onclick="require('nw.gui').Shell.openExternal('https://gridtracker.org/grid-tracker/');"
|
|
>GridTracker.org!</a
|
|
>
|
|
</p>
|
|
<p>Copyright © 2022 GridTracker.org</p>
|
|
<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>
|
|
|
|
<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; user-select: text; display: block; z-index: -10000"></div>
|
|
</body>
|
|
</html>
|