*** Version 3.2.13 (stable) - API 3.2.6 (stable) - 2011-10-01


* maxYear in date element defaults to current year rather than 2010 (bug #18171)
* autocomplete element now works under FF4+ (bug #18530)
 

*** Version 3.2.12 (stable) - API 3.2.6 (stable) - 2010-10-17


* Added Serbian translation for date element (sent by Milos Tijanic)
* Added Greek translation for date element (sent by Pantelis Evgenidis)
* Got rid of deprecated split() function (thanks to Daniel O'Connor)
* Rewritten Javascript for hierselect element to not rely on "for in" loop
  (bug #16603)
   

*** Version 3.2.11 (stable) - API 3.2.6 (stable) - 2009-04-07


* PHP-style Unicode escape codes in regular expressions are translated to
  Javascript-style ones when using client-side validation (bug #12736)
* Rules for grouped elements were not removed when removing a group via
  removeElement() method (bug #14540)
* Allow setting $collectHidden parameter in constructor of ArraySmarty
  renderer, as allowed in constructor of Array renderer (bug #14995)
* Element name was not removed from $_required array in removeElement()
  (bug #15520)
* Third and subsequent selects in hierselect could be not cleared under some
  circumstances (bug #15955)
   

*** Version 3.2.10 (stable) - API 3.2.6 (stable) - 2007-10-05


* An error in date's setValue() method prevented setting the 'empty' value
  as the default one (bug #11717)
* A space could be displayed instead of '0' for frozen elements with value
  set to '0' (bug #11995)
* Validation rules on file uploads will be skipped only if no upload was
  attempted, not if it failed for some reason (bug #12014)
* 'filename' rule returned integer instead of expected boolean (bug #12015)
* Regexps in Default renderer missed necessary 's' modifier (bug #12026)
   

*** Version 3.2.9 (stable) - API 3.2.6 (stable) - 2007-06-05


This release fixes problems introduced in release 3.2.8:
* Fixes to bug #10837 and bug #11138 could prevent setting the values 
  of 'date' elements. Thanks to Massimiliano Arione for reporting.
* Fix to bug #10754 broke 'compare' rules with '!=' operators
  (see bug #11229)
   

*** Version 3.2.8 (stable) - API 3.2.6 (stable) - 2007-06-03


Development of QuickForm version 3 is now frozen. Only bug fixing will be
done. All feature requests should be submitted for HTML_QuickForm2 package.

Changes:
* Moved to package.xml version 2
* Proper header comment blocks

Bugfixes:
* Possible segfault when using Default Renderer due to sub-optimal regexps
  (bug #9977)
* Validation of elements containing numeric strings by 'compare' rule
  could give wrong results (bug #10754)
* Regexp-based rules incorrectly allowed trailing newlines in values being
  validated (bug #10799)
* Wrong options could be selected in <select> elements if numeric strings
  were used as options' values (bug #10837, bug #11138)
* 'checked' attribute of checkbox was not cleared if adding checkbox to 
  a form submitted with this box unchecked (bug #11047)
   

*** Version 3.2.7 (stable) - API 3.2.6 (stable) - 2006-10-10


Development of QuickForm version 3 is now frozen. Only bug fixing will be
done. All feature requests should be submitted for HTML_QuickForm2 package.

Bugfixes:
* Radio button with value attribute of '0' was incorrectly set checked
  after setDefaults() call (bug #8057)
* Fixed errors in eval()'d code when element's name contains single quotes
  and/or backslashes (bug #8123, bug #8414 has a more realistic example)
* Fixed PHP warning on outputting hiddenselect element when its values
  were never set (bug #8305)
* Removed unnecessary if-else from HTML_QuickForm_file::moveUploadedFile()
  (bug #8329)
* Fixed Javascript error in hierselect element if option text was a number
  (bug #8497)
   

*** Version 3.2.6 (stable) - API 3.2.6 (stable) - 2006-06-22


Development of QuickForm version 3 is now frozen. Only bug fixing will be
done. All feature requests should be submitted for HTML_QuickForm2 package.

Bugfixes:
* Typo in javascript generated for form validation (bug #5205)
* Default values for single-selects were ignored if form was considered
  submitted (bug #5269)
* Fixed array-based options for HTML_QuickForm_date (bug #5364)
* Javascript validation of single radiobutton failed (bug #5644)
* Incorrect fetch mode used in HTML_QuickForm_select::loadDbResult()
  (bug #5705)
* Removed unused variables found by code analysis (bug #5920)
* hierselect now works correctly with HTML entities in option texts,
  fix idea borrowed from Prototype JS library (bug #5974)
* advcheckbox failed to submit properly if its id attribute was set equal 
  to its name, due to javascript problems (bug #6134)
* HTML_QuickForm_hierselect::setValue() should not decrease the number of
  select elements in hierselect (bug #6766)
* HTML_QuickForm::isTypeRegistered() is now case-insensitive (bug #7342)
* Form is considered not valid after explicitly adding error via
  HTML_QuickForm::setElementError() (bug #7470)
* Regexps for 'error' and 'required' blocks in Default renderer now match
  ungreedy, this allows having several such blocks in a template (bug #7820)
* Document the return value of HTML_QuickForm_file::moveUploadedFile()
  (bug #7832)

Additions and changes:
* Traditional Chinese translation for date element (request #5165)
* Brazilian Portuguese translation for date element (request #5541)
* An error message for element is now removed if removing the element via
  HTML_QuickForm::removeElement(..., true) or passing an empty argument to
  HTML_QuickForm::setElementError().
* advcheckbox element no longer uses any javascript, therefore its JS-related
  methods getOnclickJS() and getPrivateName() are no longer used internally
  and are deprecated.
   

*** Version 3.2.5 (stable) - API 3.2.5 (stable) - 2005-08-05


This release addresses poorly documented backwards compatibility breaks
in PHP versions 4.4 and 5.1 (see bugs #4725 and #4799).

* Changes to hierselect element
  Javascript for hierselect element was (once again) completely rewritten,
  which fixed a significant number of bugs.
- Fixed #2970 (hierselect did not handle form reset properly)
- Fixed #3176 (hierselect did not handle page reload properly)
- Fixed #3988 (javascript errors if element name contained brackets)
- Fixed #4432 (javascript errors if strings used as option values)
- Implemented #3367 (onchange attribute is not overwritten, but appended to)

* Changes to date element
- Added Romanian translation (request #2884)
- Added Hebrew translation (request #3366)
- Added Swedish translation (request #4821)
- Added Portuguese translation (request #4963)
- Removed extra copy of French translation
- Fixed typos in French (bug #3947) and Spanish (bug #4531) translations
- Implemented #3733 ('g' format support)
- Implemented #3379 ('W' format support)
- Implemented #3325 (display empty options on a per-field basis)
- Implemented #3575 (different empty option texts for different fields)
- Fixed #3049 (getElements() could return null)
- Fixed #4781 (toHtml() could return incorrect result)

* Form validation fixes
- Fixed #3865 (Required rule should consider field containing '0' valid)
- Fixed #3023 (a Fatal error was possible when having a compare rule after 
  a frozen element)
- Fixed #3501 (File elements should not be validated if not required and no 
  file uploaded)
- Fixed #2709 (radiobutton group not validated if no radiobutton selected)
- Fixed #3035 (error in javascript validation function in case of select 
  with size > 1)
- Fixed #3150 (incorrect check for select elements in javascript 
  validation function)
- Fixed broken javascript validation for groups with brackets in name
- Fixed #4470 (incorrect value for advcheckbox elements in javascript 
  validation)
- Fixed #4832 (Prevent javascript errors if form is frozen)

* Other additions and fixes
- Added HTML_QuickForm::isSubmitted() method
- Implemented #4930 (value of upload_max_filesize php.ini directive is
  used as default value for MAX_FILE_SIZE form element)
- Fixed #2806 (Typo in rules-builtin.php example)
- Fixed #4219 (ArraySmarty renderer should only render required and error 
  template if the element has errors or is required, this gives significant
  performance improvement).
- Fixed #2681 (Identical classes declared alongside Object and ObjectFlexy
  renderers)
- Fixed #3511 (HTML_QuickForm_group::toHtml() ignored hidden elements)
- Use HTML_Common::_getAttrString() when generating hidden elements in
  various places (bug #4463, invalid HTML generated by hiddenselect)
- Fixed #2726 (grouped elements failed to freeze if freeze() was called 
  before _createElements())
- Fixed #4645 (grouped elements having '0' as name handled incorrectly)
- Make getSubmitValue() more robust when dealing with groups having brackets
  in names (see bug #2587)
- Fixed #4262 (Constructor for HTML_QuickForm ignored explicitly given 
  $target = '_self' argument)
- Fixed #4465 (Default values incorrectly used for select multiple elements
  if all options were unselected)
- Fixed #3193 (frozen select elements could display incorrect value)
- Fixed #4611 (javascript for grouped autocomplete elements not output
  properly)
   

*** Version 3.2.4pl1 (stable) - API 3.2.4 (stable) - 2004-10-20


- Fixed #2576: calling HTML_QuickForm::getSubmitValue() on a group 
  of radio elements caused an infinite loop with PHP eventually 
  dying of memory exhaustion. This was introduced in 3.2.4 in a 
  fix for bug #2517, those upgrading from earlier releases should 
  skip 3.2.4, those running 3.2.4 should upgrade ASAP.

- Fixed #2571: selects after the second were not correctly 
  populated in hierselect with 3 or more elements.
   

*** Version 3.2.4 (stable) - API 3.2.4 (stable) - 2004-10-18


* Additions and changes
- Implemented HTML_QuickForm::insertElementBefore() method which 
  allows adding elements into arbitrary places and reordering the 
  existing form elements (thanks to Justin Patrin for initial
  implementation and helpful comments, see request #1587)
- Implemented HTML_QuickForm_element::unfreeze() method
- HTML_QuickForm::removeElement() now returns reference to element
  being removed
- Array renderer outputs header name into the resultant array
  (request #2276)
- Added $staticLabels option to Array renderer's constructor, this
  makes the renderer "flatten" the array of labels
- Added Ukrainian translation for 'date' element (Andrey Kornilov)
- Removed newline after <script> tags in 'autocomplete' and
  'hierselect' elements (request #2373)

* Bugfixes
- HTML_QuickForm::getSubmitValue() now properly returns null for
  groups if form was not yet submitted (bug #2517)
- stripslashes() is used only on 'name' element of file upload
  data (bug #1843)
- HTML_QuickForm::addGroupRule() now works better with <select 
  multiple> elements (bug #1810)
- Fixed notice if empty string was passed to date::setValue() 
  (bug #2530)
- Calling HTML_QuickForm_group::getFrozenHtml() no longer freezes 
  the group (bug #1836)
- Groups now correctly handle setPersistantFreeze() call (bug #1836)
- ITDynamic renderer does not replace empty separator with &nbsp;
  anymore (bug #2354)
- 'maxfilesize' rule returns false in case of file upload errors
  (bug #2203)
- Fixed Javascript generation for 'hierselect' elements (bug #1984)
- Fixed examples using 'rangelength' rule (bug #2421)
   

*** Version 3.2.3 (stable) - API 3.2.3 (stable) - 2004-06-28


* Additions and changes
- Implemented a new 'xbutton' element for HTML 4.0 <button> tag
  (see also #1227)
- HTML_QuickForm::toArray() method accepts a boolean value that is 
  passed to the constructor of HTML_QuickForm_Renderer_Array (see #1392)
- ITDynamic renderer is now able to select a block for rendering based
  on the element's name (see #1506)
- Default template of Default Renderer now allows XHTML-compliant output
  of hidden elements (see #1124)
- Added Esperanto translation and French accents for date element 
  (Sebastien Montagne)
- Implemented #553: ITStatic renderer can use special blocks for required
  elements and errors, if present in the template
- Implemented #1576: Enclose js code between //<![CDATA[ and //]]>
  to make it xhtml compliant

* Bugfixes
- Fixed #1235 (setChecked() and setValue() did not work on advcheckbox)
- Fixed #1389 (Invalid comments in autocomplete element's Javascript)
- Fixed #1143 (Client validation should be turned off for frozen elements)
- Fixed #1252 (File upload names were not cleaned when magic_quotes_gpc = On)
- Fixed notices raised by hierselect element (reported by Herim Vasquez)
- Fixed #1248 (Errors in hierselect's Javascript when element's name
  begins with a number)
- Fixed #1577 (hierselect's Javascript works with multiselects)
- Fixed #1516 (Default Renderer should use separators even when 
  setGroupTemplate() is used)
- Fixed #1694 (ITStatic renders hidden element with brackets correctly,
  patch provided by milamamu)
   

*** Version 3.2.2 (stable) - API 3.2.2 (stable) - 2004-03-22


* On XHTML compliance:
As of 3.2.2 QuickForm does not rely on presence of 'name' attribute
in form tag (which is invalid in Strict XHTML), although it does
set this attribute. If you desire Strict XHTML compliance, you can
remove the attribute via removeAttribute() method.

* On Flexy renderers:
The Flexy renderers currently lack a maintainer. If one is not
found, they will be marked as unsupported and may later be removed
from the package. If you wish to look after these renderers, please
contact the package maintainers.

* Additions and changes
- Added arrayMerge() method to HTML_QuickForm, this behaves like
  builtin array_merge_recursive() but does not renumber numeric
  array keys. The new method is now used throughout the QuickForm
  instead of array_merge_recursive()
- Added setDatasource() method
- Implemented #552 (ITStatic renderer can group hidden fields in
  output)
- Added Estonian translation for date element (Ants Aasma)
- Added Turkish translation for date element (Suat Imam-Oglu)
- Added Norwegian translation for date element (Espen Carlsen)
- All non-ASCII symbols in date translations are now encoded as 
  HTML Unicode entities to prevent encoding problems
- Renamed labels-default.php example to multiple-labels.php
  (suggested by Ignatius Reilly)
- Date element accepts non numeric default values compatible with
  function strtotime() (Kellan Elliot-Mccrea)
- Added possibility to have more than just two selects in
  the hierselect element (Herim Vasquez)


* Bugfixes
- Fixed #735 (applyFilter() failed for elements with "complex" names and
  grouped elements)
- Fixed #872 (possible get_class()-related issues in PHP5)
- Fixed #925 (XHTML compliance, see the note)
- Fixed #741 (frozen elements lost 'id' attribute)
- Final fix for #202 (ArraySmarty renderer broke on elements with
  brackets in names)
- Fixed #645 (ArraySmarty renderer had problems with anonymous elements)
- Fixed #734 (ArraySmarty renderer did not honour the change of Smarty
  delimiters)
- Fixed #745 (wrong removal of group name from elements)
- Fixed #212 (ObjectFlexy renderer broke on elements with brackets in names)
- Fixed #1032 (ITStatic used wrong placeholders for groups with 
  $appendName = false)
- updateElementAttr() works correctly if passed an array of actual element 
  objects, also handles the case of multiple elements with the same name.
   

*** Version 3.2.1 (stable) - API 3.2.1 (stable) - 2004-01-03


* Additions and changes
- The usage examples were significantly redone to better reflect current
  package functionality.
- Added Armenian translation for date element (Vahe Khachikyan)
- Added Dutch translation for date element (Michiel Rook)
- validate() throws a PEAR error if rule added via addFormRule() returns junk
  (see also bugs #243 and #338)

* Bugfixes
- Fixed bug #351 (incorrect values set for groups with weird names)
- Required elements in groups are once again marked correctly
- Fixed setValue() method of date element (thanks to Orya and Mike Carter, 
  see also bug #388)
- Fixed bug #403 (typo in Rule_Callback::getValidationScript())
- Fixed bug #356 (javascript generation for groups with $appendName = false)
- Fixed bug #328 (js values in hierselect not escaped properly)
- Fixed bug #302 (better support for RFC 2821 and RFC 2822 in Rule_Email)
- Fixed bug #253 (ArraySmarty renderer broken wit