<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!--  Add included scripts here -->
<script type="text/javascript" src="/systeminfo.lua"></script>
<script type="text/javascript">Octoserve = false;</script>
<script type="text/javascript" src="/octoserve/serverinfo.js"></script>

<!-- Add page scripts here -->
<script type="text/javascript">
var hasCable = false;
var hasSat = false;
var hasTer = false;

var StartTime = null;

var xmlhttp = new XMLHttpRequest();
var url = "/channelscan.lua?select=keys";

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState == 4 )
    {
      if( xmlhttp.status == 200 )
         myFunction(xmlhttp.responseText);
    }
}

function myFunction(response)
{
   var kl = JSON.parse(response);

   document.Cable.Select.length = 0;
   document.Satellite1.Select.length = 0;
   document.Satellite2.Select.length = 0;
   document.Satellite3.Select.length = 0;
   document.Satellite4.Select.length = 0;

   document.Cable.Select.options[0] = (new Option("-", null, false, true) );
   document.Satellite1.Select.options[0] = (new Option("-", null, false, true) );
   document.Satellite2.Select.options[0] = (new Option("-", null, false, true) );
   document.Satellite3.Select.options[0] = (new Option("-", null, false, true) );
   document.Satellite4.Select.options[0] = (new Option("-", null, false, true) );

   var iCable = 1;
   var iSat = 1;

   for(var i = 0; i < kl.KeyList.length; i++)
   {
      if( (hasCable && kl.KeyList[i].DVBType.indexOf("C") >= 0) ||
          (hasTer   && kl.KeyList[i].DVBType.indexOf("T") >= 0) )
      {
         var Select = (kl.KeyList[i].Key == "UM");
         document.Cable.Select.options[iCable] = (new Option(kl.KeyList[i].Title, kl.KeyList[i].Key, false, Select) );
         iCable += 1;
      }
      if( (hasSat && kl.KeyList[i].DVBType.indexOf("S") >= 0) )
      {
         var Select = (kl.KeyList[i].Key == "0192");
         document.Satellite1.Select.options[iSat] = (new Option(kl.KeyList[i].Title, kl.KeyList[i].Key, false, Select) );
         document.Satellite2.Select.options[iSat] = (new Option(kl.KeyList[i].Title, kl.KeyList[i].Key, false, false) );
         document.Satellite3.Select.options[iSat] = (new Option(kl.KeyList[i].Title, kl.KeyList[i].Key, false, false) );
         document.Satellite4.Select.options[iSat] = (new Option(kl.KeyList[i].Title, kl.KeyList[i].Key, false, false) );
         iSat += 1;
      }
   }

   if( iCable > 1 )
      document.getElementById("trCable").style.display = "table-row";
   if( iSat > 1 )
   {
      document.getElementById("trSat1").style.display = "table-row";
      document.getElementById("trSat2").style.display = "table-row";
      document.getElementById("trSat3").style.display = "table-row";
      document.getElementById("trSat4").style.display = "table-row";
   }

}

function SetSource(Src,SourceIndex)
{
}

function OnLoad()
{
   for(var i = 0; i < Octoserve.TunerList.length; i++ )
   {
      if( Octoserve.TunerList[i] )
      {
         if( Octoserve.TunerList[i].Desc.indexOf("C/T") >= 0 ) hasCable = true;
         if( Octoserve.TunerList[i].Desc.indexOf("C/C2") >= 0 ) hasCable = true;
         if( Octoserve.TunerList[i].Desc.indexOf("S/S2") >= 0 ) hasSat = true;
      }
   }
   // TODO: differentiate between dvbc and dvbt
   hasTer = hasCable;

   xmlhttp.open("GET", url, true);
   xmlhttp.send();

}

function DisableButtons(disabled)
{
   document.getElementById("EpgButton").disabled = disabled;
   document.getElementById("ScanButton").disabled = disabled;
   document.getElementById("StatusButton").disabled = disabled;
   document.getElementById("DeleteButton").disabled = disabled;
   document.getElementById("DeleteAllButton").disabled = disabled;
   document.getElementById("RestoreButton").disabled = disabled;
   document.getElementById("UploadButton").disabled = disabled;
}


var ScanReq = new XMLHttpRequest();

ScanReq.onreadystatechange=function()
{
    if (ScanReq.readyState == 4 )
    {
      if( ScanReq.status == 200 )
         ScanStatus(ScanReq.responseText);
      else
      {
         document.getElementById("scancount").firstChild.nodeValue = "\u00A0";
         document.getElementById("scantext").firstChild.nodeValue = "Error " + ScanReq.status;
         DisableButtons(false);
      }
    }
}

function GetStatus()
{
   ScanReq.open("GET", "/channelscan.lua?select=status&t=" + Math.random(), true);
   ScanReq.send();
}

function ScanStatus(response)
{
   var s = JSON.parse(response);
   var done = true;
   if( s.status )
   {
      if( s.status == "active" )
      {
         document.getElementById("scancount").firstChild.nodeValue = s.count;
         document.getElementById("scantext").firstChild.nodeValue = s.msg;
         done = false;
      }
      else if( s.status == "busy" )
      {
         document.getElementById("scancount").firstChild.nodeValue = "\u00A0";
         document.getElementById("scantext").firstChild.nodeValue = "BUSY";
      }
      else if( s.status == "done" )
      {
         var sec = "";
         if( StartTime )
         {
            var t = new Date() - StartTime;
            sec = ", time: " + Math.floor(t/1000) + " seconds";
            StartTime = null;
         }

         document.getElementById("scancount").firstChild.nodeValue = s.count;
         document.getElementById("scantext").firstChild.nodeValue = s.msg + sec;
      }
      else if( s.status == "deleted" )
      {
         document.getElementById("scancount").firstChild.nodeValue = "\u00A0";
         document.getElementById("scantext").firstChild.nodeValue = "Channel list deleted";
      }
      else if( s.status == "restored" )
      {
         document.getElementById("scancount").firstChild.nodeValue = "\u00A0";
         if( s.count == 0 )
            document.getElementById("scantext").firstChild.nodeValue = "Nothing restored";
         else
            document.getElementById("scantext").firstChild.nodeValue = "Previous channel list restored";
      }
      else if( s.status == "error" )
      {
         document.getElementById("scancount").firstChild.nodeValue = "Error";
         document.getElementById("scantext").firstChild.nodeValue = s.msg;
      }
      else if( s.status == "updated" )
      {
         document.getElementById("scancount").firstChild.nodeValue = "\u00A0";
         document.getElementById("scantext").firstChild.nodeValue = s.msg + " updated";
      }
      else if( s.status == "retry" )
      {
         done = false;
      }
   }

   if( done )
   {
      DisableButtons(false);
   }
   else
      window.setTimeout(GetStatus,500);
}


function InitiateScan()
{
   DisableButtons(true);

   var param = "";
   for(var i = 1; i < document.Cable.Select.options.length; i += 1)
   {
      if( document.Cable.Select.options[i].selected )
         param = param + "&key=" + document.Cable.Select.options[i].value;
   }
   for(var i = 1; i < document.Satellite1.Select.options.length; i += 1)
   {
      if( document.Satellite1.Select.options[i].selected )
         param = param + "&key=" + document.Satellite1.Select.options[i].value + ".1";
   }
   for(var i = 1; i < document.Satellite2.Select.options.length; i += 1)
   {
      if( document.Satellite2.Select.options[i].selected )
         param = param + "&key=" + document.Satellite2.Select.options[i].value + ".2";
   }
   for(var i = 1; i < document.Satellite3.Select.options.length; i += 1)
   {
      if( document.Satellite3.Select.options[i].selected )
         param = param + "&key=" + document.Satellite3.Select.options[i].value + ".3";
   }
   for(var i = 1; i < document.Satellite4.Select.options.length; i += 1)
   {
      if( document.Satellite4.Select.options[i].selected )
         param = param + "&key=" + document.Satellite4.Select.options[i].value + ".4";
   }

   if( param != "" )
   {
      ScanReq.open("POST", "/channelscan.lua", true);
      ScanReq.setRequestHeader("Content-type","application/x-www-form-urlencoded");
      ScanReq.send("select=scan" + param + "&sitables=1&sort=1&restartdms=1");
      document.getElementById("scancount").firstChild.nodeValue = "\u00A0";
      document.getElementById("scantext").firstChild.nodeValue = "Scanning...";
      StartTime = new Date();
   }
   else
   {
      document.getElementById("scancount").firstChild.nodeValue = "\u00A0";
      document.getElementById("scantext").firstChild.nodeValue = "\u00A0";
   }
}

function InitiateEPGScan()
{
   DisableButtons(true);
   ScanReq.open("POST", "/channelscan.lua", true);
   ScanReq.setRequestHeader("Content-type","application/x-www-form-urlencoded");
   ScanReq.send("select=epg");
   document.getElementById("scancount").firstChild.nodeValue = "\u00A0";
   document.getElementById("scantext").firstChild.nodeValue = "Scanning...";
   StartTime = new Date();
}

function PollStatus()
{
   DisableButtons(true);
   GetStatus();
}

function DeleteScan(all)
{
   DisableButtons(true);
   ScanReq.open("POST", "/channelscan.lua", true);
   ScanReq.setRequestHeader("Content-type","application/x-www-form-urlencoded");
   ScanReq.send("select=delete" + (all ? "&all=true" : ""));
}

function RestoreScan()
{
   DisableButtons(true);
   ScanReq.open("POST", "/channelscan.lua", true);
   ScanReq.setRequestHeader("Content-type","application/x-www-form-urlencoded");
   ScanReq.send("select=restore");
}


function Uploader(event)
{
   event.preventDefault();
   document.getElementById("scancount").firstChild.nodeValue = "\u00A0";
   document.getElementById("scantext").firstChild.nodeValue = "\u00A0";
   var fileSelect = document.getElementById("UploadList");
   if( fileSelect.files.length > 0 )
   {
      var formData = new FormData();
      formData.append('filename', fileSelect.files[0], fileSelect.files[0].name)
      DisableButtons(true);
      ScanReq.open("POST", "/channelscan.lua", true);
      ScanReq.send(formData);
   }
}

</script>

</head>
<body onload="OnLoad()">

<table class="maintable">
  <colgroup>
    <col style="width: 182px"/>
    <col style="width: 728px"/>
  </colgroup>
  <tr><td class="maintd" colspan="2">
    <a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
  </td></tr>
  <tr><td class="maintd" colspan="2">&nbsp;</td></tr>
  <tr>
    <td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
    <td class="content">
      <div>
        <!-- Begin Content -->
        <table cellpadding="2px" class="center-div">
          <tr id="trCable" style="display:none">
            <td>Cable</td>
            <td style="text-align:right">
              <form name="Cable" action="">
                <select name="Select" size="1" style="width: 300px" onchange="SetSource(0,document.Cable.Select.selectedIndex)" >
                </select>
              </form>
            </td>
          </tr>
          <tr id="trSat1" style="display:none">
            <td>Satellite 1</td>
            <td style="text-align:right">
              <form name="Satellite1" action="">
                <select name="Select" size="1" style="width: 300px" onchange="SetSource(1,document.Satellite1.Select.selectedIndex)" >
                </select>
              </form>
            </td>
          </tr>
          <tr id="trSat2" style="display:none">
            <td>Satellite 2</td>
            <td style="text-align:right">
              <form name="Satellite2" action="">
                <select name="Select" size="1" style="width: 300px" onchange="SetSource(2,document.Satellite2.Select.selectedIndex)" >
                </select>
              </form>
            </td>
          </tr>
          <tr id="trSat3" style="display:none">
            <td>Satellite 3</td>
            <td style="text-align:right">
              <form name="Satellite3" action="">
                <select name="Select" size="1" style="width: 300px" onchange="SetSource(3,document.Satellite3.Select.selectedIndex)" >
                </select>
              </form>
            </td>
          </tr>
          <tr id="trSat4" style="display:none">
            <td>Satellite 4</td>
            <td style="text-align:right">
              <form name="Satellite4" action="">
                <select name="Select" size="1" style="width: 300px" onchange="SetSource(4,document.Satellite4.Select.selectedIndex)" >
                </select>
              </form>
            </td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td style="text-align:right">
               <form action="">
                 <input id="StatusButton" type="Button" value="Get Status" onclick="PollStatus()" >
                 <input id="ScanButton" type="Button" value="Start Channel Scan" onclick="InitiateScan()" >
                 <input id="EpgButton" type="Button" value="Start EPG Scan" onclick="InitiateEPGScan()" >
               </form>
            </td>
          </tr>
          <tr>
            <td>
               <div id="scancount" style="text-align:right">&nbsp;</div>
            </td>
            <td>
               <div id="scantext" style="text-align:left">&nbsp;</div>
            </td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td style="text-align:right">
               <form action="">
                 <input id="DeleteButton" type="Button" value="Delete Channel List" onclick="DeleteScan()" >
                 <input id="RestoreButton" type="Button" value="Restore Previous Channel List" onclick="RestoreScan()" >
               </form>
            </td>
          </tr>
          <tr>
            <td colspan="2" style="text-align:right">
              <form action="" method="post" enctype="multipart/form-data" onsubmit="Uploader(event)">
                <input id="UploadList" type="file" name="filename" value="*.json" size="30" accept=".json">
                <input id="UploadButton" type="submit" value="Upload">
              </form>
            </td>
          </tr>
        </table>
        <hr/>
        <div style="text-align: center">
            <h4>Downloads</h4>
            Channel List:
               &nbsp;<a href="/channellist.lua?select=json">JSON</a>
               &nbsp;<a href="/channellist.lua?select=m3u">M3U</a>
            <br/>
            Transponder List:
               &nbsp;<a href="/channellist.lua?select=tl">Current</a>
               &nbsp;<a href="/channellist.lua?select=stl">Default</a>
               <br/>
               <form action="">
                 <input id="DeleteAllButton" type="Button" value="Delete All" onclick="DeleteScan(true)" >
               </form>
        </div>

        <hr/>
        <h4 style="text-align: center">Old Format Lists</h4>
        <table cellpadding="2px" class="center-div">
          <tr>
            <td>System Channel Database</td>
            <td>
              <table>
                <tr>
                  <td>
                    <form action="dlchannels.lua" method="get">
                      <input type="submit" value="Download tar.gz" >
                      <input type="hidden" name="select" value="system" >
                    </form>
                  </td>
                  <td>
                    <form action="dlchannels.lua" method="get">
                      <input type="submit" value="Download zip"  disabled >
                      <input type="hidden" name="select" value="system" >
                    </form>
                  </td>
                </tr>
              </table>
            </td>
          </tr>
          <tr>
            <td>User Channel Database</td>
            <td>
              <table>
                <tr>
                  <td>
                    <form action="dlchannels.lua" method="get">
                      <input type="submit" value="Download tar.gz">
                      <input type="hidden" name="select" value="user" >
                    </form>
                  </td>
                  <td>
                    <form action="dlchannels.lua" method="get">
                      <input type="submit" value="Download zip"  disabled >
                      <input type="hidden" name="select" value="user" >
                    </form>
                  </td>
                  <td>
                    <form action="delchannels.lua" method="get">
                      <input type="submit" value="Delete">
                    </form>
                  </td>
                </tr>
              </table>
            </td>
          </tr>
          <tr>
            <td colspan="2">
              <form action="uplchannels.lua" method="post" enctype="multipart/form-data">
                <input type="file" name="filename" value="*.gz" size="30" accept="application/zip,application/gzip">
                <input type="submit" value="Upload">
              </form>
            </td>
          </tr>
        </table>
        <!-- End Content -->
      </div>
    </td>
  </tr>
  <tr><td colspan="2">&nbsp;</td></tr>
</table>

</body>
</html>