<?php

define
('POLYPHASIC_OPTIONS''polyphasic_sleep_options');
$UnixTimeToday mktime(000date('m'), date('d'), date('Y'));

class 
PolyphasicUtils
{
    var 
$OversleepHours = array(
        
'0' => '0 ',
        
'1' => '1 ',
        
'2' => '2 ',
        
'3' => '3 ',
        
'4' => '4 ',
        
'5' => '5 ',
        
'6' => '6 ',
        
'7' => '7 ',
        
'8' => '8 ',
        
'9' => '9 ',
        
'10' => '10 ',
        
'11' => '11 ',
        
'12' => '12 '
    
);

    var 
$Hours = array(
        
'1' => '1 ',
        
'2' => '2 ',
        
'3' => '3 ',
        
'4' => '4 ',
        
'5' => '5 ',
        
'6' => '6 ',
        
'7' => '7 ',
        
'8' => '8 ',
        
'9' => '9 ',
        
'10' => '10 ',
        
'11' => '11 ',
        
'12' => '12 '
    
);

    var 
$Minutes = array(
        
'00' => '00',
        
'01' => '01',
        
'02' => '02',
        
'03' => '03',
        
'04' => '04',
        
'05' => '05',
        
'06' => '06',
        
'07' => '07',
        
'08' => '08',
        
'09' => '09',
        
'10' => '10',
        
'11' => '11',
        
'12' => '12',
        
'13' => '13',
        
'14' => '14',
        
'15' => '15',
        
'16' => '16',
        
'17' => '17',
        
'18' => '18',
        
'19' => '19',
        
'20' => '20',
        
'21' => '21',
        
'22' => '22',
        
'23' => '23',
        
'24' => '24',
        
'25' => '25',
        
'26' => '26',
        
'27' => '27',
        
'28' => '28',
        
'29' => '29',
        
'30' => '30',
        
'31' => '31',
        
'32' => '32',
        
'33' => '33',
        
'34' => '34',
        
'35' => '35',
        
'36' => '36',
        
'37' => '37',
        
'38' => '38',
        
'39' => '39',
        
'40' => '40',
        
'41' => '41',
        
'42' => '42',
        
'43' => '43',
        
'44' => '44',
        
'45' => '45',
        
'46' => '46',
        
'47' => '47',
        
'48' => '48',
        
'49' => '49',
        
'50' => '50',
        
'51' => '51',
        
'52' => '52',
        
'53' => '53',
        
'54' => '54',
        
'55' => '55',
        
'56' => '56',
        
'57' => '57',
        
'58' => '58',
        
'59' => '59'
    
);

    var 
$Periods = array(
        
'AM' => 'AM',
        
'PM' => 'PM'
    
);

    var 
$Types = array(
        
'Uberman'          => 'Uberman',
        
'Dymaxion'          => 'Dymaxion',
        
'Everyman'          => 'Everyman',
        
'Semi-Monophasic' => 'Semi-Monophasic',
        
'Pure Monophasic' => 'Pure Monophasic',
        
'Quasi-Monophasic' => 'Quasi-Monophasic',
        
'Semipolyphasic' => 'Semipolyphasic'
        
'Quasi-Polyphasic' => 'Quasi-Polyphasic'
        
'Pure Polyphasic' => 'Pure Polyphasic'
    
);

    var 
$SecondsTimes = array(
        
'year' => 31536000,
        
'day'  => 86400,
        
'hour' => 3600
    
);

    function 
SelectBox($items$name$selected false)
    {
        
$select_box  '<select name="' $name '"';
        
$select_box .= '>';
        
        foreach(
$items as $valor => $texto)
        {
            
$select_box .= '<option value="' $valor '"';

            if(
$selected == $valor)
            {
                
$select_box .= ' selected';
            }

            
$select_box .= '>' $texto '</option>';
        }

        
$select_box .= '</select>';
        
        return 
$select_box;
    }

    
/**
     * Verifica se uma data no formato DD/MM/AAAA é válida, 
     * verificando:
     * - Quantidade de dígitos
     * - Dias corretos no mês
     *
     * @param string $Data
     * @return boolean
     */
    
function CheckDate($Data)
    {    
        
// ---------------------------------------------------------------------
        // Verifica se os digítos estão em tamanho limite
        // (2 dígitos para dia, 2 para mês e 4 dígitos para ano)
        // ---------------------------------------------------------------------
        
$dataRegex '([0-9]{2,2})\/([0-9]{2,2})\/([0-9]{4,4})';
    
        if(!
eregi($dataRegex$Data))
        {
            return 
false;
        }
    
        
// ---------------------------------------------------------------------
        // Ok, agora obtém partes da data ( separando de acordo com a / ),
        // para verificar se as datas correspondem com os número de dias em cada mês
        // ---------------------------------------------------------------------
        
$partes preg_split('/\//'$Data);
    
        
// Quantidade de dias em cada mês
        
$DiasNosMeses = array();
        
$DiasNosMeses['01'] = '31';
        
$DiasNosMeses['02'] = '28';
        
$DiasNosMeses['03'] = '31';
        
$DiasNosMeses['04'] = '30';
        
$DiasNosMeses['05'] = '31';
        
$DiasNosMeses['06'] = '30';
        
$DiasNosMeses['07'] = '31';
        
$DiasNosMeses['08'] = '31';
        
$DiasNosMeses['09'] = '30';
        
$DiasNosMeses['10'] = '31';
        
$DiasNosMeses['11'] = '30';
        
$DiasNosMeses['12'] = '31';
    
        
// Quantidade de dias em fevereiro de ano bissexto
        
$DiasFevBissexto 29;
        
        
// Verifica se forneceu mês além de 12 ou menos que 1. Bem como dia menor que 1.
        
if($partes[1] > 12 || $partes[1] < || $partes[0] < 1)
        {
            return 
false;
        }
    
        
// Se for mês dois, verifica se é ano bissexto.
        // Caso positivo, verifica se a data está no limite.
        
if($partes[1] == '02')
        {
            if((
UValidate::AnoVerificaBissexto($partes[2]) && $partes[0] > $DiasFevBissexto) ||
               (!
UValidate::AnoVerificaBissexto($partes[2]) && $partes[0] > $DiasNosMeses['02'])) {
                
// Ano bissexto e data de fevereiro maior que o limite
                
return false;
            }
        }
        else if(
$partes[0] > $DiasNosMeses$partes[1] ])
        {
            
// Data fora do limite do mês
            
return false;
        }
    
        
// Data válida!
        
return true;
    }
    
    
/**
     * Verifica se um ano fornecido é bissexto.
     *
     * @param integer ano
     * @return boolean
     * @since Mar 02, 2006
     * @author Alfred Reinold Baudisch<alfred@auriumsoft.com.br>
     */
    
function AnoVerificaBissexto($ano)
    {
        
// Deve ser múltiplo de 4 e não multiplo de 100
        // OU múltiplo de 400
        
if( (!($ano 4) && ($ano 100)) || 
            (!(
$ano 400)) )
        {
            
// É bissexto
            
return 1;
        }
    
        
// Não é bissexto
        
return 0;
    }

    
/**
     * Verifica se um valor é número inteiro.
     *
     * @param mixed $Valor
     * @return boolean
     */
    
function IsIntNumber($Valor)
    {
        return 
preg_match('/^[0-9]+$/i'$Valor);
    }

    function 
ShowDate($UnixTime)
    {
        return 
date('d/M/Y'$UnixTime);
    }

    function 
ShowHourAndMinutes($Time)
    {
        
$TimeParts  explode('.'$Time);
        
$TimeString .= '<strong>' $TimeParts[0] . '</strong> hour';
        
$TimeString .= ($TimeParts[0] > 1) ? 's' '';

        if(
$TimeParts[1] > 0)    {
            
$MinutesPart '0.' substr($TimeParts[1], 03);
            
$Minutes substr(($MinutesPart 60), 02);
            
$Minutes++;

            if(
eregi('.$'$Minutes)) $Minutes str_replace('.'''$Minutes);

            if(
$Minutes 60) {
                
$TimeString .= ' and <strong>' $Minutes '</strong> minute';
                
$TimeString .= ($Minutes 1) ? 's' '';
            }
        }

        return 
$TimeString;
    }
}

?>