// pluginflowsettings.js

$(document).ready(function () {
    if (customFormMode === "add" || customFormMode === "edit") {
        OperatorHandler();
        $("select[title='Operator']").change(function () {
            OperatorHandler();
        });

        ConditionHandler();
        $("select[title='Condition']").change(function () {
            ConditionHandler();
        });

        FlagHandler();
        $("select[title='Flag']").change(function () {
            FlagHandler();
        });

        ActionHandler();
        $("select[title='Action']").change(function () {
            ActionHandler();
        });

        CreateElseBoolean();
    }
});

function OperatorHandler() {
    $("input[title='Value']").closest('tr').hide();
    if ($("select[title='Operator']").val() !== "Is empty" && $("select[title='Operator']").val() !== "Is not empty") {
        $("input[title='Value']").closest('tr').show();
    }
    else {
        $("input[title='Value']").val("");
    }
}

function ConditionHandler() {
    $("select[title='Action']").closest('tr').hide();
    $("select[title='Flag']").closest('tr').hide();
    if ($("select[title='Condition']").val().length === 0) {
        $("select[title='Action']").closest('tr').show();
        $("select[title='Flag']").closest('tr').show();
    }
}

function FlagHandler() {
    $("select[title='Condition']").closest('tr').hide();
    $("input[title='FlagValue']").closest('tr').hide();
    if ($("select[title='Flag']").val().length > 1) {
        $("select[title='Action']").closest('tr').hide();
        $("input[title='FlagValue']").closest('tr').show();
    }
    else {
        $("input[title='FlagValue']").val("");
        if ($("select[title='Condition']").val().length === 0) {
            $("select[title='Action']").closest('tr').show();
        }

        if (!$("input[name='elsecheckbox']").is(":checked")) {
            $("select[title='Condition']").closest('tr').show();
        }
    }
}

function ActionHandler() {
    $("select[title='Condition']").closest('tr').hide();
    $("select[title='Flag']").closest('tr').hide();
    $("select[title='Skill']").closest('tr').hide();
    $("select[title='Prompt']").closest('tr').hide();
    $("select[title='ParentQuestion']").closest('tr').hide();
    $("select[title='PluginAttribute']").closest('tr').hide();
    $("input[title='Message']").closest('tr').hide();
    if ($("select[title='Action']").val() === "Skill" || $("select[title='Action']").val() === "Callback" || $("select[title='Action']").val() === "QueuedCallback") {
        $("select[title='Prompt']").val("");
        $("select[title='ParentQuestion']").val("");
        $("select[title='PluginAttribute']").val("");
        $("input[title='Message']").val("");
        if ($("select[title='Action']").val() !== "QueuedCallback") {
            $("select[title='Skill']").closest('tr').show();
        }
        else {
            $("select[title='Skill']").val("");
        }
    }
    else if ($("select[title='Action']").val() === "Prompt") {
        $("select[title='Skill']").val("");
        $("select[title='ParentQuestion']").val("");
        $("select[title='PluginAttribute']").val("");
        $("input[title='Message']").val("");
        $("select[title='Prompt']").closest('tr').show();
    }
    else if ($("select[title='Action']").val() === "PreferredHunt") {
        $("select[title='Prompt']").val("");
        $("select[title='ParentQuestion']").val("");
        $("select[title='PluginAttribute']").val("");
        $("input[title='Message']").val("");
        $("select[title='Skill']").closest('tr').show();
    }
    else if ($("select[title='Action']").val() === "Question") {
        $("select[title='Skill']").val("");
        $("select[title='Prompt']").val("");
        $("select[title='PluginAttribute']").val("");
        $("input[title='Message']").val("");
        $("select[title='ParentQuestion']").closest('tr').show();
    }
    else if ($("select[title='Action']").val() === "Message") {
        $("select[title='Skill']").val("");
        $("select[title='Prompt']").val("");
        $("select[title='ParentQuestion']").val("");
        $("select[title='PluginAttribute']").val("");
        $("input[title='Message']").closest('tr').show();
    }
    else if ($("select[title='Action']").val() === "Forward") {
        $("select[title='Skill']").val("");
        $("select[title='Prompt']").val("");
        $("select[title='ParentQuestion']").val("");
        $("input[title='Message']").val("");
        $("select[title='PluginAttribute']").closest('tr').show();
    }
    else if ($("select[title='Action']").val().length > 1) {
        $("select[title='Skill']").val("");
        $("select[title='Prompt']").val("");
        $("select[title='ParentQuestion']").val("");
        $("select[title='PluginAttribute']").val("");
        $("input[title='Message']").val("");
    }
    else {
        $("select[title='Skill']").val("");
        $("select[title='Prompt']").val("");
        $("select[title='ParentQuestion']").val("");
        $("select[title='PluginAttribute']").val("");
        $("input[title='Message']").val("");
        if ($("select[title='Flag']").val().length === 0) {
            if (!$("input[name='elsecheckbox']").is(":checked")) {
                $("select[title='Condition']").closest('tr').show();
            }
        }

        if ($("select[title='Condition']").val().length === 0) {
            $("select[title='Flag']").closest('tr').show();
        }
    }
}

function CreateElseBoolean() {
    $("input[title*='Attribute']").closest('tr').before("<tr class='textValue'><td class='ms-formlabel' noWrap='' vAlign='top'>Else</td><td class='ms-formbody' vAlign='top'><input type='checkbox' name='elsecheckbox' class='booleanValue' style='margin-left:0px;'></td></tr>");
    if ($("input[title*='Attribute']").val() === "None of the above") {
        $("input[name='elsecheckbox']").prop('checked', true);
        $("input[title*='Attribute']").prop("disabled", true);
        $("select[title*='Operator']").prop("disabled", true);
        $("input[title='Value']").prop("disabled", true);
        $("input[title*='Order']").prop("disabled", true);
        OperatorHandler();
        ConditionHandler();
        FlagHandler();
        ActionHandler();
    }

    $("input[name='elsecheckbox']").change(function () {
        if ($(this).is(":checked")) {
            $("input[title*='Attribute']").prop("disabled", true);
            $("select[title*='Operator']").prop("disabled", true);
            $("input[title='Value']").prop("disabled", true);
            $("input[title*='Order']").prop("disabled", true);
            $("input[title*='Attribute']").val("None of the above");
            $("select[title*='Operator']").val("Matches regular expression");
            $("input[title='Value']").val(".*");
            $("input[title*='Order']").val("2147483647");
            $("select[title='Condition']").val("");
            OperatorHandler();
            ConditionHandler();
            FlagHandler();
            ActionHandler();
        }
        else {
            $("input[title*='Attribute']").prop("disabled", false);
            $("select[title*='Operator']").prop("disabled", false);
            $("input[title*='Value']").prop("disabled", false);
            $("input[title*='Order']").prop("disabled", false);
            $("input[title*='Attribute']").val("");
            $("select[title*='Operator']").val("");
            $("input[title='Value']").val("");
            $("input[title*='Order']").val("");
            OperatorHandler();
            ConditionHandler();
            FlagHandler();
            ActionHandler();
        }
    });
}