/**
  * recursively search whole array and create array from each quads
  *
  * @param array $nestedCoords nested array -> nesting = quad segmentation
  */
 private function iterateArray($nestedCoords)
 {
     foreach ($nestedCoords as $c) {
         if (is_array($c) && !ArrayUtil::isAssoc($c)) {
             $this->iterateArray($c);
         } else {
             $this->generatedCoords[] = $c;
         }
     }
 }
 /**
  * @param float $lat1
  * @param float $lat2
  * @param float $lon1
  * @param float $lon2
  * @param int $sourceDownloadFrom
  * @throws \Nette\Application\AbortException
  */
 public function renderTime2down($lat1, $lat2, $lon1, $lon2, $sourceDownloadFrom)
 {
     $coords = new Coords($lat1, $lat2, $lon1, $lon2);
     $sourceDownloadFrom = (int) $sourceDownloadFrom;
     $request = $this->getHttpRequest();
     $filter = $request->getQuery("filter");
     $filterSet = ArrayUtil::arrayHasSomeKey($filter, array("ssidmac", "channel", "source", "security", "ssid"));
     if ($filterSet) {
         $text = "<strong>Máte nastavený filtr, vytvoří se požadavek přímo na vyfiltrované body</strong><br />";
         $mode = isset($filter["mode"]) ? $filter["mode"] : WifiPresenter::MODE_ALL;
         $params = $this->getParamsArray($coords, $mode, $filter);
         $nets = $this->oWifiManager->getNetsByParams($params, array('id,mac'));
         $netsCount = count($nets);
         $macAddresses = array();
         foreach ($nets as $net) {
             $macAddresses[$net['mac']] = $net;
         }
         $beforeMinutes = 0;
         $afterMinutes = 0;
         switch ($sourceDownloadFrom) {
             case Service\WigleDownload::ID_SOURCE:
                 $beforeMinutes = $this->wigleDownload->getWigleApsCount(2) * Service\BaseService::CRON_TIME_DOWNLOAD_WIGLE_OBSERVATIONS;
                 $afterMinutes = count($macAddresses) * Service\BaseService::CRON_TIME_DOWNLOAD_WIGLE_OBSERVATIONS;
                 break;
             case Service\GoogleDownload::ID_SOURCE:
                 $beforeMinutes = $this->wigleDownload->getWigleApsCount(2) * Service\BaseService::CRON_TIME_DOWNLOAD_WIGLE_OBSERVATIONS + $this->googleDownload->getGoogleRequestsCount(2) * Service\BaseService::CRON_TIME_DOWNLOAD_GOOGLE;
                 $afterMinutes = count($macAddresses) * Service\BaseService::CRON_TIME_DOWNLOAD_WIGLE_OBSERVATIONS + count($macAddresses) * Service\BaseService::CRON_TIME_DOWNLOAD_GOOGLE;
                 break;
         }
         $hodin1 = floor($beforeMinutes / 60);
         $minut1 = $beforeMinutes - $hodin1 * 60;
         $hodin2 = floor($afterMinutes / 60);
         $minut2 = $afterMinutes - $hodin2 * 60;
         $celkemHodin = $hodin1 + $hodin2;
         $celkemMinut = $minut1 + $minut2;
         $celkemHodin += floor($celkemMinut / 60);
         $celkemMinut = $celkemMinut - floor($celkemMinut / 60) * 60;
         $text .= "Vyfiltrovaných sítí je " . $netsCount . ".<br />";
         if ($netsCount > 0) {
             $text .= "Získání dat bude trvat<br /><strong>";
             if ($hodin2 > 0) {
                 $text .= $hodin2 . "hodin";
             }
             if ($hodin2 > 0 && $minut2 > 0) {
                 $text .= " a ";
             }
             if ($minut2 > 0) {
                 $text .= $minut2 . "minut";
             }
             if ($hodin1 > 0 || $minut1 > 0) {
                 $text .= "<br /> + ";
             }
             if ($hodin1 > 0) {
                 $text .= $hodin1 . "hodin";
             }
             if ($hodin1 > 0 && $minut1 > 0) {
                 $text .= " a ";
             }
             if ($minut1 > 0) {
                 $text .= $minut1 . "minut";
             }
             $text .= "</strong><br />celkem: <strong>";
             if ($celkemHodin > 0) {
                 $text .= $celkemHodin . " hodin";
             }
             if ($celkemHodin > 0 && $celkemMinut > 0) {
                 $text .= " a ";
             }
             if ($celkemMinut > 0) {
                 $text .= $celkemMinut . " minut";
             }
             $text .= "</strong>";
         }
         if ($netsCount == 0) {
             echo "\$('#createDownloadRequest').hide();";
         } else {
             echo "\$('#createDownloadRequest').show();";
         }
         if ($celkemHodin > self::MAX_HOURS_FILTERED_REQUEST) {
             echo "\$('#createDownloadRequest').hide();";
         } else {
             echo "\$('#createDownloadRequest').show();";
         }
         $text .= '<br /><label for="notify_email">Až budou data získana informujte mě na email:</label><input type="email" name="notify_email" id="notify_email" ' . (isset($_COOKIE['notify_email']) ? 'value="' . $_COOKIE['notify_email'] . '"' : '') . ' />';
         echo "\$('#time2down').html('" . $text . "');";
     }
     $this->terminate();
 }