<!--<?php//for docblock, @see MCI_Footnotes_Template::process_template()
	/**
	 * Footnote button for the Classic Editor text mode.
	 * 
	 * @since 1.3.0
	 * @lastmodified 2021-02-18T2043+0100
	 * 
	 * @since 2.5.4  Bugfix: Editor button: Classic Editor text mode: try to fix uncaught reference error of “QTags is not defined”, thanks to @dpartridge bug report.
	 * @since 2.5.4  Bugfix: Editor button: Classic Editor text mode: correct label to singular.
	 */?>
-->
<script type="text/javascript">
	/**
	 * Brackets the selected text with tags in the text area.
	 *
	 * @param string elementID
	 * @param string openTag
	 * @param string closeTag
	 */
	function MCI_Footnotes_wrapText(elementID, openTag, closeTag) {
		var textArea = jQuery('#' + elementID);
		var len = textArea.val().length;
		var start = textArea[0].selectionStart;
		var end = textArea[0].selectionEnd;
		var selectedText = textArea.val().substring(start, end);
		var replacement = openTag + selectedText + closeTag;
		textArea.val(textArea.val().substring(0, start) + replacement + textArea.val().substring(end, len));
	}
	/**
	 * Adds a button to the Classic Editor text mode.
	 *
	 * - Bugfix: Editor button: Classic Editor text mode: try to fix uncaught reference error of “QTags is not defined”, thanks to @dpartridge bug report.
	 *
	 * @reporter @dpartridge
	 * @link https://wordpress.org/support/topic/qtags-addbutton/
	 * 
	 */
	if ( QTags ) {
		QTags.addButton( 'MCI_Footnotes_QuickTag_button', 'footnote', MCI_Footnotes_text_editor_callback );
	}

	/**
	 * callback function when the button is clicked
	 * executes a ajax call to get the start and end tag for the footnotes and
	 * adds them in before and after the selected text
	 */
	function MCI_Footnotes_text_editor_callback() {
		jQuery.ajax({
			type: 'POST',
			url: '/wp-admin/admin-ajax.php',
			data: {
				action: 'footnotes_getTags'
			},
			success: function(data, textStatus, XMLHttpRequest){
				var l_arr_Tags = JSON.parse(data);
				MCI_Footnotes_wrapText("content", l_arr_Tags['start'], l_arr_Tags['end']);
			},
			error: function(MLHttpRequest, textStatus, errorThrown){
			}
		});
	}
</script>
