PageSourceSearch

https://www.aamm.org.au/includes/javascript/global.js?v2

js aamm.org.au collected 2026-10-06 20:26:50 UTC 7,977 bytes, 306 lines download raw bytes

1
2
3	////////////////////////
4	//** Global Functions **//
5	////////////////////////
6
7	function formatCurrency(value){
8		return Number(value).toLocaleString(orgsetting.jslocale, { style: 'currency', currency: orgsetting.jscurrency })
9	}
10
11
12$(document).ready(function() {
13
14
15	////////////////////////
16	//** Init Plugins **//
17	////////////////////////
18
19	//carousel
20	$('.carousel').carousel();
21
22	//datatables
23	$(".datatable").dataTable({
24        "aaSorting": []
25    });
26
27	//ellipsis (truncate text and append ...)
28	$('.ellipsis').ellipsis();
29
30	//masonry (https://masonry.desandro.com/)
31	$('.grid').masonry({
32	  itemSelector: '.grid-item'
33	});
34
35	//user submit forms by AjaxForm
36
37	//user submit forms by AjaxForm
38	$('.formbuilder-form').each(function(){
39		$(this).ajaxForm({
40			beforeSubmit: function(){
41				if( $('.formbuilder-form').valid() == true ) {
42					if( $('.g-recaptcha').length ) {
43						response = grecaptcha.getResponse();
44						if (response.length === 0) {
45							$.msgGrowl({type:"error",text:"Please check the I'm not a Robot Field"});
46							return false;
47						}
48					}
49					$('#modal').showLoading();
50				}
51				else
52					return false;
53			},
54			success: function(response){
55				var form = $('.formbuilder-form');
56				if( response.success ) {
57					form.children().hide();
58					form.html('<div class="alert alert-success">'+ response.message +'</div>')
59				} else{
60					var msg = response.message ? response.message : "Please check the I'm not a Robot Field";
61					$.msgGrowl({type:"error",text: msg});
62					$('#modal').hideLoading();
63					return false;
64				}
65				$('#modal').hideLoading();
66			}
67		});
68	});
69
70	//validate
71	$('.validate').each(function(){
72		$(this).validate({
73			submitHandler: function(form) {
74
75				//do not run form.submit for formbuilder forms and surveys as it returnd a JS error and prevents submission on some browsers
76				if( !$(form).hasClass('formbuilder-form') && !$(form).hasClass('survey-form') ) {
77					var submitBtn = $(form).find('button[type=submit]');
78					submitBtn.addClass('disabled').append(' <i class="fa fa-lg fa-refresh fa-spin"></i> ');
79	
80					form.submit();
81				}
82
83			}
84		});
85	});
86
87	jQuery.validator.addMethod("dateNL", function(value, element) {
88		return this.optional(element) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(value);
89	}, "Requires format 'dd/mm/yyyy'");
90
91	if (orgsetting['jslocale'] == 'en-US'){
92		var formatString = 'mm/dd/yy';
93	} else {
94		var formatString = 'dd/mm/yy';
95	}
96
97	//datepicker
98	$(".datepicker").datepicker({
99		dateFormat: formatString,
100		changeMonth: true,
101      	changeYear: true
102	});
103
104	$(".datepicker-dob").datepicker({
105		dateFormat: formatString,
106		changeMonth: true,
107      	changeYear: true,
108		yearRange: "-100:-00"
109	});
110
111	//init select2 lookups
112	$("select.select2").select2();
113
114	//ui to top
115	$().UItoTop({ easingType: 'easeOutQuart' });
116
117
118	////////////////////////
119	//** Form Validations **//
120	////////////////////////
121
122	$("#primaryMailingAddress").on('change',function(){
123
124		//set required marker on primary address tab
125		var addressSelected = $(this).val();
126		$("#tab-address1-tab, #tab-address2-tab").removeClass('required-marker');
127		$("#tab-"+addressSelected+"-tab").addClass('required-marker');
128		$('.nav-tabs a[href="#tab-' + addressSelected + '"]').tab('show');
129
130
131	});
132
133
134	$("form.validate-profile-address").on('submit',function(){
135		var primaryAddress = $("#primaryMailingAddress").val();
136		var addressValidated = true;
137		$("#bottom-page-error").hide();
138
139		var address1 = $("input[name='"+primaryAddress+".address1']");
140		if (address1.val().length == 0){
141			addressValidated = false;
142			address1.addClass('error');
143		};
144		var town = $("input[name='"+primaryAddress+".town']");
145		if (town.val().length == 0){
146			addressValidated = false;
147			town.addClass('error');
148		};
149		var postcode = $("input[name='"+primaryAddress+".postcode']");
150		if (postcode.val().length == 0){
151			addressValidated = false;
152			postcode.addClass('error');
153		};
154		var country = $("select[name='"+primaryAddress+".countryID']");
155		if (country.val() == 0){
156			addressValidated = false;
157			country.addClass('error');
158		};
159		/* add back in when OS states are added
160		var state = $("select[name='"+primaryAddress+".stateID']");
161		if (state.val() == 0){
162			addressValidated = false;
163			state.addClass('error');
164		};
165		*/
166		if (!addressValidated) {
167			$("#bottom-page-error").fadeIn();
168			$('#address-tabs a[href="#tab-'+primaryAddress+'"]').tab('show')
169			return false;
170		}
171
172	});
173
174	//disallow spaces to be added to form
175	$("input.no-spaces").on({
176	  keydown: function(e) {
177		if (e.which === 32)
178		  return false;
179	  },
180	  change: function() {
181		this.value = this.value.replace(/\s/g, "");
182	  }
183	});
184
185
186	////////////////////////
187	//** UI Overrides **//
188	////////////////////////
189
190	//destroy modal once hidden so that it reloads if opened again
191	$('body').on('hidden.bs.modal', '.modal', function () {
192	    $(this).removeData('bs.modal');
193		$("#modal").html('<div class="modal-dialog"><div class="modal-content"><div class="modal-body" style="height:250px;"> LOADING... </div></div></div>');
194	});
195
196
197
198	//inject a counterpart with value=false for unchecked checkbox
199	$(".injects-false").on('click',function(){
200
201		var tag = "";
202		var elName = $(this).attr('name');
203		var elID = $(this).attr('id');
204
205		if ($(this).is(':checked')){
206			$('#' + elID + '-injected').remove();
207		} else {
208			tag = "<input type='hidden' class='injected' value='false' name='" + elName + "' id='" + elID + "-injected'>";
209			$(tag).insertAfter(this);
210		}
211	});
212	$(".injects-false").parent('.btn').on('click',function(){
213		var el = $(this).children('.injects-false');
214		var tag = "";
215		var elName = el.attr('name');
216		var elID = el.attr('id');
217
218		if (!$(this).hasClass('active')){
219			$('#' + elID + '-injected').remove();
220		} else {
221			tag = "<input type='hidden' class='injected' value='false' name='" + elName + "' id='" + elID + "-injected'>";
222			$(tag).insertAfter(el);
223		}
224	});
225
226
227
228///////////////////////////////////////////
229//** COUNTRY / STATE SELECT AND UPDATE **//
230///////////////////////////////////////////
231
232	$(document).on('change', '.country-select' ,function(){
233		var selectedCountry = $(this).val();
234		var targetStateSelect = $(this).data('state-target');
235		var responseHTML = "<option value='0'> -- select state -- </option>";
236
237		$.ajax({
238			url: "/admin/services.lookup/statesbycountryid",
239			data: { countryid: selectedCountry }
240		})
241		.done(function( states ) {
242			if (states.length){
243				for (var i = 0; i < states.length; i++){
244					responseHTML = responseHTML + "<option value='" + states[i].state_id + "'>" + states[i].state_name + "</option>";
245				}
246				$('#'+targetStateSelect).html(responseHTML);
247			} else {
248				$('#'+targetStateSelect).html("<option value='0'> -- select country -- </option>");
249			}
250		});
251
252	});
253
254
255
256});
257
258
259
260
261
262function profileAddressIsValid(){
263
264		var primaryAddress = $("#primaryMailingAddress").val();
265		var addressValidated = true;
266		$("#bottom-page-error").hide();
267
268		var address1 = $("input[name='"+primaryAddress+".address1']");
269		if (address1.val().length == 0){
270			addressValidated = false;
271			address1.addClass('error');
272		};
273		var town = $("input[name='"+primaryAddress+".town']");
274		if (town.val().length == 0){
275			addressValidated = false;
276			town.addClass('error');
277		};
278		var postcode = $("input[name='"+primaryAddress+".postcode']");
279		if (postcode.val().length == 0){
280			addressValidated = false;
281			postcode.addClass('error');
282		};
283
284		// var selected_state = $("select[name='"+primaryAddress+".stateID']");
285
286		// if (selected_state.val() == 0){
287		// 	addressValidated = false;
288		// 	selected_state.addClass('error');
289		// };
290
291		var state = $("select[name='"+primaryAddress+".stateID']");
292		if (state.val() == 0){
293			addressValidated = false;
294			state.addClass('error');
295		};
296		
297		if (!addressValidated) {
298			$("#bottom-page-error").fadeIn();
299			$('#address-tabs a[href="#tab-'+primaryAddress+'"]').tab('show')
300			return false;
301		} else {
302			return true;
303		}
304
305};
306

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.