
/**
 * Balicek funkci pro formatovani casoveho intervalu a casovych jednotek
 * @package FormatTimeInterval
 * @author VS <stv@seznam.cz>
 * @since 3.12.2004
 */
/**
 * Funkce vraci casovy interval zadany v sekundach
 * rozpocitany do poctu sekund, minut, hodin, dni, mesicu a let.
 * Zaroven vraci slovni vyjadreni vsech casovych jednotek ve vsech sedmi padech.
 *
 * @param int $secs    cas v sekundach
 * @param int $maxType prevest maximalne na tento typ jednotky
                       0 = sekundy, 1 = minuty, 2 = hodiny, 3 = dny, 4 = msce, 5 = roky
 * @return array       viz print_r()
 */
function formatTimeInterval($secs, $maxType = 5) {
    $date = array();
    $date['years']['value']   = 0;
    $date['months']['value']  = 0;
    $date['days']['value']    = 0;
    $date['hours']['value']   = 0;
    $date['minutes']['value'] = 0;
    $date['seconds']['value'] = floor($secs);

    if ($maxType >= 1) {
        $date['seconds']['value'] = $secs % 60;
        $date['minutes']['value'] = floor($secs / 60);
    }
    if ($maxType >= 2) {
        $date['minutes']['value'] = floor(($secs % 3600) / 60);
        $date['hours']['value']   = floor($secs / 3600);
    }
    if ($maxType >= 3) {
        $date['hours']['value']   = floor(($secs % 86400) / 3600);
        $date['days']['value']    = floor($secs / 86400);
    }
    if ($maxType >= 4) {
        $date['days']['value']    = floor(($secs % 2592000) / 86400);
        $date['months']['value']  = floor($secs / 2592000); // 30 days for month
    }
    if ($maxType === 5) {
        $date['months']['value']  = floor(($secs % 31104000) / 2592000); // 30 days for month
        $date['years']['value']   = floor($secs / 31104000);
    } 
    $date['years']['case']   = formatCase('years', $date['years']['value']);
    $date['months']['case']  = formatCase('months', $date['months']['value']);
    $date['days']['case']    = formatCase('days', $date['days']['value']);
    $date['hours']['case']   = formatCase('hours', $date['hours']['value']);
    $date['minutes']['case'] = formatCase('minutes', $date['minutes']['value']);
    $date['seconds']['case'] = formatCase('seconds', $date['seconds']['value']);
    return $date;
}


/**
 * Funkce vraci slovni vyjadreni casove jednotky zadaneho typu ve vsech sedmi padech.
 *
 * @param string $type casova jednotka anglicky (seconds, minutes, hours, days, months, years)
 * @param int $value   hodnota casu v zadane jednotce
 * @return array       viz print_r()
 */
function formatCase($type, $value) {
    // $case[string][case][1 or 2 or 5 type]
    $case['years'][1][1] = 'rok';
    $case['years'][1][2] = 'roky';
    $case['years'][1][5] = 'rok';
    $case['years'][2][1] = 'roku';
    $case['years'][2][2] = 'rok';
    $case['years'][2][5] = 'rok';
    $case['years'][3][1] = 'roku';
    $case['years'][3][2] = 'rokm';
    $case['years'][3][5] = 'rokm';
    $case['years'][4][1] = 'rok';
    $case['years'][4][2] = 'roky';
    $case['years'][4][5] = 'rok';
    $case['years'][5][1] = 'roku';
    $case['years'][5][2] = 'roky';
    $case['years'][5][5] = 'rok';
    $case['years'][6][1] = 'roku';
    $case['years'][6][2] = 'rocch';
    $case['years'][6][5] = 'rocch';
    $case['years'][7][1] = 'rokem';
    $case['years'][7][2] = 'roky';
    $case['years'][7][5] = 'roky';

    $case['months'][1][1] = 'msc';
    $case['months'][1][2] = 'msce';
    $case['months'][1][5] = 'msc';
    $case['months'][2][1] = 'msce';
    $case['months'][2][2] = 'msc';
    $case['months'][2][5] = 'msc';
    $case['months'][3][1] = 'msci';
    $case['months'][3][2] = 'mscm';
    $case['months'][3][5] = 'mscm';
    $case['months'][4][1] = 'msc';
    $case['months'][4][2] = 'msce';
    $case['months'][4][5] = 'msc';
    $case['months'][5][1] = 'msci';
    $case['months'][5][2] = 'msce';
    $case['months'][5][5] = 'msc';
    $case['months'][6][1] = 'msci';
    $case['months'][6][2] = 'mscch';
    $case['months'][6][5] = 'mscch';
    $case['months'][7][1] = 'mscem';
    $case['months'][7][2] = 'msci';
    $case['months'][7][5] = 'msci';

    $case['days'][1][1] = 'den';
    $case['days'][1][2] = 'dny';
    $case['days'][1][5] = 'dn';
    $case['days'][2][1] = 'dne';
    $case['days'][2][2] = 'dn';
    $case['days'][2][5] = 'dn';
    $case['days'][3][1] = 'dnu';
    $case['days'][3][2] = 'dnm';
    $case['days'][3][5] = 'dnm';
    $case['days'][4][1] = 'den';
    $case['days'][4][2] = 'dny';
    $case['days'][4][5] = 'dn';
    $case['days'][5][1] = 'dne';
    $case['days'][5][2] = 'dny';
    $case['days'][5][5] = 'dn';
    $case['days'][6][1] = 'dni';
    $case['days'][6][2] = 'dnech';
    $case['days'][6][5] = 'dnech';
    $case['days'][7][1] = 'dnem';
    $case['days'][7][2] = 'dny';
    $case['days'][7][5] = 'dny';

    $case['hours'][1][1] = 'hodina';
    $case['hours'][1][2] = 'hodiny';
    $case['hours'][1][5] = 'hodin';
    $case['hours'][2][1] = 'hodiny';
    $case['hours'][2][2] = 'hodin';
    $case['hours'][2][5] = 'hodin';
    $case['hours'][3][1] = 'hodin';
    $case['hours'][3][2] = 'hodinm';
    $case['hours'][3][5] = 'hodinm';
    $case['hours'][4][1] = 'hodinu';
    $case['hours'][4][2] = 'hodiny';
    $case['hours'][4][5] = 'hodin';
    $case['hours'][5][1] = 'hodino';
    $case['hours'][5][2] = 'hodiny';
    $case['hours'][5][5] = 'hodin';
    $case['hours'][6][1] = 'hodin';
    $case['hours'][6][2] = 'hodinch';
    $case['hours'][6][5] = 'hodinch';
    $case['hours'][7][1] = 'hodinou';
    $case['hours'][7][2] = 'hodinami';
    $case['hours'][7][5] = 'hodinami';

    $case['minutes'][1][1] = 'minuta';
    $case['minutes'][1][2] = 'minuty';
    $case['minutes'][1][5] = 'minut';
    $case['minutes'][2][1] = 'minuty';
    $case['minutes'][2][2] = 'minut';
    $case['minutes'][2][5] = 'minut';
    $case['minutes'][3][1] = 'minut';
    $case['minutes'][3][2] = 'minutm';
    $case['minutes'][3][5] = 'minutm';
    $case['minutes'][4][1] = 'minutu';
    $case['minutes'][4][2] = 'minuty';
    $case['minutes'][4][5] = 'minut';
    $case['minutes'][5][1] = 'minuto';
    $case['minutes'][5][2] = 'minuty';
    $case['minutes'][5][5] = 'minut';
    $case['minutes'][6][1] = 'minut';
    $case['minutes'][6][2] = 'minutch';
    $case['minutes'][6][5] = 'minutch';
    $case['minutes'][7][1] = 'minutou';
    $case['minutes'][7][2] = 'minutami';
    $case['minutes'][7][5] = 'minutami';

    $case['seconds'][1][1] = 'sekunda';
    $case['seconds'][1][2] = 'sekundy';
    $case['seconds'][1][5] = 'sekund';
    $case['seconds'][2][1] = 'sekundy';
    $case['seconds'][2][2] = 'sekund';
    $case['seconds'][2][5] = 'sekund';
    $case['seconds'][3][1] = 'sekund';
    $case['seconds'][3][2] = 'sekundm';
    $case['seconds'][3][5] = 'sekundm';
    $case['seconds'][4][1] = 'sekundu';
    $case['seconds'][4][2] = 'sekundy';
    $case['seconds'][4][5] = 'sekund';
    $case['seconds'][5][1] = 'sekundo';
    $case['seconds'][5][2] = 'sekundy';
    $case['seconds'][5][5] = 'sekund';
    $case['seconds'][6][1] = 'sekund';
    $case['seconds'][6][2] = 'sekundch';
    $case['seconds'][6][5] = 'sekundch';
    $case['seconds'][7][1] = 'sekundou';
    $case['seconds'][7][2] = 'sekundami';
    $case['seconds'][7][5] = 'sekundami';

    for ($caseNo = 1; $caseNo <= 7; $caseNo++) {
        if (substr($value, -1) === '1' and
            substr($value, -2) !== '11') {
            $formatCase[$caseNo] = $case[$type][$caseNo][1];
        }
        elseif ((substr($value, -1) === '2'  or
                 substr($value, -1) === '3'  or
                 substr($value, -1) === '4') and
                substr($value, -2) !== '12' and
                substr($value, -2) !== '13' and
                substr($value, -2) !== '14') {
            $formatCase[$caseNo] = $case[$type][$caseNo][2];
        }
        else {
            $formatCase[$caseNo] = $case[$type][$caseNo][5];
        }
    }
    return $formatCase;
} 
