( function( $ ) {

	FLBuilder.registerModuleHelper( 'search', {

		init: function()
		{
			var form = $( '.fl-builder-settings:visible' ),
				icon = form.find( 'input[name=btn_icon]' ),
				btnAlign = form.find( 'input[name=btn_align]' );

			$( 'input[name=btn_bg_color]' ).on( 'change', this._previewButtonBackground );
			$( 'select[name=layout]' ).on( 'change', $.proxy( this._toggleBtnSettings, this ) );
			btnAlign.on( 'change', () => this._previewButtonAlign() );
			icon.on( 'change', this._flipSettings );
			this._toggleBtnSettings();
			this._flipSettings();
		},

		_previewButtonBackground: function( e )
		{
			var preview	= FLBuilder.preview,
				selector = preview.classes.node + ' .fl-button:is(a, button), ' + preview.classes.node + ' a.fl-button:visited',
				form = $( '.fl-builder-settings:visible' ),
				style = form.find( 'select[name=btn_style]' ).val(),
				bgColor = form.find( 'input[name=btn_bg_color]' ).val();

			if ( 'flat' === style ) {
				if ( '' !== bgColor && bgColor.indexOf( 'rgb' ) < 0 ) {
					bgColor = '#' + bgColor;
				}
				preview.updateCSSRule( selector, 'background-color', bgColor );
				preview.updateCSSRule( selector, 'border-color', bgColor );
			} else {
				preview.delayPreview( e );
			}
		},

		_toggleBtnSettings: function()
		{
			var form       = $( '.fl-builder-settings:visible' ),
			    layout     = form.find( 'select[name=layout]' ).val(),
				btnAction  = form.find( 'select[name=btn_action]' ),
				btnToggles = btnAction.data('toggle'),
				fields     = [];

			if( 'undefined' === typeof btnToggles ) {
				return;
			}

			for( var i in btnToggles ){
				if( 'undefined' === typeof btnToggles[i].fields ) {
					return;
				}

				fields = btnToggles[i].fields.map(function(val){
					return '#fl-field-' + val;
				});

				if( 'button' === layout && i === btnAction.val() ){
					$( fields.join(', ') ).show();
				}
				else {
					$( fields.join(', ') ).hide();
				}
			}
		},

		_previewButtonAlign: function()
		{
			var preview	 = FLBuilder.preview,
				selector = preview.classes.node + ' .fl-search-form-wrap, ' + preview.classes.node + ' .fl-search-form-fields',
				property = 'justify-content',
				form     = $( '.fl-builder-settings:visible' ),
				layout   = form.find( 'select[name=layout]' ).val(),
				action   = form.find( 'select[name=btn_action]' ).val(),
				align    = form.find( 'input[name=btn_align]' ).val();

			if ( 'stacked' == layout ) {
				selector = preview.classes.node + ' .fl-button-wrap';
				property = 'text-align';
			}
			else if ( 'button' == layout && 'expand' == action ) {
				selector += ', ' + preview.classes.node + ' .fl-search-form-fields form:has(.fl-button-wrap)';
			}

			preview.updateCSSRule( selector, property, align );
		},

		_flipSettings: function() {
			var form  = $( '.fl-builder-settings' ),
				icon  = form.find( 'input[name=btn_icon]' );
			if ( -1 !== icon.val().indexOf( 'fad fa') ) {
				$('#fl-field-btn_duo_color1').show();
				$('#fl-field-btn_duo_color2').show();
				$('#fl-builder-settings-section-button_icon_color').hide();
			} else {
				$('#fl-field-btn_duo_color1').hide();
				$('#fl-field-btn_duo_color2').hide();
				$('#fl-builder-settings-section-button_icon_color').show();
			}
		},

	});

})(jQuery);
