PageSourceSearch

https://muaythaiontario.org/wp-content/plugins/gwconditionallogicd…/gp-conditional-logic-dates.js?ver=6.3.11

js muaythaiontario.org collected 2026-10-04 05:23:33 UTC 6,246 bytes, 231 lines download raw bytes

1
2( function( $ ) {
3
4	var gpGetDateFieldDate = function ($field) {
5
6		var origValue,
7			formatBits = getDateFormatByClass($field.parents('li.gfield').attr('class')).split('_'),
8			mdy = formatBits[0] ? formatBits[0] : 'mdy',
9			sepTypes = {dot: '.', slash: '/', dash: '-'},
10			separator = formatBits[1] ? sepTypes[formatBits[1]] : '/',
11			dateBits,
12			month,
13			day,
14			year;
15
16		/* Dropdown/Fields */
17		if ($field.find('.gfield_date_dropdown_month').length || $field.find('.gfield_date_month').length) {
18
19			var $inputs = $field.find('.ginput_container_date input, .ginput_container_date select');
20
21			month = $inputs.eq(mdy.indexOf('m')).val() - 1;
22			day = $inputs.eq(mdy.indexOf('d')).val();
23			year = $inputs.eq(mdy.indexOf('y')).val();
24
25		/* Datepicker */
26		} else if ( $field.is( '.datepicker, .has-inline-datepicker, .gpro-disabled-datepicker' ) ) {
27
28			origValue  = $field.val();
29			dateBits   = origValue.split( separator );
30			month      = dateBits[ mdy.indexOf( 'm' ) ] - 1;
31			day        = dateBits[ mdy.indexOf( 'd' ) ];
32			year       = dateBits[ mdy.indexOf( 'y' ) ];
33
34		}
35
36		return {
37			month: month,
38			day: day,
39			year: year
40		}
41
42	};
43
44	var gpGetDateFieldDateObject = function ($field) {
45
46		var datebits = gpGetDateFieldDate($field);
47
48		var day = datebits.day;
49		var month = datebits.month;
50		var year = datebits.year;
51
52		if (! day || ( ! month && month !== '0' && month !== 0 ) || ! year ) {
53			return false;
54		}
55
56		date = new Date(year, month, day, 0, 0, 0, 0);
57
58		return date;
59
60	};
61
62	var gpGetDateFieldTimestamp = function ($field) {
63
64		var date = gpGetDateFieldDateObject($field);
65
66		if (!date) {
67			return false;
68		}
69
70		var tzOffset = date.getTimezoneOffset() * 60; // convert to seconds
71
72		if (isNaN(date.getTime())) {
73			return false;
74		}
75
76		return ( date.getTime() / 1000 ) - tzOffset;
77
78	};
79
80	gform.addFilter( 'gform_is_value_match', function( isMatch, formId, rule ) {
81
82		var fieldValue   = false,
83			ruleValue    = rule.value,
84			$sourceInput = jQuery( '#input_' + formId + '_' + rule.fieldId ),
85			isTimeField = $sourceInput.parents( 'li.gfield' ).hasClass( 'gcldf-field-time' );
86
87		if( rule.fieldId == '_gpcld_current_time' || isTimeField ) {
88
89			var currentDate = new Date(),
90				$timeInputs = $sourceInput.parents( 'li.gfield' ).find( 'input, select' ),
91				timeString  = '{0}:{1}{2}'.format( $timeInputs.eq( 0 ).val(), $timeInputs.eq( 1 ).val(), $timeInputs.eq( 2 ).val() );
92
93			var datetime    = isTimeField ? getDateFromTimeString( timeString ) : currentDate,
94				timestamp   = datetime.getTime() / 1000,
95				compareDate = getDateFromTimeString( rule.value );
96
97			/**
98			 * Convert user's local time to UTC.
99			 *
100			 * @since 1.0.1
101			 *
102			 * @param bool   $enable Enable conversion of user's local time to UTC.
103			 * @param object $rule   The current Gravity Forms rule object being evaluated.
104			 * @param int    formId  The current form ID.
105			 */
106			if( gform.applyFilters( 'gpcld_enable_utc_timezone', false, rule, formId ) ) {
107
108				var tzOffset    = datetime.getTimezoneOffset() * 60, // convert to seconds
109					tzTimestamp = ( datetime.getTime() / 1000 ) - tzOffset,
110					tzDatetime  = new Date( tzTimestamp * 1000 );
111
112				timestamp = tzTimestamp;
113
114			}
115
116
117			ruleValue = ( compareDate.getTime() / 1000 );
118
119		} else {
120
121			if( ! $sourceInput.parents( 'li.gfield' ).hasClass( 'gcldf-field' ) ) {
122				return isMatch;
123			}
124
125			timestamp = gpGetDateFieldTimestamp($sourceInput);
126
127		}
128
129		fieldValue = timestamp;
130
131		/*
132		 * Allows use of asterisks (wildcards) when specifying dates in rule values. Will be replaced with
133		 * the corresponding value from the compared date value.
134		 *
135		 * Selected Date: 9/20/2016
136		 * Wildcard Rule: 9/15/*
137		 * Replaced Rule: 9/15/2016
138		 */
139		if( String( ruleValue ).indexOf( '*' ) != -1 ) {
140
141			var ruleBits   = ruleValue.split( '/' );
142			var date = gpGetDateFieldDate($sourceInput);
143			var dateBits = [ date.month, date.day, date.year ];
144
145			for( var i = 0; i < ruleBits.length; i++ ) {
146				if( ruleBits[i] == '*' ) {
147					ruleBits[i] = dateBits[i];
148				}
149			}
150
151			// ruleBits = [ month, day, year ]
152			var date      = new Date( ruleBits[2], ruleBits[0] - 1, ruleBits[1], 0, 0, 0, 0 ),
153				tzOffset  = date.getTimezoneOffset() * 60; // convert to seconds
154
155			ruleValue = ( date.getTime() / 1000 ) - tzOffset;
156
157		}
158
159		if( fieldValue ) {
160
161			var tag = rule.value.match( /{(.+?)}/ );
162
163			if( tag ) {
164
165				var tag  = tag[1].toLowerCase(),
166					days = [ 'sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday' ],
167					date = gpGetDateFieldDateObject($sourceInput);
168
169				switch( tag ) {
170					case 'monday':
171					case 'tuesday':
172					case 'wednesday':
173					case 'thursday':
174					case 'friday':
175					case 'saturday':
176					case 'sunday':
177						fieldValue = !date || isNaN( date.getDay() ) ? '' : date.getDay();
178						ruleValue  = days.indexOf( tag );
179						break;
180				}
181
182			}
183
184		}
185
186		// Modify fieldValue or ruleValue so that rule always returns false until a date is selected.
187		if( fieldValue === false && gform.applyFilters( 'gpcld_require_date_selection', true, formId, rule ) ) {
188			if( rule.operator == 'isnot' ) {
189				fieldValue = ruleValue;
190			} else if( rule.operator != 'is' ) {
191				ruleValue = '';
192			} else {
193				fieldValue = 0;
194			}
195		}
196
197		// must be strings for GF
198		isMatch = gf_matches_operation( String( fieldValue ), String( ruleValue ), rule.operator );
199
200		return isMatch;
201	} );
202
203	function getDateFromTimeString( timeString ) {
204
205		var bits        = timeString.split( /([0-9]{1,2}):([0-9]{2})(am|pm)?/i ), // 09:00pm => [ '', '09', '00', 'pm', '' ]
206			hour        = parseInt( bits[1] ),
207			min         = parseInt( bits[2] ),
208			ampm        = String( bits[3] ).toLowerCase(),
209			currentDate = new Date();
210
211		if( ampm == 'pm' && hour < 12 ) {
212			hour += 12;
213		} else if( ampm == 'am' && hour == 12 ) {
214			hour = 0;
215		}
216
217		return new Date( currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), hour, min, 0, 0 );
218	}
219
220	function getDateFormatByClass( cssClass ) {
221		var classes = cssClass.split( ' ' );
222		for( var i = 0; i < classes.length; i++ ) {
223			if( classes[i].indexOf( 'gcldf-date-format-' ) != -1 ) {
224				var bits = classes[i].split( '-' );
225				return bits[ bits.length - 1 ];
226			}
227		}
228		return false;
229	}
230
231} )( jQuery );

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.