function bws_show_settings_notice() {
	"use strict";
	(function($) {
		$( '.updated.fade:not(.bws_visible), .error:not(.bws_visible)' ).css( 'display', 'none' );
		$( '#bws_save_settings_notice' ).css( 'display', 'block' );
	})( jQuery );
}

(function($) {
	"use strict";
	$( document ).ready(
		function() {
				/**
				* add notice about changing on the settings page
				*/
				$( '.bws_form input, .bws_form textarea, .bws_form select' ).on(
					"change paste select",
					function( e ) {
						if ( $( this ).attr( 'type' ) != 'submit' && ! $( this ).hasClass( 'bws_no_bind_notice' ) && typeof ( e.originalEvent ) != 'undefined' ) {
							bws_show_settings_notice();
						};
					}
				);
				$( '.bws_save_anchor' ).on(
					"click",
					function( event ) {
						event.preventDefault();
						$( '.bws_form #bws-submit-button' ).click();
					}
				);

				/* custom code */

			if ( 'function' == typeof wp.CodeMirror || 'function' == typeof CodeMirror ) {
				var CodeMirrorFunc = ( typeof wp.CodeMirror != 'undefined' ) ? wp.CodeMirror : CodeMirror;
				if ( $( '#bws_newcontent_css' ).length > 0 ) {
					var editor = CodeMirrorFunc.fromTextArea(
						document.getElementById( 'bws_newcontent_css' ),
						{
							mode: "css",
							theme: "default",
							styleActiveLine: true,
							matchBrackets: true,
							lineNumbers: true,
							addModeClass: 'bws_newcontent_css',
              readOnly: 'nocursor'
						}
					);
				}

				if ( $( '#bws_newcontent_php' ).length > 0 ) {
					var editor = CodeMirrorFunc.fromTextArea(
						document.getElementById( "bws_newcontent_php" ),
						{
							mode: 'text/x-php',
							styleActiveLine: true,
							matchBrackets: true,
							lineNumbers: true,
              readOnly: 'nocursor'
						}
					);
					/* disable lines */
					editor.markText( {ch:0,line:0}, {ch:0,line:5}, { readOnly: true, className: 'bws-readonly' } );
				}

				if ( $( '#bws_newcontent_js' ).length > 0 ) {
					var editor = CodeMirrorFunc.fromTextArea(
						document.getElementById( "bws_newcontent_js" ),
						{
							mode: 'javascript',
							styleActiveLine: true,
							matchBrackets: true,
							lineNumbers: true,
              readOnly: 'nocursor'
						}
					);
				}
			}

			/* banner to settings */
			$( '.bws_banner_to_settings_joint .bws-details' ).addClass( 'hidden' ).removeClass( 'hide-if-js' );
			$( '.bws_banner_to_settings_joint .bws-more-links' ).on(
				"click",
				function( event ) {
					event.preventDefault();
					if ( $( '.bws_banner_to_settings_joint .bws-less' ).hasClass( 'hidden' ) ) {
						$( '.bws_banner_to_settings_joint .bws-less, .bws_banner_to_settings_joint .bws-details' ).removeClass( 'hidden' );
						$( '.bws_banner_to_settings_joint .bws-more' ).addClass( 'hidden' );
					} else {
						$( '.bws_banner_to_settings_joint .bws-less, .bws_banner_to_settings_joint .bws-details' ).addClass( 'hidden' );
						$( '.bws_banner_to_settings_joint .bws-more' ).removeClass( 'hidden' );
					}
				}
			);

				/* help tooltips */
			if ( $( '.bws_help_box' ).length > 0 ) {
				if ( $( 'body' ).hasClass( 'rtl' ) ) {
					var current_position = { my: "right top+15", at: "right bottom" };
				} else {
					var current_position = { my: "left top+15", at: "left bottom" };
				}
					$( document ).tooltip(
						{
							items: $( '.bws_help_box' ),
							content: function() {
								return $( this ).find( '.bws_hidden_help_text' ).html()
							},
							show: null, /* show immediately */
							tooltipClass: "bws-tooltip-content",
							position: current_position,
							open: function( event, ui ) {
								if ( typeof( event.originalEvent ) === 'undefined' ) {
									return false;
								}
								if ( $( event.originalEvent.target ).hasClass( 'bws-auto-width' ) ) {
									ui.tooltip.css( "max-width", "inherit" );
								}
								var $id = $( ui.tooltip ).attr( 'id' );
								/* close any lingering tooltips */
								$( 'div.ui-tooltip' ).not( '#' + $id ).remove();
							},
							close: function( event, ui ) {
								ui.tooltip.hover(
									function() {
										$( this ).stop( true ).fadeTo( 200, 1 );
									},
									function() {
										$( this ).fadeOut(
											'200',
											function() {
												$( this ).remove();
											}
										);
									}
								);
							}
						}
					);
			}

				/**
				 * Handle the styling of the "Settings" tab on the plugin settings page
				 */
				var tabs = $( '#bws_settings_tabs_wrapper' );
			if ( tabs.length ) {
				var current_tab_field = $( 'input[name="bws_active_tab"]' ),
					prevent_tabs_change    = false,
					active_tab             = current_tab_field.val();
				if ( '' == active_tab ) {
					var active_tab_index = 0;
				} else {
					var active_tab_index = $( '#bws_settings_tabs li[data-slug=' + active_tab + ']' ).index();
				}

						$( '.bws_tab' ).css( 'min-height', $( '#bws_settings_tabs' ).css( 'height' ) );

						/* jQuery tabs initialization */
						tabs.tabs(
							{
								active: active_tab_index
							}
						).on(
							"tabsactivate",
							function( event, ui ) {
								if ( ! prevent_tabs_change ) {
									active_tab = ui.newTab.data( 'slug' );
									current_tab_field.val( active_tab );
								}
								prevent_tabs_change = false;
							}
						);
				$( '.bws_trigger_tab_click' ).on(
					'click',
					function () {
							$( '#bws_settings_tabs a[href="' + $( this ).attr( 'href' ) + '"]' ).click();
					}
				);
			}
				/**
				 * Hide content for options on the plugin settings page
				 */
				var options = $( '.bws_option_affect' );
			if ( options.length ) {
				options.each(
					function() {
						var element = $( this );
						if ( element.is( ':selected' ) || element.is( ':checked' ) ) {
							$( element.data( 'affect-show' ) ).show();
							$( element.data( 'affect-hide' ) ).hide();
						} else {
							$( element.data( 'affect-show' ) ).hide();
							$( element.data( 'affect-hide' ) ).show();
						}
						if ( element.is( 'option' ) ) {
							element.parent().on(
								'change',
								function() {
									var affect_hide = element.data( 'affect-hide' ),
									affect_show     = element.data( 'affect-show' );
									if ( element.is( ':selected' ) ) {
										$( affect_show ).show();
										$( affect_hide ).hide();
									} else {
										$( affect_show ).hide();
										$( affect_hide ).show();
									}
								}
							);
						} else {
							element.on(
								'change',
								function() {
									var affect_hide = element.data( 'affect-hide' ),
									affect_show     = element.data( 'affect-show' );
									if ( element.is( ':selected' ) || element.is( ':checked' ) ) {
										$( affect_show ).show();
										$( affect_hide ).hide();
									} else {
										$( affect_show ).hide();
										$( affect_hide ).show();
									}
								}
							);
						}
					}
				);
			}
		}
	);
})( jQuery );
