PageSourceSearch

https://www.emphasisrecords.com/cfg-contactform-30/js/contactform.js

js emphasisrecords.com collected 2026-10-07 17:45:37 UTC 9,267 bytes, 260 lines download raw bytes

1jQuery(function(){
2	
3	/*
4	if(!jQuery.isFunction(jQuery.fn.on)){
5		var jquery_version_error_message = 'The contact form requires jQuery 1.7.2 to work properly.<br />jQuery '+jQuery().jquery+' is loaded.';
6		jQuery('.cfg-contactform').prepend('<p style="color:#FF0000">'+jquery_version_error_message+'</p>');
7	}
8	*/
9	
10	jQuery('#cfg-contactform-30 .cfg-uploadfilename').val(''); // FF may keep the file name in the cfg-uploadfilename input after submitting and refreshing the page
11	
12	jQuery('#cfg-contactform-30 .cfg-captcha-refresh').click(function(){
13		
14		jQuery('#cfg-contactform-30 .cfg-captcha-img').attr('src','cfg-contactform-30/inc/captcha.php?r='+Math.random());
15	});
16	
17	jQuery('#cfg-contactform-30 .cfg-submit').click(function(){
18		
19		var formcontainer = jQuery(this).closest('.cfg-contactform');
20		var loading = formcontainer.find('.cfg-loading');
21		
22		loading.show();
23		
24		var submit_btn =  jQuery(this);
25		submit_btn.hide();
26		
27		formcontainer.find('.cfg-errormessage').hide().remove();
28		
29		var form_value_array = Array();
30		var radio_value = Array();
31		var checkbox_value = Array();
32		var selectmultiple_value = Array();
33		var deleteuploadedfile_value = Array();
34		
35		formcontainer.find('.cfg-form-value').each(function()
36		{
37			var elementlabel = jQuery(this).closest('.cfg-element-container').find('.cfg-label-value');
38			var elementlabel_id = elementlabel.closest('label').attr('id');
39			var elementlabel_value = elementlabel.html();
40			
41			
42			
43			// catch uploads
44			if(jQuery(this).hasClass('cfg-uploadfilename'))
45			{
46				var key = jQuery(this).prop('name');
47				var value =  jQuery.trim(jQuery(this).val());
48				
49				var deletefile = jQuery(this).closest('.cfg-element-content').find('.cfg-uploaddeletefile').val();
50							
51				form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value, 'element_type':'upload', 'filename':value, 'element_type':'upload', 'deletefile':deletefile});
52			}
53			
54			
55			// catch input text values, textarea values, select values
56			if(jQuery(this).is('.cfg-type-text, .cfg-type-textarea, .cfg-type-select'))
57			{
58				var key = jQuery(this).prop('id');
59				var value = jQuery(this).val();
60				form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
61			}
62			
63			
64			// catch radiobutton values
65			if(jQuery(this).is(':radio'))
66			{
67				var key = jQuery(this).prop('name');
68				var value = jQuery(this).val();
69				
70				var check_index_radio_form_value = form_value_array.length+1;
71				
72				if(jQuery(this).is(':checked')){
73					form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
74					radio_value[key] = value;
75				}
76				
77				if( jQuery(this).is( jQuery(this).closest('.cfg-element-container').find('input[name='+key+']:last')) )
78				{
79					if(!radio_value[key]){
80						form_value_array.push({'element_id': key, 'element_value': '', 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
81					}
82				}
83			}
84	
85			
86			// catch checkbox values
87			if(jQuery(this).is(':checkbox'))
88			{
89				var key = jQuery(this).prop('name');
90				var value = jQuery(this).val();
91					
92				if(jQuery(this).is(':checked'))
93				{
94					
95					form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
96					
97					checkbox_value[key] = value;
98					
99				}
100				
101				if( jQuery(this).is(jQuery(this).closest('.cfg-element-container').find('input[name='+key+']:last')))
102				{
103					// we are at the last checkbox, and the checkbox[name] array value is still empty => insert fieldname: '' in the notification
104					if(!checkbox_value[key])
105					{
106						form_value_array.push({'element_id': key, 'element_value': '', 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
107					}
108				}
109			}
110			
111			// catch multiple select values
112			if(jQuery(this).hasClass('cfg-type-selectmultiple'))
113			{
114				var key = jQuery(this).prop('name'); // must be placed here, not in each() or php will return Undefined index: element_id
115				
116				jQuery(this).find('option').each(function()
117				{
118					var value = jQuery(this).val();
119						
120					if(jQuery(this).is(':selected'))
121					{
122						form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
123						selectmultiple_value[key] = value;
124					}
125					
126					if( jQuery(this).is( jQuery(this).closest('.cfg-type-selectmultiple').find('option:last')) )
127					{
128						// we are at the last option, and the selectmultiple[name] array value is still empty => insert fieldname: '' in the notification
129						if(!selectmultiple_value[key])
130						{
131							form_value_array.push({'element_id': key, 'element_value': '', 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
132						}
133					}
134					
135				});
136				
137			}
138			
139			// catch time values
140			if(jQuery(this).hasClass('cfg-type-time'))
141			{
142				//var key = jQuery(this).find('.cfg-time-hour').prop('name');
143				var key = jQuery(this).closest('.cfg-element-container').find('.cfg-time-hour').prop('name');
144				var ampm = jQuery(this).closest('.cfg-element-container').find('.cfg-time-ampm').val();
145				if(ampm == undefined) ampm = ''; // no quote on undefined
146				var value = jQuery(this).closest('.cfg-element-container').find('.cfg-time-hour').val()+':'+jQuery(this).closest('.cfg-element-container').find('.cfg-time-minute').val()+' '+ampm;
147				
148				form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
149			}
150			
151		});
152		
153		
154		// catch list of uploaded files to delete
155		formcontainer.find('.cfg-deleteuploadedfile').each(function(){
156			deleteuploadedfile_value.push(jQuery(this).val());
157		});
158		
159		
160		var captcha_img;
161		var captcha_input;
162		
163		if(formcontainer.find('.cfg-captcha-img').length)
164		{
165			captcha_img = 1;
166			captcha_input = formcontainer.find('.cfg-captcha-input').val();
167		}
168		
169		
170		// console.log(deleteuploadedfile_value);
171		// console.log(form_value_array);
172		
173
174		jQuery.post('cfg-contactform-30/inc/form-validation.php',
175				{ 
176				'captcha_img':captcha_img,
177				'captcha_input':captcha_input,
178				'form_value_array':form_value_array,
179				'deleteuploadedfile':deleteuploadedfile_value
180				},
181				function(data)
182				{
183					
184					data = jQuery.trim(data);
185					
186					// 	console.log(data);
187					
188					response = jQuery.parseJSON(data);
189						
190					if(response['status'] == 'ok')
191					{
192						
193						if(response['redirect_url'])
194						{
195							// we do not hide the loading animation because the redirection can take some time (prevents wondering what is happening)
196							window.location.href = response['redirect_url'];
197						} else
198						{
199							loading.hide();
200							
201							validation_message = '<div class="cfg-validationmessage">'+response['message']+'</div>';
202								
203							formcontainer.find('.cfg-element-container').each(function()
204							{
205								if(!jQuery(this).find('.cfg-title').html())
206								{
207									jQuery(this).slideUp('fast');
208								}
209							});
210							
211							jQuery('html, body').animate({scrollTop:formcontainer.offset().top}, 'fast');
212							
213							formcontainer.find('.cfg-contactform-content').append(validation_message);
214						}
215							
216					} else
217					{
218						loading.hide();
219						
220						submit_btn.show();
221						
222						for(var i=0; i<response['message'].length; i++)
223						{
224							// name* : catch all the elements containing the element_id string (can be paragraphs above inputs)
225							// first removed: error messages is positionned above the first name* found
226							// IE does not like (name[]:first), we use .first() instead ( .filter(':first') is ok too)
227							var optioncontainer = jQuery('[name*='+response['message'][i]['element_id']+']').first().closest('.cfg-element-content');
228
229							jQuery('<div class="cfg-errormessage">'+response['message'][i]['errormessage']+'</div>').prependTo(optioncontainer).fadeIn();
230						}						
231						
232						// scrolls to the first error message
233						jQuery('html, body').animate({scrollTop: jQuery('#'+response['message'][0]['elementlabel_id']).offset().top},'fast'); 	
234						
235					}
236				} /* end function data */
237			); /* end jQuery.post */
238	}); /* end click submit */
239	
240	
241	// DELETE UPLOADED FILE
242	jQuery('body').on('click', '#cfg-contactform-30 .cfg-deleteupload', function()
243	{
244		var filename = jQuery(this).closest('.cfg-uploadsuccess-container').find('.cfg-deleteupload-filename').val();
245		
246		// to add the filename to the list of files to delete
247		// // the .cfg-deleteuploadedfile input can also be added in case of chain upload (handlers.js)
248		jQuery(this).closest('.cfg-element-content').append('<input value="'+filename+'" type="hidden" class="cfg-deleteuploadedfile" />');
249		
250		// reset the upload input that contains the filename value
251		jQuery(this).closest('.cfg-element-content').find('.cfg-uploadfilename').val('');
252		
253		// must come last, jQuery(this) is used to access closest elements
254		jQuery(this).closest('.cfg-uploadsuccess-container').remove();
255
256	});
257	
258	
259});
260

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.