<script type="text/javascript"><!--
jQuery(function() {
%   my $request_path = $HTML::Mason::Commands::r->path_info;
%   my $ajax_url  = $request_path !~ /SelfService\/Display\.html/ ? '/Helpers/GetCustomFieldValues' : '/SelfService/GetCustomFieldValues';
%   my $condition = $CustomField->ConditionedBy;
%   if ($condition) {
%       my $condition_val = $condition->{vals} || '';
%       my @condition_vals = ref($condition_val) eq 'ARRAY' ? @$condition_val : ($condition_val);
%       my $condition_cf = $Object->LoadCustomFieldByIdentifier($condition->{CF});
%       if ($condition_cf->id) {
%           if ($ParentSelector eq 'id') {
    var condition_selector = '<% '#CF-' . $condition_cf->id . '-ShowRow' |n%>';
    var cf_selector = '<% '#CF-' . $CustomField->id . '-ShowRow' |n%>';
%           } else {
    var condition_selector = '<% '.record-field.CustomField__' . $condition_cf->Name . '_' |n%>';
%   my $customfield_name = CSSClass($CustomField->Name);
    var cf_selector = '<% '.record-field.CustomField__' . $customfield_name . '_' |n%>';
%           }
    cf_selector = cf_selector.replace(/:/g,'\\:');
    var condition_vals = ["<% join('", "', @condition_vals) |n%>"];
    var cf_condition_vals;
    jQuery.ajax({
        dataType: "json",
        url: RT.Config.WebPath + '<% $ajax_url %>',
        async: false,
        data:  {ObjectType: '<% ref($Object) %>', ObjectId: <% $Object->id %>, CustomFieldId: <% $condition_cf->id %>},
        success: function(res) {
            if (res) {
                cf_condition_vals = res.split("\n");
            }
        }
    });
    var condition_met = false;
%           if (scalar(grep {$_ eq $condition_cf->id} map {$_->id} @{$Object->CustomFields->ItemsArrayRef})) {
%               if ($ParentSelector eq 'id') {
    if (jQuery(condition_selector).is(':visible')) {
%               } else {
    if (true) {
%               }
        condition_met = condition_is_met(condition_vals, cf_condition_vals, "<% $condition->{op} |n%>", '<% $session{CurrentUser}->LanguageHandle->language_tag %>');
    }
%           } else {
    condition_met = true;
%           }

    if (condition_met) {
        jQuery(cf_selector).show();
    }
    else {
        jQuery(cf_selector).hide();
    }

    var condition_event = '<% 'customField-' . $condition_cf->id . 'Changed' |n%>';
%           if ((ref($Object) eq 'RT::Ticket' && $request_path !~ /SelfService\/Display\.html/) || ref($Object) eq 'RT::Asset') {

    document.body.addEventListener('htmx:load', function(evt) {
        var cf_container = jQuery(evt.detail.elt).parent('div.show-custom-fields-container');
        if (cf_container.length) {
            var condition_event_re = new RegExp(condition_event);
            if (condition_event_re.test(cf_container.attr('hx-trigger'))) {
                if (condition_met) {
                    jQuery(cf_selector).show();
                }
                else {
                    jQuery(cf_selector).hide();
                }
            }
        }
    }, { once: true });

    jQuery(body).on(condition_event, function(e, show = true) {
        var cf_condition_vals;
        jQuery.ajax({
            dataType: "json",
            url: RT.Config.WebPath + '<% $ajax_url %>',
            async: false,
            data:  {ObjectId: <% $Object->id %>, CustomFieldId: <% $condition_cf->id %>},
            success: function(res) {
                if (res) {
                    cf_condition_vals = res.split("\n");
                }
            }
        });
        var condition_met = false;
%               if (scalar(grep {$_ eq $condition_cf->id} map {$_->id} @{$Object->CustomFields->ItemsArrayRef})) {
        if (show) {
            condition_met = condition_is_met(condition_vals, cf_condition_vals, "<% $condition->{op} |n%>", '<% $session{CurrentUser}->LanguageHandle->language_tag %>');
        }
%               } else {
        condition_met = true;
%               }

        if (condition_met) {
            jQuery(cf_selector).show();
        }
        else {
            jQuery(cf_selector).hide();
        }
        var cf_event = '<% 'customField-' . $CustomField->id . 'Changed' |n%>';
        jQuery(body).triggerHandler(cf_event, condition_met);
    });
%           } elsif ((ref($Object) eq 'RT::Ticket' && $request_path =~ /SelfService\/Display\.html/) || ref($Object) eq 'RT::Article') {
    var main_container_event = 'mainContainerChanged';

    document.body.addEventListener('htmx:load', function(evt) {
        var main_container = jQuery(evt.detail.elt).children('div').first();
        if (main_container.length) {
            var main_container_event_re = new RegExp(main_container_event);
            if (main_container_event_re.test(main_container.attr('hx-trigger'))) {
            if (!jQuery(condition_selector).is(':visible')) {
                condition_met = false;
            }
                if (condition_met) {
                    jQuery(cf_selector).show();
                }
                else {
                    jQuery(cf_selector).hide();
                }
            }
        }
    }, { once: true });
%           }
%       }
%   }
});
--></script>
<%ARGS>
$CustomField
$Object
$Grouping => undef
$ParentSelector => 'id'
</%ARGS>