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.