<?php

class Application_Form_AddShowRepeats extends Zend_Form_SubForm
{

    public function init()
    {
        //Add type select
        $this->addElement('select', 'add_show_repeat_type', array(
            'required' => true,
            'label' => 'Repeat Type:',
            'class' => ' input_select',
            'multiOptions' => array(
                "0" => "weekly",
                "1" => "bi-weekly",
                "2" => "monthly"
            ),
        ));

        // Add days checkboxes
        $this->addElement(
            'multiCheckbox',
            'add_show_day_check',
            array(
                'label' => 'Select Days:',
                'required' => false,
                'multiOptions' => array(
                    "0" => "Sun",
                    "1" => "Mon",
                    "2" => "Tue",
                    "3" => "Wed",
                    "4" => "Thu",
                    "5" => "Fri",
                    "6" => "Sat",
                ),
         ));

        // Add end date element
        $this->addElement('text', 'add_show_end_date', array(
            'label'      => 'Date End:',
            'class'      => 'input_text',
            'value'     => date("Y-m-d"),
            'required'   => false,
            'filters'    => array('StringTrim'),
            'validators' => array(
                'NotEmpty',
                array('date', false, array('YYYY-MM-DD'))
            )
        ));

        // Add no end element
        $this->addElement('checkbox', 'add_show_no_end', array(
            'label'      => 'No End?',
            'required'   => false,
            'checked' => true,
        ));
    }

    public function disable(){
        $elements = $this->getElements();
        foreach ($elements as $element)
        {
            if ($element->getType() != 'Zend_Form_Element_Hidden')
            {
                $element->setAttrib('disabled','disabled');
            }
        }
    }

    public function checkReliantFields($formData) {

        if (!$formData['add_show_no_end']){
            $start_timestamp = $formData['add_show_start_date'];
            $end_timestamp = $formData['add_show_end_date'];

            $start_epoch = strtotime($start_timestamp);
            $end_epoch = strtotime($end_timestamp);

            if($end_epoch < $start_epoch) {
                $this->getElement('add_show_end_date')->setErrors(array('End date must be after start date'));
                return false;
            }
        }

        return true;
    }

}