<style>
 .node {
   background-color: yellow;
   border: 1px solid black;
   font-family: Arial;
   font-size: 11px;
   width: 91px;
   _width: 95px;
   padding-left: 3px;
   padding-bottom: 1px;
   margin-top: 5px;
 }
 .node_warn {
   background-color: #FF8811;
   border: 1px solid black;
   font-family: Arial;
   font-size: 11px;
   width: 91px;
   _width: 95px;
   padding-left: 3px;
   padding-bottom: 1px;
   margin-top: 5px;
 }
 .node_gray {
   background-color: #C0C0C0;
   border: 1px solid black;
   font-family: Arial;
   font-size: 11px;
   width: 90px;
   _width: 95px;
   padding-left: 3px;
   padding-bottom: 1px;
   margin-top: 5px;
 }
 .text_login {
   font-size: 10px;
 }
 .sloupce {
   background-image: url("pozadi.png");
   background-repeat: repeat;
  }
  .nadpis {
    margin-top: -9px; 
    margin-left: 0px;
    border-left: 1px solid black; 
    border-right: 1px solid black; 
    background-color: #C1C1C1;
    float: left;
    font-family: Arial;
    font-size: 10px;
    padding: 0px 4px 0px 4px;
  }
  .skupina {
   padding-left: 5px;
   border: 1px solid black; 
   margin-bottom: 19px;
 }

 .lines {
  width: 91px;
 }

 .line_null {
   width: 5px;
   text-align: center;
  }
  
 .line_left {
   width: 5px;
   xtext-align: center;
   border-left: 2px solid black;
  }
 .line_left_top {
   width: 5px;
   text-align: center;
   border-left: 2px solid black;
   border-top: 2px solid black;
  }
 .line_top {
   width: 5px;
   text-align: center;
   border-top: 2px solid black;
  }
 
</style>

<h2>Stromová struktura prvků sítě a jejich dostupnost</h2>

<?





// funkce pro vykresleni uzlu site. 
// $id - uzel
// $depth - hloubka vnoreni pro urceni odskoku zleva
// $color - 0=barvicky, 1=sedy prvek
// $pocet_nodes - pole poctu vetvi ke zpracovani v jednotlivych hloubkach

function shownode($id,$depth,$color,$pocet_nodes) {
  $vysledek=pg_Query("SELECT name,node.erc,status,node.id,node.p_login,node.p_pass,node.p_kanal 
                      FROM node, node_erc WHERE node.erc=node_erc.erc AND id=$id");
  $data=pg_Fetch_Array($vysledek);
  if ($color==0) {
    if($data[erc]>2) $styl='node_warn'; else {$styl='node';}
    $bar='<br><img src="./bar.php?stav='.$data[erc].'" title="'.$data[status].'">';
  } else {
    $styl='node_gray';
    $bar='';
  }
  $vysledek2= pg_query("SELECT ip FROM node_ip WHERE id=$id ORDER BY ip");
  $infobox='';
  while ($zaznam=Pg_Fetch_Array($vysledek2)) $infobox.='<b><a href=http://'.$zaznam[ip].'/>'.$zaznam[ip].'</a></b><br>'; 
  $infobox.='<b>'.$data[p_login].'</b> | <b>'.$data[p_pass].'</b><br>kanal <b>'.$data[p_kanal].'</b><br>';
  echo '
    <table cellspacing="0" cellpadding="0">
      <tr style="font-size: 5px;">';
  for($sloupec=1;$sloupec<=$depth;$sloupec++) {
     echo '<td class="lines">&nbsp</td>';
     $class='line_left';
     if($pocet_nodes[$sloupec]<0) $class='line_null'; 
     echo '<td class="'.$class.'">&nbsp</td>';
  }
  echo '
    <td rowspan="2">
      <div style="xmargin-left: '.$posuv.';" class="'.$styl.'" id="'.$data[id].'">
      <a href="./index.php?pg=nodes.inc&id='.$id.'" 
        onmouseover="Tip(\''.trim($infobox).'\',STICKY,1,CLOSEBTN,true,CLICKCLOSE,true,TITLE,\'<b>'.$data[name].'</b>\' )">'.$data[name].'</a>
      <!--<br><span class="text_login">'.$data[p_login].' / '.$data[p_pass].'</span>-->
      '.$bar.'<br>
      </div>
    </td>
    </tr>
    <tr style="font-size: 5px;">';
  for($sloupec=1;$sloupec<=$depth;$sloupec++) {
    echo '<td class="lines"></td>';
    if($sloupec==$depth) {
      if($pocet_nodes[$depth]>0) $class='line_left_top'; else $class='line_top';
    } else {
      if($pocet_nodes[$sloupec]<=0) $class='line_null'; else $class='line_left';
    }
   echo '<td class="'.$class.'">&nbsp</td>';       
  }
  echo '
    </tr>  
    </table>';
}




// rekruzivni funkce na vypis stromoveho grafu
// $rodic - vypise prvky, ktere maji tohoto predka, default=0
// $depth - aktualni hloubka vnoreni, default=-1
// $errnode - pomocna promenna pro sireni chyby po cele vetvi, default=-1
// $pocet_nodes - pole poctu vetvi ke zpracovani v jednotlivych hloubkach

function vypis($rodic,$depth,$errnode,$pocet_nodes) {
  $depth++;
  $vysledek=pg_Query("SELECT id, erc, idp FROM node WHERE idp=$rodic AND enable=true ORDER BY name");
  $pocet_nodes[$depth]=pg_num_rows($vysledek);
  while ($data=pg_Fetch_Array($vysledek)) {
    if (($data[erc]>3) && ($errnode==-1)) $nerrnode=$data[id]; else $nerrnode=-1;
    if ($data[idp]==$errnode) { $color=1 ; $nerrnode=$data[id]; } else {$color=0;}
    $pocet_nodes[$depth]--;
    shownode($data[id],$depth,$color,$pocet_nodes);
    if($pocet_nodes[$depth]==0) $pocet_nodes[$depth]--;
    vypis($data[id],$depth,$nerrnode,$pocet_nodes);
  }
}







if(!is_numeric($id)) {
  echo '<div class="xsloupce">';
  vypis(0,-1,-1,null); // namaluje grafik
  echo '</div>';
} else {
 // vypis zakladnich udaju
  $vysledek=pg_Query("SELECT name, node.id, node.erc, status, idp, \"desc\", p_login, p_pass, p_kanal,
                      CASE WHEN enable=true THEN 'ano' ELSE 'ne, vyřazen' END AS enstav 
                      FROM node, node_erc
                      WHERE node.erc=node_erc.erc AND node.id=$id");
  $data=pg_Fetch_Array($vysledek);
  $popis=$data[desc];
  echo '
  
   <div class="skupina">
   <div class="nadpis">Parametry prvku</div>
  <p>
   <table style="font-size: 13px;">
   <tr><td nowrap>Název prvku:</td><td><b><a href="./index.php?pg=nodes.inc#'.$data[id].'">'.$data[name].'</a></b></td></tr>
   <tr><td nowrap>Aktivní:</td><td><b>'.$data[enstav].'</b></td></tr>';
  if($stav==0) { 
   echo '
    <tr><td nowrap>Chybový kód:</td><td><b>'.$data[erc].'</b></td></tr>
    <tr><td nowrap>Slovní stav:</td><td><b>'.$data[status].'</b></td></tr>';
  } else {
   echo '
    <tr><td nowrap>Chybový kód:</td><td><b>neznámý</b> (prvek je v neaktivní větvi)</td></tr>';
  }

 // jmeno predka
  $vysledek=pg_Query("SELECT name FROM node WHERE id=$data[idp]");
  $data2=pg_Fetch_Array($vysledek);
  echo '
   <tr><td nowrap>Jméno předka:</td><td> <b>'.$data2[name].'</b></td></tr>
   <tr><td valign="top" nowrap>Popis:</td><td>'.str_replace(chr(13).chr(10),'<br>',$popis).'</td></tr>
   <tr><td valign="top" nowrap>Login:</td><td><b>'.$data[p_login].' / '.$data[p_pass].'</b></td></tr>
   <tr><td valign="top" nowrap>Kanál:</td><td><b>'.$data[p_kanal].'</b></td></tr>

   </table>
   </p>
   
   <p>
     <a href="./index.php?pg=nodes_admin.inc&akce=edit&id='.$id.'"><img src="./pics/sipkaedit.gif" border="0"></a></p>
   </p>
   </div>
   
   <div class="skupina">
   <div class="nadpis">IP test</div>
   <p>
  ';
   

 // test ip
  $vysledek=pg_Query("SELECT count(*) AS pocet FROM node_ip WHERE id=$id");
  $data=pg_Fetch_Array($vysledek);
  if($data[pocet]==0) {
   echo '
    <b>Netestovatelný</b> (není zadána žádná IP adresa na kterou by se měla testovat dostupnost, kód je stále 1)';
  } else {
   echo '
    <b>Testovatelný na tyto IP adresy:</b><br><br>
    <table border="0" cellspacing="1" bgcolor="#000000" class="tabulka">
      <tr bgcolor="#FFFFAA">
        <strong>
          <td><strong>#</strong></td>
          <td><strong>IP adresa</strong></td>
      </tr>';
   $radek=1;
   $vysledek= pg_query("SELECT ip FROM node_ip WHERE id=$id ORDER BY ip");
   while ($zaznam=Pg_Fetch_Array($vysledek)) {
    echo '
     <tr bgcolor="'.MakeBgcolor($radek).'" valign="top">
         <td>'.$radek++.'</td>
         <td><a href="http://'.$zaznam[ip].'">'.$zaznam[ip].'</a></td>
     </tr>';
   }
   echo ' 
   </table>
   ';
  }
 echo '
   <p><a href="./index.php?pg=nodes_test.inc&id='.$id.'"><img src="./pics/sipkaedit.gif" border="0"></a></p>
   </p></div>
   <div class="skupina">
   <div class="nadpis">Reset</div>
   <p>
';
 // reset
  $vysledek=pg_Query("SELECT count(*) AS pocet FROM node_reset WHERE id=$id");
  $data=pg_Fetch_Array($vysledek);
  if($data[pocet]==0) {
   echo '
   <b>Neresetovatelný</b> (není zadán žádný parameter jednotky RadioReset)';
  } else {
   echo '
    <b>Resetovatelný s těmito parametry:</b><br>
    <table border="0" cellspacing="1" bgcolor="#000000" class="tabulka">
      <tr bgcolor="#FFFFAA">
       <strong>
         <td><strong>#</strong></td>
         <td><strong>Typ resetu</strong></td> 
         <td><strong>Adresa</strong></td>
         <td><strong>Repeater</strong></td>
         <td><strong>Výstup</strong></td>
         <td><strong>Čas [s]</strong></td>
      </tr>';
    $radek=1;
    $vysledek= pg_query("SELECT * FROM node_reset WHERE id=$id ORDER BY type");
    while ($zaznam=Pg_Fetch_Array($vysledek)) {
     echo '
      <tr bgcolor="'.MakeBgcolor($radek).'" valign="top">
         <td>'.$radek++.'</td>
        <td>'.$zaznam[type].'</td>
        <td>'.$zaznam[address].'</td>
        <td>'.$zaznam[repeater].'</td>
        <td>'.$zaznam[out].'</td>
        <td>'.($zaznam[time]*10).' sec</td>
      </tr>';
   }
   echo '</table>';
  }
 echo '
   <p><a href="./index.php?pg=nodes_reset.inc&id='.$id.'"><img src="./pics/sipkaedit.gif" border="0"></a></p>
   </p></div>';
   
   
 // stavove emaily
 echo '
    <div class="skupina">
   <div class="nadpis">Stavové emaily</div>
   <p>
';
  $vysledek=pg_Query("SELECT count(*) AS pocet FROM node_email WHERE id=$id");
  $data=pg_Fetch_Array($vysledek);
  if($data[pocet]==0) {
   echo '
    <b>Neinformovatelný</b> (není zadán žádný email, na kterou by se měla zasílat změna stavu prvku)';
  } else {
   echo '
    <b>Informovatelný na tyto emaily:</b><br><br>
    <table border="0" cellspacing="1" bgcolor="#000000" class="tabulka">
      <tr bgcolor="#FFFFAA">
        <strong>
          <td><strong>#</strong></td>
          <td><strong>Email</strong></td>
      </tr>';
   $radek=1;
   $vysledek= pg_query("SELECT email FROM node_email WHERE id=$id ORDER BY email");
   while ($zaznam=Pg_Fetch_Array($vysledek)) {
    echo '
     <tr bgcolor="'.MakeBgcolor($radek).'" valign="top">
         <td>'.$radek++.'</td>
         <td>'.$zaznam[email].'</td>
     </tr>';
   }
   echo ' 
   </table>
   ';
  }
 echo '
   <p><a href="./index.php?pg=nodes_email.inc&id='.$id.'"><img src="./pics/sipkaedit.gif" border="0"></a></p>
   </p></div>
   </div>
 ';
   
   
}
?>

