<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

$slug     = $VARS['slug'];
$licenses = apply_filters( 'woofunnels_plugins_license_needed', array() );

$confirmation_message      = '';
$reasons                   = $VARS['reasons']['default'];
$reasons_list_items_html   = '';
$plugin_customized_reasons = array();

$incr = 0;

foreach ( $reasons as $reason ) {
	$list_item_classes = 'reason';
	$reason_html       = '';

	if ( ! empty( $reason['input_type'] ) ) {
		$list_item_classes .= ' has-input';
	}

	if ( isset( $reason['html'] ) ) {
		$list_item_classes .= ' has_html';
	}
	if ( ( isset( $reason['html'] ) && ( ! empty( $reason['html'] ) ) ) ) {
		$reason_html .= '<div class="reason_html">' . $reason['html'] . '</div>';
	}

	$reasons_list_items_html .= sprintf( '<li class="%s" data-input-type="%s" data-input-placeholder="%s"><label><span><input type="radio" name="selected-reason" value="%s"/></span><span>%s</span></label>%s</li>', $list_item_classes, $reason['input_type'], $reason['input_placeholder'], $reason['id'], $reason['text'], $reason_html );
	$incr ++;
}
?>
<style>
    .woofunnels-modal {
        position: fixed;
        overflow: auto;
        height: 100%;
        width: 100%;
        top: 0;
        z-index: 100000;
        display: none;
        background: rgba(0, 0, 0, 0.6)
    }

    .woofunnels-modal .woofunnels-modal-dialog {
        background: transparent;
        position: absolute;
        left: 50%;
        margin-left: -298px;
        top: -100%;
        z-index: 100001;
        width: 596px
    }

    .woofunnels-modal li.reason.has_html .reason_html {
        display: none;
        border: 1px solid #ddd;
        padding: 4px 6px;
        margin: 6px 0 0 20px;
    }

    .woofunnels-modal li.reason.has_html.li-active .reason_html {
        display: block;
    }

    @media (max-width: 650px) {
        .woofunnels-modal .woofunnels-modal-dialog {
            margin-left: -50%;
            box-sizing: border-box;
            padding-left: 10px;
            padding-right: 10px;
            width: 100%
        }

        .woofunnels-modal .woofunnels-modal-dialog .woofunnels-modal-panel > h3 > strong {
            font-size: 1.3em
        }

        .woofunnels-modal .woofunnels-modal-dialog li.reason {
            margin-bottom: 10px
        }

        .woofunnels-modal .woofunnels-modal-dialog li.reason .reason-input {
            margin-left: 29px
        }

        .woofunnels-modal .woofunnels-modal-dialog li.reason label {
            display: table
        }

        .woofunnels-modal .woofunnels-modal-dialog li.reason label > span {
            display: table-cell;
            font-size: 1.3em
        }
    }

    .woofunnels-modal.active {
        display: block
    }

    .woofunnels-modal.active:before {
        display: block
    }

    .woofunnels-modal.active .woofunnels-modal-dialog {
        top: 10%;
        background: #fff;
    }

    .woofunnels-modal .woofunnels-modal-body, .woofunnels-modal .woofunnels-modal-footer {
        border: 0;
        background: #fefefe;
        padding: 25px
    }

    .woofunnels-modal .woofunnels-modal-body {
        border-bottom: 0;
        padding: 0px 23px;
    }

    .woofunnels-modal .woofunnels-modal-body h2 {
        font-size: 20px
    }

    .woofunnels-modal .woofunnels-modal-body > div {
        margin-top: 10px
    }

    .woofunnels-modal .woofunnels-modal-body > div h2 {
        font-weight: bold;
        font-size: 20px;
        margin-top: 0
    }

    .woofunnels-modal .woofunnels-modal-footer {
        border-top: #eeeeee solid 1px;
        text-align: right
    }

    .woofunnels-modal .woofunnels-modal-footer > .button {
        margin: 0 7px
    }

    .woofunnels-modal .woofunnels-modal-footer > .button:first-child {
        margin: 0
    }

    .woofunnels-modal .woofunnels-modal-footer .button-deactivate {
        float: left;
    }

    .woofunnels-modal .woofunnels-modal-panel:not(.active) {
        display: none
    }

    .woofunnels-modal .reason-input {
        margin: 3px 0 3px 22px
    }

    .woofunnels-modal .reason-input input, .woofunnels-modal .reason-input textarea {
        width: 100%
    }

    body.has-woofunnels-modal {
        overflow: hidden
    }

    #the-list .deactivate > .woofunnels-slug {
        display: none
    }

    .woofunnels-modal li.reason-hide {
        display: none;
    }

</style>
<script type="text/javascript">
    var currentPluginName = "";
    var WooFunnelsCustomReasons = {};
    var WooFunnelsDefaultReason = {};
    var WooFunnelsallLicenses = '<?php echo wp_json_encode( $licenses, JSON_UNESCAPED_SLASHES ); ?>';
    (function ($) {
		<?php
		foreach($VARS['reasons'] as $plugin_key => $plugin_reasons) {
		$threshold = apply_filters( 'woofunnels_uninstall_reason_threshold_' . $plugin_key, 2 );
		?>
        WooFunnelsDefaultReason['<?php echo $plugin_key; ?>'] = '';
		<?php
		if ( $plugin_key === "default" ) {
			continue;
		}
		$reasons_list_items_html_custom = "";
		foreach ( $plugin_reasons as $key => $reason ) {
			$list_item_classes = 'reason';
			$reason_html       = '';

			if ( ! empty( $reason['input_type'] ) ) {
				$list_item_classes .= ' has-input';
			}

			if ( isset( $reason['html'] ) ) {
				$list_item_classes .= ' has_html';
			}
			if ( ( isset( $reason['html'] ) && ( ! empty( $reason['html'] ) ) ) ) {
				$reason_html .= '<div class="reason_html">' . $reason['html'] . '</div>';
			}
			$threshold = apply_filters( 'woofunnels_uninstall_reason_threshold_' . $plugin_key, 2 );


			if ( $key < $threshold ) {
				$reasons_list_items_html_custom = sprintf( '<li class="%s" data-input-type="%s" data-input-placeholder="%s"><label><span><input type="radio" name="selected-reason" value="%s"/></span><span>%s</span></label>%s</li>', $list_item_classes, $reason['input_type'], $reason['input_placeholder'], $reason['id'], $reason['text'], $reason_html );

			} else {
				if ( $key == $threshold ) {
					$reasons_list_items_html_custom .= '<li class="advanced show_m_reason" data-input-type="" data-input-placeholder="">
  <a href="javascript:void(0)">I have more specific reason</a>
</li>';
				}
				$reasons_list_items_html_custom .= sprintf( '<li class="%s" data-input-type="%s" data-input-placeholder="%s"><label><span><input type="radio" name="selected-reason" value="%s"/></span><span>%s</span></label>%s</li>', $list_item_classes, $reason['input_type'], $reason['input_placeholder'], $reason['id'], $reason['text'], $reason_html );


			}
		}
		?> WooFunnelsCustomReasons['<?php echo $plugin_key; ?>'] = <?php echo json_encode( $reasons_list_items_html_custom ); ?>;
		<?php } ?>
        var $deactivateLinks = {};
        var reasonsHtml = <?php echo json_encode( $reasons_list_items_html ); ?>,
            modalHtml =
                '<div class="woofunnels-modal<?php echo ( $confirmation_message === "" ) ? ' no-confirmation-message' : ''; ?>">'
                + ' <div class="woofunnels-modal-dialog">'
                + '<div class="woofunnels-modal-header" style="position: relative;display: block;height: 70px;background: #fff;border-bottom: #eeeeee solid 1px;">'
                + '<div style="padding: 25px 15px;"><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 233.1 147.2" style="enable-background:new 0 0 233.1 147.2;height: 32px;width: 33px;float: left;/* background: black; *//* fill: bisque; */" xml:space="preserve">'
                + '<polygon class="st0" points="232,3.8 150.4,143.1 117.9,143.1 198.9,3.8 " style="fill: #1daafc;"></polygon>'
                + '<polygon class="st0" points="167.4,3.8 86.8,143.1 5.2,3.8 102.8,3.8 88.2,32.4 86.3,32.4 54.7,32.4 86.3,88.2 134.4,3.8 "></polygon>'
                + '</svg><span style="float: left; font-size: 19px; font-weight: 600; margin-top: 5px; margin-left: 8px;">Quick Feedback</span></div></div>'
                + '     <div class="woofunnels-modal-body">'
                + '         <div class="woofunnels-modal-panel" data-panel-id="confirm"><p><?php echo $confirmation_message; ?></p></div>'
                + '         <div class="woofunnels-modal-panel active" data-panel-id="reasons"><h3><strong><?php printf( WooFunnels_deactivate::load_str( 'deactivation-share-reason' ) ); ?>:</strong></h3><ul id="reasons-list">' + reasonsHtml + '</ul></div>'
                + '     </div>'
                + '     <div class="woofunnels-modal-footer">'
                + '         <a href="#" class="button button-primary button-deactivate"><?php printf( WooFunnels_deactivate::load_str( 'deactivation-modal-button-submit' ) ); ?></a>'
                + '         <a href="#" class="button button-secondary"><?php printf( __( 'Skip & Deactivate', 'funnel-builder' ) ); ?></a>'  // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
                + '     </div>'
                + ' </div>'
                + '</div>',
            $modal = $(modalHtml),

            $deactivateLink = $('#the-list .deactivate > .woofunnels-slug').prev();

        for (var i = 0; i < $deactivateLink.length; i++) {

            $deactivateLinks[$($deactivateLink[i]).siblings(".woofunnels-slug").attr('data-slug')] = $deactivateLink[i].href;
        }

        $modal.appendTo($('body'));

        registerEventHandlers();

        function registerEventHandlers() {

            $deactivateLink.on("click", function (evt) {
                evt.preventDefault();

                try {
                    currentPluginName = $(this).siblings(".woofunnels-slug").attr('data-slug');

                    // Assuming showModal() is a function that might throw an error
                    showModal();
                } catch (error) {
                    console.error("An error occurred:", error);

                    // Redirect to the href of the clicked link if an error occurs
                    const linkHref = $(this).attr('href');
                    if (linkHref) {
                        window.location.href = linkHref;
                    }
                }
            });



            $modal.on('click', '.show_m_reason a', function (evt) {
                evt.preventDefault();
                $modal.find(".reason-hide").show();
                $(this).parent().remove();
                return false;
            });
            $modal.on('click', '.button', function (evt) {
                evt.preventDefault();

                if ($(this).hasClass('disabled')) {
                    return;
                }

                var _parent = $(this).parents('.woofunnels-modal:first');
                var _this = $(this);


                var $radio = $('input[type="radio"]:checked');


                var $selected_reason = $radio.parents('li:first'),
                    $input = $selected_reason.find('textarea, input[type="text"]');


                $.ajax({
                    url: ajaxurl,
                    method: 'POST',
                    data: {
                        'action': 'woofunnels_submit_uninstall_reason',
                        'reason_id': (0 !== $radio.length) ? $radio.val() : '',
                        'reason_info': (0 !== $input.length) ? $input.val().trim() : '',
                        'plugin_basename': currentPluginName,
                        'licenses': WooFunnelsallLicenses,
                        '_nonce': bwf_secure.nonce
                    },
                    beforeSend: function () {
                        _parent.find('.button').addClass('disabled');
                    },
                    complete: function () {
                        // Do not show the dialog box, deactivate the plugin.
                        window.location.href = $deactivateLinks[currentPluginName];
                    }
                });

            });

            $modal.on('click', 'input[type="radio"]', function () {
                var _parent = $(this).parents('li:first');
                var _parent_ul = $(this).parents('ul#reasons-list');

                _parent_ul.children("li.li-active").removeClass("li-active");

                $modal.find('.reason-input').remove();

                if (_parent.hasClass('has_html')) {
                    _parent.addClass('li-active');
                }
                if (_parent.hasClass('has-input')) {
                    var inputType = _parent.data('input-type'),
                        inputPlaceholder = _parent.data('input-placeholder'),
                        reasonInputHtml = '<div class="reason-input">' + (('textfield' === inputType) ? '<input type="text" />' : '<textarea rows="5"></textarea>') + '</div>';

                    _parent.append($(reasonInputHtml));
                    _parent.find('input, textarea').attr('placeholder', inputPlaceholder).focus();
                }
            });

            // If the user has clicked outside the window, cancel it.
            $modal.on('click', function (evt) {
                var $target = $(evt.target);

                // If the user has clicked anywhere in the modal dialog, just return.
                if ($target.hasClass('woofunnels-modal-body') || $target.hasClass('woofunnels-modal-footer')) {
                    return;
                }

                // If the user has not clicked the close button and the clicked element is inside the modal dialog, just return.
                if (!$target.hasClass('button-close') && ($target.parents('.woofunnels-modal-body').length > 0 || $target.parents('.woofunnels-modal-footer').length > 0)) {
                    return;
                }

                closeModal();
            });
        }

        function showModal() {
            resetModal();

            // Display the dialog box.
            $modal.addClass('active');

            $('body').addClass('has-woofunnels-modal');
        }

        function closeModal() {
            $modal.removeClass('active');

            $('body').removeClass('has-woofunnels-modal');
        }

        function resetModal() {


            if (WooFunnelsCustomReasons.hasOwnProperty(currentPluginName) === true) {
                $modal.find("ul#reasons-list").html(WooFunnelsCustomReasons[currentPluginName]);
            } else {
                $modal.find("ul#reasons-list").html(reasonsHtml);

            }
            var defaultSelect = WooFunnelsDefaultReason[currentPluginName] || WooFunnelsDefaultReason['default'];

            $modal.find('.button').removeClass('disabled');

            // Uncheck all radio buttons.
            $modal.find('input[type="radio"]').prop('checked', false);

            if (defaultSelect !== "") {
                $modal.find('input[type="radio"][value="' + defaultSelect + '"]').prop('checked', true);
                $modal.find('input[type="radio"][value="' + defaultSelect + '"]').parents('li.reason').addClass('li-active');
            }

            // Remove all input fields ( textfield, textarea ).
            $modal.find('.reason-input').remove();

            $modal.find(".reason-hide").hide();
            /*
             * If the modal dialog has no confirmation message, that is, it has only one panel, then ensure
             * that clicking the deactivate button will actually deactivate the plugin.
             */
            if ($modal.hasClass('no-confirmation-message')) {

                showPanel('reasons');
            } else {

                showPanel('confirm');
            }
        }

        function showPanel(panelType) {
            $modal.find('.woofunnels-modal-panel').removeClass('active ');
            $modal.find('[data-panel-id="' + panelType + '"]').addClass('active');

        }


        function getCurrentPanel() {
            return $modal.find('.woofunnels-modal-panel.active').attr('data-panel-id');
        }
    })(jQuery);
</script>
