PageSourceSearch

https://rachelavalon.com/wp-content/plugins/optin-cat-personal-wp/assets/script.js?ver=2.4.1

js rachelavalon.com collected 2026-10-05 18:32:48 UTC 7,524 bytes, 226 lines download raw bytes

1/* jshint asi: true */
2
3jQuery( document ).ready(function($){
4	
5	function is_email( email ) {
6		var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/
7		return regex.test(email)
8	}
9
10	function set_cookie( name, value, exdays ) {
11		if ( exdays === 0 ) {
12			document.cookie = name + "=" + value + "" + ";" + "path=/;"
13		} else {
14			var d = new Date()
15			d.setTime( d.getTime() + ( exdays*24*60*60*1000 ) )
16			document.cookie = name + "=" + value + "" + ";" + "path=/;" + "expires=" + d.toUTCString()
17		}
18	}
19
20	function get_cookie( name ) {
21		var value = "; " + document.cookie
22		var parts = value.split( "; " + name + "=" )
23		
24		if ( parts.length === 2 ) {
25			return parts.pop().split(";").shift()
26		} else {
27			return false
28		}
29	}
30
31	$( document ).on( 'submit', '.fca_eoi_form', function (e) {
32		
33		e.preventDefault()
34		
35		var $this = $( this )
36		var $email_field = $( '[name=email]', $this )
37		var $name_field = $( '[name=name]', $this )
38		var name = $name_field.val()
39		var email = $email_field.val()
40		var list_id = $this.data( 'fca_eoi_list_id' )
41		var $button = $( '[type=submit]', $this )
42		var button_initial_val
43		var highlight_interval = false;
44		var thank_you_mode = $this.data( 'fca_eoi_thank_you_mode' )
45		var thank_you_page = $this.data( 'fca_eoi_thank_you_page' )
46		var cookie_duration = $this.data( 'fca_eoi_success_cookie_duration' )
47		var subscribe_msg = $this.data( 'fca_eoi_sub_msg' )
48		var has_error = false
49		var form_id = $( '[name=fca_eoi_form_id]', $this ).val()
50				
51		// Attach tooltips
52		$this.find('.tooltipstered').tooltipster('hide')
53		$( '[name=email], [name=name]', $this ).not('.tooltipstered').each( function() {
54
55			var $this = $( this )
56			var tooltipWidth = $this.width() * .8
57
58			$this.tooltipster( {
59				contentAsHTML: true,
60				fixedWidth: tooltipWidth,
61				minWidth: tooltipWidth,
62				maxWidth: tooltipWidth,
63				trigger: 'none',
64				theme: ['tooltipster-borderless', 'tooltipster-optin-cat']
65			} )
66		} )
67
68		// Remove tooltip and tick on focus
69		$( '[name=email], [name=name]', $( this ) ).focus( function() {
70			var $this = $( this )
71			var $button = $( '[type=submit]', $this.closest( '.fca_eoi_form' ) )
72			var button_initial_val = $button.data( 'fca_eoi_initial_val' )
73
74			// Remove any previous icon
75			if( 'undefined' !== typeof( button_initial_val ) ) {
76				$button.val( button_initial_val )
77			}
78			
79			// Hide tooltip
80			$( this ).tooltipster( 'hide' )
81		} )
82
83		// Save or save and get initial button value
84		if( $button.data( 'fca_eoi_initial_val' ) ) {
85			button_initial_val = $button.data( 'fca_eoi_initial_val' )
86		} else {
87			button_initial_val = $button.val()
88			$button.data( 'fca_eoi_initial_val', button_initial_val )
89		}
90		
91		// Remove any previous icon
92		$button.val( button_initial_val );
93		
94		// Get Error Messages from hidden fields
95		fcaEoiScriptData.invalid_email = $this.find('.fca_eoi_error_texts_email').val()
96		fcaEoiScriptData.field_required = $this.find('.fca_eoi_error_texts_required').val()
97		
98		// Check email address
99		if( ! email || ! is_email( email ) ) {
100			$email_field.tooltipster( 'content', email ? fcaEoiScriptData.invalid_email : fcaEoiScriptData.field_required )
101			$email_field.tooltipster( 'show' );
102			$button.val( '✗ ' + button_initial_val );
103			has_error = true;
104		}
105
106		// Check name
107		if( $name_field.is(':visible') && !name ) {
108			$name_field.tooltipster( 'content', fcaEoiScriptData.field_required );
109			$name_field.tooltipster( 'show' );
110			$button.val( '✗ ' + button_initial_val );
111			has_error = true;
112		}
113	
114		// Exit if honeypot is entered
115		if( $( '[name=i_agree]', $this ).prop( 'checked' ) ) {
116			return false;
117		}
118		
119		// Exit if there is any error
120		if( has_error ) {
121			return false;
122		}
123		
124		var gdpr_consent = 'unknown'
125		if( fcaEoiScriptData.gdpr_checkbox ) {
126			if( $this.find( '.fca_eoi_gdpr_consent' ).length === 0 ) {
127				$this.find('.fca_eoi_layout_field_wrapper').hide()
128				$this.find('.fca_eoi_layout_email_field_inner').hide()
129				$this.find('.fca_eoi_layout_name_field_inner').hide()	
130				if ( $this.closest( '.fca_eoi_form_wrapper ' ).hasClass( 'fca_eoi_layout_banner_wrapper' )  ) {
131					$this.find('.fca_eoi_layout_headline_copy_wrapper')[0].style.setProperty( 'display', 'block', 'important' )
132					$this.find('.fca_eoi_layout_headline_copy_wrapper').html( '<div style="font-size: 14px;">' + fcaEoiScriptData.consent_headline + '<br>' + '<label><input class="fca_eoi_gdpr_consent" value="" type="checkbox"></input>'+fcaEoiScriptData.consent_msg+'</label></div>')
133				} else { 
134					$this.find('.fca_eoi_layout_description_copy_wrapper')[0].style.setProperty( 'display', 'block', 'important' )
135					$this.find('.fca_eoi_layout_description_copy_wrapper').html( '<div style="text-align:left;">' + fcaEoiScriptData.consent_headline + '<br><br>' + '<label><input class="fca_eoi_gdpr_consent" value="" type="checkbox"></input>'+fcaEoiScriptData.consent_msg+'</label></div>')
136				}
137				return false
138			}
139			
140			gdpr_consent = $this.find( '.fca_eoi_gdpr_consent' ).prop('checked')
141			
142			if ( gdpr_consent == false ) {
143				$this.find( '.fca_eoi_gdpr_consent' ).not('.tooltipstered').tooltipster( {
144					contentAsHTML: true,
145					trigger: 'none',
146					theme: ['tooltipster-borderless', 'tooltipster-optin-cat']
147				} ).tooltipster( 'content', fcaEoiScriptData.field_required ).tooltipster( 'show' )
148				return false
149			}
150			
151		}
152		
153		$button.val( subscribe_msg );
154		//DISABLE BUTTON CLICK EVENT
155		$button.prop('disabled', true);	
156
157		var tz = jstz.determine() 
158		
159		$.ajax({
160			type: 'POST',
161			url: fcaEoiScriptData.ajax_url,
162			data: { 
163				'email': email,
164				'name': name,
165				'action': 'fca_eoi_subscribe',
166				'list_id': list_id,
167				'form_id': form_id,
168				'nonce': fcaEoiScriptData.nonce,
169				'timezone': tz.name(),
170				'consent_granted': gdpr_consent
171			}
172		}).done( function( data ) {
173			
174			// Stop highlighting and add an icon for success/failure
175			if ( data === '✓' ) {
176				$button.val( data + ' ' + button_initial_val );
177				
178				set_cookie( 'fca_eoi_success_' + form_id, Math.floor(Date.now() / 1000), cookie_duration )
179				
180				//REMOVE FROM ACTIVE
181				var activeOptins = JSON.parse( get_cookie( 'fca_eoi_active_optins' ) )
182				if ( !Array.isArray( activeOptins ) ) {
183					activeOptins = []
184				}
185				var index = activeOptins.indexOf( form_id )
186				if ( index !== -1 ) {
187					activeOptins.splice( index, 1 )
188				}
189				set_cookie ( 'fca_eoi_active_optins', JSON.stringify ( activeOptins ) )
190	
191			} else if( data === '✗ Failed to add user - denied' ) {
192				$button.prop('disabled', false);
193				$button.val( button_initial_val );
194				$this.find( '.fca_eoi_gdpr_consent' ).tooltipster( 'show' )
195			} else {
196				$button.prop('disabled', false);
197				$button.val( data );
198			}
199		
200			if ( thank_you_mode === 'ajax' && data === '✓' ) {		
201				clearInterval( highlight_interval )
202				if ( thank_you_page && '✓' === data ) {
203					tooltipWidth = $button.width()
204					$button.tooltipster( {
205						contentAsHTML: true,
206						trigger: 'none',
207						fixedWidth: tooltipWidth,
208						minWidth: tooltipWidth,
209						maxWidth: tooltipWidth,
210						arrow: false,
211						theme: ['tooltipster-borderless', 'tooltipster-optin-cat']
212					} );
213					
214					$button.tooltipster( 'content', thank_you_page )
215					$button.tooltipster( 'show' )
216					$email_field.prop('disabled', true)
217					$name_field.prop('disabled', true)
218					
219					$('.tooltipster-content').css("background-color", "#148544")		
220				}
221			} else if ( data === '✓' ) {
222				window.location.href = thank_you_page
223			}
224		})				
225	})
226})

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.