<?php

require_once 'HTML/QuickForm.php';
require_once 'HTML/Template/Flexy.php';
require_once 'HTML/QuickForm/Renderer/ObjectFlexy.php';
require_once('HTML/Template/ITX.php');
require_once('HTML/Template/Sigma.php');
require_once 'HTML/QuickForm/Renderer/ITDynamic.php';
require_once('HTML/QuickForm/Renderer/ITStatic.php');
require_once 'QuickForm_Multi.php';
  
class HTML_QuickForm_Wrapper extends HTML_QuickForm
{

    function _loadConfig()
    {
        global $_HTML_QUICKFORM_WRAPPER;
        $_HTML_QUICKFORM_WRAPPER['CONFIG'] = &PEAR::getStaticProperty('HTML_QuickForm_Wrapper','options');
    }
    
    function factory($form)
    {
        global $_HTML_QUICKFORM_WRAPPER;
        if (empty($_HTML_QUICKFORM_WRAPPER['CONFIG'])) {
            HTML_QuickForm_Wrapper::_loadConfig();
        }
        $class = $_HTML_QUICKFORM_WRAPPER['CONFIG']['class_prefix'] . preg_replace('/[^A-Z0-9]/i','_',ucfirst($form));
        $class = (class_exists($class)) ? $class  : HTML_QuickForm_Wrapper::_autoloadClass($class);
        return new $class;
    }

    function _autoloadClass($class)
    {
        global $_HTML_QUICKFORM_WRAPPER;
        if (empty($_HTML_QUICKFORM_WRAPPER['CONFIG'])) {
            HTML_QuickForm_Wrapper::_loadConfig();
        }
        $form   = substr($class,strlen($_HTML_QUICKFORM_WRAPPER['CONFIG']['class_prefix']));

        // only include the file if it exists - and barf badly if it has parse errors :)
        if (empty($_HTML_QUICKFORM_WRAPPER['CONFIG']['class_location'])) {
            return PEAR::raiseError("please configure class_location in the ini file");
        }

        $file = $_HTML_QUICKFORM_WRAPPER['CONFIG']['class_location'].'/'.preg_replace('/[^A-Z0-9]/i','_',ucfirst($form)).".php";

        if (!file_exists($file)) {
            return PEAR::raiseError("autoload:Could not find class {$class} using class_location value");
        }

        include_once $file;

        if (!class_exists($class)) {
            return PEAR::raiseError("autoload:Could not autoload {$class}");
        }
        return $class;
    }

}

?>
