1/* Theme scripts */ 2 3var allowedToSubmit = 0; 4 5jQuery( document ).ready(function() { 6 7 if (top.location!= self.location) { 8 top.location = self.location.href; 9 } 10 11 //localStorage.removeItem("acceptcookies"); 12 13 setTimeout(function(){ 14 allowedToSubmit = 1; 15 }, 1000); 16 17 setup(); 18 19 doResize(); 20 21 checkcookies(); 22 23 jQuery(window).scroll(function() { 24 var top = jQuery(window).scrollTop(); 25 26 if(top > 200){ 27 jQuery("#mastheadfloat").css("top", "0px"); 28 }else{ 29 jQuery("#mastheadfloat").css("top", "-400px"); 30 } 31 32 if(top > 20){ 33 jQuery("#mobnavfloat").css("top", "0px"); 34 }else{ 35 jQuery("#mobnavfloat").css("top", "24px"); 36 } 37 38 }) 39 40 jQuery( window ).resize(function() { 41 //doResize(); 42 }); 43 44 // Keep sub menu open where linked 45 openActiveMenu() 46 47 jQuery("article iframe").removeAttr("height"); 48 jQuery("article iframe").removeAttr("width"); 49 jQuery("article iframe").wrap('<div class="videoWrapper"></div>'); 50 jQuery("#CAFDonateWidgetContainer div").removeClass('videoWrapper'); 51 52 53 // Replace # links 54 var str = jQuery("#mainnav").html(); 55 var html = replaceAll(str, '#', 'javascript:void(0)'); 56 jQuery("#mainnav").html(html); 57 58 59 jQuery("#mainnav li").mouseenter(function() { 60 jQuery("ul", this).slideDown("fast"); 61 }); 62 63 jQuery("#mainnav > ul > li > a").mouseenter(function() { 64 jQuery("#mainnav > ul > li > ul").delay(100).slideUp("fast"); 65 }); 66 67 jQuery("#mobnav li").click(function() { 68 jQuery("ul", this).slideDown("fast"); 69 }); 70 71 jQuery("#mobnav > ul > li > a").click(function() { 72 jQuery(".sub-menu").slideUp("fast"); 73 }); 74 75 jQuery("#mobnavbutton").click(function() { 76 jQuery("#mobnav").toggle(); 77 jQuery("#mobnavbutton").hide(); 78 jQuery("#mobNavClose").show(); 79 }); 80 81 jQuery("#mobNavClose").click(function() { 82 jQuery("#mobnav").toggle(); 83 jQuery("#mobnavbutton").show(); 84 jQuery("#mobNavClose").hide(); 85 }); 86 87 jQuery(".cookiebutton").click(function() { 88 acceptCookies(); 89 }); 90 91 // Enable search button 92 var int = setInterval("checkWsSearch()", 500); 93 94 jQuery("input[name=any]").click(function(){ 95 if(jQuery("input[name=any]").prop("checked") == true){ 96 jQuery("input[name=morning]").prop("checked", true); 97 jQuery("input[name=afternoon]").prop("checked", true); 98 jQuery("input[name=evening]").prop("checked", true); 99 }else{ 100 jQuery("input[name=morning]").prop("checked", false); 101 jQuery("input[name=afternoon]").prop("checked", false); 102 jQuery("input[name=evening]").prop("checked", false); 103 } 104 }) 105 106 jQuery("input[name=iam]").click(function(){ 107 jQuery("#myInterests input[type=checkbox]").attr("checked", false) 108 jQuery("#allInterests").attr("checked", false) 109 jQuery("#myInterests").slideDown(); 110 }) 111 112 // All interests ticked 113 jQuery("#allInterests").click(function(){ 114 if(jQuery("#allInterests").prop('checked') === true){ 115 jQuery("#myInterests input[type=checkbox]").prop("checked", true) 116 }else{ 117 jQuery("#myInterests input[type=checkbox]").prop("checked", false) 118 } 119 }) 120 121 122 123 124 // WS search form submit 125 jQuery("#wssearchform").submit(function(){ 126 127 var ok = 1; 128 var type = jQuery('input[name="type"]:checked').val(); 129 var postcode = jQuery("input[name=postcode]").val(); 130 var iam = jQuery('input[name="iam"]:checked').val(); 131 var counter = 0; 132 if(jQuery("input[name=morning]").prop("checked") == true){counter++;} 133 if(jQuery("input[name=afternoon]").prop("checked") == true){counter++;} 134 if(jQuery("input[name=evening]").prop("checked") == true){counter++;} 135 if(jQuery("input[name=any]").prop("checked") == true){ 136 jQuery("input[name=morning]").prop("checked", true); 137 jQuery("input[name=morning]").prop("checked", true); 138 jQuery("input[name=morning]").prop("checked", true); 139 counter++; 140 } 141 142 if(!iam){ 143 iam = $("#iam").val(); 144 } 145 146 if(counter < 1){ 147 //ok=0; 148 } 149 150 if(!type){ok=0;} 151 if(!postcode){ 152 if(type != 'virtual'){ 153 ok=0; 154 } 155 } 156 if(!iam){ok=0;} 157 158 if(ok!=1){ 159 event.preventDefault() 160 return 161 }else{ 162 jQuery(".narrowcontent").html('<p style="text-align:center; font-size:30px; padding:60px">Searching...<br/><br/><img src="https://lookgoodfeelbetter.co.uk/wp-content/themes/lookgoodfeelbetter/img/loading.gif"></p>'); 163 jQuery("#wssearchform").hide(); 164 window.scrollTo(0, 0); 165 } 166 167 168 }) 169 170 jQuery("#locationSel").change(function(){
171 var urlParams = new URLSearchParams(window.location.search); 172 var time = urlParams.get('time'); 173 var filter = urlParams.get('filter'); 174 document.location.href = '/events/?filter='+filter+'&location='+jQuery("#locationSel").val()+'&time='+time 175 }) 176 177 jQuery("#timeSel").change(function(){ 178 var urlParams = new URLSearchParams(window.location.search); 179 var location = urlParams.get('location'); 180 var filter = urlParams.get('filter'); 181 document.location.href = '/events/?filter='+filter+'&location='+location+'&time='+jQuery("#timeSel").val() 182 }) 183 184 // FAQs 185 jQuery(".faqItem").click(function(){ 186 if(jQuery("div", this).css("display") == 'none'){ 187 jQuery("i", this).removeClass('fa-plus'); 188 jQuery("i", this).addClass('fa-minus'); 189 jQuery("div", this).slideDown(); 190 }else{ 191 jQuery("i", this).addClass('fa-plus'); 192 jQuery("i", this).removeClass('fa-minus'); 193 jQuery("div", this).slideUp(); 194 } 195 }) 196 197 jQuery("#distance2 #distance").change(function(){ 198 submitSearchForm2('Distance field change'); 199 }) 200 201 jQuery("#iam2, #distance1 #distance").change(function(){ 202 secondWsFormSub(); 203 }) 204 205 jQuery("#wsSearchButton").click(function(){ 206 submitSearchForm2('Search button pressed'); 207 }) 208 209 jQuery("#volMenuToggle").click(function(){ 210 jQuery("#volMenu").toggle(); 211 }) 212 213 214 215}); 216 217 218function replaceAll(str, term, replacement) { 219 return str.replace(new RegExp(escapeRegExp(term), 'g'), replacement); 220} 221 222function escapeRegExp(string){ 223 return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); 224} 225 226function setup(){ 227 jQuery('p:empty'). remove(); 228 jQuery("#mobnav").html( jQuery("#mainnav").html()); 229 jQuery("#mobnav").append('<a href="/workshops/" class="button gradyellow">Book A Workshop</a>'); 230 jQuery("#mobnav > ul > li").append('<i class="fas fa-sort-down"></i>'); 231 jQuery("#mastheadfloat").html('<div>'+jQuery("#masthead").html()+'</div>') 232} 233 234function doResize(){ 235 var w = jQuery(window).width(); 236 var h = jQuery(window).height(); 237} 238 239function linkto(url){ 240 document.location.href=url; 241} 242 243function closeMobNav(){ 244 jQuery("#mobnav").hide(); 245} 246 247function checkcookies(){ 248 var acceptcookies = localStorage.getItem("acceptcookies"); 249 if(acceptcookies != 1){ 250 jQuery(".cookiebar").fadeIn(1000); 251 } 252} 253 254function acceptCookies(){ 255 jQuery(".cookiebar").fadeOut(200); 256 localStorage.setItem("acceptcookies", "1"); 257} 258 259function checkWsSearch(){ 260 var ok = 1; 261 var type = jQuery('input[name="type"]:checked').val(); 262 var postcode = jQuery("input[name=postcode]").val(); 263 264 if(type != 'virtual'){ 265 if(!postcode){ 266 ok = 0; 267 } 268 } 269 270 var iam = jQuery('input[name="iam"]:checked').val(); 271 //console.log(iam); 272 273 274 if(iam === 'Woman'){ 275 jQuery("#myInterests label").hide(); 276 jQuery("#myInterests .women").show(); 277 278 }else if(iam === 'Man'){ 279 jQuery("#myInterests label").hide(); 280 jQuery("#myInterests .men").show(); 281 282 }else if(iam === 'youngadult'){ 283 jQuery("#myInterests label").hide(); 284 }else if(iam === 'other'){ 285 jQuery("#myInterests label").hide(); 286 jQuery("#myInterests .other").show(); 287 }else{ 288 jQuery("#myInterests label").show(); 289 } 290 291 var counter = 0; 292 if(jQuery("input[name=morning]").prop("checked") == true){counter++;} 293 if(jQuery("input[name=afternoon]").prop("checked") == true){counter++;} 294 if(jQuery("input[name=evening]").prop("checked") == true){counter++;} 295 296 if(counter < 1){ 297 ok=0; 298 } 299 300 301 if(!type){ok=0;} 302 303 if(!iam){ok=0;} 304 305 if(ok==1){ 306 jQuery("#wsSbmit1").hide(); 307 jQuery("#wsSbmit2").show(); 308 }else{ 309 jQuery("#wsSbmit1").show(); 310 jQuery("#wsSbmit2").hide(); 311 } 312 313 if(type == 'virtual'){ 314 jQuery("#locationSelect").slideUp(); 315 }else{ 316 jQuery("#locationSelect").fadeIn(); 317 } 318 319} 320 321// Open active menu 322function openActiveMenu(){ 323 324 var domain = 'https://'+document.domain; 325 var url = jQuery(location).attr("href"); 326 var uri = url.replace(domain, ''); 327 328 if(uri == '/'){return} 329 330 jQuery('#mainnav .sub-menu').each(function(i, obj) { 331 var str = jQuery(this).html(); 332 333 if (str.indexOf(uri) >= 0){ 334 jQuery(this).show(); 335 } 336 }); 337 338 jQuery('.sub-menu a').each(function(i, obj) { 339 340 var url = jQuery(location).attr("href"); 341 var link = jQuery(this).attr('href'); 342 343 if (url == link){ 344 jQuery(this).addClass("activeNav"); 345 } 346 }); 347} 348 349function secondWsFormSub(){ 350 351 var iam = jQuery('#iam2').val(); 352 var distance = jQuery('#distance').val(); 353 var postcode = jQuery('#postcode').val(); 354 var type = jQuery('#type').val(); 355 356 if(jQuery('input[name=morning]').prop('checked') == true){ 357 var morning = 1; 358 } 359 if(jQuery('input[name=afternoon]').prop('checked') == true){ 360 var afternoon = 1; 361 } 362 if(jQuery('input[name=evening]').prop('checked') == true){ 363 var evening = 1; 364 } 365 var url = '/workshops/?submit=1&type='+type+'&postcode='+postcode+'&iam='+iam+'&distance='+distance; 366 if(morning){ 367 url += '&morning=1'; 368 } 369 if(afternoon){ 370 url += '&afternoon=1'; 371 } 372 if(evening){ 373 url += '&evening=1'; 374 } 375 jQuery("#searchresults").html("<div></div><div style=\"padding:15px; text-align:center; font-size:30px\">Searching...<br/><br/><img src=\"https://lookgoodfeelbetter.co.uk/wp-content/themes/lookgoodfeelbetter/img/loading.gif\"></div><div></div"); 376 jQuery(".otherWsSearchForm").css("opacity", "0.3"); 377 378 document.location.href = url; 379} 380 381function submitSearchForm2(reason){ 382 if(!allowedToSubmit){ 383 console.log("Search cancelled as not yet active"); 384 return; 385 } 386 console.log("Submit search form: "+reason); 387 jQuery("#secondWsForm").submit(); 388 return; 389} 390 391// Session booking modal for volunteers 392function openSessModal(id){ 393 if(!id){return;} 394 jQuery(".sessModal").hide(); 395 jQuery("#modal_"+id).show(); 396} 397 398function closeSessModal(){ 399 jQuery(".sessModal").hide(); 400} 401 402function loadSessions(unix){ 403 if(!unix){return;} 404 jQuery("#loader_"+unix).html('<p style="padding:15px">Please wait...</p>'); 405 jQuery(".sessionLoader").slideUp(); 406 jQuery("#loader_"+unix).slideDown(); 407 408 a_data = new Object(); 409 a_data['action'] = 'loadSessions'; 410 a_data['unix'] = unix; 411 jQuery.ajax({ 412 type: "POST", 413 url: '../wp-content/themes/lookgoodfeelbetter/ajax.php', 414 dataType: "text", 415 data : a_data, 416 success : function(data) { 417 if(data){ 418 jQuery("#loader_"+unix).html(data); 419 420 } 421 } 422 }); 423 424} 425 426function confirmSession(obj){ 427 428 var time = jQuery(obj).attr('workshop-time'); 429 var date = jQuery(obj).attr('workshop-date'); 430 var wsid = jQuery(obj).attr('workshop-id'); 431 var venue = jQuery(obj).attr('venue-name'); 432 433 a_data = new Object(); 434 a_data['action'] = 'confirmSession'; 435 a_data['workshop_time'] = time; 436 a_data['workshop_date'] = date; 437 a_data['workshop_venue'] = venue; 438 a_data['Id'] = wsid; 439 440 jQuery.ajax({ 441 type: "POST", 442 url: '../wp-content/themes/lookgoodfeelbetter/ajax.php', 443 dataType: "text", 444 data : a_data, 445 success : function(data) { 446 var obj = jQuery.parseJSON(data); 447 if(obj.status == false){ 448 alert(obj.message) 449 } 450 if(obj.status == true){ 451 closeSessModal() 452 jQuery("h1").html('Session Confirmed'); 453 jQuery("article").html(obj.message); 454 jQuery("article").append('<p><a href="/volunteer-welcome/" class="button gradpink">Return to dashboard</a></p>'); 455 456 } 457 } 458 }); 459} 460 461function volunteerLoginSubmit(){ 462 a_data = new Object(); 463 a_data['action'] = 'volunteerLoginSubmit';
464 a_data['user_login'] = jQuery("#user_login").val(); 465 a_data['password'] = jQuery("#password").val(); 466 467 jQuery.ajax({ 468 type: "POST", 469 url: '../wp-content/themes/lookgoodfeelbetter/ajax.php', 470 dataType: "text", 471 data : a_data, 472 success : function(data) { 473 474 var obj = jQuery.parseJSON(data); 475 476 if(obj.loggedin === false){ 477 jQuery(".loginError").html(obj.message); 478 jQuery(".loginError").show(); 479 }else{ 480 location.reload(); 481 } 482 483 } 484 }); 485} 486 487function cancelVolunteerSession(id){ 488 489 if(!confirm("Are you sure you wish to cancel your place on this workshop?")){ 490 return; 491 } 492 493 a_data = new Object(); 494 a_data['action'] = 'cancelVolunteerSession'; 495 a_data['Id'] = id; 496 497 jQuery.ajax({ 498 type: "POST", 499 url: '../wp-content/themes/lookgoodfeelbetter/ajax.php', 500 dataType: "text", 501 data : a_data, 502 success : function(data) { 503 var obj = jQuery.parseJSON(data); 504 if(obj.status == false){ 505 alert(obj.message) 506 } 507 if(obj.status == true){ 508 jQuery("h1").html('Session Cancelled'); 509 jQuery("article").html(obj.message); 510 jQuery("article").append('<p><a href="/volunteer-welcome/" class="button gradpink">Return to dashboard</a></p>'); 511 512 } 513 } 514 }); 515} 516 517function updatePassword(){ 518 var old_pw = jQuery("#old_pw").val(); 519 var new_pw = jQuery("#new_pw").val(); 520 var new_pw_conf = jQuery("#new_pw_conf").val(); 521 jQuery("#error").html(''); 522 if(!old_pw){ 523 jQuery("#error").html("Please enter your current password"); 524 return 525 } 526 if(!new_pw){ 527 jQuery("#error").html("Please enter a new password"); 528 return 529 } 530 if(new_pw.length < 6){ 531 jQuery("#error").html("Your new password must be at least 6 characters long"); 532 return 533 } 534 if(!new_pw_conf){ 535 jQuery("#error").html("Please confirm your new password"); 536 return 537 } 538 if(new_pw != new_pw_conf){ 539 jQuery("#error").html("Your password and new password confirmation do not match"); 540 return 541 } 542 543 a_data = new Object(); 544 a_data['action'] = 'updatePassword'; 545 a_data['old_pw'] = old_pw; 546 a_data['new_pw'] = new_pw; 547 548 jQuery.ajax({ 549 type: "POST", 550 url: '../wp-content/themes/lookgoodfeelbetter/ajax.php', 551 dataType: "text", 552 data : a_data, 553 success : function(data) { 554 if(data == '1'){ 555 jQuery("article").html('<h1>Password Updated</h1><p>Thank you. We have updated your password.</p>') 556 }else{ 557 jQuery("#error").html(data) 558 } 559 } 560 }); 561 562} 563 564/* Beauty volunteer */ 565function storeVolData(event){ 566 localStorage.setItem("firstname", jQuery("#tfa_28").val()); 567 localStorage.setItem("lastname", jQuery("#tfa_3").val()); 568 localStorage.setItem("email", jQuery("#tfa_5").val()); 569} 570 571function beautyVolunteerConfirm(){ 572 a_data = new Object(); 573 a_data['action'] = 'beautyVolunteerConfirm'; 574 a_data['firstname'] = localStorage.getItem("firstname"); 575 a_data['lastname'] = localStorage.getItem("lastname"); 576 a_data['email'] = localStorage.getItem("email"); 577 578 jQuery.ajax({ 579 type: "POST", 580 url: '../wp-content/themes/lookgoodfeelbetter/ajax.php', 581 dataType: "text", 582 data : a_data, 583 success : function(data) { 584 if(data == '1'){ 585 localStorage.removeItem("firstname") 586 localStorage.removeItem("lastname") 587 localStorage.removeItem("email") 588 } 589 } 590 }); 591} 592 593function newsletterSignup(){ 594 595 jQuery("#newsletterformerrors").hide(); 596 597 var checkBox = document.getElementById("optin"); 598 var email = jQuery("input[name=email]").val() 599 var county = jQuery("input[name=county]").val() 600 var firstname = jQuery("input[name=firstname]").val() 601 var lastname = jQuery("input[name=lastname]").val() 602 603 if(!firstname || !lastname){ 604 jQuery("#newsletterformerrors").html('Please enter your first and last name'); 605 jQuery("#newsletterformerrors").fadeIn(); 606 return; 607 } 608 if(!email){ 609 jQuery("#newsletterformerrors").html('Please enter your email address'); 610 jQuery("#newsletterformerrors").fadeIn(); 611 return; 612 } 613 if(!county){ 614 jQuery("#newsletterformerrors").html('Please enter your county'); 615 jQuery("#newsletterformerrors").fadeIn(); 616 return; 617 } 618 619 if (checkBox.checked == false){ 620 jQuery("#newsletterformerrors").html('Please indicate your acceptance'); 621 jQuery("#newsletterformerrors").fadeIn(); 622 return; 623 } 624 625 a_data = new Object(); 626 a_data['action'] = 'newsletterSignup'; 627 a_data['email'] = email; 628 a_data['county'] = county; 629 a_data['firstname'] = firstname; 630 a_data['lastname'] = lastname; 631 jQuery.ajax({ 632 type: "POST", 633 url: '../wp-content/themes/lookgoodfeelbetter/ajax.php', 634 dataType: "text", 635 data : a_data, 636 success : function(data) { 637 console.log(data) 638 var obj = jQuery.parseJSON(data); 639 if(obj.success == false){ 640 jQuery("#newsletterformerrors").html(obj.message); 641 jQuery("#newsletterformerrors").fadeIn(); 642 }else{ 643 jQuery(".subscribebox form").html(obj.message); 644 } 645 } 646 }); 647} 648 649function clearWorkstopData(){ 650 localStorage.removeItem('firstname'); 651 localStorage.removeItem('lastname'); 652 localStorage.removeItem('email'); 653} 654 655function linkto(url){ 656 document.location.href = url; 657} 658 659function clearPatientFilter(){ 660 jQuery("#searchterms").val('');
661 filterWorkshops() 662} 663 664function showInterestFields(){ 665 if(jQuery("#interestFields").css("display") === 'block'){ 666 jQuery("#keywordFields").slideUp(); 667 }else{ 668 jQuery("#keywordFields").slideDown(); 669 } 670 671} 672 673function resetFilters(){ 674 console.log("Reseting filters"); 675 jQuery("#keywordFields input[type=checkbox]").removeAttr('checked'); 676 jQuery(".timeSlotSel input[type=checkbox]").attr('checked', 'checked'); 677 jQuery('#distance option:nth-child(3)').attr('selected', 'selected'); 678 jQuery("#keywordFields").slideDown(); 679 //submitSearchForm2('Reset Filters called'); 680}
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.