/**
     * register a validator
     *
     * @param string $id the id of the validator
     * @param string $field the field to be validated
     * @param string $criteria the name of the criteria function
     * @param string $empty allow field to be empty (optional)
     * @param string $halt stop validation if this one fails (optional)
     * @param string $transform transform function(s) to apply (optional)
     * @param string $form name of the form (optional)
     */
    function register_validator($id, $field, $criteria, $empty = false, $halt = false, $transform = null, $form = SMARTY_VALIDATE_DEFAULT_FORM) {
        if(!SmartyValidate::is_registered_form($form)) {
            trigger_error("SmartyValidate: [register_validator] form '$form' is not registered.");
            return false;
        }
        SmartyValidate::unregister_validator($id,$form);

        $_field = explode(':', $field);
        $_validator = array();

        foreach($_field as $_key => $_val) {
            if($_key == 0)
                $_validator['field'] = $_val;
            else {
                $_field_name = 'field';
                $_field_name .= $_key + 1;
                $_validator[$_field_name] = $_val;
            }
        }

        $_validator['id'] = $id;
        $_validator['criteria'] = $criteria;
        $_validator['message'] = '';
        $_validator['trim'] = false;
        $_validator['empty'] = $empty;
        $_validator['halt'] = $halt;
        $_validator['transform'] = $transform;

        $_SESSION['SmartyValidate'][$form]['validators'][]  = $_validator;
    }