<?php

function HumanDate($Time)
{
  return(date('j.n.Y', $Time));
}

function GetMicrotime()
{
  list($Usec, $Sec) = explode(" ", microtime());
  return ((float)$Usec + (float)$Sec);
}

function MakeLink($Target, $Title)
{
  return('<a href="'.$Target.'">'.$Title.'</a>');
}

function Table($Table)
{
  $Result = '<table cellspacing="0" class="BasicTable">';
  $Result .= '<tr>';
  foreach($Table['Header'] as $Item)
    $Result .= '<th>'.$Item.'</th>';
  $Result .= '</tr>';
  foreach($Table['Rows'] as $Row)
  {
    $Result .= '<tr>';
    foreach($Row as $Item)
      $Result .= '<td>'.$Item.'</td>';
    $Result .= '</tr>';
  }
  $Result .= '</table>';
  return($Result);
}

function ShowEditTable($ClassName, $Values)
{
  global $Classes, $Types;
  $Class = $Classes[$ClassName];
  $Table = array(
    'Header' => array('Položka', 'Hodnota'),
    'Rows' => array(),
  );

  foreach($Class as $Index => $Item)
  {
    if(!array_key_exists($Index, $Values)) $Values[$Index] = $Item['Default'];
    switch($Item['Type'])
    {
      case 'Boolean':
        if($Values[$Index] == 0) $Checked = ''; else $Checked = ' checked="yes"';
        $Edit = '<input type="checkbox" name="'.$Index.'"'.$Checked.'>';
        break;
      case 'String':
        $Edit = '<input type="text" name="'.$Index.'" value="'.$Values[$Index].'">';
        break;
      case 'Integer':
        $Edit = '<input type="text" name="'.$Index.'" value="'.$Values[$Index].'">';
        break;
      default:
        $Edit = 'Neznámý typ';
    }
    array_push($Table['Rows'], array($Item['Caption'], $Edit));
  }
  $Output = '<h3>Tabulka '.$ClassName.'</h3>'.Table($Table).MakeLink('?Operation=Add2', 'Přidat');
  return($Output);
}

function ProcessURL()
{
  if(array_key_exists('REDIRECT_QUERY_STRING', $_SERVER))
    $PathString = $_SERVER['REDIRECT_QUERY_STRING'];
    else $PathString = '';
  if(substr($PathString, -1, 1) == '/') $PathString = substr($PathString, 0, -1);
  $PathItems = explode('/', $PathString);
  if(array_key_exists('REQUEST_URI', $_SERVER) and (strpos($_SERVER['REQUEST_URI'], '?') !== false))
    $_SERVER['QUERY_STRING'] = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '?') + 1);
    else $_SERVER['QUERY_STRING'] = '';
  parse_str($_SERVER['QUERY_STRING'], $_GET);
  return($PathItems);
}

function GetQueryStringArray($QueryString)
{
  $Result = array();
  $Parts = explode('&', $QueryString);
  foreach($Parts as $Part)
  {
    if($Part != '')
    {
      if(!strpos($Part, '=')) $Part .= '=';
      $Item = explode('=', $Part);
      $Result[$Item[0]] = $Item[1];
    }
  }
  return($Result);
}

function SetQueryStringArray($QueryStringArray)
{
  $Parts = array();
  foreach($QueryStringArray as $Index => $Item)
  {
    $Parts[] = $Index.'='.$Item;
  }
  return(implode('&amp;', $Parts));
}

function GetRemoteAddress()
{
  if(array_key_exists('REMOTE_ADDR', $_SERVER)) $IP = $_SERVER['REMOTE_ADDR'];
  else $IP = '0.0.0.0';
  return($IP);
}
