1const baseURL = 'https://www.promotionchoice.com/'; 2const currURL = window.location.href; 3const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; 4const currPageUrl = window.location.href; 5var pgbar_id = 'progressBar'; 6var status_id = 'status'; 7var label_id = 'label_artworkUpload'; 8var upload_rel = 1; 9var currentElm = ''; 10function uploadFile(file_field,upload_url,upload_dir,upload_type,ret_nm,ret_id){ 11 //pgbar_id = pgbar; status_id = status; 12 //$("#"+pgbar_id).css({"display":"block"}); 13 //$("#"+status_id).removeClass('note_gr_text').removeClass('note_text'); 14 var file = document.getElementById(file_field).files[0]; 15 label_id = 'label_'+file_field; 16 upload_rel = file_field.substring(file_field.lastIndexOf('_')+1); 17 var csrfToken = $('input[name*="csrf"]').val(); 18 var formdata = new FormData(); 19 20 formdata.append("upload_file", file); 21 formdata.append("upload_dir", upload_dir); 22 formdata.append("upload_type", upload_type); 23 formdata.append("ret_filename", ret_nm); 24 formdata.append("ret_fileid", ret_id); 25 var ajax = new XMLHttpRequest(); 26 ajax.upload.addEventListener("progress", progressHandler, false); 27 ajax.addEventListener("load", completeHandler, false); 28 ajax.addEventListener("error", errorHandler, false); 29 ajax.addEventListener("abort", abortHandler, false); 30 ajax.open("POST", baseURL+upload_url); 31 ajax.setRequestHeader("X-CSRF-Token", csrfToken); 32 ajax.send(formdata); 33} 34 35function progressHandler(event){ 36 /*var percent = (event.loaded / event.total) * 100; 37 $("#"+pgbar_id).val(Math.round(percent)); 38 $("#"+status_id).html(Math.round(percent)+"% uploaded... please wait");*/ 39 $("#"+label_id).html('<i class="fa fa-spinner fa-lg fa-spin"></i>'); 40} 41 42function completeHandler(event){ 43 $("#"+label_id).html(event.target.responseText); 44 //$("#"+pgbar_id).val(100); 45 46 /*if(parseInt(status_id.lastIndexOf('artworkUploadStatus')) > -1){ 47 $("#"+status_id).find('input.form-control').addClass('cart-fields'); 48 let fileName = $("#"+status_id).find('input.form-control').val(); 49 $("#"+label_id).parent("a.upload_file").attr('href',baseURL+'public/assets/rawArtworks/'+fileName).attr("target", "_blank"); 50 }*/ 51 //$("#"+label_id).html('View'); 52 $("#delArtworkUpload_"+upload_rel).removeClass('d-none'); 53 54 //var res_txt = event.target.responseText; 55 //var err_f = res_txt.substring(0,res_txt.indexOf(':')); 56 //if(err_f=='ERROR') $("#"+status_id).addClass('text-danger'); 57 //else $("#"+status_id).addClass('text-success'); 58} 59 60function errorHandler(event){ 61 $("#"+status_id).html("Upload Failed"); 62 $("#"+status_id).addClass('note_text'); 63} 64 65function abortHandler(event){ 66 $("#"+status_id).html("Upload Aborted"); 67 $("#"+status_id).addClass('note_text'); 68} 69 70function convertSpacesToPlus(searchPhrase) { 71 // Use a regular expression to replace spaces with '+' 72 searchPhrase = $.trim(searchPhrase); 73 //searchPhrase.replace(/ /g, '+'); 74 return searchPhrase.replace(/\s+/g, '+'); 75} 76 77$(document).on('keypress','.numeric',function(e){ 78 var keycode = (e.keyCode ? e.keyCode : e.which); 79 if(keycode>=48 && keycode<=57) return true; 80 else return false; 81}); 82 83$(document).on('keydown','.zipNumeric',function(e){ 84 var keycode = e.which || e.keyCode; 85 86 // Numbers 0-9 87 if (keycode >= 48 && keycode <= 57) return true; 88 89 // Numpad numbers 90 if (keycode >= 96 && keycode <= 105) return true; 91 92 // Hyphen keys 93 if (keycode == 189 || keycode == 109) return true; 94 95 // Allow backspace, delete, tab, arrows 96 if ($.inArray(keycode, [8, 9, 37, 39, 46]) !== -1) return true; 97 98 e.preventDefault(); 99}); 100 101$(document).on('change',".change-upload",function(e){ 102 var fld_id = $(this).attr('id'); 103 //var fld_val = $(this).val(); 104 var fileName = e. target. files[0]. name; 105 //$(this).parents('div.form-group').children('div.custom-file').children('label.custom-file-label').html(fileName); 106 $(this).parents('div.custom_browse_btn').children('label.custom-file-label').text(fileName); 107 var upload_dir = $(this).attr('data-upload-dir'); 108 var upload_type = $(this).attr('data-upload-type'); 109 var upload_url = "ajax/file-upload-parser"; 110 var ret_name = $(this).parents('div.form-group').children('label.upload_file').
110children('input').attr('name'); 111 var ret_id = $(this).parents('div.form-group').children('label.upload_file').children('input').attr('id'); 112 uploadFile(fld_id,upload_url,upload_dir,upload_type,ret_name,ret_id); 113 if(fld_id=='customerFileUpload'){ 114 $("#"+fld_id).parent('div.upload_btn_wrapper').addClass('disabled'); 115 } 116}); 117 118$(document).on('click','.del-upload',function(){ 119 let elem_id = $(this).attr('id'); 120 let rel_id = elem_id.substring(elem_id.lastIndexOf('_')+1); 121 let file_name = $("#artFile_"+rel_id).val(); 122 $.ajax({ 123 type: 'POST', 124 url: baseURL+'ajax/remove-art-upload', 125 data: {'file_name':file_name,'dir':'writable/uploads/rawArtworks'}, 126 headers: { 127 "X-CSRF-TOKEN": $('input[name*="csrf"]').val() // CSRF token in header 128 }, 129 success: function(resp){ 130 $("#label_artworkUpload_"+rel_id).html('Upload Art '+rel_id+'<input type="hidden" name="artfile[]" id="artFile_'+rel_id+'" class="form-control cart-fields" value="">'); 131 $("#"+elem_id).addClass('d-none'); 132 } 133 }); 134}); 135 136function _copyClipBoard(text){ 137 if(text.search(/\S/)!==-1){ 138 navigator.clipboard.writeText(text).then(() => { 139 // Show bootstrap toast 140 let toastEl = document.getElementById('copyToast'); 141 let toast = new bootstrap.Toast(toastEl); 142 toast.show(); 143 }); 144 } 145} 146 147$(document).ready(function(){ 148 149 $(document).on('click',".ajaxContent:not(.disabled):visible",function(){ 150 var URL = baseURL+'ajax/content'; 151 var form_data = new FormData();var flag = true; 152 var target = $(this).is('[data-record-target]')?$(this).attr('data-record-target'):$(this).attr('data-bs-target'); 153 var action = $(this).is('[data-record-type]')?$(this).attr('data-record-type'):''; 154 form_data.append($('input[name*="csrf"]:first').attr('name'),$('input[name*="csrf"]:first').val()); 155 form_data.append('action',action); 156 if($(this).is('[data-id]')) form_data.append('id',$(this).attr('data-id')); 157 if($(this).is('[data-misc]')) form_data.append('misc',$(this).attr('data-misc')); 158 if($(this).is('[data-segment]')) form_data.append('segment',$(this).attr('data-segment')); 159 if(action.indexOf('submit')!==-1){ 160 URL = currURL; 161 if($(target+':visible').find(':input[name!=""]:enabled,select[name!=""]:enabled').length>=1){ 162 $(target+':visible').find(':input[name!=""]:enabled').each(function(){ 163 if($(this).hasClass('mandatory')){ 164 if(($(this).is('select') && !$(this).val()) || (!$(this).is('select') && $(this).val().search(/\S/)==-1)){ 165 $(this).after('<span class="error top-arrow">This field is required.</span>'); 166 flag = false; 167 } 168 else if($(this).is('[name]') && !$(this).is(':checkbox') && !$(this).is(':radio')) form_data.append($(this).attr('name'),$(this).val()); 169 else if($(this).is('[name]') && $(this).is(':checked') && ($(this).is(':checkbox') || $(this).is(':radio'))) form_data.append($(this).attr('name'),$(this).val()); 170 } 171 else if($(this).is('[name]') && !$(this).is(':checkbox') && !$(this).is(':radio')) form_data.append($(this).attr('name'),$(this).val()); 172 else if($(this).is('[name]') && $(this).is(':checked') && ($(this).is(':checkbox') || $(this).is(':radio'))) form_data.append($(this).attr('name'),$(this).val()); 173 }); 174 } 175 } 176 if(flag){ 177 $.ajax({ 178 type :'POST', 179 url :URL, 180 data :form_data, 181 cache :false, 182 contentType:false, 183 processData:false, 184 timeout :10000, 185 context :this, 186 beforeSend: function(){ 187 if(typeof target!=='undefined' && $(target).find('div.modal-body').length) $(target).find('div.modal-body').html('<div class="loader_wrap vh-100 d-block"><div class="loader_inner"><div class="loader"></div></div></div>'); 188 else if(typeof target==='undefined' && $("div.page_content_wrap:last").children("div.loader_wrap").length) $("div.page_content_wrap:last").children("div.loader_wrap").show(); 189 }, 190 success: function(resp){ 191 $("div.page_content_wrap:last").children("div.loader_wrap:visible").hide(); 192 if(resp.search(/\S/)!=-1){ 193 resp = $.parseJSON(resp); 194 if(typeof resp.redirect!=='undefined' && resp.redirect) window.location.replace(resp.redirect); 195 else if($(target).find('div.modal-body').length) $(target).find('div.modal-body').html(resp.view); 196 return false; 197 }else if(action==='submit') window.location.reload(); 198 } 199 }); 200 } 201 }); 202 203 $('#commonModal').on('show.bs.modal', function(e){
204 if(typeof $(e.relatedTarget).html()!=='undefined'){ 205 var title = $(e.relatedTarget).is('[data-modal-title]')?$(e.relatedTarget).data('modal-title'):''; 206 var size = $(e.relatedTarget).is('[data-modal-size]')?$(e.relatedTarget).data('modal-size'):''; 207 var scrol = $(e.relatedTarget).is('[data-modal-scroll]')?true:false; 208 if(title!=='') $("#commonModalLabel").html(title); 209 $("#commonModal").find('div.modal-dialog').removeClass('modal-xl').removeClass('modal-lg').removeClass('modal-md'); 210 if(size!=='') $("#commonModal").find('div.modal-dialog').addClass('modal-'+size); 211 if(scrol) $("#commonModal").find('div.modal-dialog').addClass('modal-dialog-scrollable'); 212 else $("#commonModal").find('div.modal-dialog').removeClass('modal-dialog-scrollable'); 213 $("#commonModal").find('div.modal-footer').addClass('d-none'); 214 }else{ 215 if($("#commonModal").find('div.modal-dialog').hasClass('onload_newsletter')) $("#commonModal").find('div.modal-footer').addClass('d-none'); 216 else $("#commonModal").find('div.modal-dialog').removeClass('modal-xl').removeClass('modal-lg').find('div.modal-footer').removeClass('d-none'); 217 } 218 }); 219 220 $('.SliderHeaderBanner').slick({ 221 arrows:true, 222 dots:false, 223 speed:1200, 224 infinite:true, 225 autoplay:true, 226 slidesToShow:1, 227 //vertical:true, 228 slidesToScroll:1, 229 }); 230 231 $('.selling_slider').slick({ 232 arrows:true, 233 dots:false, 234 speed:1200, 235 infinite:false, 236 autoplay:false, 237 slidesToShow:5, 238 //vertical:true, 239 slidesToScroll:5, 240 responsive:[ 241 { 242 breakpoint:1200, 243 settings:{ 244 dots:false, 245 slidesToShow:4, 246 slidesToScroll:4, 247 } 248 }, 249 { 250 breakpoint:992, 251 settings:{ 252 dots:false, 253 slidesToShow:3, 254 slidesToScroll:3, 255 } 256 }, 257 { 258 breakpoint:768, 259 settings:{ 260 dots:false, 261 slidesToShow:2, 262 slidesToScroll:2, 263 } 264 }, 265 { 266 breakpoint:576, 267 settings:{ 268 dots:false, 269 slidesToShow:1, 270 slidesToScroll:1, 271 } 272 }, 273 ] 274 }); 275 276 $('.related_slider').slick({ 277 arrows:true, 278 dots:false, 279 speed:1200, 280 infinite:false, 281 autoplay:false, 282 slidesToShow:5, 283 //vertical:true, 284 slidesToScroll:1, 285 responsive:[ 286 { 287 breakpoint:1300, 288 settings:{ 289 dots:false, 290 slidesToShow:4, 291 slidesToScroll:1, 292 } 293 }, 294 { 295 breakpoint:1025, 296 settings:{ 297 dots:false, 298 slidesToShow:3, 299 slidesToScroll:1, 300 } 301 }, 302 303 { 304 breakpoint:768, 305 settings:{ 306 dots:false, 307 slidesToShow:2, 308 slidesToScroll:1, 309 } 310 }, 311 312 { 313 breakpoint:520, 314 settings:{ 315 dots:false, 316 slidesToShow:1, 317 slidesToScroll:1, 318 } 319 }, 320 ] 321 }); 322 323 324 $('.productSize_slider').slick({ 325 arrows:true, 326 dots:false, 327 speed:1200, 328 infinite:false, 329 autoplay:false, 330 slidesToShow:9, 331 //vertical:true, 332 slidesToScroll:9, 333 responsive:[ 334 { 335 breakpoint:1400, 336 settings:{ 337 dots:false, 338 slidesToShow:7, 339 slidesToScroll:7, 340 } 341 }, 342 { 343 breakpoint:768, 344 settings:{ 345 dots:false, 346 slidesToShow:4, 347 slidesToScroll:4, 348 } 349 }, 350 ] 351 });
352 353 354 $('.color_slider').slick({ 355 arrows:true, 356 dots:false, 357 speed:1200, 358 infinite:false, 359 autoplay:false, 360 slidesToShow:10, 361 //vertical:true, 362 slidesToScroll:6, 363 responsive:[ 364 { 365 breakpoint:1400, 366 settings:{ 367 dots:false, 368 slidesToShow:8, 369 slidesToScroll:4, 370 371 } 372 }, 373 { 374 breakpoint:992, 375 settings:{ 376 dots:false, 377 slidesToShow:10, 378 slidesToScroll:6, 379 } 380 }, 381 { 382 breakpoint:768, 383 settings:{ 384 dots:false, 385 slidesToShow:8, 386 slidesToScroll:4, 387 } 388 }, 389 390 { 391 breakpoint:576, 392 settings:{ 393 dots:false, 394 slidesToShow:6, 395 slidesToScroll:3, 396 } 397 }, 398 ] 399 }); 400 401 $('.size_slider').slick({ 402 arrows:true, 403 dots:false, 404 speed:1200, 405 infinite:false, 406 autoplay:false, 407 slidesToShow:8, 408 //vertical:true, 409 slidesToScroll:4, 410 responsive:[ 411 { 412 breakpoint:1400, 413 settings:{ 414 dots:false, 415 slidesToShow:6, 416 slidesToScroll:3, 417 418 } 419 }, 420 { 421 breakpoint:992, 422 settings:{ 423 dots:false, 424 slidesToShow:7, 425 slidesToScroll:4, 426 } 427 }, 428 { 429 breakpoint:768, 430 settings:{ 431 dots:false, 432 slidesToShow:5, 433 slidesToScroll:3, 434 } 435 }, 436 ] 437 }); 438 439 $('.sliderQtyItem').slick({ 440 arrows:true, 441 dots:false, 442 speed:1200, 443 infinite:false, 444 autoplay:false, 445 slidesToShow:7, 446 //vertical:true, 447 slidesToScroll:6, 448 responsive:[ 449 { 450 breakpoint:1400, 451 settings:{ 452 dots:false, 453 slidesToShow:6, 454 slidesToScroll:5, 455 } 456 }, 457 { 458 breakpoint:1200, 459 settings:{ 460 dots:false, 461 slidesToShow:3, 462 slidesToScroll:3, 463 } 464 }, 465 { 466 breakpoint:992, 467 settings:{ 468 dots:false, 469 slidesToShow:6, 470 slidesToScroll:6, 471 } 472 }, 473 { 474 breakpoint:768, 475 settings:{ 476 dots:false, 477 slidesToShow:5, 478 slidesToScroll:5, 479 } 480 }, 481 { 482 breakpoint:576, 483 settings:{ 484 dots:false, 485 slidesToShow:3, 486 slidesToScroll:3, 487 } 488 }, 489 ] 490 }); 491 492 493 $('.slider-for').slick({ 494 slidesToShow:1, 495 slidesToScroll:1, 496 arrows:true, 497 infinite:false, 498 fade:true, 499 asNavFor:'.slider-nav' 500 }); 501 502 $('.slider-nav').slick({ 503 slidesToShow:6, 504 slidesToScroll:3, 505 asNavFor: '.slider-for', 506 dots: false, 507 centerMode: false, 508 infinite:false, 509 focusOnSelect: true, 510 511 responsive:[ 512 { 513 breakpoint:768, 514 settings:{ 515 dots:false, 516 slidesToShow:5, 517 slidesToScroll:3, 518 } 519 }, 520 { 521 breakpoint:576, 522 settings:{ 523 dots:false, 524 slidesToShow:4, 525 slidesToScroll:2, 526 } 527 }, 528 ] 529 });
530 531 $('.slider-for').on('beforeChange', function(event, slick, currentSlide, nextSlide) { 532 var currentIframe = $(slick.$slides[currentSlide]).find('iframe'); 533 534 if (currentIframe.length) { 535 var src = currentIframe.attr('src'); 536 currentIframe.attr('src', src); // Reset -> stops video 537 } 538 }); 539 540 if(currURL.indexOf('categories/')!=-1 || currURL.indexOf('pages/testimonial')!=-1 || currURL.indexOf('search-results/')!=-1){ 541 var single_item_class = 'category_items'; 542 if(currURL.indexOf('pages/testimonial')!=-1) single_item_class = 'review-items'; 543 var ajaxLoading = false; 544 var loadMoreItems = function(){ 545 let pageNum = parseInt($("#curPage").val())+1; 546 let sort_type = ''; 547 $.ajax({ 548 url: currURL, 549 type: 'POST', 550 data: {'cur_page': pageNum, 'call_type':'ajax'}, 551 beforeSend: function(){ 552 ajaxLoading = true; 553 }, 554 success: function(html){ 555 if(html.search(/\S/)!=-1){ 556 $("."+single_item_class+":last").after(html); 557 ajaxLoading = false; 558 $("#curPage").val(pageNum); 559 if(!$("#scrollPageLoader").hasClass('d-none')) $("#scrollPageLoader").addClass('d-none'); 560 } 561 } 562 }); 563 }; 564 565 $(window).scroll(function() { 566 var minusHeight = 500; 567 if(currURL.indexOf('categories/')!=-1){ 568 var bottomHeight = $("div.category_content_block").outerHeight() + $("footer").outerHeight; 569 var adjustmentHeight = 350; 570 minusHeight = parseFloat(bottomHeight) + parseInt(adjustmentHeight); 571 } 572 if ($(window).scrollTop() + $(window).height() >= $(document).height() - parseFloat(minusHeight)) { 573 if(!ajaxLoading){ 574 let curPage = $("#curPage").val(); 575 let totPage = $("#totPage").val(); 576 console.log('Ajax scroll pagination called.'); 577 if(parseInt(curPage) < parseInt(totPage)){ 578 $("#scrollPageLoader").removeClass('d-none'); 579 loadMoreItems(); 580 } 581 } 582 } 583 }); 584 } 585 586 $(document).on('click','.review_more',function(){ 587 let curPage = $("#curPage").val(); 588 let totPage = $("#totPage").val(); 589 if(parseInt(curPage) < parseInt(totPage)){ 590 let pageNum = parseInt($("#curPage").val())+1; 591 let prodId = $("#reviewProduct").val(); 592 $("#ReadtReviews").find("#scrollPageLoader").removeClass('d-none'); 593 $.ajax({
594 url: baseURL+'ajax/get-more-reviews', 595 type: 'POST', 596 data: {'product_id':prodId, 'cur_page':pageNum, 'call_type':'ajax'}, 597 success: function(html){ 598 if(html.search(/\S/)!=-1){ 599 $(".read_view_block:last").after(html); 600 $("#curPage").val(pageNum); 601 if(!$("#scrollPageLoader").hasClass('d-none')) $("#ReadtReviews").find("#scrollPageLoader").addClass('d-none'); 602 } 603 } 604 }); 605 if(parseInt(pageNum) == parseInt(totPage)){ 606 $(".review_more").addClass('d-none'); 607 } 608 } 609 }); 610 611 $(document).on('keydown keyup keypress search','#searchBox',function(e){ 612 var keycode = (e.keyCode ? e.keyCode : e.which); 613 var srch_err = 0; 614 if(keycode==13 || e.key=='Enter'){ 615 e.preventDefault(); 616 if($(this).val().search(/\S/)==-1){ 617 $("#searchBox").after('<label class="error top-arrow">Please enter search keyword.</label>'); 618 srch_err++; 619 }else{ 620 let search_phrase = convertSpacesToPlus($(this).val()); 621 window.location.replace(baseURL+'search-results/'+search_phrase); 622 return true; 623 } 624 if(parseInt(srch_err)>0){ 625 setTimeout(function(){ 626 $("label.error").fadeOut(8000,function(){ 627 $("label.error").remove(); 628 }); 629 },2000); 630 return false; 631 } 632 }else{ 633 $(this).autocomplete({ 634 source: function (request, response) { 635 if($("#searchBox").parents('div.search_box').find('i.search-spinner').length==0) $("#searchBox").after('<i class="text-primary fa fa-spinner fa-spin fa-2x search-spinner"></i>'); 636 $.ajax({
637 url: baseURL+'ajax/get-search-results', 638 type: 'POST', 639 dataType: "json", 640 data: { 'search_key': request.term }, 641 headers: { 642 "X-CSRF-TOKEN": $('input[name*="csrf"]').val() // CSRF token in header 643 }, 644 success: function (data) { 645 response(data); 646 $("#searchBox").parents('div.search_box').find('i.search-spinner').remove(); 647 } 648 }); 649 }, 650 minLength: 2, 651 select: function (event, ui) { 652 if (ui.item.url) { 653 window.location.href = baseURL+ui.item.url; 654 } 655 } 656 }).autocomplete("instance")._renderMenu = function (ul, items) { 657 let currentCategory = ""; 658 $.each(items, function (index, item) { 659 if (item.category !== currentCategory) { 660 ul.append(`<li class='ui-autocomplete-category'>${item.category}</li>`); 661 currentCategory = item.category; 662 } 663 this._renderItemData(ul, item); 664 }.bind(this)); 665 }; 666 } 667 }); 668 669 $(document).on('keydown search','#mobSearchBox',function(e){ 670 var keycode = (e.keyCode ? e.keyCode : e.which); 671 var srch_err = 0; 672 if(keycode === 13 || e.key === 'Enter'){ 673 e.preventDefault(); 674 e.stopPropagation(); 675 676 if($(this).val().search(/\S/)==-1){ 677 $("#mobSearchBox").after('<label class="error top-arrow">Please enter search keyword.</label>'); 678 srch_err++; 679 }else{ 680 let search_phrase = convertSpacesToPlus($(this).val()); 681 window.location.replace(baseURL+'search-results/'+search_phrase); 682 return true; 683 } 684 if(parseInt(srch_err)>0){ 685 setTimeout(function(){ 686 $("label.error").fadeOut(8000,function(){ 687 $("label.error").remove(); 688 }); 689 },2000); 690 return false; 691 } 692 }else{ 693 $(this).autocomplete({ 694 source: function (request, response) { 695 if($("#mobSearchBox").parents('div.search_box').find('i.search-spinner').length==0) $("#mobSearchBox").after('<i class="text-primary fa fa-spinner fa-spin fa-2x search-spinner"></i>'); 696 $.ajax({
697 url: baseURL+'ajax/get-search-results', 698 type: 'POST', 699 dataType: "json", 700 data: { 'search_key': request.term }, 701 headers: { 702 "X-CSRF-TOKEN": $('input[name*="csrf"]').val() // CSRF token in header 703 }, 704 success: function (data) { 705 response(data); 706 $("#mobSearchBox").parents('div.search_box').find('i.search-spinner').remove(); 707 } 708 }); 709 }, 710 minLength: 2, 711 select: function (event, ui) { 712 if (ui.item.url) { 713 window.location.href = baseURL+ui.item.url; 714 } 715 } 716 }).autocomplete("instance")._renderMenu = function (ul, items) { 717 let currentCategory = ""; 718 $.each(items, function (index, item) { 719 if (item.category !== currentCategory) { 720 ul.append(`<li class='ui-autocomplete-category'>${item.category}</li>`); 721 currentCategory = item.category; 722 } 723 this._renderItemData(ul, item); 724 }.bind(this)); 725 }; 726 } 727 }); 728 729 $(document).on('click','#clickSearch',function(){ 730 let inputValue = $(this).prev().find(':input').val().trim(); 731 if(inputValue.length){ 732 let search_phrase = convertSpacesToPlus(inputValue); 733 window.location.replace(baseURL+'search-results/'+search_phrase); 734 } 735 }); 736 737 $(document).on('click','#mobClickSearch',function(){ 738 let inputValue = $(this).prev().find(':input').val().trim(); 739 if(inputValue.length){ 740 let search_phrase = convertSpacesToPlus(inputValue); 741 window.location.replace(baseURL+'search-results/'+search_phrase); 742 } 743 }); 744 745 $(".submenu-hideshow").click(function(){ 746 let hideshow_li_cnt = $(this).parents("div.category_link").find("li.d-none").length; 747 if(parseInt(hideshow_li_cnt)>0){ 748 $(this).parents("div.category_link").find("li.hideshow-links").removeClass('d-none'); 749 $(this).text("- Show Less"); 750 }else{ 751 $(this).parents("div.category_link").find("li.hideshow-links").addClass('d-none'); 752 $(this).text("+ Show More"); 753 } 754 }); 755 756 $.ajaxSetup({ 757 headers: { 758 'X-CSRF-TOKEN': $('input[name*="csrf"]').val() 759 } 760 }); 761 762 var _genShipOptions = function(elem_id){ 763 let zip_val = $("#productShippingZip").val(); 764 let dec_id = $(".product-decoration:checked").val(); 765 let product_id = $("#productId").val(); 766 let prod_qty = $("#prodQuantity_"+dec_id).val(); 767 let production = $("#production_"+dec_id).val(); 768 let proof = $("#productVirtualProof").val(); 769 let cart_edit_select = $("#productShipMethod").data('edit-select'); 770 let ship_opt_id = ($("#productShipMethod").val().search(/\S/)!=-1)?$("#productShipMethod").val():''; 771 let options = {}; 772 if(cart_edit_select!='' && ship_opt_id=='') ship_opt_id = cart_edit_select; 773 if(dec_id && $(':input.price-params.fields-'+dec_id).length){ 774 $(':input.price-params.fields-'+dec_id).each(function(){ 775 if($(this).val()){ 776 var name = $(this).attr('name').replace('[]','').split('[').pop();name = name.replace(']',''); 777 options[name] = $(this).val(); 778 } 779 }); 780 } 781 if(zip_val.length==5 || zip_val.length==10){ 782 $.ajax({
783 url: baseURL+'ajax/get-ship-options', 784 method: 'POST', 785 beforeSend: function(){ 786 $('#productShippingZip').next('.error').remove(); 787 if(elem_id=='productShippingZip'){ 788 $("#productShippingZip").after('<i class="fa fa-spinner fa-lg fa-spin ajax-spinner" aria-hidden="true"></i>'); 789 } 790 }, 791 data: {'product_id':product_id,'prod_qty':prod_qty,'dec_id':dec_id,'ship_zip':zip_val,'production':production,'proof':proof,'select_ship':ship_opt_id,options}, 792 headers: { 793 "X-CSRF-TOKEN": $("#frmProductDetails").find('input[name*="csrf"]').val() // CSRF token in header 794 }, 795 success: function(resp){ 796 if(resp.search(/\S/)!=-1){ 797 if(resp.indexOf('<option')!==-1){ 798 $("#productShipMethod").html(resp); 799 $("#productShipMethod").removeAttr('disabled'); 800 $("#productShippingZip").parent('div.form-group').find('i.ajax-spinner').remove(); 801 $("#productShipMethod").trigger('change'); 802 }else{ 803 $("#productShipMethod").prop('disabled',true).find('option[value!=""]').remove(); 804 $("#productShippingZip").parent('div.form-group').find('i.ajax-spinner').remove(); 805 $("#productShippingZip").after('<label class="error top-arrow">'+resp+'</label>'); 806 } 807 } 808 } 809 }); 810 } 811 }; 812 813 $("#productShippingZip").change(function(){ 814 let elem_id = $(this).attr('id'); 815 _genShipOptions(elem_id); 816 }); 817 818 $.ajaxSetup({ 819 headers: { 820 'X-CSRF-TOKEN': $('input[name*="csrf"]').val() 821 } 822 }); 823 824 $(document).on('change','#field_35',function(){ 825 if($(this).val().search(/\S/)!=-1){ 826 if($('#inkColors').length>0){ 827 $('#inkColors option').prop('disabled', false); 828 $('#inkColors').multiselect('deselectAll', false); 829 $('#inkColors').multiselect('refresh'); 830 } 831 } 832 if($(this).is('[data-target]')){ 833 let decoration = $(this).data('target').match(/\d+/); 834 let productionData = $("#production_json_"+decoration).val(); 835 let target = '#'+$(this).data('target'); 836 let $prodSelect = $(target); 837 let selectedOption = $(this).find(':selected'); 838 let productionIds = selectedOption.data('production'); 839 840 $prodSelect.empty().append('<option value="">Production Time</option>'); 841 842 if (productionIds) { 843 let productionDataObj = JSON.parse(productionData); 844 let ids = productionIds.toString().split(',').map(id => id.trim()); 845 846 // Loop through all production entries 847 Object.values(productionDataObj).forEach(function (p) { 848 if (ids.includes(p.id.toString())) { 849 let label = p.name; 850 if (p.price > 0) { 851 label += " +$" + p.price.toFixed(2); 852 if(p.multiple) label += " / " + p.multiple + " Pcs"; 853 } 854 $prodSelect.append( 855 $('<option>', { 856 value: p.id, 857 text: label, 858 'data-minimum': p.minimum 859 }) 860 ); 861 } 862 }); 863 } 864 var minimum = $(this).find('option:selected').data('minimum').toString(); 865 if(decoration){ 866 $('label.error').remove(); 867 if(minimum!=='0'){ 868 $('#prodQuantity_'+decoration).attr('data-minimum',minimum); 869 if(!$(".prod-size-qty").length && minimum>parseInt($('#prodQuantity_'+decoration).val())){ 870 $('#prodQuantity_'+decoration).val(minimum).change(); 871 } 872 } 873 } 874 } 875 });
876 877 $(document).on('change','input[id^="prodQuantity_"]',function(){ 878 var decoration = $(this).attr('id').match(/\d+/); 879 var currQty = parseInt($(this).val()); 880 var minimum = parseInt($("#minQuantity_"+decoration).val()); 881 if($(this).is('[data-minimum]')) minimum = parseInt($(this).data('minimum')); 882 if(isNaN(currQty)){ 883 currQty = minimum; 884 $("#prodQuantity_"+decoration).val(minimum); 885 } 886 if(minimum>parseInt(currQty)){ 887 $('label.error').remove(); 888 $("#prodQuantity_"+decoration).val(minimum).change().parent("div.form-group").after('<label class="error top-arrow">Quantity cannot be less than '+minimum+' pieces.</label>'); 889 } 890 }); 891 892 $(document).on('change','#productShipMethod',function(){ 893 if($(this).val().search(/\S/)!=-1){ 894 let ship_method = $(this).find('option:selected').text(); 895 let ship_price = $(this).find('option:selected').data('price'); 896 let delivery_date = $(this).find('option:selected').data('etd'); 897 let raw_delivery_date = $(this).find('option:selected').data('raw-etd'); 898 899 ship_method = ship_method.replace(' - FREE',''); 900 901 $("#deliveryDate").html(delivery_date + '<input type="hidden" name="ship_etd" class="cost-params" value="'+raw_delivery_date+'">'); 902 $(".estimated_date").removeClass('d-none'); 903 $("#chargeDetails").find("td.ship-method").html('Shipping '+(ship_method!==''?'('+ship_method+')':'')+'' + '<input type="hidden" name="ship_method_name" class="cost-params" value="'+ship_method+'">'); 904 $("#chargeDetails").find("td.ship-charge").html((parseFloat(ship_price)==0?'<span class="text-danger">FREE</span>':'$'+ship_price.toFixed(2)) + '<input type="hidden" name="ship_cost" class="cost-params" value="'+ship_price.toFixed(2)+'">'); 905 $("#chargeDetails").find("tr#shipCharges_holder").removeClass('d-none'); 906 907 let totalCost = parseFloat($("#orderTotal").val()); 908 totalCost += parseFloat(ship_price); 909 910 $("#totalCost").text(totalCost.toFixed(2)); 911 } 912 }); 913 914 $(document).on('change','.price-params',function(){ 915 let elem_id = $(this).attr('id'); 916 let dec_id = $(".product-decoration:checked").val(); 917 let product_id = $("#productId").val(); 918 let ship_opt_id = $("#productShipMethod").val(); 919 let ship_method = ''; 920 let ship_weight = 0; 921 let ship_price = ''; 922 if(elem_id.indexOf('prodSize_')!=-1){ 923 return false; 924 } 925 if(elem_id=='productVirtualProof' && $("#productVirtualProof").val().search(/\S/)!=-1){ 926 if(!$(this).hasClass('params-'+dec_id)) $(this).addClass('params-'+dec_id); 927 if(!$(this).hasClass('cart-fields-'+dec_id)) $(this).addClass('cart-fields-'+dec_id); 928 } 929 if(elem_id.indexOf('prodQuantity_')!=-1 && parseInt($("#prodQuantity_"+dec_id).val()) < parseInt($("#minQuantity_"+dec_id).val())){ 930 $("#prodQuantity_"+dec_id).val(parseInt($("#minQuantity_"+dec_id).val())); 931 $("#prodQuantity_"+dec_id).parent("div.form-group").after('<label class="error">Quantity cannot be less than '+parseInt($("#minQuantity_"+dec_id).val())+' pieces.</label>'); 932 } 933 if($("#productShipMethod").val().search(/\S/)!=-1){ 934 ship_method = $("#productShipMethod").find('option:selected').text(); 935 ship_method = ship_method.replace(' - FREE',''); 936 ship_price = $("#productShipMethod").find('option:selected').data('price'); 937 ship_weight = $("#productShipMethod").find('option:selected').data('unit-weight'); 938 } 939 $.ajax({
940 url: baseURL+'ajax/get-order-cost', 941 method: 'POST', 942 data: {'product_id':product_id,'decoration':dec_id,'ship_method':ship_method,'ship_price':ship_price,'ship_weight':ship_weight,'params':$(".params-"+dec_id).serializeArray()}, 943 headers: { 944 "X-CSRF-TOKEN": $("#frmProductDetails").find('input[name*="csrf"]').val() // CSRF token in header 945 }, 946 success: function(resp){ 947 if(resp.search(/\S/)!=-1){ 948 let priceObj = $.parseJSON(resp); 949 var totalCost = 0; 950 var productTotal = 0; 951 if(dec_id=='Sample'){ 952 $("#unitPrice_"+dec_id).val(0); 953 totalCost = parseFloat(priceObj.total_cost); 954 productTotal = 0; 955 ship_price = priceObj.cost.Shipping.toFixed(2); 956 }else{ 957 $("#unitPrice_"+dec_id).val(priceObj.price.toFixed(2)); 958 $("#unitPriceDisp_"+dec_id).text('x $'+priceObj.price.toFixed(2)+'ea'); 959 totalCost = parseFloat(priceObj.total_cost); 960 productTotal = parseFloat(priceObj.total_cost); 961 if(parseFloat(ship_price)>0){ 962 totalCost += parseFloat(ship_price); 963 } 964 } 965 $("#totalCost").text(totalCost.toFixed(2)); 966 $("#orderTotal").val(productTotal.toFixed(2)); 967 $("#chargeDetails").html(priceObj.charges_html); 968 if(elem_id.indexOf('prodQuantity_')!=-1 || elem_id.indexOf('production_')!=-1 || elem_id=='productVirtualProof' || priceObj.adjust_shipping==1){ 969 _genShipOptions(elem_id); 970 } 971 } 972 } 973 }); 974 }); 975 976 $(document).on('change','.prod-size-qty',function(){ 977 let tot_qty = 0; 978 let tot_size_qty = 0; 979 let elem_id = $(this).attr('id'); 980 let currQty = parseInt($(this).val()); 981 let dec_id = $(".product-decoration:checked").val(); 982 let minimum = parseInt($("#minQuantity_"+dec_id).val()); 983 if(isNaN(currQty)){ 984 $("#"+elem_id).val(0); 985 $(".prod-size-qty:visible").each(function(){ 986 tot_size_qty += parseInt($(this).val()); 987 }); 988 if(parseInt(tot_size_qty) < parseInt(minimum)){ 989 let def_qty = parseInt(minimum-tot_size_qty); 990 $("#"+elem_id).val(def_qty); 991 } 992 } 993 $(".prod-size-qty:visible").each(function(){ 994 tot_qty += parseInt($(this).val()); 995 }); 996 if(tot_qty && $("#totalQuantity_"+dec_id).length) $("#totalQuantity_"+dec_id).text(tot_qty); 997 $("#prodQuantity_"+dec_id).val(tot_qty).trigger('change'); 998 }); 999 1000 $(document).on('click','.product-decoration',function(){ 1001 let dec_id = $(this).val(); 1002 if(dec_id.search(/\S/)!=-1){ 1003 $(".weight-grid").not(".d-none").addClass('d-none'); 1004 $("#weightGrid_"+dec_id).removeClass('d-none'); 1005 1006 $(".price-grid").not(".d-none").addClass('d-none'); 1007 $("#priceGrid_"+dec_id).removeClass('d-none'); 1008 1009 $(".production-time").not(".d-none").addClass('d-none'); 1010 $("select.production").val(''); 1011 $("#productionTime_"+dec_id).removeClass('d-none'); 1012 1013 if(dec_id=='Sample' || dec_id==15){ 1014 $("#artworkBlock").addClass('d-none'); 1015 $("#vpHolder").addClass('d-none'); 1016 if(dec_id=='Sample'){ 1017 $("#ptHolder").addClass('d-none'); 1018 $("#productionShippingBlock").addClass('d-none'); 1019 $("#btnAddtoCart").removeClass('disabled'); 1020 }else{ 1021 $("#ptHolder").removeClass('d-none'); 1022 $("#productionShippingBlock").removeClass('d-none'); 1023 $("#noPrintInstHolder").removeClass('d-none'); 1024 if(!$("#btnAddtoCart").hasClass('disabled')) $("#btnAddtoCart").addClass('disabled'); 1025 if(!$("#continueStep2Holder").hasClass('d-none')) $("#continueStep2Holder").addClass('d-none'); 1026 } 1027 }else{ 1028 $("#productionShippingBlock").removeClass('d-none'); 1029 $("#continueStep2Holder").removeClass('d-none'); 1030 if(!$("#noPrintInstHolder").hasClass('d-none')) $("#noPrintInstHolder").addClass('d-none'); 1031 $("#noPrintInstHolder").find("#artInfoNoPrint").val(''); 1032 if(!$("#btnAddtoCart").hasClass('disabled')) $("#btnAddtoCart").addClass('disabled'); 1033 $("#artworkBlock").removeClass('d-none'); 1034 $("#vpHolder").removeClass('d-none'); 1035 $("#ptHolder").removeClass('d-none'); 1036 } 1037 } 1038 });
1039 1040 $(document).on('click','#viewCharges',function(){ 1041 let link_text = $(this).text(); 1042 if(link_text=='View Charges') $(this).text('Hide Charges'); 1043 else $(this).text('View Charges'); 1044 }); 1045 1046 $(document).on('click','.color-check',function(){ 1047 let elem_id = $(this).attr('id'); 1048 let color_id = elem_id.substring(elem_id.lastIndexOf('_')+1); 1049 let dec_id = $(".product-decoration:checked").val(); 1050 let panel_id = $(this).data('panel-id')?$(this).data('panel-id'):0; 1051 if($(this).hasClass('image-changer') && $(this).prop('checked') && $("#thumbImage_"+color_id).length>0){ 1052 $("#thumbImage_"+color_id).trigger('click'); 1053 } 1054 if($('.select_color_wrap').length){ 1055 $('.select_color_wrap').each(function(){ 1056 let colorArr = []; 1057 if($(this).find('input[type="checkbox"]').length){ 1058 $(this).find('.color-check').each(function(){ 1059 if($(this).is(':checked') && $(this).data('color-name')) colorArr.push($(this).data('color-name')); 1060 }); 1061 if(panel_id) $(this).find("#selectColorList_"+dec_id+"_"+panel_id).text(colorArr.join(", ")); 1062 else $(this).find("#selectColorList_"+dec_id).text(colorArr.join(", ")); 1063 if(!colorArr.length){ 1064 if(panel_id) $(this).find("#selectColorList_"+dec_id+"_"+panel_id).text(''); 1065 else $(this).find("#selectColorList_"+dec_id).text(''); 1066 if($(this).hasClass('image-changer')) $(".thumb_item:first").trigger('click'); 1067 } 1068 } 1069 }); 1070 } 1071 }); 1072 1073 if(currURL.indexOf('/products/') !== -1){ 1074 let dec_id = $(".product-decoration:checked").val(); 1075 $(".product-decoration:checked").trigger('click'); 1076 $("#prodQuantity_"+dec_id).trigger('change'); 1077 } 1078 1079 $(document).on('click',".delete_cart_item",function(){ 1080 var elm_id = $(this).attr('id'); 1081 var cart_key = elm_id.substring(elm_id.lastIndexOf('_')+1); 1082 $("#miniCart").find('div.loader_wrap').show(); 1083 $.ajax({ 1084 type: 'POST', 1085 url: baseURL+'ajax/remove-mcart-item', 1086 data: {'cart_key':cart_key}, 1087 headers: { 1088 "X-CSRF-TOKEN": $("#miniCart").find('input[name*="csrf"]').val() // CSRF token in header 1089 }, 1090 success: function(resp){ 1091 if(resp.search(/\S/)!=-1){ 1092 $("#miniCart").find('div.loader_wrap').hide(); 1093 _refreshMCart(); 1094 if(parseInt($("#cartCount").text())>0) $("#cartCount").text(parseInt($("#cartCount").text())-1); 1095 } 1096 } 1097 }); 1098 }); 1099 1100 $(document).on('click', '[data-bs-dismiss="offcanvas"]', function () { 1101 const instance = new bootstrap.Offcanvas(document.getElementById("miniCart")); 1102 if ($('.offcanvas').hasClass('show')) { 1103 instance.hide(); 1104 if($('.offcanvas').hasClass('show')){ 1105 $('.offcanvas').removeClass('show'); 1106 $('.offcanvas-backdrop').remove(); 1107 $('body').removeClass('offcanvas-backdrop-open'); 1108 } 1109 } 1110 }); 1111 1112 var _refreshMCart = function(){ 1113 const instance = new bootstrap.Offcanvas($("#miniCart")[0]); 1114 if (!$('.offcanvas').hasClass('show')) { 1115 instance.show(); 1116 } 1117 $("#miniCart").find('div.loader_wrap').show(); 1118 $.ajax({
1119 type: 'GET', 1120 url: baseURL+'ajax/refresh-mcart', 1121 success: function(resp){ 1122 $("#miniCart").find('div.loader_wrap').hide(); 1123 $("#miniCartContent").html(resp); 1124 } 1125 }); 1126 }; 1127 1128 var _buildSearchURL = function(){ 1129 var currentUrl = window.location.origin + window.location.pathname; 1130 if($(".filter-params").length){ 1131 var obj = {}; 1132 obj['current'] = currentElm; 1133 $(".filter-params:checked").each(function(){ 1134 var elm = $(this).attr('name').replace('[]','').split('[').pop();elm = elm.replace(']',''); 1135 if(typeof obj[elm]!=='undefined') obj[elm] = obj[elm]+'|'+$(this).val(); 1136 else obj[elm] = $(this).val() 1137 }); 1138 if(Object.keys(obj).length){ 1139 var encrypt = decodeURIComponent(btoa(JSON.stringify(obj))); 1140 currentUrl += '?filter='+encrypt; 1141 } 1142 window.location.href = currentUrl; 1143 } 1144 }; 1145 1146 $(document).on('click','.filter-params',function(){ 1147 currentElm = $(this).attr('name').replace('[]','').split('[').pop();currentElm = currentElm.replace(']',''); 1148 _buildSearchURL(); 1149 }); 1150 1151 $(document).on('click','#clearAllFilter',function(){ 1152 let curr_url = new URL(window.location.origin + window.location.pathname); 1153 let updatedUrl = curr_url.toString(); 1154 window.location.href = decodeURIComponent(updatedUrl); 1155 }); 1156 1157 $(document).on('click','.remove-filter',function(){ 1158 let filterIdVal = $(this).attr('data-filter-id'); 1159 let filterElemId = $(this).attr('data-filter-type'); 1160 if($(".remove-filter").length==1) $("#clearAllFilter").trigger('click'); 1161 else{ 1162 if(isNaN(filterIdVal)){ 1163 $('input[type="checkbox"][value="'+filterIdVal+'"]').trigger('click'); 1164 }else{ 1165 if(filterElemId=='filterPrice' || filterElemId=='filterQuantity'){ 1166 $("#"+filterElemId+filterIdVal).prop('checked',false); 1167 _buildSearchURL(); 1168 }else{ 1169 $("#"+filterElemId+filterIdVal).trigger('click'); 1170 } 1171 } 1172 } 1173 }); 1174 1175 $(document).on('click','.filter-hideshow',function(){ 1176 $(this).toggleClass('filter-arrow'); 1177 $(".filter_section").children('div.filter_box').toggleClass('d-none'); 1178 }); 1179 1180 $(document).on('click','#headerCart',function(e){ 1181 _refreshMCart(); 1182 }); 1183 1184 $(document).on('change','.mc-quantity',function(e){ 1185 let elm_id = $(this).attr('id'); 1186 let cart_key = elm_id.substring(elm_id.lastIndexOf('_')+1); 1187 $("#miniCart").find('div.loader_wrap').show(); 1188 $.ajax({ 1189 type: 'POST', 1190 url: baseURL+'ajax/update-mcart', 1191 data: {'cart_key':cart_key,'quantity':$(this).val()}, 1192 headers: { 1193 "X-CSRF-TOKEN": $("#miniCart").find('input[name*="csrf"]').val() // CSRF token in header 1194 }, 1195 success: function(resp){ 1196 $("#miniCart").find('div.loader_wrap').hide(); 1197 _refreshMCart(); 1198 } 1199 }); 1200 }); 1201 1202 $(document).on('change','.mc-prod-size-qty',function(e){ 1203 let elm_id = $(this).attr('id'); 1204 let cart_key = elm_id.substring(elm_id.lastIndexOf('_')+1); 1205 let tot_qty = 0; 1206 1207 $("#prodSizeHolder_"+cart_key).find("input.mc-prod-size-qty").each(function(){ 1208 tot_qty += parseInt($(this).val()); 1209 }); 1210 $("#prodQty_"+cart_key).val(tot_qty); 1211 $("#miniCart").find('div.loader_wrap').show(); 1212 $.ajax({
1213 type: 'POST', 1214 url: baseURL+'ajax/update-mcart', 1215 data: {'cart_key':cart_key,'quantity':tot_qty,'sizeqty':$("#prodSizeHolder_"+cart_key).find("input.mc-prod-size-qty").serializeArray()}, 1216 headers: { 1217 "X-CSRF-TOKEN": $("#miniCart").find('input[name*="csrf"]').val() // CSRF token in header 1218 }, 1219 success: function(resp){ 1220 $("#miniCart").find('div.loader_wrap').hide(); 1221 _refreshMCart(); 1222 } 1223 }); 1224 }); 1225 1226 $(".review-scroll").click(function() { 1227 $("html, body").animate({ 1228 scrollTop: $("#prodReviewHolder").offset().top - 150 1229 }, 800); // 800ms animation 1230 }); 1231 1232 $(".plus_minus_icon").on("click", function() { 1233 var flag = '0'; 1234 if($(this).next(".menu_sublinks").css('display') == 'block'){ 1235 flag='1'; 1236 } 1237 $(".menu_sublinks").slideUp("slow"); 1238 1239 if( flag == '1') $(this).next(".menu_sublinks").slideUp( "slow" ); 1240 else $(this).next(".menu_sublinks").slideToggle( "slow" ); 1241 }); 1242 1243 var reviewValidation = $("#frmPostReview").validate({ 1244 ignore: [], 1245 rules: { 1246 name: { 1247 required: true, 1248 minlength: 3 1249 }, 1250 email: { 1251 required: true, 1252 email: true 1253 }, 1254 rating: { 1255 required: true 1256 }, 1257 comments: { 1258 required: true 1259 } 1260 }, 1261 messages: { 1262 name: { 1263 required: "Please enter your name.", 1264 minlength: "Name should be at least 3 characters long." 1265 }, 1266 email: { 1267 required: "Please enter your email.", 1268 email: "Please enter a valid email." 1269 }, 1270 rating: "Please provide a rating.", 1271 comments: { 1272 required: "Please provide comments." 1273 } 1274 } 1275 }); 1276 1277 $(document).on('click','#reviewSubmit',function(){ 1278 let err_cnt = 0; 1279 if($("#reviewerName").val().search(/\S/)==-1){ 1280 if($("#reviewerName").parent('div.form-group').find('label.error').length==0){ 1281 $("#reviewerName").after('<label class="error top-arrow">Please enter your name.</label>'); 1282 } 1283 err_cnt++; 1284 } 1285 if($("#reviewTitle").val().search(/\S/)==-1){ 1286 if($("#reviewTitle").parent('div.form-group').find('label.error').length==0){ 1287 $("#reviewTitle").after('<label class="error top-arrow">Please enter a review title.</label>'); 1288 } 1289 err_cnt++; 1290 } 1291 if($("#reviewRating").val().search(/\S/)==-1 || $("#reviewRating").val()==='0.0'){ 1292 if($("#reviewRating").parent('div.form-group').find('label.error').length==0){ 1293 $("#reviewRating").after('<label class="error top-arrow">Please provide a rating.</label>'); 1294 } 1295 err_cnt++; 1296 } 1297 if($("#reviewComments").val().search(/\S/)==-1){ 1298 if($("#reviewComments").parent('div.form-group').find('label.error').length==0){ 1299 $("#reviewComments").after('<label class="error top-arrow">Please provide comments.</label>'); 1300 } 1301 err_cnt++; 1302 } 1303 if(!err_cnt){ 1304 let form_data = new FormData(); 1305 $("#frmPostReview").find(':input.review-fields').each(function(){ 1306 if($(this).is('[name]') && !$(this).is(':checkbox') && !$(this).is(':radio')) form_data.append($(this).attr('name'),$(this).val()); 1307 else if($(this).is('[name]') && $(this).is(':checked') && ($(this).is(':checkbox') || $(this).is(':radio'))) form_data.append($(this).attr('name'),$(this).val()); 1308 }); 1309 $.ajax({ 1310 type :'POST', 1311 url : baseURL+'ajax/post-review', 1312 data :form_data, 1313 cache :false, 1314 contentType:false, 1315 processData:false, 1316 context :this, 1317 success: function(resp){ 1318 if(resp.search(/\S/)!=-1){ 1319 var respObj = $.parseJSON(resp); 1320 $("#reviewMSG").removeClass('d-none').html(respObj.message); 1321 $("#frmPostReview").find(':input.review-fields').val(''); 1322 $(".review-rating").starRating("setRating", 0); 1323 } 1324 } 1325 }); 1326 }else{ 1327 setTimeout(function(){ 1328 $("label.error").fadeOut(8000,function(){ 1329 $("label.error").remove(); 1330 }); 1331 },2000); 1332 return false; 1333 } 1334 });
1335 1336 $(document).on('change','#coSavedAddress',function(){ 1337 let elem_val = $(this).val(); 1338 if(elem_val=='new'){ 1339 if(!$("#lastShipAddress").hasClass('d-none')) $("#lastShipAddress").addClass('d-none'); 1340 $(".shipping-fields").val(''); 1341 $("#si_country").val(226); 1342 $("#shippingFieldsHolder").removeClass('d-none'); 1343 }else{ 1344 if(elem_val.search(/\S/)!=-1){ 1345 let company = $(this).find('option:selected').data('company'); 1346 let fname = $(this).find('option:selected').data('fname'); 1347 let lname = $(this).find('option:selected').data('lname'); 1348 let email = $(this).find('option:selected').data('email'); 1349 let phone = $(this).find('option:selected').data('phone'); 1350 let address1 = $(this).find('option:selected').data('address1'); 1351 let address2 = $(this).find('option:selected').data('address2'); 1352 let city = $(this).find('option:selected').data('city'); 1353 let state = $(this).find('option:selected').data('state'); 1354 let stateabbr = $(this).find('option:selected').data('stateabbr'); 1355 let zip = $(this).find('option:selected').data('zip'); 1356 let country = $(this).find('option:selected').data('country'); 1357 let countryabbr = $(this).find('option:selected').data('countryabbr'); 1358 1359 $("#si_company").val(company); 1360 $("#si_firstName").val(fname); 1361 $("#si_lastName").val(lname); 1362 $("#si_email").val(email); 1363 $("#si_phone").val(phone); 1364 $("#si_address1").val(address1); 1365 $("#si_address2").val(address2); 1366 $("#si_city").val(city); 1367 $("#si_state").val(state); 1368 $("#si_postalCode").val(zip); 1369 $("#si_country").val(country); 1370 1371 if(!$("#lastShipAddress").hasClass('d-none')){ 1372 let addr_str = fname+' '+lname+'<br>'+address1+' '+address2+'<br>'+city+' '+stateabbr+'. '+zip+'<br>'+countryabbr+'<br>'+phone; 1373 $("#lastShipAddress").find('p').html(addr_str); 1374 } 1375 1376 if($("#sameAsShipping").prop('checked')){ 1377 _copyShipAddress(); 1378 } 1379 1380 $("#si_state").trigger('change'); 1381 } 1382 } 1383 }); 1384 1385 $(document).on('click','#sameAsShipping',function(){ 1386 if($(this).prop('checked')){ 1387 _copyShipAddress(); 1388 if(!$("#lastBillAddress").hasClass('d-none')) $("#lastBillAddress").addClass('d-none'); 1389 $("#billingFieldsHolder").removeClass('d-none'); 1390 }else{ 1391 $(".billing-fields").val(''); 1392 $("#bi_country").val(226); 1393 $("#billingFieldsHolder").removeClass('d-none'); 1394 } 1395 }); 1396 1397 $(document).on('click','#changeBillAddress',function(){ 1398 if(!$("#lastBillAddress").hasClass('d-none')) $("#lastBillAddress").addClass('d-none'); 1399 /*$(".billing-fields").val(''); 1400 $("#bi_country").val(226);*/ 1401 $("#billingFieldsHolder").removeClass('d-none'); 1402 }); 1403 1404 $(document).on('click','#changeShipAddress',function(){ 1405 if(!$("#lastShipAddress").hasClass('d-none')) $("#lastShipAddress").addClass('d-none'); 1406 /*$(".shipping-fields").val(''); 1407 $("#si_country").val(226);*/ 1408 $("#shippingFieldsHolder").removeClass('d-none'); 1409 }); 1410 1411 $(document).on('click','#continueShipping',function(){ 1412 $("#shippingFieldsHolder").find('label.error').remove(); 1413 var err_cnt = 0; 1414 1415 if($("#si_firstName").val().search(/\S/)==-1){ 1416 if($("#si_firstName").parent('div.form-group').find('label.error').length==0){ 1417 $("#si_firstName").after('<label class="error top-arrow">Please enter your first name.</label>'); 1418 err_cnt++; 1419 } 1420 return false; 1421 } 1422 if($("#si_lastName").val().search(/\S/)==-1){ 1423 if($("#si_lastName").parent('div.form-group').find('label.error').length==0){ 1424 $("#si_lastName").after('<label class="error top-arrow">Please enter your last name.</label>'); 1425 err_cnt++; 1426 } 1427 return false; 1428 } 1429 if($("#si_email").val().search(/\S/)==-1 || emailRegex.test($("#si_email").val())!==true){ 1430 if($("#si_email").parent('div.form-group').find('label.error').length==0){ 1431 $("#si_email").after('<label class="error top-arrow">Please enter valid email address.</label>'); 1432 err_cnt++; 1433 } 1434 return false; 1435 } 1436 if($("#si_phone").val().search(/\S/)==-1){ 1437 if($("#si_phone").parent('div.form-group').find('label.error').length==0){ 1438 $("#si_phone").after('<label class="error top-arrow">Please enter your phone number.</label>'); 1439 err_cnt++; 1440 } 1441 return false; 1442 } 1443 if($("#si_address1").val().search(/\S/)==-1){ 1444 if($("#si_address1").parent('div.form-group').find('label.error').length==0){ 1445 $("#si_address1").after('<label class="error top-arrow">Please enter your shipping address.</label>'); 1446 err_cnt++; 1447 } 1448 return false; 1449 } 1450 if($("#si_city").val().search(/\S/)==-1){ 1451 if($("#si_city").parent('div.form-group').find('label.error').length==0){ 1452 $("#si_city").after('<label class="error top-arrow">Please enter your city.</label>'); 1453 err_cnt++; 1454 } 1455 return false; 1456 } 1457 if($("#si_state").val().search(/\S/)==-1){ 1458 if($("#si_state").parent('div.form-group').find('label.error').length==0){ 1459 $("#si_state").after('<label class="error top-arrow">Please choose your state.</label>'); 1460 err_cnt++; 1461 } 1462 return false; 1463 } 1464 if($("#si_postalCode").val().search(/\S/)==-1){ 1465 if($("#si_postalCode").parent('div.form-group').find('label.error').length==0){ 1466 $("#si_postalCode").after('<label class="error top-arrow">Please enter your postal code.</label>'); 1467 err_cnt++; 1468 } 1469 return false; 1470 } 1471 if($("#si_country").val().search(/\S/)==-1){ 1472 if($("#si_country").parent('div.form-group').find('label.error').length==0){ 1473 $("#si_country").after('<label class="error top-arrow">Please choose your country.</label>'); 1474 err_cnt++; 1475 } 1476 return false; 1477 } 1478 1479 if(err_cnt>0){ 1480 if($("#shippingFieldsHolder").hasClass('d-none')) $("#shippingFieldsHolder").removeClass('d-none'); 1481 }else{ 1482 /*$("html, body").animate({ 1483 scrollTop: $("#billingFieldsHolder").offset().top 1484 }, 800);*/ 1485 $("#shipAddrHead").trigger('click'); 1486 $("#billAddrHead").attr('data-bs-target','#BillingCollapse').trigger('click'); 1487 } 1488 });
1489 1490 $(document).on('click','#continueBilling',function(){ 1491 $("#billingFieldsHolder").find('label.error').remove(); 1492 var err_cnt = 0; 1493 1494 if($("#bi_firstName").val().search(/\S/)==-1){ 1495 if($("#bi_firstName").parent('div.form-group').find('label.error').length==0){ 1496 $("#bi_firstName").after('<label class="error top-arrow">Please enter your first name.</label>'); 1497 err_cnt++; 1498 } 1499 return false; 1500 } 1501 if($("#bi_lastName").val().search(/\S/)==-1){ 1502 if($("#bi_lastName").parent('div.form-group').find('label.error').length==0){ 1503 $("#bi_lastName").after('<label class="error top-arrow">Please enter your last name.</label>'); 1504 err_cnt++; 1505 } 1506 return false; 1507 } 1508 if($("#bi_email").val().search(/\S/)==-1 || emailRegex.test($("#bi_email").val())!==true){ 1509 if($("#bi_email").parent('div.form-group').find('label.error').length==0){ 1510 $("#bi_email").after('<label class="error top-arrow">Please enter valid email address.</label>'); 1511 err_cnt++; 1512 } 1513 return false; 1514 } 1515 if($("#bi_phone").val().search(/\S/)==-1){ 1516 if($("#bi_phone").parent('div.form-group').find('label.error').length==0){ 1517 $("#bi_phone").after('<label class="error top-arrow">Please enter your phone number.</label>'); 1518 err_cnt++; 1519 } 1520 return false; 1521 } 1522 if($("#bi_address1").val().search(/\S/)==-1){ 1523 if($("#bi_address1").parent('div.form-group').find('label.error').length==0){ 1524 $("#bi_address1").after('<label class="error top-arrow">Please enter your billing address.</label>'); 1525 err_cnt++; 1526 } 1527 return false; 1528 } 1529 if($("#bi_city").val().search(/\S/)==-1){ 1530 if($("#bi_city").parent('div.form-group').find('label.error').length==0){ 1531 $("#bi_city").after('<label class="error top-arrow">Please enter your city.</label>'); 1532 err_cnt++; 1533 } 1534 return false; 1535 } 1536 if($("#bi_state").val().search(/\S/)==-1){ 1537 if($("#bi_state").parent('div.form-group').find('label.error').length==0){ 1538 $("#bi_state").after('<label class="error top-arrow">Please choose your state.</label>'); 1539 err_cnt++; 1540 } 1541 return false; 1542 } 1543 if($("#bi_postalCode").val().search(/\S/)==-1){ 1544 if($("#bi_postalCode").parent('div.form-group').find('label.error').length==0){ 1545 $("#bi_postalCode").after('<label class="error top-arrow">Please enter your postal code.</label>'); 1546 err_cnt++; 1547 } 1548 return false; 1549 } 1550 if($("#bi_country").val().search(/\S/)==-1){ 1551 if($("#bi_country").parent('div.form-group').find('label.error').length==0){ 1552 $("#bi_country").after('<label class="error top-arrow">Please choose your country.</label>'); 1553 err_cnt++; 1554 } 1555 return false; 1556 } 1557 1558 if(err_cnt>0){ 1559 if($("#billingFieldsHolder").hasClass('d-none')) $("#billingFieldsHolder").removeClass('d-none'); 1560 }else{ 1561 /*$("html, body").animate({ 1562 scrollTop: $("div.payment_method").offset().top 1563 }, 800);*/ 1564 1565 $("#billAddrHead").trigger('click'); 1566 $("#paymentHead").attr('data-bs-target','#PaymentCollapse').trigger('click'); 1567 } 1568 }); 1569 1570 $(document).on('change','#si_state',function(){ 1571 if($(this).val().search(/\S/)!=-1){ 1572 $(this).after('<i class="fa fa-spinner fa-lg fa-spin ajax-spinner" aria-hidden="true"></i>'); 1573 $.ajax({
1574 type: 'POST', 1575 url: baseURL+'ajax/cart-sales-tax', 1576 data: {'checkout':$(".checkout-fields").serializeArray(),'ship_state':$(this).val()}, 1577 dataType:"json", 1578 cache: false, 1579 headers: { 1580 "X-CSRF-TOKEN": $('input[name*="csrf"]').val() // CSRF token in header 1581 }, 1582 /*beforeSend: function() { 1583 $("div.signin_wrap").children("div.loader_wrap").show(); 1584 },*/ 1585 success: function(resp){ 1586 if(resp!=''){ 1587 var respObj = resp; 1588 if(resp.status=='success'){ 1589 $("#si_state").parent('div.form-group').find('i.ajax-spinner').remove(); 1590 //$(location).attr('href',CUR_PAGE_URL); 1591 $(location).attr('href',baseURL+'cart/checkout'); 1592 return true; 1593 } 1594 } 1595 } 1596 }); 1597 } 1598 }); 1599 1600 $(document).on('click','#applyDiscountCoupon',function(){ 1601 if($("#coCouponCode").val().search(/\S/)!=-1){ 1602 $("#coCouponCode").after('<i class="fa fa-spinner fa-lg fa-spin ajax-spinner" aria-hidden="true"></i>'); 1603 $.ajax({
1604 type: 'POST', 1605 url: baseURL+'ajax/cart-apply-coupon', 1606 data: {'checkout':$(".checkout-fields").serializeArray(),'coupon_code':$("#coCouponCode").val()}, 1607 dataType:"json", 1608 cache: false, 1609 headers: { 1610 "X-CSRF-TOKEN": $('input[name*="csrf"]').val() // CSRF token in header 1611 }, 1612 /*beforeSend: function() { 1613 $("div.signin_wrap").children("div.loader_wrap").show(); 1614 },*/ 1615 success: function(resp){ 1616 if(resp!=''){ 1617 var respObj = resp; 1618 if(resp.status=='success'){ 1619 $("#coCouponCode").parent('div.form-group').find('i.ajax-spinner').remove(); 1620 if($("#si_state").val().search(/\S/)!=-1){ 1621 $("#si_state").trigger('change'); 1622 }else{ 1623 $(location).attr('href',baseURL+'cart/checkout'); 1624 } 1625 }else{ 1626 $(location).attr('href',baseURL+'cart/checkout'); 1627 } 1628 } 1629 } 1630 }); 1631 } 1632 }); 1633 1634 $(document).on('click','#removeDiscountCoupon',function(){ 1635 if($("#coCouponCode").val().search(/\S/)!=-1){ 1636 $.ajax({
1637 type: 'POST', 1638 url: baseURL+'ajax/cart-remove-coupon', 1639 data: {'checkout':$(".checkout-fields").serializeArray(),'coupon_code':$("#coCouponCode").val()}, 1640 dataType:"json", 1641 cache: false, 1642 headers: { 1643 "X-CSRF-TOKEN": $('input[name*="csrf"]').val() // CSRF token in header 1644 }, 1645 /*beforeSend: function() { 1646 $("div.signin_wrap").children("div.loader_wrap").show(); 1647 },*/ 1648 success: function(resp){ 1649 if(resp!=''){ 1650 var respObj = resp; 1651 if(resp.status=='success'){ 1652 $(location).attr('href',baseURL+'cart/checkout'); 1653 } 1654 } 1655 } 1656 }); 1657 } 1658 }); 1659 1660 $(document).on('click','#btnPlaceOrder',function(){ 1661 $("#frmCheckout").find('label.error').remove(); 1662 var err_cnt = 0; 1663 1664 if($("#si_firstName").val().search(/\S/)==-1){ 1665 if($("#si_firstName").parent('div.form-group').find('label.error').length==0){ 1666 $("#si_firstName").after('<label class="error top-arrow">Please enter your first name.</label>'); 1667 err_cnt++; 1668 } 1669 return false; 1670 } 1671 if($("#si_lastName").val().search(/\S/)==-1){ 1672 if($("#si_lastName").parent('div.form-group').find('label.error').length==0){ 1673 $("#si_lastName").after('<label class="error top-arrow">Please enter your last name.</label>'); 1674 err_cnt++; 1675 } 1676 return false; 1677 } 1678 if($("#si_email").val().search(/\S/)==-1 || emailRegex.test($("#si_email").val())!==true){ 1679 if($("#si_email").parent('div.form-group').find('label.error').length==0){ 1680 $("#si_email").after('<label class="error top-arrow">Please enter valid email address.</label>'); 1681 err_cnt++; 1682 } 1683 return false; 1684 } 1685 if($("#si_phone").val().search(/\S/)==-1){ 1686 if($("#si_phone").parent('div.form-group').find('label.error').length==0){ 1687 $("#si_phone").after('<label class="error top-arrow">Please enter your phone number.</label>'); 1688 err_cnt++; 1689 } 1690 return false; 1691 } 1692 if($("#si_address1").val().search(/\S/)==-1){ 1693 if($("#si_address1").parent('div.form-group').find('label.error').length==0){ 1694 $("#si_address1").after('<label class="error top-arrow">Please enter your shipping address.</label>'); 1695 err_cnt++; 1696 } 1697 return false; 1698 } 1699 if($("#si_city").val().search(/\S/)==-1){ 1700 if($("#si_city").parent('div.form-group').find('label.error').length==0){ 1701 $("#si_city").after('<label class="error top-arrow">Please enter your city.</label>'); 1702 err_cnt++; 1703 } 1704 return false; 1705 } 1706 if($("#si_state").val().search(/\S/)==-1){ 1707 if($("#si_state").parent('div.form-group').find('label.error').length==0){ 1708 $("#si_state").after('<label class="error top-arrow">Please choose your state.</label>'); 1709 err_cnt++; 1710 } 1711 return false; 1712 } 1713 if($("#si_postalCode").val().search(/\S/)==-1){ 1714 if($("#si_postalCode").parent('div.form-group').find('label.error').length==0){ 1715 $("#si_postalCode").after('<label class="error top-arrow">Please enter your postal code.</label>'); 1716 err_cnt++; 1717 } 1718 return false; 1719 } 1720 if($("#si_country").val().search(/\S/)==-1){ 1721 if($("#si_country").parent('div.form-group').find('label.error').length==0){ 1722 $("#si_country").after('<label class="error top-arrow">Please choose your country.</label>'); 1723 err_cnt++; 1724 } 1725 return false; 1726 } 1727 /*if($("#co_EventDate").val().search(/\S/)==-1){ 1728 if($("#co_EventDate").parent('div.form-group').find('label.error').length==0){ 1729 $("#co_EventDate").after('<label class="error top-arrow">Please enter your Event Details.</label>'); 1730 err_cnt++; 1731 } 1732 return false; 1733 }*/ 1734 if($("#bi_firstName").val().search(/\S/)==-1){ 1735 if($("#bi_firstName").parent('div.form-group').find('label.error').length==0){ 1736 $("#bi_firstName").after('<label class="error top-arrow">Please enter your first name.</label>'); 1737 err_cnt++; 1738 } 1739 return false; 1740 } 1741 if($("#bi_lastName").val().search(/\S/)==-1){ 1742 if($("#bi_lastName").parent('div.form-group').find('label.error').length==0){ 1743 $("#bi_lastName").after('<label class="error top-arrow">Please enter your last name.</label>'); 1744 err_cnt++; 1745 } 1746 return false; 1747 } 1748 if($("#bi_email").val().search(/\S/)==-1 || emailRegex.test($("#bi_email").val())!==true){ 1749 if($("#bi_email").parent('div.form-group').find('label.error').length==0){ 1750 $("#bi_email").after('<label class="error top-arrow">Please enter valid email address.</label>'); 1751 err_cnt++; 1752 } 1753 return false; 1754 } 1755 if($("#bi_phone").val().search(/\S/)==-1){ 1756 if($("#bi_phone").parent('div.form-group').find('label.error').length==0){ 1757 $("#bi_phone").after('<label class="error top-arrow">Please enter your phone number.</label>'); 1758 err_cnt++; 1759 } 1760 return false; 1761 } 1762 if($("#bi_address1").val().search(/\S/)==-1){ 1763 if($("#bi_address1").parent('div.form-group').find('label.error').length==0){ 1764 $("#bi_address1").after('<label class="error top-arrow">Please enter your billing address.</label>'); 1765 err_cnt++; 1766 } 1767 return false; 1768 } 1769 if($("#bi_city").val().search(/\S/)==-1){ 1770 if($("#bi_city").parent('div.form-group').find('label.error').length==0){ 1771 $("#bi_city").after('<label class="error top-arrow">Please enter your city.</label>'); 1772 err_cnt++; 1773 } 1774 return false; 1775 } 1776 if($("#bi_state").val().search(/\S/)==-1){ 1777 if($("#bi_state").parent('div.form-group').find('label.error').length==0){ 1778 $("#bi_state").after('<label class="error top-arrow">Please choose your state.</label>'); 1779 err_cnt++; 1780 } 1781 return false; 1782 } 1783 if($("#bi_postalCode").val().search(/\S/)==-1){ 1784 if($("#bi_postalCode").parent('div.form-group').find('label.error').length==0){ 1785 $("#bi_postalCode").after('<label class="error top-arrow">Please enter your postal code.</label>'); 1786 err_cnt++; 1787 } 1788 return false; 1789 } 1790 if($("#bi_country").val().search(/\S/)==-1){ 1791 if($("#bi_country").parent('div.form-group').find('label.error').length==0){ 1792 $("#bi_country").after('<label class="error top-arrow">Please choose your country.</label>'); 1793 err_cnt++; 1794 } 1795 return false; 1796 } 1797 if($(".payment-method:checked").val()=='CreditCard' && $(".exist-card-token").length>0 && $(".exist-card-token:checked").length==0){ 1798 if($("#CreditCard").find('label.error').length==0){ 1799 $("#nounce").after('<label class="error top-arrow">Please choose payment option.</label>'); 1800 err_cnt++; 1801 } 1802 return false; 1803 } 1804 if($(".payment-method:checked").val()=='PayPal' && $(".exist-paypal-token").length>0 && $(".exist-paypal-token:checked").length==0){ 1805 if($("#Paypal").find('label.error').length==0){ 1806 $("#new_paypal").before('<label class="error top-arrow">Please choose PayPal account.</label>'); 1807 err_cnt++; 1808 } 1809 return false; 1810 } 1811 if($("#coWhoHelped").val().search(/\S/)==-1){ 1812 if($("#coWhoHelped").parent('div.form-group').find('label.error').length==0){ 1813 $("#coWhoHelped").after('<label class="error top-arrow">Please choose who helped you.</label>'); 1814 err_cnt++; 1815 } 1816 return false; 1817 } 1818 if(err_cnt==0){ 1819 var returns = HostedFieldsValidation(); 1820 if(returns){ 1821 $("#frmCheckout").find('label.error').remove(); 1822 if(!$("#btnPlaceOrder").hasClass('disabled')) $("#btnPlaceOrder").addClass('disabled'); 1823 $("div.checkout_section").find("div.loader_wrap").show(); 1824 if($(".payment-method:checked").val()=='CreditCard' && $(".exist-card-token:checked").val()=='new'){ 1825 setTimeout(function(){ 1826 $("#frmCheckout").attr('action','/cart/placeorder').submit(); 1827 },800); 1828 }else if($(".payment-method:checked").val()=='PayPal' && $(".exist-paypal-token:checked").val()=='new'){ 1829 setTimeout(function(){ 1830 $("#frmCheckout").attr('action','/cart/placeorder').submit(); 1831 },800); 1832 }else{ 1833 $("#frmCheckout").attr('action','/cart/placeorder').submit(); 1834 } 1835 } 1836 } 1837 });
1838 1839 $(document).on('click','#submitGuest',function(){ 1840 $("#Guest").find('label.error').remove(); 1841 err_cnt = 0; 1842 if($("#guestEmail").val().search(/\S/)==-1 || emailRegex.test($("#guestEmail").val())!==true){ 1843 if($("#guestEmail").parent('div.form-group').find('label.error').length==0){ 1844 $("#guestEmail").after('<label class="error top-arrow">Please enter valid email address.</label>'); 1845 err_cnt++; 1846 } 1847 return false; 1848 } 1849 if($("#guestConfEmail").val().search(/\S/)==-1 || emailRegex.test($("#guestConfEmail").val())!==true){ 1850 if($("#guestConfEmail").parent('div.form-group').find('label.error').length==0){ 1851 $("#guestConfEmail").after('<label class="error top-arrow">Please enter valid email address.</label>'); 1852 err_cnt++; 1853 } 1854 return false; 1855 } 1856 if($("#guestEmail").val().search(/\S/)!=-1 && $("#guestConfEmail").val().search(/\S/)!=-1 && $("#guestEmail").val()!=$("#guestConfEmail").val()){ 1857 if($("#guestConfEmail").parent('div.form-group').find('label.error').length==0){ 1858 $("#guestConfEmail").after('<label class="error top-arrow">Please confirm your email address.</label>'); 1859 err_cnt++; 1860 } 1861 return false; 1862 } 1863 if($("#guestPhone").val().search(/\S/)==-1){ 1864 if($("#guestPhone").parent('div.form-group').find('label.error').length==0){ 1865 $("#guestPhone").after('<label class="error top-arrow">Please enter your phone number.</label>'); 1866 err_cnt++; 1867 } 1868 return false; 1869 } 1870 1871 if(err_cnt==0){ 1872 $("#Signup").find('label.error').remove(); 1873 $.ajax({
1874 type: 'POST', 1875 url: baseURL+'ajax/create-guest-account', 1876 data: {'frmData':$(".guest-fields").serializeArray()}, 1877 dataType:"json", 1878 cache: false, 1879 headers: { 1880 "X-CSRF-TOKEN": $('input[name*="csrf"]').val() // CSRF token in header 1881 }, 1882 /*beforeSend: function() { 1883 $("div.signin_wrap").children("div.loader_wrap").show(); 1884 },*/ 1885 success: function(resp){ 1886 if(resp!=''){ 1887 var respObj = resp; 1888 if(resp.status=='error'){ 1889 /*$("div.signin_wrap").children("div.loader_wrap").hide(); 1890 $("#loginEmail,#loginPass").val(''); 1891 $("#loginEmail").focus(); 1892 $("#frmLogin").before('<div class="alert alert-danger d-flex align-items-center" role="alert"><i class="fa fa-exclamation-circle me-2 fa-2x"></i><div>'+authObj.message+'</div></div>'); 1893 $('html, body').animate({ 1894 scrollTop: 0 1895 }, 1000); 1896 setTimeout(function(){ 1897 $("div.alert").fadeOut(8000,function(){ 1898 $("div.alert").remove(); 1899 });
1900 },2000); 1901 return false;*/ 1902 }else if(resp.status=='success'){ 1903 //$(location).attr('href',CUR_PAGE_URL); 1904 $(location).attr('href',baseURL+'cart/checkout'); 1905 return true; 1906 } 1907 } 1908 } 1909 }); 1910 } 1911 }); 1912 1913 $(document).on('click','#submitUserSignup',function(){ 1914 $("#Signup").find('label.error').remove(); 1915 err_cnt = 0; 1916 if($("#su_firstName").val().search(/\S/)==-1){ 1917 if($("#su_firstName").parent('div.form-group').find('label.error').length==0){ 1918 $("#su_firstName").after('<label class="error top-arrow">Please enter your first name.</label>'); 1919 err_cnt++; 1920 } 1921 return false; 1922 } 1923 if($("#su_lastName").val().search(/\S/)==-1){ 1924 if($("#su_lastName").parent('div.form-group').find('label.error').length==0){ 1925 $("#su_lastName").after('<label class="error top-arrow">Please enter your last name.</label>'); 1926 err_cnt++; 1927 } 1928 return false; 1929 } 1930 if($("#su_email").val().search(/\S/)==-1 || emailRegex.test($("#su_email").val())!==true){ 1931 if($("#su_email").parent('div.form-group').find('label.error').length==0){ 1932 $("#su_email").after('<label class="error top-arrow">Please enter valid email address.</label>'); 1933 err_cnt++; 1934 } 1935 return false; 1936 } 1937 if($("#su_phone").val().search(/\S/)==-1){ 1938 if($("#su_phone").parent('div.form-group').find('label.error').length==0){ 1939 $("#su_phone").after('<label class="error top-arrow">Please enter your phone number.</label>'); 1940 err_cnt++; 1941 } 1942 return false; 1943 } 1944 1945 if(err_cnt==0){ 1946 $("#Signup").find('label.error').remove(); 1947 $.ajax({
1948 type: 'POST', 1949 url: baseURL+'ajax/create-account', 1950 data: {'frmData':$(".signup-fields").serializeArray()}, 1951 dataType:"json", 1952 cache: false, 1953 headers: { 1954 "X-CSRF-TOKEN": $('input[name*="csrf"]').val() // CSRF token in header 1955 }, 1956 success: function(resp){ 1957 if(resp!=''){ 1958 var respObj = resp; 1959 if(resp.status=='error'){ 1960 /*$("div.signin_wrap").children("div.loader_wrap").hide(); 1961 $("#loginEmail,#loginPass").val(''); 1962 $("#loginEmail").focus(); 1963 $("#frmLogin").before('<div class="alert alert-danger d-flex align-items-center" role="alert"><i class="fa fa-exclamation-circle me-2 fa-2x"></i><div>'+authObj.message+'</div></div>'); 1964 $('html, body').animate({ 1965 scrollTop: 0 1966 }, 1000); 1967 setTimeout(function(){ 1968 $("div.alert").fadeOut(8000,function(){ 1969 $("div.alert").remove(); 1970 }); 1971 },2000); 1972 return false;*/ 1973 }else if(resp.status=='success'){ 1974 //$(location).attr('href',CUR_PAGE_URL); 1975 $(location).attr('href',baseURL+'cart/checkout'); 1976 return true; 1977 } 1978 } 1979 } 1980 }); 1981 } 1982 }); 1983 1984 $(document).on('click','#existUserLogin',function(){ 1985 $("#ExistingUser").find('label.error').remove(); 1986 err_cnt = 0; 1987 if($("#existLoginUser").val().search(/\S/)==-1 || emailRegex.test($("#existLoginUser").val())!==true){ 1988 if($("#existLoginUser").parent('div.form-group').find('label.error').length==0){ 1989 $("#existLoginUser").after('<label class="error top-arrow">Please enter valid login email.</label>'); 1990 err_cnt++; 1991 } 1992 return false; 1993 } 1994 if($("#existLoginPass").val().search(/\S/)==-1){ 1995 if($("#existLoginPass").parent('div.form-group').find('label.error').length==0){ 1996 $("#existLoginPass").after('<label class="error top-arrow">Please enter account password.</label>'); 1997 err_cnt++; 1998 } 1999 return false; 2000 } 2001 2002 if(err_cnt==0){ 2003 $("#ExistingUser").find('label.error').remove(); 2004 $.ajax({
2005 type: 'POST', 2006 url: baseURL+'ajax/authorize-login', 2007 data: {'login_email':$("#existLoginUser").val(),'login_pass':$("#existLoginPass").val()}, 2008 dataType:"json", 2009 cache: false, 2010 headers: { 2011 "X-CSRF-TOKEN": $('input[name*="csrf"]').val() // CSRF token in header 2012 }, 2013 /*beforeSend: function() { 2014 $("div.signin_wrap").children("div.loader_wrap").show(); 2015 },*/ 2016 success: function(auth){ 2017 if(auth!=''){ 2018 var authObj = auth; 2019 if(authObj.status=='error'){ 2020 /*$("div.signin_wrap").children("div.loader_wrap").hide(); 2021 $("#loginEmail,#loginPass").val(''); 2022 $("#loginEmail").focus(); 2023 $("#frmLogin").before('<div class="alert alert-danger d-flex align-items-center" role="alert"><i class="fa fa-exclamation-circle me-2 fa-2x"></i><div>'+authObj.message+'</div></div>'); 2024 $('html, body').animate({ 2025 scrollTop: 0 2026 }, 1000); 2027 setTimeout(function(){ 2028 $("div.alert").fadeOut(8000,function(){ 2029 $("div.alert").remove(); 2030 });
2031 },2000); 2032 return false;*/ 2033 }else if(authObj.status=='success'){ 2034 //$(location).attr('href',CUR_PAGE_URL); 2035 $(location).attr('href',baseURL+'cart/checkout'); 2036 return true; 2037 } 2038 } 2039 } 2040 }); 2041 } 2042 }); 2043 2044 var _getCookie = function(name) { 2045 const nameEQ = name + "="; 2046 const ca = document.cookie.split(';'); 2047 for (let i = 0; i < ca.length; i++) { 2048 let c = ca[i]; 2049 while(c.charAt(0)===' ') c = c.substring(1, c.length); 2050 if(c.indexOf(nameEQ)===0) return c.substring(nameEQ.length, c.length); 2051 } 2052 return null; 2053 }; 2054 2055 var _setCookie = function(name, value, days){ 2056 let expires = ""; 2057 if(days){ 2058 const date = new Date(); 2059 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 2060 expires = "; expires=" + date.toGMTString(); 2061 } 2062 document.cookie = name + "=" + (value || "") + expires + "; path=/; SameSite=Lax;"; 2063 }; 2064 2065 var _deleteCookie = function(name){ 2066 document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/'; 2067 }; 2068 2069 var _getNewsLetterModal = function(){ 2070 var modal = $('#commonModal'); 2071 $.ajax({ 2072 url: baseURL+'ajax/content', 2073 method: 'POST', 2074 data: {'action':'newsletter'}, 2075 success: function(response){ 2076 if(response.search(/\S/)!==-1){ 2077 response = $.parseJSON(response); 2078 if(typeof response.redirect!=='undefined' && response.redirect) window.location.replace(response.redirect); 2079 else if(response.view){ 2080 if(!_getCookie('newsletter')) _setCookie('newsletter','true',0); 2081 modal.find('.modal-header').addClass('d-none').after('<button type="button" class="btn-close position-absolute" data-bs-dismiss="modal" aria-label="Close"><i class="fas fa-times text-white"></i></button>'); 2082 modal.find('.modal-dialog').addClass('modal-dialog-centered onload_newsletter modal-lg'); 2083 modal.find('.modal-body').html(response.view); 2084 modal.modal('show'); 2085 } 2086 return false; 2087 } 2088 }, 2089 error: function() { 2090 if(!_getCookie('newsletter')) _getNewsLetterModal(); 2091 } 2092 }); 2093 } 2094 2095 setTimeout(function(){ 2096 if(!_getCookie('newsletter')) _getNewsLetterModal(); 2097 },5000); 2098 2099 $(document).on('click','#subscribeMe:enabled',function(){ 2100 let flag = true; 2101 let form_data = new FormData(); 2102 if($('#commonModal:visible').find(':input[name!=""]:enabled').length>=1){ 2103 $('label.error').remove(); 2104 $('#commonModal:visible').find(':input[name!=""]:enabled').each(function(){ 2105 if($(this).hasClass('mandatory')){ 2106 if(($(this).is('select') && !$(this).val()) || (!$(this).is('select') && $(this).val().search(/\S/)===-1)){ 2107 $(this).after('<label class="error top-arrow">'+($(this).is('[placeholder]')?$(this).attr('placeholder').toLowerCase():'This field')+' is required.</label>'); 2108 flag = false; 2109 }else if($(this).is('[name]') && !$(this).is(':checkbox') && !$(this).is(':radio')){ 2110 if($(this).attr('type')==='email' && !emailRegex.test($(this).val())){ 2111 $(this).after('<label class="error top-arrow">Please enter a valid email.</label>'); 2112 flag = false; 2113 }else form_data.append($(this).attr('name'),$(this).val()); 2114 }else if($(this).is('[name]') && $(this).is(':checked') && ($(this).is(':checkbox') || $(this).is(':radio'))) form_data.append($(this).attr('name'),$(this).val()); 2115 } 2116 else if($(this).is('[name]') && !$(this).is(':checkbox') && !$(this).is(':radio')) form_data.append($(this).attr('name'),$(this).val()); 2117 else if($(this).is('[name]') && $(this).is(':checked') && ($(this).is(':checkbox') || $(this).is(':radio'))) form_data.append($(this).attr('name'),$(this).val()); 2118 }); 2119 } 2120 if(flag){ 2121 $('label.error').remove(); 2122 $.ajax({ 2123 type :'POST', 2124 url :baseURL+'ajax/subscription', 2125 data :form_data, 2126 cache :false, 2127 contentType:false, 2128 processData:false, 2129 context :this, 2130 success: function(resp){ 2131 if(resp.search(/\S/)!=-1){ 2132 resp = $.parseJSON(resp); 2133 if(resp.message){ 2134 if(resp.status){ 2135 $(this).parent().replaceWith(resp.message); 2136 if(!_getCookie('newsletter')) _setCookie('newsletter','true',0); 2137 setTimeout(function(){ 2138 $('#commonModal').modal('hide'); 2139 },3000); 2140 }else{ 2141 if(resp.field && $(this).parent().find(':input[name="'+resp.field+'"]').length) $(this).parent().find(':input[name="'+resp.field+'"]').after('<label class="error top-arrow">'+resp.message+'</label>'); 2142 else console.log(resp.message); 2143 } 2144 } 2145 } 2146 } 2147 }); 2148 }else _deleteCookie('newsletter'); 2149 return false; 2150 }); 2151 2152 $(document).on('click','.toggle-block',function(){ 2153 let block_elem_id = $(this).data('target'); 2154 $(block_elem_id).slideToggle(); 2155 $(this).toggleClass('arrow-up'); 2156 });
2157 2158 $(document).on('click','.continueStep1',function(){ 2159 let err_cnt = 0; 2160 let dec_id = $(".product-decoration:checked").val(); 2161 $("#PMTab_"+dec_id).find("label.error").remove(); 2162 2163 if($("#prodQuantity_"+dec_id).val().search(/\S/)==-1){ 2164 $("#prodQuantity_"+dec_id).after('<label class="error top-arrow">Please enter product quantity.</label>'); 2165 err_cnt++; 2166 } 2167 if(parseInt($("#prodQuantity_"+dec_id).val()) < parseInt($("#minQuantity_"+dec_id).val())){ 2168 $("#prodQuantity_"+dec_id).after('<label class="error top-arrow">Quantity cannot be less than '+parseInt($("#minQuantity_"+dec_id).val())+' pieces.</label>'); 2169 err_cnt++; 2170 } 2171 if($('#PMTab_'+dec_id).find('.select_color_wrap').length){ 2172 $('#PMTab_'+dec_id).find('.select_color_wrap').each(function(){ 2173 let colorArr = []; 2174 if($(this).find('input[type="checkbox"]').length){ 2175 let panel_id = $(this).find('.color-check:first').data('panel-id')?$(this).find('.color-check:first').data('panel-id'):0; 2176 $(this).find('.color-check:checked').each(function(){ 2177 panel_id = $(this).data('panel-id')?$(this).data('panel-id'):0; 2178 if($(this).data('color-name')) colorArr.push($(this).data('color-name')); 2179 }); 2180 if(!colorArr.length){ 2181 let label = 'product color'; 2182 if(panel_id) label = $(this).find('#selectColorList_'+dec_id+'_'+panel_id).parent().text().trim().toLowerCase(); 2183 else label = $(this).find('#selectColorList_'+dec_id).parent().text().trim().toLowerCase(); 2184 $(this).find("div.select_color").after('<label class="error top-arrow">Please '+label+'.</label>'); 2185 err_cnt++; 2186 } 2187 } 2188 }); 2189 } 2190 if($(".fields-"+dec_id).length > 0){ 2191 $(".fields-"+dec_id).each(function(){ 2192 let field_name = $(this).data('field-name'); 2193 2194 if($(this).val().search(/\S/)==-1){ 2195 $(this).after('<label class="error top-arrow">Please '+field_name+'.</label>'); 2196 err_cnt++; 2197 } 2198 }); 2199 } 2200 if($("#colorDrop_"+dec_id+":visible").length > 0){ 2201 let selectInkColors = $('#inkColors_'+dec_id).val(); 2202 if(!selectInkColors || selectInkColors.search(/\S/)==-1){ 2203 $("#PMTab_"+dec_id).find("div.choose_color_box").after('<label class="error top-arrow">Please choose ink color.</label>'); 2204 err_cnt++; 2205 } 2206 } 2207 if($("#colorDrop_"+dec_id+":visible").length > 0){ 2208 let color_cnt = 0; 2209 if($("#field_35").length > 0 && $("#field_35").val().search(/\S/)!=-1){ 2210 color_cnt = $("#field_35").find('option:selected').data('color-count'); 2211 }else color_cnt = 1; 2212 2213 let selectInkColors = $('#inkColors_'+dec_id).val(); 2214 if(selectInkColors.search(/\S/)!==-1 && parseInt($("#colorDrop_"+dec_id).find('input.ink-color-check:checked').length) > parseInt(color_cnt)){ 2215 $("#PMTab_"+dec_id).find("div.choose_color_box").after('<label class="error top-arrow">Sorry, cannot select ink colors more than '+parseInt(color_cnt)+'.</label>'); 2216 err_cnt++; 2217 }else if(selectInkColors.search(/\S/)!==-1 && parseInt($("#colorDrop_"+dec_id).find('input.ink-color-check:checked').length) < parseInt(color_cnt)){ 2218 $("#PMTab_"+dec_id).find("div.choose_color_box").after('<label class="error top-arrow">Sorry, you must choose '+parseInt(color_cnt)+' colors.</label>'); 2219 err_cnt++; 2220 } 2221 2222 if($("#pmsColorCheck_"+dec_id+"_98:checked").length==1 && $("#pmsColors_"+dec_id+"_98").val().search(/\S/)==-1){ 2223 $("#PMTab_"+dec_id).find("div.choose_color_box").after('<label class="error top-arrow">Please input PMS color I.</label>'); 2224 $("#inkcolor_box_"+dec_id).trigger('click'); 2225 $("#pmsColors_"+dec_id+"_98").focus(); 2226 err_cnt++; 2227 } 2228 else if($("#pmsColorCheck_"+dec_id+"_99:checked").length==1 && $("#pmsColors_"+dec_id+"_99").val().search(/\S/)==-1){ 2229 $("#PMTab_"+dec_id).find("div.choose_color_box").after('<label class="error top-arrow">Please input PMS color II.</label>'); 2230 $("#inkcolor_box_"+dec_id).trigger('click'); 2231 $("#pmsColors_"+dec_id+"_99").focus(); 2232 err_cnt++; 2233 } 2234 else if($("#pmsColorCheck_"+dec_id+"_100:checked").length==1 && $("#pmsColors_"+dec_id+"_100").val().search(/\S/)==-1){ 2235 $("#PMTab_"+dec_id).find("div.choose_color_box").after('<label class="error top-arrow">Please input PMS color III.</label>'); 2236 $("#inkcolor_box_"+dec_id).trigger('click'); 2237 $("#pmsColors_"+dec_id+"_100").focus(); 2238 err_cnt++; 2239 } 2240 else if($("#pmsColorCheck_"+dec_id+"_101:checked").length==1 && $("#pmsColors_"+dec_id+"_101").val().search(/\S/)==-1){ 2241 $("#PMTab_"+dec_id).find("div.choose_color_box").after('<label class="error top-arrow">Please input PMS color IV.</label>'); 2242 $("#inkcolor_box_"+dec_id).trigger('click'); 2243 $("#pmsColors_"+dec_id+"_101").focus(); 2244 err_cnt++; 2245 } 2246 } 2247 2248 if(err_cnt==0){ 2249 $("#blockHeadingStep1").addClass('toggle-block'); 2250 $("#blockHeadingStep1").toggleClass('arrow-up'); 2251 $("#blockBodyStep1").slideToggle(); 2252 if(!$("#productionShippingBlock").hasClass('d-none')){ 2253 if(!$("#blockBodyStep2").is(":visible")) $("#blockBodyStep2").slideDown(); 2254 $("#blockHeadingStep2").toggleClass('arrow-up'); 2255 } 2256 if(dec_id==15){ 2257 $("#btnAddtoCart").removeClass('disabled'); 2258 } 2259 }else{ 2260 setTimeout(function(){ 2261 $("label.error").fadeOut(8000,function(){ 2262 $("label.error").remove(); 2263 }); 2264 },2000); 2265 return false; 2266 } 2267 });
2268 2269 $(document).on('click','#continueStep2',function(){ 2270 let err_cnt = 0; 2271 let dec_id = $(".product-decoration:checked").val(); 2272 $("#blockBodyStep2").find("label.error").remove(); 2273 if($("#production_"+dec_id).length > 0 && $("#production_"+dec_id).val().search(/\S/)==-1){ 2274 $("#production_"+dec_id).after('<label class="error top-arrow">Please select Production Time.</label>'); 2275 err_cnt++; 2276 }else if(!$("#production_"+dec_id).length){ 2277 if($('#production_json_'+dec_id).length){ 2278 let data = $('#production_json_'+dec_id).val(); 2279 let applicable = ''; 2280 if($('select#field_35.fields-'+dec_id).length) applicable = $('select#field_35.fields-'+dec_id).find('option:selected').data('production'); 2281 data = $.parseJSON(data); 2282 $('#production_json_'+dec_id).before( 2283 $('<select/>', { 2284 id: 'production_'+dec_id, 2285 name: 'production', 2286 class: 'production form-control price-params params-'+dec_id+' cart-fields-'+dec_id 2287 }).append( 2288 $('<option/>',{text:'Production Time', disabled: true, selected: true }), 2289 $.map(data, d => applicable.indexOf(d.id)===-1?null:$('<option/>', { 2290 value: d.id, 2291 'data-minimum': d.minimum, 2292 text: d.name + ( 2293 d.price > 0 2294 ? ' +$' + Number(d.price).toFixed(2) + 2295 (d.multiple > 0 ? ' / ' + d.multiple : '') 2296 : '' 2297 ) 2298 })) 2299 ) 2300 ); 2301 $("#production_"+dec_id).after('<label class="error top-arrow">Please select Production Time.</label>'); 2302 } 2303 err_cnt++; 2304 } 2305 if($("#productVirtualProof").is(":visible") && $("#productVirtualProof").val().search(/\S/)==-1){ 2306 $("#productVirtualProof").after('<label class="error top-arrow">Please select Virtual Proof.</label>'); 2307 err_cnt++; 2308 }else if(!$("#productVirtualProof").length) err_cnt++; 2309 if($("#productShippingZip").val().search(/\S/)==-1){ 2310 $("#productShippingZip").after('<label class="error top-arrow">Please enter Shipping Zip.</label>'); 2311 err_cnt++; 2312 } 2313 if($("#productShipMethod").val().search(/\S/)==-1){ 2314 $("#productShipMethod").after('<label class="error top-arrow">Please select Shipping Method.</label>'); 2315 err_cnt++; 2316 } 2317 2318 if(err_cnt==0){ 2319 if(!$("#productShippingZip").hasClass('cart-fields-'+dec_id)) $("#productShippingZip").addClass('cart-fields-'+dec_id); 2320 if(!$("#productShipMethod").hasClass('cart-fields-'+dec_id)) $("#productShipMethod").addClass('cart-fields-'+dec_id); 2321 2322 $("#blockHeadingStep2").addClass('toggle-block'); 2323 $("#blockHeadingStep2").toggleClass('arrow-up'); 2324 $("#blockBodyStep2").slideToggle(); 2325 if(!$("#artworkBlock").hasClass('d-none')){ 2326 if(!$("#blockBodyStep3").is(":visible")) $("#blockBodyStep3").slideToggle(); 2327 $("#blockHeadingStep3").toggleClass('arrow-up'); 2328 } 2329 $("#btnAddtoCart").removeClass('disabled'); 2330 }else{ 2331 setTimeout(function(){ 2332 $("label.error").fadeOut(8000,function(){ 2333 $("label.error").remove(); 2334 }); 2335 },2000); 2336 return false; 2337 } 2338 }); 2339 2340 /*$(document).on('click','#continueStep3',function(){ 2341 let err_cnt = 0; 2342 let dec_id = $(".product-decoration:checked").val(); 2343 let artOption = $(".art-option:checked").val(); 2344 $("#blockBodyStep3").find("label.error").remove(); 2345 2346 if(artOption=='upload'){ 2347 if($("#artFile_1").val().search(/\S/)==-1 && $("#artFile_2").val().search(/\S/)==-1 && $("#artFile_3").val().search(/\S/)==-1){ 2348 $("div.art_work_info").after('<label class="error top-arrow">Please choose your artwork file.</label>'); 2349 err_cnt++; 2350 return false; 2351 } 2352 } 2353 if(artOption=='repeat'){ 2354 if($("#artInfo").val().search(/\S/)==-1){ 2355 $("#artInfo").after('<label class="error top-arrow">
2355Please enter your art / order instructions.</label>'); 2356 err_cnt++; 2357 return false; 2358 } 2359 } 2360 2361 if(err_cnt==0){ 2362 if(artOption=='upload'){ 2363 if(!$("#UploadArt").hasClass('cart-fields-'+dec_id)) $("#UploadArt").addClass('cart-fields-'+dec_id); 2364 $("#artFile_1,#artFile_2,#artFile_3").addClass('cart-fields-'+dec_id); 2365 //$("#artOfOrder").removeClass('cart-fields-'+dec_id); 2366 }else if(artOption=='repeat'){ 2367 if(!$("#RepeatArt").hasClass('cart-fields-'+dec_id)) $("#RepeatArt").addClass('cart-fields-'+dec_id); 2368 //$("#artOfOrder").addClass('cart-fields-'+dec_id); 2369 $("#artFile_1,#artFile_2,#artFile_3").removeClass('cart-fields-'+dec_id); 2370 }else{ 2371 if(!$("#EmailArt").hasClass('cart-fields-'+dec_id)) $("#EmailArt").addClass('cart-fields-'+dec_id); 2372 } 2373 $("#artInfo").addClass('cart-fields-'+dec_id); 2374 2375 $("#blockHeadingStep3").addClass('toggle-block'); 2376 $("#blockHeadingStep3").toggleClass('arrow-up'); 2377 $("#blockBodyStep3").slideToggle(); 2378 $("#btnAddtoCart").removeClass('disabled'); 2379 } 2380 setTimeout(function(){ 2381 $("label.error").fadeOut(8000,function(){ 2382 $("label.error").remove(); 2383 }); 2384 },2000); 2385 });*/ 2386 2387 $(document).on('click','#btnAddtoCart',function(){ 2388 if($(this).hasClass('disabled')) return false; 2389 let err_cnt = 0; 2390 let dec_id = $(".product-decoration:checked").val(); 2391 let artOption = $(".art-option:checked").val(); 2392 2393 if(dec_id=='Sample'){ 2394 if($("#prodQuantity_"+dec_id).val().search(/\S/)==-1){ 2395 $("#prodQuantity_"+dec_id).after('<label class="error top-arrow">Please enter product quantity.</label>'); 2396 err_cnt++; 2397 } 2398 if(parseInt($("#prodQuantity_"+dec_id).val()) < parseInt($("#minQuantity_"+dec_id).val())){ 2399 $("#prodQuantity_"+dec_id).after('<label class="error top-arrow">Quantity cannot be less than '+parseInt($("#minQuantity_"+dec_id).val())+' pieces.</label>'); 2400 err_cnt++; 2401 } 2402 if($(".color-"+dec_id).length > 0 && $(".color-"+dec_id+":checked").length==0){ 2403 $("#SampleTab").find("div.color_slider").after('<label class="error top-arrow">Please choose product color.</label>'); 2404 err_cnt++; 2405 } 2406 if($(".color-"+dec_id).length > 0 && $(".color-"+dec_id+":checked").length > parseInt($("#minQuantity_"+dec_id).val())){ 2407 $("#SampleTab").find("div.color_slider").after('<label class="error top-arrow">Color selection cannot be greater than max quantity.</label>'); 2408 err_cnt++; 2409 } 2410 if($(".color-"+dec_id).length > 0 && $(".color-"+dec_id+":checked").length==0){ 2411 $("#SampleTab").find("div.color_slider").after('<label class="error top-arrow">Please choose product color.</label>'); 2412 err_cnt++; 2413 } 2414 } 2415 2416 if(dec_id==15){ 2417 if($("#production_"+dec_id).length > 0 && $("#production_"+dec_id).val().search(/\S/)==-1){ 2418 $("#production_"+dec_id).after('<label class="error top-arrow">Please select Production Time.</label>'); 2419 err_cnt++; 2420 } 2421 if($("#productVirtualProof").is(":visible") && $("#productVirtualProof").val().search(/\S/)==-1){ 2422 $("#productVirtualProof").after('<label class="error top-arrow">Please select Virtual Proof.</label>'); 2423 err_cnt++; 2424 } 2425 if($("#productShippingZip").val().search(/\S/)==-1){ 2426 $("#productShippingZip").after('<label class="error top-arrow">Please enter Shipping Zip.</label>'); 2427 err_cnt++; 2428 } 2429 if($("#productShipMethod").val().search(/\S/)==-1){ 2430 $("#productShipMethod").after('<label class="error top-arrow">Please select Shipping Method.</label>'); 2431 err_cnt++; 2432 } 2433 } 2434 2435 if($(".art-option:visible").length > 0 && artOption=='upload'){ 2436 if($("#artFile_1").val().search(/\S/)==-1 && $("#artFile_2").val().search(/\S/)==-1 && $("#artFile_3").val().search(/\S/)==-1){ 2437 $("div.art_work_info").after('<label class="error top-arrow">Please choose your artwork file.</label>'); 2438 err_cnt++; 2439 } 2440 } 2441 if($(".art-option:visible").length > 0 && artOption=='repeat'){ 2442 if($("#artInfoCommon").val().search(/\S/)==-1){ 2443 $("#artInfoCommon").after('<label class="error top-arrow">
2443Please enter your art / order instructions.</label>'); 2444 err_cnt++; 2445 } 2446 } 2447 2448 if(err_cnt==0){ 2449 if(dec_id==15){ 2450 if(!$("#productShippingZip").hasClass('cart-fields-'+dec_id)) $("#productShippingZip").addClass('cart-fields-'+dec_id); 2451 if(!$("#productShipMethod").hasClass('cart-fields-'+dec_id)) $("#productShipMethod").addClass('cart-fields-'+dec_id); 2452 if(!$("#noPrintInstHolder").find("#artInfoNoPrint").hasClass('cart-fields-'+dec_id)) $("#noPrintInstHolder").find("#artInfoNoPrint").addClass('cart-fields-'+dec_id); 2453 } 2454 2455 if($(".art-option:visible").length > 0){ 2456 if(artOption=='upload'){ 2457 if(!$("#UploadArt").hasClass('cart-fields-'+dec_id)) $("#UploadArt").addClass('cart-fields-'+dec_id); 2458 $("#artFile_1,#artFile_2,#artFile_3").addClass('cart-fields-'+dec_id); 2459 }else if(artOption=='repeat'){ 2460 if(!$("#RepeatArt").hasClass('cart-fields-'+dec_id)) $("#RepeatArt").addClass('cart-fields-'+dec_id); 2461 $("#artFile_1,#artFile_2,#artFile_3").removeClass('cart-fields-'+dec_id); 2462 }else{ 2463 if(!$("#EmailArt").hasClass('cart-fields-'+dec_id)) $("#EmailArt").addClass('cart-fields-'+dec_id); 2464 } 2465 $("#blockBodyStep3").find("#artInfoCommon").addClass('cart-fields-'+dec_id); 2466 } 2467 if($('#productShipMethod').length && $('#productShipMethod').val()){ 2468 let selection = $('#productShipMethod').find('option:selected'); 2469 if($('#deliveryDate').length){ 2470 let date = $('#deliveryDate').find('input.cost-params').val(); 2471 if(selection.is('[data-id]')){ 2472 date = selection.attr('data-id'); 2473 date = JSON.parse(window.atob(date)); 2474 date = date.delivery.date+' '+date.delivery.time; 2475 } 2476 else if(selection.is('[data-raw-etd]')) date = selection.attr('data-raw-etd'); 2477 else{ 2478 date = ((selection.is('[data-etd]'))?selection.attr('data-etd'):$('#deliveryDate').text()); 2479 const data = new Date(date); 2480 const pad = (n) => n.toString().padStart(2, '0'); 2481 date = data.getFullYear()+'-' +pad(data.getMonth() + 1)+'-'+pad(data.getDate())+' '+pad(data.getHours())+':'+pad(data.getMinutes()); 2482 } 2483 if(date!=='') $('#deliveryDate').find('input.cost-params').val(date); 2484 } 2485 } 2486 $("#productFormHolder").find('div.loader_wrap').show(); 2487 let product_id = $("#productId").val(); 2488 $.ajax({
2489 type: 'POST', 2490 url: baseURL+'ajax/add-to-mcart', 2491 data: {'product_id':product_id,'decoration':dec_id,'unit_cost':$("#unitPrice_"+dec_id).val(),'cost_params':$(".cost-params").serializeArray(),'params':$(".cart-fields-"+dec_id).serializeArray(),'ship_zip':$("#productShippingZip").val(),'ship_method':$("#productShipMethod").val(),'cart_key':$("#cartKey").val()}, 2492 success: function(resp){ 2493 if(resp.search(/\S/)!=-1){ 2494 _refreshMCart(); 2495 if(parseInt($("#cartKey").val())==0){ 2496 $("#cartCount").text(parseInt($("#cartCount").text())+1); 2497 } 2498 $("#productFormHolder").find('div.loader_wrap').hide(); 2499 _clearProductForm(); 2500 } 2501 } 2502 }); 2503 }else{ 2504 setTimeout(function(){ 2505 $("label.error").fadeOut(8000,function(){ 2506 $("label.error").remove(); 2507 }); 2508 },2000); 2509 return false; 2510 } 2511 }); 2512 2513 var _clearProductForm = function(){ 2514 let dec_id = $(".product-decoration:checked").val(); 2515 if($("#totalQuantity_"+dec_id).length) $("#totalQuantity_"+dec_id).text($("#minQuantity_"+dec_id).val()); 2516 $("#prodQuantity_"+dec_id).val($("#minQuantity_"+dec_id).val()); 2517 if($(".color-"+dec_id).length>0) $(".color-"+dec_id).prop('checked',false); 2518 if($(".panel-colors-"+dec_id).length>0) $(".panel-colors-"+dec_id).prop('checked',false); 2519 if($(".body-colors-"+dec_id).length>0) $(".body-colors-"+dec_id).prop('checked',false); 2520 if($(".fields-"+dec_id).length > 0){ 2521 $(".fields-"+dec_id).each(function(){ 2522 $(this).val(''); 2523 }); 2524 } 2525 if($("#inkColors").hasClass('cart-fields-'+dec_id)){ 2526 $('#inkColors').multiselect('deselectAll', false); 2527 $('#inkColors').multiselect('updateButtonText'); 2528 } 2529 if($("#production_"+dec_id).length > 0){ 2530 $("#production_"+dec_id).val(''); 2531 } 2532 $("#productVirtualProof").val(''); 2533 $("#productShippingZip").val(''); 2534 $("#productShipMethod").html('<option value="">Shipping Method</option>'); 2535 $("#productShipMethod").val(''); 2536 $("#UploadArt").prop('checked',true); 2537 $("#artFile_1,#artFile_2,#artFile_3").val(''); 2538 $("#label_artworkUpload_1").find('a').remove().html('Upload <input type="hidden" name="artfile[]" id="artFile_1" class="form-control cart-fields" value="">'); 2539 $("#label_artworkUpload_2").find('a').remove().html('Upload <input type="hidden" name="artfile[]" id="artFile_2" class="form-control cart-fields" value="">'); 2540 $("#label_artworkUpload_3").find('a').remove().html('Upload <input type="hidden" name="artfile[]" id="artFile_3" class="form-control cart-fields" value="">'); 2541 2542 if(!$("#delArtworkUpload_1").hasClass('d-none')) $("#delArtworkUpload_1").addClass('d-none'); 2543 if(!$("#delArtworkUpload_2").hasClass('d-none')) $("#delArtworkUpload_2").addClass('d-none'); 2544 if(!$("#delArtworkUpload_3").hasClass('d-none')) $("#delArtworkUpload_3").addClass('d-none'); 2545 $("#artInfoNoPrint, #artInfoCommon").val(''); 2546 2547 $("#blockHeadingStep1").removeClass('toggle-block'); 2548 if(!$("#blockHeadingStep1").hasClass('arrow-up')) $("#blockHeadingStep1").addClass('arrow-up'); 2549 $("#blockBodyStep1").slideDown(); 2550 $("#blockHeadingStep2").removeClass('toggle-block').removeClass('arrow-up'); 2551 $("#blockBodyStep2").slideUp(); 2552 $("#blockBodyStep3").slideUp(); 2553 $("#blockHeadingStep3").removeClass('arrow-up'); 2554 $("#btnAddtoCart").addClass('disabled').text('Add to Cart'); 2555 $("#deliveryDate").html('--'); 2556 $("div.estimated_date").addClass('d-none'); 2557 $("#chargesHolder").find("shipCharges_holder").remove(); 2558 2559 $(".product-decoration:first").prop('checked',true).trigger('click'); 2560 $(".product-decoration").trigger('change'); 2561 }; 2562 2563 $(document).on('click','#createReorder',function(){ 2564 if($(this).hasClass('disabled')) return false; 2565 if($(".order-items:checked").length==0){ 2566 $("#createReorder").after('<label class="error top-arrow">Please select items to reorder.</label>'); 2567 setTimeout(function(){ 2568 $("label.error").fadeOut(8000,function(){ 2569 $("label.error").remove(); 2570 }); 2571 },2000); 2572 return false; 2573 } 2574 $(this).addClass('disabled'); 2575 $.ajax({
2576 type: 'POST', 2577 url: baseURL+'ajax/reorder-to-mcart', 2578 data: {'order_items':$(".order-items:checked").serializeArray()}, 2579 dataType:"json", 2580 success: function(resp){ 2581 if(resp!=""){ 2582 $("#createReorder").removeClass('disabled'); 2583 if(resp.status=='success'){ 2584 if(resp.redirect.search(/\S/)!=-1){ 2585 window.location.href = baseURL+resp.redirect; 2586 } 2587 }else{ 2588 $("#createReorder").after('<label class="error top-arrow">Sorry, could not add the selected item(s) to cart.</label>'); 2589 setTimeout(function(){ 2590 $("label.error").fadeOut(8000,function(){ 2591 $("label.error").remove(); 2592 }); 2593 },2000); 2594 return false; 2595 } 2596 } 2597 } 2598 }); 2599 }); 2600 2601 $(document).on('click','#orderTrack',function(){ 2602 if($(this).hasClass('disabled')) return false; 2603 if($('#trackNo').length){ 2604 if($('#trackNo').val().search(/\S/)!=-1) var track = $.trim($('#trackNo').val()); 2605 else{ 2606 $('#trackNo').after('<label class="error top-arrow">'+$('#trackNo').attr('placeholder')+'</label>'); 2607 setTimeout(function(){ 2608 $("label.error").fadeOut(8000,function(){ 2609 $("label.error").remove(); 2610 }); 2611 },2000); 2612 return false; 2613 } 2614 } 2615 if(typeof track!=='undefined'){ 2616 $(this).addClass('disabled'); 2617 $('#trackResult').html('<div class="loader_wrap vh-100 d-block"><div class="loader_inner"><div class="loader"></div></div></div>'); 2618 $.ajax({ 2619 type: 'POST', 2620 url: baseURL+'ajax/track-order', 2621 data: {'track':track}, 2622 success: function(resp){ 2623 $('#trackResult').html(resp); 2624 $('#orderTrack').removeClass('disabled'); 2625 } 2626 }); 2627 } 2628 }); 2629});
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.