/**
  * Overridden isValid() method for pre-validation code
  *
  * @param array $formData data typically from a POST or GET request
  *
  * @return bool
  */
 public function isValid($formData = array())
 {
     $pageSession = new Zend_Session_Namespace('tenants_insurance_quote');
     // Filter for currency elements
     $currencyFilterElements = array('claim_value');
     foreach ($currencyFilterElements as $filterElement) {
         if (isset($formData[$filterElement])) {
             $formData[$filterElement] = preg_replace(array('/[^\\d\\.]/'), array(''), $formData[$filterElement]);
         }
     }
     // Check if this is an AJAX request, and ignore unneeded fields for validation by making them non-mandatory
     if (isset($formData['addClaim']) || isset($formData['removeClaim'])) {
         $this->getElement('declaration1')->setRequired(false);
         $this->getElement('declaration2')->setRequired(false);
         $this->getElement('declaration3')->setRequired(false);
         $this->getElement('declaration4')->setRequired(false);
         $this->getElement('declaration_confirmation')->setRequired(false);
     } else {
         // Not an AJAX request
         // Selectively make details sections mandatory if their corresponding Qs are marked "Yes"
         if (isset($formData['declaration1']) && $formData['declaration1'] == 'yes') {
             $this->getElement('declaration1_details')->setRequired(true);
         }
         if (isset($formData['declaration2']) && $formData['declaration2'] == 'yes') {
             $pageSession = new Zend_Session_Namespace('tenants_insurance_quote');
             // Invoke the previous claims manager
             $claimsManager = new Manager_Insurance_PreviousClaims();
             // If no claims have been entered, make the claim input fields mandatory
             if ($claimsManager->countPreviousClaims($pageSession->CustomerRefNo) == 0) {
                 $this->getElement('claim_type')->setRequired(true);
                 $this->getElement('claim_month')->setRequired(true);
                 $this->getElement('claim_year')->setRequired(true);
                 $this->getElement('claim_value')->setRequired(true);
                 $this->getElement('claim_confirm')->setRequired(true);
             }
         }
         if (isset($formData['declaration3']) && $formData['declaration3'] == 'yes') {
             $this->getElement('declaration3_details')->setRequired(true);
         }
         if (isset($formData['declaration4']) && $formData['declaration4'] == 'yes') {
             $this->getElement('declaration4_details')->setRequired(true);
         }
     }
     // Check if a new claim's details is being added and if so make fields mandatory
     if (isset($formData['addClaim']) && $formData['addClaim'] == 1) {
         $this->getElement('claim_type')->setRequired(true);
         $this->getElement('claim_month')->setRequired(true);
         $this->getElement('claim_year')->setRequired(true);
         $this->getElement('claim_value')->setRequired(true);
         $this->getElement('claim_confirm')->setRequired(true);
     }
     // Call original isValid()
     return parent::isValid($formData);
 }