% unless ( $opt{'js_only'} ) {
  
  <% include( 'select.html',
                'field'      => $name.'_conditionname',
                'id'         => $id.'_conditionname',
                'options'    => \@conditions,
                'curr_value' => $conditionname,
                'labels'     => { '' => 'Select Condition' },
                'onchange'   => $name.'_changed',
            )
  %>
  <% include( 'select.html',
                'field'      => $name.'_op',
                'id'         => $id.'_op',
                'options'    => \@op,
                'curr_value' => scalar($cgi->param($name.'_op'))
                                  || $cgp_rule_condition->op,
                'disabled'   => $disabled,
                'style'      => $style,
            )
  %>
  <% include( 'input-text.html',
                'field'      => $name.'_params',
                'id'         => $id.'_params',
                'curr_value' => scalar($cgi->param($name.'_params'))
                                  || $cgp_rule_condition->params,
                'disabled'   => $disabled,
                'style'      => $style,
                'nodarken_disabled' => 1,
            )
  %>
% # could add more UI sugar for date/time ranges, string #lists, etc.
% }
% unless ( $opt{'html_only'} || $opt{'js_only'} ) {
    
% }
<%once>
my @conditions = (
  '',
  #generic http://www.communigate.com/CommunigatePro/Rules.html#Conditions
  'Submit Address',
  'Time of Day',
  'Current Date',
  'Current Day',
  'Preference',
  'FreeBusy',
  'Existing Mailbox',
  #email http://www.communigate.com/CommunigatePro/QueueRules.html#Conditions
  'From',
  'Sender',
  'To',
  'Cc',
  'Reply-To',
  'Any To or Cc',
  'Each To or Cc',
  'Return-Path',
  "'From' Name",
  'Subject',
  'Message-ID',
  'Message Size',
  'Human Generated',
  'Header Field',
  'Any Recipient',
  'Each Recipient',
  'Source',
  'Security',
  'Any Route',
  'Each Route'
);
my %bool = ( map { $_=>1 } ( #hide the op and valud dropdowns entirely
  '',
  'Human Generated',
));
my %no_in = ( map { $_=>1 } ( #hide in/not in
  'Message Size',
  'Current Date',
  'Existing Mailbox',
));
my %lt_gt = ( map { $_=>1 } ( #add less than/greater than
  'Message Size',
  'Time of Day',
  'Current Date',
));
my $cond2op = sub {
  my $cond = shift;
  return () if $bool{$cond}; 
  my @op = ( 'is', 'is not' );
  push @op, 'less than', 'greater than'  if $lt_gt{$cond};
  push @op, 'in', 'not in' unless $no_in{$cond};
  @op;
};
%once>
<%init>
my %opt = @_;
my $name = $opt{'element_name'} || $opt{'field'} || 'ruleconditionnum';
#my $id = $opt{'id'} || 'contactnum';
my $id = $opt{'id'} || $opt{'field'} || 'ruleconditionnum';
my $curr_value = $opt{'curr_value'} || $opt{'value'};
my $onchange = '';
if ( $opt{'onchange'} ) {
  $onchange = $opt{'onchange'};
  $onchange .= '(what)' unless $onchange =~ /\(\w*\);?$/;
}
my $cgp_rule_condition;
if ( $curr_value ) {
  $cgp_rule_condition = qsearchs('cgp_rule_condition',
                                   { 'ruleconditionnum' => $curr_value } );
} else {
  $cgp_rule_condition = new FS::cgp_rule_condition {};
}
my $conditionname = scalar($cgi->param($name.'_conditionname'))
                    || $cgp_rule_condition->conditionname;
my @op = &$cond2op($conditionname);
my $disabled = scalar(@op) ? '' : 1;
my $style = $disabled ? 'visibility:hidden' : '';
%init>