<?php
require_once 'Zend/Locale.php';

class Application_Form_BillingPurchase extends Zend_Form
{
    public function init()
    {
        /*$this->setDecorators(array(
                array('ViewScript', array('viewScript' => 'form/billing-purchase.phtml'))));*/
        $client = BillingController::getClientDetails();
        
        $notEmptyValidator = Application_Form_Helper_ValidationTypes::overrideNotEmptyValidator();
        $emailValidator = Application_Form_Helper_ValidationTypes::overrideEmailAddressValidator();
        
        $firstname = new Zend_Form_Element_Text('firstname');
        $firstname->setLabel(_('First Name:'))
            ->setValue($client["firstname"])
            ->setAttrib('class', 'input_text')
            ->setRequired(true)
            ->addValidator($notEmptyValidator)
            ->addFilter('StringTrim');
        $this->addElement($firstname);

        $lastname = new Zend_Form_Element_Text('lastname');
        $lastname->setLabel(_('Last Name:'))
            ->setValue($client["lastname"])
            ->setAttrib('class', 'input_text')
            ->setRequired(true)
            ->addValidator($notEmptyValidator)
            ->addFilter('StringTrim');
        $this->addElement($lastname);

        $companyname = new Zend_Form_Element_Text('companyname');
        $companyname->setLabel(_('Company Name:'))
            ->setValue($client["companyname"])
            ->setAttrib('class', 'input_text')
            ->setRequired(true)
            ->addValidator($notEmptyValidator)
            ->addFilter('StringTrim');
        $this->addElement($companyname);

        $email = new Zend_Form_Element_Text('email');
        $email->setLabel(_('Email Address:'))
            ->setValue($client["email"])
            ->setAttrib('class', 'input_text')
            ->setRequired(true)
            ->setAttrib('readonly', 'readonly')
            ->addValidator($emailValidator)
            ->addFilter('StringTrim');
        $this->addElement($email);

        $address1 = new Zend_Form_Element_Text('address1');
        $address1->setLabel(_('Address 1:'))
            ->setValue($client["address1"])
            ->setAttrib('class', 'input_text')
            ->setRequired(true)
            ->addValidator($notEmptyValidator)
            ->addFilter('StringTrim');
        $this->addElement($address1);

        $address2 = new Zend_Form_Element_Text('address2');
        $address2->setLabel(_('Address 2:'))
            ->setValue($client["address2"])
            ->setAttrib('class', 'input_text')
            ->addFilter('StringTrim');
        $this->addElement($address2);

        $city = new Zend_Form_Element_Text('city');
        $city->setLabel(_('City:'))
            ->setValue($client["city"])
            ->setAttrib('class', 'input_text')
            ->setRequired(true)
            ->addValidator($notEmptyValidator)
            ->addFilter('StringTrim');
        $this->addElement($city);

        //TODO: get list from whmcs?
        $state = new Zend_Form_Element_Text('state');
        $state->setLabel(_('State/Region:'))
            ->setValue($client["state"])
            ->setAttrib('class', 'input_text')
            ->setRequired(true)
            ->addValidator($notEmptyValidator)
            ->addFilter('StringTrim');
        $this->addElement($state);

        $postcode = new Zend_Form_Element_Text('postcode');
        $postcode->setLabel(_('Zip Code:'))
            ->setValue($client["postcode"])
            ->setAttrib('class', 'input_text')
            ->setRequired(true)
            ->addValidator($notEmptyValidator)
            ->addFilter('StringTrim');
        $this->addElement($postcode);

        $locale = new Zend_Locale('en_US');
        $countries = $locale->getTranslationList('Territory', 'en', 2);
        asort($countries, SORT_LOCALE_STRING);
        
        $country = new Zend_Form_Element_Select('country');
        $country->setLabel(_('Country:'))
            ->setValue($client["country"])
            ->setAttrib('class', 'input_text')
            ->setMultiOptions($countries)
            ->setRequired(true)
            ->addValidator($notEmptyValidator)
            ->addFilter('StringTrim');
        $this->addElement($country);

        $phonenumber = new Zend_Form_Element_Text('phonenumber');
        $phonenumber->setLabel(_('Phone Number:'))
            ->setValue($client["phonenumber"])
            ->setAttrib('class', 'input_text')
            ->setRequired(true)
            ->addValidator($notEmptyValidator)
            ->addFilter('StringTrim');
        $this->addElement($phonenumber);

        //TODO: get list from whmcs
        $securityqid = new Zend_Form_Element_Text('securityqid');
        $securityqid->setLabel(_('Please choose a security question:'))
            ->setValue($client["securityqid"])
            ->setAttrib('class', 'input_text')
            ->setRequired(true)
            ->addValidator($notEmptyValidator)
            ->addFilter('StringTrim');
        $this->addElement($securityqid);

        $securityqans = new Zend_Form_Element_Text('securityqans');
        $securityqans->setLabel(_('Please enter an answer:'))
            ->setValue($client["securityqans"])
            ->setAttrib('class', 'input_text')
            ->setRequired(true)
            ->addValidator($notEmptyValidator)
            ->addFilter('StringTrim');
        $this->addElement($securityqans);

        foreach ($client["customfields"] as $field) {
            if ($field["id"] == 7) {
                $vatvalue = $field["value"];
            } elseif ($field["id"] == 71) {
                $subscribevalue = $field["value"];
            }
        }

        $vat = new Zend_Form_Element_Text('vat');
        $vat->setLabel(_('VAT/Tax ID (EU only)'))
            ->setValue($vatvalue)
            ->setAttrib('class', 'input_text')
            ->setRequired(true)
            ->addValidator($notEmptyValidator)
            ->addFilter('StringTrim');
        $this->addElement($vat);

        $subscribe = new Zend_Form_Element_Checkbox('subscribe');
        $subscribe->setLabel(_('Subscribe to Sourcefabric newsletter'))
            ->setValue($subscribevalue)
            ->setAttrib('class', 'input_text')
            ->setRequired(true)
            ->addValidator($notEmptyValidator)
            ->addFilter('StringTrim');
        $this->addElement($subscribe);

        $password = new Zend_Form_Element_Password('whmcspassword');
        $password->setLabel(_('Password:'));
        $password->setAttrib('class', 'input_text');
        $password->setRequired(true);
        $password->addFilter('StringTrim');
        $password->addValidator($notEmptyValidator);
        $this->addElement($password);

        $passwordVerify = new Zend_Form_Element_Password('whmcspasswordVerify');
        $passwordVerify->setLabel(_('Verify Password:'));
        $passwordVerify->setAttrib('class', 'input_text');
        $passwordVerify->setRequired(true);
        $passwordVerify->addFilter('StringTrim');
        $passwordVerify->addValidator($notEmptyValidator);
        $this->addElement($passwordVerify);
    }
}