/**
 * Show an upgrade to custom fields notice when viewing the forms post type table
 *
 * @since 5.0.0
 * @version 5.0.0
 */

( function() {

	var __         = window.wp.i18n.__,
		BTN_CLASS  = 'page-title-action',
		HELP_CLASS = 'llms-forms-help-text',
		addNewBtn = document.querySelector( '.' + BTN_CLASS );

	// Don't do anything if the button already exists.
	if ( addNewBtn ) {
		return;
	}

	/**
	 * Create the disabled "Add New Form" button
	 *
	 * @since 5.0.0
	 *
	 * @return {Element} Button DOM node.
	 */
	function createNewButton() {

		var btn = document.createElement( 'button' );

		btn.className = BTN_CLASS + ' button';
		btn.innerHTML = __( 'Add New Form', 'lifterlms' );
		btn.disabled  = 'disabled';
		btn.style     = 'vertical-align: inherit';

		return btn;

	}

	/**
	 * Create the toggle "Help" icon button
	 *
	 * @since 5.0.0
	 *
	 * @return {Element} Button DOM node.
	 */
	function createHelpIcon() {

		var btn = document.createElement( 'button' ),
			txt = __( 'Help', 'lifterlms' );

		btn.className = 'button dashicons dashicons-editor-help';
		btn.style     = [
			'border-radius: 50%;',
			'border-color: #50575e',
			'color: #50575e',
			'font-size: 23px;',
			'height: 30px;',
			'line-height: 1;',
			'margin-left: 5px;',
			'padding: 0;',
			'position: relative;',
			'top: 3px',
			'vertical-align: baseline;',
			'width: 30px;',
		].join( ';' );

		btn.innerHTML = '<span class="screen-reader-text>' + txt + '</span>';
		btn.title     = __( 'Help', 'lifterlms' );

		btn.addEventListener( 'click', toggleHelpNode );

		return btn;

	}

	/**
	 * Create the help notice node
	 *
	 * @since 5.0.0
	 *
	 * @return {Element} Notice div DOM node.
	 */
	function createHelpNode() {

		var div = document.createElement( 'div' );

		div.className = HELP_CLASS;
		div.style     = 'display:none';

		div.innerHTML  = '<p><b>Want to create custom forms and custom fields for your forms?</b></p>';
		div.innerHTML += '<p>Create unique student information forms for specific courses and memberships. Also unlock the power of custom fields so you can collect and display any form field data you can imagine.</p>';
		div.innerHTML += '<p><a class="button-primary" target="_blank" rel="noopener" href="https://lifterlms.com/product/custom-fields/?utm_source=LifterLMS%20Plugin&utm_medium=Add%20Form%20Notice&utm_campaign=Add%20Form%20In%20App%20Upgrade%20Flow">Learn More</a></p>';

		return div;

	}

	/**
	 * Callback function for toggling the help notice dispaly
	 *
	 * @since 5.0.0
	 *
	 * @return {void}
	 */
	function toggleHelpNode() {

		var el = document.querySelector( '.' + HELP_CLASS );

		if ( 'none' === el.style.display ) {
			el.style.display = 'block';
			el.className += ' notice notice-info';
		} else {
			el.style.display = 'none';
		}

	}

	/**
	 * Initialize
	 *
	 * Creates and add elements to the dom and binds UI events.
	 *
	 * @since 5.0.0
	 *
	 * @return {void}
	 */
	function init() {

		var title = document.querySelector( '.wp-heading-inline' ),
			btn   = createNewButton();

		title.after( btn );
		btn.after( createHelpIcon() );

		document.querySelector( '.wrap' ).insertBefore( createHelpNode(), document.querySelector( '.wp-header-end' ) );

	}

	// Go.
	init();

} )();