/**
 * @cliente Prefeitura Municipal de Paty do Alferes.
 * @projeto Website patyfestadotomate.com.br.
 * @autor STUDIO Microcis
 * @copyright 2009 Prefeitura Municipal de Paty do Alferes. Todos os direitos reservados.
 */

/**
 * Responsável pelo website.
 */
cFestaDoTomate = Class.create({
    /**
     * Executa ao instanciar a classe.
     * 
     * @return void
     */
    initialize: function() {
        // Define o horário do evento.
        this.defineHorarioEvento({
            ano: 2009,
            mes: 06,
            dia: 10,
            hora: 20,
            minuto: 00,
            segundo: 00
        });
    },
    
    /**
     * Define o horário do evento.
     * 
     * @param object horarioEvento Os dados do horário do evento.
     * 
     * @return void
     */
    defineHorarioEvento: function(horarioEvento) {
        this.horarioEvento = horarioEvento;
    },
    
    /**
     * Retorna o horário do evento.
     * 
     * @return object
     */
    retornaHorarioEvento: function() {
        return this.horarioEvento;
    },
    
    /**
     * Retorna quando tempo resta para o evento.
     */
    retornaTempoRestante: function() {
        // Define o dia de hoje.
        var hoje = new Date();
        
        // Define o horário atual.
        var horarioAtual = {
            ano: hoje.getFullYear(),
            mes: hoje.getMonth()+1,
            dia: hoje.getDate(),
            hora: hoje.getHours(),
            minuto: hoje.getMinutes(),
            segundo: hoje.getSeconds()
        }
        
        // Retorna e define o horário do evento.
        var horarioEvento = this.retornaHorarioEvento();
        
        // Define a lista de meses. A mesma lista serve para corrigir uma incompatibilidade do Internet Explorer onde se precisa do mês para calcular a diferença entre as datas.
        var listaMeses = [
            'Jan',
            'Feb',
            'Mar',
            'Apr',
            'May',
            'Jun',
            'Jul',
            'Aug',
            'Set',
            'Oct',
            'Nov',
            'Dec'
        ];
        
        // Define a string do horário atual e do evento.
        var stringHorarioAtual = listaMeses[horarioAtual.mes]+' '+horarioAtual.dia+' '+horarioAtual.ano+' '+horarioAtual.hora+':'+horarioAtual.minuto+':'+horarioAtual.segundo;
        var stringHorarioEvento = listaMeses[horarioEvento.mes]+' '+horarioEvento.dia+' '+horarioEvento.ano+' '+horarioEvento.hora+':'+horarioEvento.minuto+':'+horarioEvento.segundo;
        
        // Define a diferença entre os tempos atual e do evento.
        var timestampTempoRestante = Date.parse(stringHorarioEvento)-Date.parse(stringHorarioAtual);
        
        // Define os dados da diferença do tempo para leitura humana.
        var tempoRestante = { 
            dia: Math.floor(timestampTempoRestante/(60*60*1000*24)*1),
            hora: Math.floor((timestampTempoRestante%(60*60*1000*24))/(60*60*1000)*1),
            minuto: Math.floor(((timestampTempoRestante%(60*60*1000*24))%(60*60*1000))/(60*1000)*1),
            segundo: Math.floor((((timestampTempoRestante%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1)
        }
        
        if (timestampTempoRestante > 0)
            return tempoRestante;
        else
            return false;
    }
});
