1jQuery(document).ready(function () { 2 function setCookie(name, value, hours) { 3 const date = new Date(); 4 date.setTime(date.getTime() + (hours * 60 * 60 * 1000)); 5 const expires = "expires=" + date.toUTCString(); 6 document.cookie = name + "=" + encodeURIComponent(value) + ";" + expires + ";path=/"; 7 } 8 9 function getCookie(name) { 10 const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)')); 11 return match ? decodeURIComponent(match[2]) : null; 12 } 13 14 const params = new URLSearchParams(window.location.search); 15 const gclid = params.get('gclid'); 16 17 if (gclid) { 18 setCookie('gclid', gclid, 24); // expires in 24 hours 19 } 20 21 //step1 select any price plan 22 jQuery('.citybin-loader-wrapper').removeClass('active'); 23 jQuery(document).on('click', '.get_this_plan', function () { 24 const id = jQuery(this).data("id"); 25 const planid = jQuery(this).data("planid"); 26 const price = jQuery("#item_" + id).find('.card-price').html() ? jQuery("#item_" + id).find('.card-price').html() : ''; 27 const title = jQuery("#item_" + id).find('.card-title').html(); 28 const img = jQuery("#item_" + id).find('.card-image').attr('src'); 29 let period = jQuery("#item_" + id).find('.card-period').html() ? jQuery("#item_" + id).find('.card-period').html() : ''; 30 let period_text = jQuery("#item_" + id).find('.card-period-text').html() ? jQuery("#item_" + id).find('.card-period-text').html() : ''; 31 let plan_period = ''; 32 if (period == 'per month') { 33 plan_period = 1; 34 } else if (period == 'per year') { 35 plan_period = 12; 36 } 37 if (price == '') { 38 //jQuery('.iban_field_column').hide(); 39 jQuery(".selected_plan_details").find('.plan_period').hide(); 40 } else { 41 jQuery('.iban_field_column').show(); 42 jQuery(".selected_plan_details").find('.plan_period').show(); 43 } 44 jQuery(".selected_plan_details").find('.plan_title').html(title); 45 jQuery(".selected_plan_details").find('.plan_price').html(price); 46 jQuery(".selected_plan_details").find('.plan_period').html(period_text); 47 jQuery(".selected_plan_details").find('img').attr('src', img); 48 jQuery("#selected_plan_id").val(planid); 49 jQuery("#selected_plan_title").val(title); 50 jQuery("#selected_plan_price").val(price); 51 jQuery("#selected_plan_period").val(plan_period); 52 jQuery(".page-title").html('Your Details'); 53 jQuery("#step1").hide(); 54 jQuery("#step2").show(); 55 }); 56 // goback from current step 57 jQuery(document).on('click', '.goback', function () { 58 const id = jQuery(this).data("id"); 59 const back = jQuery(this).data("back"); 60 jQuery('#' + id).hide(); 61 jQuery('#' + back).show(); 62 if (back == 'step1') { 63 jQuery(".page-title").html('Sign Up - Select a plan'); 64 } 65 }); 66 67 jQuery.validator.addMethod("pattern", function (value, element) { 68 return this.optional(element) || /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{1,}$/.test(value); 69 }, "Your email address must be in the format [email protected]."); 70 71 // Apply user detail 72 jQuery("#step2-form").validate({ 73 rules: { 74 firstName: { 75 required: true 76 }, 77 surname: { 78 required: true 79 }, 80 mobileNumber: { 81 required: true, 82 digits: true, 83 minlength: 6, 84 maxlength: 12 85 }, 86 email: { 87 required: true, 88 email: true, 89 pattern: true 90 }, 91 iban: { 92 /*required: function () { 93 return jQuery(".plan_price").html() !== ""; // required only if price has value 94 }, 95 iban: function () { 96 return jQuery(".plan_price").html() !== ""; // required only if price has value 97 },*/ 98 required: true, 99 iban: true 100 }, 101 /*yourAddress: { 102 required: true 103 },*/ 104 address1: { 105 required: true 106 }, 107 address2: { 108 required: true 109 } 110 }, 111 messages: { 112 mobileNumber: { 113 digits: "Only numeric values are allowed for mobile numbers.", 114 minlength: "Mobile number must be at least 6 digits.", 115 maxlength: "Mobile number cannot exceed 12 digits." 116 }, 117 email: { 118 email: "Your email address must be in the format [email protected].", 119 pattern: "Your email address must be in the format [email protected]." 120 }, 121 /*yourAddress: { 122 required: "Your address is needed to complete the process." 123 },*/ 124 address1: { 125 required: "Address 1 is required." 126 } 127 }, 128 errorElement: "div", 129 errorPlacement: function (error, element) { 130 error.addClass("error-message"); 131 error.insertAfter(element); 132 }, 133 submitHandler: function (form) { 134 } 135 }); 136 137 jQuery(document).on('click', '.select_payment_method', function () { 138 var isValid = true; 139 var id = jQuery(this).attr('id'); 140 // Check each input 141 jQuery("#step2-form input").each(function () {
142 if (!jQuery(this).valid()) { 143 isValid = false; 144 } 145 }); 146 147 if (isValid) { 148 var selected_plan_title = jQuery('#selected_plan_title').val(); 149 var selected_plan_period = jQuery('#selected_plan_period').val(); 150 var plan_period_txt = ''; 151 if (selected_plan_period == 1) { 152 var plan_period_txt = 'each month'; 153 } else { 154 var plan_period_txt = 'each year'; 155 } 156 let sign_up_confirmation_text = citybin_object.sign_up_confirmation_text; 157 sign_up_confirmation_text = sign_up_confirmation_text.replace('##PLANNNAME##', selected_plan_title); 158 sign_up_confirmation_text = sign_up_confirmation_text.replace('##PLANMONTH##', plan_period_txt); 159 jQuery('.sign_up_confirmation_text').html(sign_up_confirmation_text); 160 jQuery('.sign_up_pop-up').css('display', 'flex'); 161 } 162 }); 163 jQuery(document).on('click', '#confirm_signup', function () { 164 const form1Data = jQuery('#step1-form').serializeArray(); 165 const form2Data = jQuery('#step2-form').serializeArray(); 166 167 const allData = [...form1Data, ...form2Data]; 168 const serializedData = jQuery.param(allData); 169 jQuery('body').addClass('loading'); 170 jQuery('.citybin-loader-wrapper').addClass('active'); 171 var gclid = getCookie('gclid') ? getCookie('gclid') : ''; 172 jQuery.ajax({ 173 url: citybin_object.ajax_url, 174 type: 'POST', 175 data: serializedData + '&action=user_info_store&nonce=' + citybin_object.nonce + '&gclid=' + gclid, 176 success: function (response) { 177 if (response.success) { 178 if (response.data.ref_id) { 179 window.location.href = citybin_object.thank_you_url + '/?ref_id=' + response.data.ref_id; 180 } 181 //jQuery('#step2').hide(); 182 //jQuery('#step4').show(); 183 } else { 184 alert('Error: ' + response.data.error); 185 jQuery('#step2').find('.top-error-message').html(response.data.error).show(); 186 } 187 jQuery('body').removeClass('loading'); 188 jQuery('.citybin-loader-wrapper').removeClass('active'); 189 }, 190 error: function (xhr, status, error) { 191 jQuery('#step2').find('.top-error-message').html(response.data.error).show(); 192 jQuery('body').removeClass('loading'); 193 jQuery('.citybin-loader-wrapper').removeClass('active'); 194 } 195 }); 196 }); 197 198 // Extend jQuery Validate with custom methods 199 jQuery.validator.addMethod("iban", function (value, element) { 200 return this.optional(element) || /^[A-Z]{2}\d{2}[A-Z0-9]{18}$/.test(value); 201 }, "Please enter a valid IBAN."); 202 203 jQuery.validator.addMethod("swift", function (value, element) { 204 return this.optional(element) || /^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$/.test(value); 205 }, "Please enter a valid SWIFT/BIC code."); 206 207 jQuery.validator.addMethod("bankName", function (value, element) { 208 return this.optional(element) || /^[A-Za-z\s\.\,\-]{3,50}$/.test(value); 209 }, "Please enter a valid bank name."); 210 211 jQuery.validator.addMethod("accountHolder", function (value, element) { 212 return this.optional(element) || /^[A-Za-z\s\.\-]{3,50}$/.test(value); 213 }, "Please enter a valid account holder name."); 214 215 jQuery('.direct_bank_payment_method_details').find('.top-error-message').html('').hide(); 216 // Apply validation for bank form
217 jQuery("#bankDetailsForm").validate({ 218 rules: { 219 iban: { 220 required: true, 221 iban: true 222 }, 223 bankName: { 224 required: true, 225 bankName: true 226 }, 227 swift: { 228 required: true, 229 swift: true 230 }, 231 accountHolder: { 232 required: true, 233 accountHolder: true 234 } 235 }, 236 messages: { 237 iban: { 238 required: "IBAN is required." 239 }, 240 bankName: { 241 required: "Bank name is required." 242 }, 243 swift: { 244 required: "SWIFT/BIC code is required." 245 }, 246 accountHolder: { 247 required: "Account holder name is required." 248 } 249 }, 250 errorElement: "div", 251 errorPlacement: function (error, element) { 252 error.addClass("error-message"); 253 error.insertAfter(element); 254 }, 255 submitHandler: function (form) { 256 alert("Validation successful!"); 257 } 258 }); 259 260 // bank detail validation and form submit 261 jQuery(document).on('click', '#bank_detail_form', function () { 262 var isValid = true; 263 var id = jQuery(this).attr('id'); 264 // Check each input
265 jQuery("#bankDetailsForm input").each(function () { 266 if (!jQuery(this).valid()) { 267 isValid = false; 268 } 269 }); 270 271 if (isValid) { 272 const form1Data = jQuery('#step1-form').serializeArray(); 273 const form2Data = jQuery('#step2-form').serializeArray(); 274 const allData = [...form1Data, ...form2Data]; 275 const serializedData = jQuery.param(allData); 276 277 jQuery('body').addClass('loading'); 278 jQuery('.citybin-loader-wrapper').addClass('active'); 279 jQuery.ajax({ 280 url: citybin_object.ajax_url, 281 type: 'POST', 282 data: serializedData + '&action=user_info_store&nonce=' + citybin_object.nonce, 283 success: function (response) { 284 if (response.success) { 285 jQuery('#thank-you-message').html(response.data.message); 286 jQuery('#step2').hide(); 287 jQuery('#step5').show(); 288 } else { 289 alert('Error: ' + response.data.error); 290 jQuery('.direct_bank_payment_method_details').find('.top-error-message').html(response.data.error).show(); 291 } 292 jQuery('body').removeClass('loading'); 293 jQuery('.citybin-loader-wrapper').removeClass('active'); 294 }, 295 error: function (xhr, status, error) { 296 jQuery('.direct_bank_payment_method_details').find('.top-error-message').html(response.data.error).show(); 297 jQuery('body').removeClass('loading'); 298 jQuery('.citybin-loader-wrapper').removeClass('active'); 299 } 300 }); 301 302 } else { 303 } 304 }); 305 306 // Apply validation for referral code apply form 307 jQuery("#referralCodeApply").validate({ 308 rules: { 309 accountNumber: { 310 required: true, 311 digits: true, 312 } 313 }, 314 messages: { 315 accountNumber: { 316 required: "Account Number is required.", 317 digits: "Please add valid refrence no." 318 } 319 }, 320 errorElement: "div", 321 errorPlacement: function (error, element) { 322 error.addClass("error-message"); 323 error.insertAfter(element); 324 }, 325 submitHandler: function (form) { 326 } 327 }); 328 329 //validation for referral code 330 jQuery(document).on('click', '.get_referral_code', function () { 331 var isValid = true; 332 var id = jQuery(this).attr('id'); 333 // Check each input 334 jQuery("#referralCodeApply input").each(function () { 335 if (!jQuery(this).valid()) { 336 isValid = false; 337 } 338 }); 339 340 if (isValid) { 341 jQuery('body').addClass('loading'); 342 jQuery('.citybin-loader-wrapper').addClass('active'); 343 const accountNumber = jQuery('#accountNumber').val(); 344 jQuery('.top-error-message').html(''); 345 jQuery.ajax({ 346 url: citybin_object.ajax_url, 347 type: 'POST', 348 data: 'accountNumber=' + accountNumber + '&action=verify_ref_id&nonce=' + citybin_object.nonce, 349 success: function (response) { 350 jQuery('.citybin-loader-wrapper').removeClass('active'); 351 if (response.success) { 352 jQuery('.your_referral_code').html(response.data.refferal_code); 353 jQuery('.refer_friends').hide(); 354 jQuery('.citybin-loader-wrapper').removeClass('active'); 355 jQuery('.referral_code_section').show(); 356 } else { 357 alert('Error: ' + response.data.error); 358 jQuery('.top-error-message').html(response.data.error).show(); 359 360 } 361 jQuery('body').removeClass('loading'); 362 }, 363 error: function (xhr, status, error) { 364 jQuery('.top-error-message').html(response.data.error).show(); 365 jQuery('body').removeClass('loading'); 366 jQuery('.citybin-loader-wrapper').removeClass('active'); 367 } 368 }); 369 } 370 }); 371 372 //read more less 373 jQuery(document).on("click", ".read-more-btn", function () { 374 const index = jQuery(this).data("index");
375 const $shortDesc = jQuery("#short-desc-" + index); 376 const $fullDesc = jQuery("#full-desc-" + index); 377 console.log("#full-desc-" + index); 378 if ($fullDesc.css("display") === "none") { 379 $fullDesc.show(); 380 $shortDesc.hide(); 381 jQuery(this).text("Read Less"); 382 } else { 383 $fullDesc.hide(); 384 $shortDesc.show(); 385 jQuery(this).text("Read More"); 386 } 387 }); 388}); 389 390jQuery(document).on('click', '.pop-up-close', function (e) { 391 e.preventDefault(); 392 console.log('poup closed'); 393 jQuery('.sign_up_pop-up').hide(); 394}); 395 396jQuery(document).ready(function ($) { 397 $(document).on('keydown', function (event) { 398 if ($('.sign_up_pop-up').length > 0 && event.key === "Escape") { 399 $('.sign_up_pop-up').hide(); 400 } 401 }); 402}); 403 404jQuery(document).on('click', '.filter_city_item', function () { 405 jQuery('.filter_city_item').removeClass('active'); 406 jQuery(this).addClass('active'); 407 var city = jQuery(this).data('city'); 408 jQuery('.city-tabs').removeClass('active'); 409 jQuery('#' + city + '.city-tabs').addClass('active'); 410}); 411//Postcode Found, address populated below. 412var $ = jQuery.noConflict(); 413$(function () { 414 $("#autoAddress").AutoAddress({ 415 key: citybin_object.auto_address_api_key, 416 vanityMode: true, 417 width: "auto",
418 placeHolderLabel: "Start typing your Address or Eircode here", 419 searchButtonLabel: "Confirm Address", 420 addressFoundLabel: "Eircode Found, address populated below.", 421 inputRequiredLabel: "Enter a full address or Eircode to begin your search.", 422 onFocus() { 423 $("#autoAddress").find('.autoaddress-options-msg.error').remove(); 424 jQuery('.autoAddressmsg').find('.autoaddress-options-msg').hide(); 425 }, 426 onLookupError: function () { 427 //console, log('Check errors'); 428 jQuery('.autoAddressmsg').find('.autoaddress-options-msg.error').html(jQuery('#autoAddress').find('.autoaddress-options-msg').html()); 429 jQuery('.autoAddressmsg').find('.autoaddress-options-msg.error').show(); 430 }, 431 onAddressFound: function (data) { 432 jQuery('.autoAddressmsg').find('.autoaddress-options-msg').hide(); 433 let selectedCity = jQuery('li.filter_city_item.active').html(); 434 var city = data.input.address; 435 if (city.includes(selectedCity) && selectedCity != '') { 436 if (data.addressId) { 437 var settings = { 438 "url": citybin_object.api_endpoint_for_household_info + citybin_object.auto_address_api_key + "&ecadId=" + data.addressId, 439 "method": "GET", 440 "timeout": 0, 441 }; 442 443 $.ajax(settings).done(function (response) { 444 if (response.isServicedArea == true) { 445 if (data.vanityAddress) { 446 jQuery('.autoaddress-text-box').val(data.vanityAddress); 447 } 448 if (data.postcode) { 449 jQuery('#eircode').val(data.postcode); 450 } 451 /*if (data.vanityAddress[0]) { 452 jQuery('#houseNumber').val(data.vanityAddress[0]); 453 }*/ 454 455 if (data.vanityAddress[0]) { 456 jQuery('#address1').val(data.vanityAddress[0]); 457 } 458 459 if (data.vanityAddress[1]) { 460 jQuery('#address2').val(data.vanityAddress[1]); 461 } 462 463 if (data.vanityAddress[2]) { 464 jQuery('#address3').val(data.vanityAddress[2]); 465 } 466 const address_input = jQuery('.autoaddress-text-box').val(); 467 if (address_input != '') { 468 jQuery('.autoAddressmsg').find('.autoaddress-options-msg.success').html(jQuery('#autoAddress').find('.autoaddress-options-msg').html()); 469 jQuery('.autoAddressmsg').find('.autoaddress-options-msg.success').show(); 470 } 471 } else { 472 jQuery('#eircode,#address1,#address2,#address3').val(''); 473 jQuery('.autoAddressmsg').find('.autoaddress-options-msg.info').html('<a href="#" tabindex="-1" class="autoaddress-close-msg"></a><span></span>Location not served.'); 474 jQuery('.autoAddressmsg').find('.autoaddress-options-msg.info').show(); 475 } 476 }); 477 } else { 478 jQuery('#eircode,#address1,#address2,,#address3').val(''); 479 jQuery('.autoAddressmsg').find('.autoaddress-options-msg.error').html(jQuery('#autoAddress').find('.autoaddress-options-msg').html()); 480 jQuery('.autoAddressmsg').find('.autoaddress-options-msg.error').show(); 481 } 482 } else { 483 jQuery('#eircode,#address1,#address2,#address3').val(''); 484 jQuery('.autoAddressmsg').find('.autoaddress-options-msg.info').html('<a href="#" tabindex="-1" class="autoaddress-close-msg autoaddress-for-other-city-close"></a><span></span>Please choose a plan in your area. - <a href="#" type="button" class="btn goback btn-danger" data-back="step1" data-id="step2"><b>
484Change Plan</b></a>'); 485 jQuery('.autoAddressmsg').find('.autoaddress-options-msg.info').show(); 486 } 487 488 // 489 /*jQuery('#address1').val(data.reformattedAddress[0]); 490 jQuery('#address2').val(data.reformattedAddress[1]); 491 if (data.reformattedAddress[0] == null && data.reformattedAddress[1] == null) { 492 jQuery('#address1').val(data.reformattedAddress[2]); 493 } 494 else { 495 jQuery('#address3').val(data.reformattedAddress[2]); 496 } 497 jQuery('#address4').val(data.reformattedAddress[3]); 498 jQuery('#eircode').val(data.postcode);*/ 499 } 500 }); 501 jQuery(document).on('click', '.autoaddress-button', function () { 502 const address_input = jQuery('.autoaddress-text-box').val(); 503 504 if (address_input == '') { 505 jQuery('#eircode,#address1,#address2').val(''); 506 //jQuery('.autoAddressmsg').find('.autoaddress-options-msg.error').html(); 507 jQuery('.autoAddressmsg').find('.autoaddress-options-msg.info').hide(); 508 } 509 }); 510 511 $(document).on('click', '.autoaddress-close-msg', function (e) { 512 e.preventDefault(); 513 $(this).parent('.autoaddress-options-msg').hide(); 514 }); 515});
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.