Current File : /home/gulsvnnd/heaventouchspa.com/wp-content/plugins/vamtam-elements-b/assets/fl-subscribe-form.js
( function( $ ) {

	VamtamSubscribeForm = function( settings )
	{
		this.settings  = settings;
		this.nodeClass = '.fl-node-' + settings.id;
		this.form      = $( this.nodeClass + ' .fl-subscribe-form' );
		this.button    = this.form.find( 'a.vamtam-button' );
		this._init();
	};

	VamtamSubscribeForm.prototype = {

		settings	: {},
		nodeClass	: '',
		form		: null,
		button		: null,

		_init: function()
		{
			this.button.on( 'click', $.proxy( this._submitForm, this ) );
		},

		_submitForm: function( e )
		{
			var postId         = this.form.closest( '.fl-builder-content' ).data( 'post-id' ),
				templateId     = this.form.data( 'template-id' ),
				templateNodeId = this.form.data( 'template-node-id' ),
				nodeId         = this.form.closest( '.fl-module' ).data( 'node' ),
				buttonText     = this.button.find( '.vamtam-button-text' ).text(),
				waitText       = this.button.closest( '.fl-form-button' ).data( 'wait-text' ),
				name           = this.form.find( 'input[name=fl-subscribe-form-name]' ),
				email          = this.form.find( 'input[name=fl-subscribe-form-email]' ),
				re             = /\S+@\S+\.\S+/,
				valid          = true;

			e.preventDefault();

			if ( this.button.hasClass( 'fl-form-button-disabled' ) ) {
				return; // Already submitting
			}
			if ( name.length > 0 && name.val() == '' ) {
				name.addClass( 'fl-form-error' );
				name.siblings( '.fl-form-error-message' ).show();
				valid = false;
			}
			if ( '' == email.val() || ! re.test( email.val() ) ) {
				email.addClass( 'fl-form-error' );
				email.siblings( '.fl-form-error-message' ).show();
				valid = false;
			}

			if ( valid ) {

				this.form.find( '> .fl-form-error-message' ).hide();
				this.button.find( '.vamtam-button-text' ).text( waitText );
				this.button.data( 'original-text', buttonText );
				this.button.addClass( 'fl-form-button-disabled' );

				$.post( FLBuilderLayoutConfig.paths.wpAjaxUrl, {
					action  			: 'fl_builder_subscribe_form_submit',
					name    			: name.val(),
					email   			: email.val(),
					post_id 			: postId,
					template_id 		: templateId,
					template_node_id 	: templateNodeId,
					node_id 			: nodeId
				}, $.proxy( this._submitFormComplete, this ) );
			}
		},

		_submitFormComplete: function( response )
		{
			var data       = JSON.parse( response ),
				buttonText = this.button.data( 'original-text' );

			if ( data.error ) {

				if ( data.error ) {
					this.form.find( '> .fl-form-error-message' ).text( data.error );
				}

				this.form.find( '> .fl-form-error-message' ).show();
				this.button.removeClass( 'fl-form-button-disabled' );
				this.button.find( '.vamtam-button-text' ).text( buttonText );
			} else if ( 'message' == data.action ) {
				this.form.find( '> *' ).hide();
				this.form.append( '<div class="fl-form-success-message">' + data.message + '</div>' );
			} else if ( 'redirect' == data.action ) {
				window.location.href = data.url;
			}
		}
	}

	function initSubForms() {
		const subForms = document.querySelectorAll( '.fl-module-vamtam-subscribe-form' );
			subForms.forEach( form => {
				const id = form.dataset.node;
				//We're essentially binding the form's button click to the appropriate handler.
				new VamtamSubscribeForm( {
					id: id,
				} )
			});
	}

	document.addEventListener( 'DOMContentLoaded', function() {
		if ( window.FLBuilder ) {
			FLBuilder.addHook( 'didCompleteAJAX', initSubForms );
			FLBuilder.addHook( 'didRenderLayoutComplete', initSubForms );
		}
		initSubForms();
	} );
})( jQuery );