отсчет времени до указаной даты с учетом морфологии

<?php
/*
*Отсчет времени с учетом морфологии
*автор: nc_soft
*15.12.07
*/

//расчетная дата (часы, минуты, секунды, день, месяц, год)
$dateTo=mktime(0,0,0,1,1,2008);

//смещение по часам у хостера (в примере смещение от московского равно нулю)
$timediff=$dateTo-time()-3600*0;

$oneMinute=60;
$oneHour=60*60;
$oneDay=60*60*24;
$dayfield=floor($timediff/$oneDay);
$hourfield=floor(($timediff-$dayfield*$oneDay)/$oneHour);
$minutefield=floor(($timediff-$dayfield*$oneDay-$hourfield*$oneHour)/$oneMinute);
$secondfield=floor(($timediff-$dayfield*$oneDay-$hourfield*$oneHour-$minutefield*$oneMinute));

$sDaysLeft=$dayfield;
$sDaysText = "дней";
$nDaysLeftLength =strlen($sDaysLeft);
$d_1=substr($sDaysLeft,-1,1);

if (substr($sDaysLeft,-2,1) != 1 && $nDaysLeftLength>1)
{
    if ($d_1 == 2 || $d_1== 3 || $d_1== 4)
    {
        $sDaysText = "дня";
    }
    elseif ($d_1== 1)
    {
        $sDaysText = "день";
    }
}
if ($nDaysLeftLength==1)
{
    if ($d_1==2 || $d_1== 3 || $d_1== 4)
    {
        $sDaysText = "дня";
    }
    elseif ($d_1== 1)
    {
        $sDaysText = "день";
    }
}

$sHoursLeft=$hourfield;
$sHoursText = "часов";
$nHoursLeftLength = strlen($sHoursLeft);
$h_1=substr($sHoursLeft,-1,1);
if (substr($sHoursLeft,-2,1) != 1 && $nHoursLeftLength>1)
{
    if ($h_1== 2 || $h_1== 3 || $h_1== 4)
    {
        $sHoursText = "часа";
    }
    elseif ($h_1== 1)
    {
        $sHoursText = "час";
    }
}

if ($nHoursLeftLength==1)
{
    if ($h_1== 2 || $h_1== 3 || $h_1== 4)
    {
        $sHoursText = "часа";
    }
    elseif ($h_1== 1)
    {
        $sHoursText = "час";
    }
}

$sMinsLeft =$minutefield;
$sMinsText = "минут";
$nMinsLeftLength = strlen($sMinsLeft);
$m_1=substr($sMinsLeft,-1,1);

if ($nMinsLeftLength>1 && substr($sMinsLeft,-2,1) != 1)
{
    if ($m_1== 2 || $m_1== 3 || $m_1== 4)
    {
        $sMinsText = "минуты";
    }
    else if ($m_1== 1)
    {
        $sMinsText = "минута";
    }
}

if ($nMinsLeftLength==1)
{
    if ($m_1== 2 || $m_1==3 || $m_1== 4)
    {
        $sMinsText = "минуты";
    }
    elseif ($m_1== "1")
    {
        $sMinsText = "минута";
    }
}

$sSecsLeft = $secondfield;
$sSecsText = "секунд";
$s_1=substr($sSecsLeft,-1,1);
$nSecsLeftLength = strlen($sSecsLeft);
if (substr($sSecsLeft,-2,1)!= 1 && $nSecsLeftLength>1)
{
    if ($s_1== 2 || $s_1== 3 || $s_1== 4)
    {
        $sSecsText = "секунды";
    }
    elseif ($s_1== 1)
    {
        $sSecsText = "секунда";
    }
}

if ($nSecsLeftLength==1)
{
    if ($s_1== 2 || $s_1== 3 || $s_1== 4)
    {
        $sSecsText = "секунды";
    }
    elseif ($sSecsLeft== "1")
    {
        $sSecsText = "секунда";
    }
}

$displaystring="До Нового Года осталось:\n".
$sDaysLeft." ".
$sDaysText." ".
$sHoursLeft." ".
$sHoursText." ".
$sMinsLeft." ".
$sMinsText." ".
$sSecsLeft." ".
$sSecsText;

if ($timediff<0) $displaystring='дата уже наступила';

echo $displaystring;

?>