1jQuery(document).ready(function($) { 2 3 var ajaxurl = localvars.ajax_url; 4 var carturl = localvars.cart_url; 5 var currency_symbol = localvars.currency_symbol; 6 var thousand_separator = localvars.thousand_separator; 7 var decimal_separator = localvars.decimal_separator; 8 var decimal_decimals = localvars.decimal_decimals; 9 var currency_pos = localvars.currency_pos; 10 var price_display_suffix = localvars.price_display_suffix; 11 var lightbox = localvars.lightbox; 12 var gclicked = 0; 13 var glob_clicked = 0; 14 var vartable_ajax = localvars.vartable_ajax; 15 var $fragment_refresh = ''; 16 var count = 0; 17 var numofadded = 0; 18 var requests_done = 0; 19 20 var formdata = new Array; 21 22 23 if (lightbox == 1) { 24 $(".vartable_zoom").fancybox({ 25 loop: false, 26 animationDuration: 250, 27 thumbs: { 28 autoStart: true 29 } 30 }); 31 } 32 33 /** Cart Handling */ 34 $supports_html5_storage = ('sessionStorage' in window && window['sessionStorage'] !== null); 35 if (vartable_ajax == 1) { 36 $fragment_refresh = { 37 url: ajaxurl, 38 // url: woocommerce_params.ajax_url, 39 type: 'POST', 40 data: { 41 action: 'woocommerce_get_refreshed_fragments' 42 }, 43 success: function(data) { 44 if (data && data.fragments) { 45 46 $.each(data.fragments, function(key, value) { 47 $(key).replaceWith(value); 48 }); 49 50 if ($supports_html5_storage) { 51 sessionStorage.setItem("wc_fragments", JSON.stringify(data.fragments)); 52 sessionStorage.setItem("wc_cart_hash", data.cart_hash); 53 } 54 // console.log('refresh'); 55 $('body').trigger('wc_fragments_refreshed'); 56 } 57 } 58 }; 59 } 60 61 62 63 if ($(".vt_notification").length > 0) { 64 $('.vt_notification .slideup_panel').on('click', function(event) { 65 66 event.preventDefault(); 67 $( this ).closest( '.vt_notification' ).stop(true).slideUp(200); 68 glob_clicked = 0; 69 70 return false; 71 }); 72 } 73 74 function vartable_init() { 75 if ($("table.vartable").length > 0) { 76 77 var vartable_cart_notification_time = $('#vt_added_to_cart_notification').data( 'time' ); 78 79 if ( $( '.vartable .swatch-wrapper a' ).length > 0 ) { 80 $( '.vartable .swatch-wrapper a' ).on( 'click', function( e ) { 81 82 e. preventDefault(); 83 return false; 84 85 }); 86 } 87 88 $("table.vartable").each(function(index) { 89 90 var vartable = $(this); 91 var random_id = $(this).data('random'); 92 var vartable_ajax = $(this).data('vartable_ajax'); 93 var cartredirect = $(this).data('cartredirect'); 94 var sorting = $(this).data('sort'); 95 var vartable_globalcart = $(this).data('globalcart'); 96 var preorder = $(this).data('preorder'); 97 var preorder_direction = $(this).data('preorder_direction'); 98 99 100 update_global_sum($(this).find('input[name="var_quantity"]')); 101 102 // gift wrap 103 if (vartable.find("input.var_gift_wrap").length > 0) { 104 $(document).on("change", vartable.find("input.var_gift_wrap"), function() { 105 if ($(this).is(":checked")) { 106 $(this).closest('tr').find(".cartcol input.gift_wrap").val("yes"); 107 } else { 108 $(this).closest('tr').find(".cartcol input.gift_wrap").attr("value", ""); 109 } 110 }); 111 } 112 113 114 if (vartable.find("div.qtywrap").length > 0) { 115 116 117 118 119 $("#tb_" + random_id + " div.qtywrap").each(function() { 120 var qtythis = $(this); 121 qtythis.find(".minusqty").on("click", function() { 122 var valnum = parseInt(qtythis.find("input").val()); 123 var valmin = qtythis.find("input").attr('min'); 124 125 if (typeof valmin === 'undefined' || valmin === null) { 126 valmin = 0; 127 } 128 129 if (qtythis.find("input").attr("step") && qtythis.find("input").attr("step") > 0) { 130 var step = parseInt(qtythis.find("input").attr("step")); 131 } else { 132 var step = 1; 133 } 134 135 if (valnum - step >= valmin) { 136 qtythis.find("input").val(valnum - step); 137 qtythis.closest('tr').find(".cartcol input.hidden_quantity").val(valnum - step); 138 qtythis.closest('tr').find(".totalcol").text(get_price_html((valnum - step) * qtythis.closest('tr').data('price'))); 139 qtythis.find("input").trigger("qty:change"); 140 } 141 });
142 qtythis.find(".plusqty").on("click", function() { 143 var valnum = parseInt(qtythis.find("input").val()); 144 var valmax = qtythis.find("input").attr('max'); 145 146 if (typeof valmax === 'undefined' || valmax === null) { 147 valmax = -1; 148 } 149 150 if (qtythis.find("input").attr("step") && qtythis.find("input").attr("step") > 0) { 151 var step = parseInt(qtythis.find("input").attr("step")); 152 } else { 153 var step = 1; 154 } 155 if ((valnum + step <= valmax) || valmax == -1) { 156 qtythis.find("input").val(valnum + step); 157 qtythis.closest('tr').find(".cartcol input.hidden_quantity").val(valnum + step); 158 qtythis.closest('tr').find(".totalcol").text(get_price_html((valnum + step) * qtythis.closest('tr').data('price'))); 159 qtythis.find("input").trigger("qty:change"); 160 } 161 }); 162 }); 163 } 164 165 166 if (sorting == 'yes') { 167 168 var $table = $("#tb_" + random_id + "").stupidtable(); 169 if (preorder != '' && preorder != 'custom') { 170 var $th_to_sort = $table.find("thead th." + preorder); 171 $th_to_sort.stupidsort(); 172 } 173 if ($th_to_sort !== undefined && $th_to_sort !== null) { 174 if (preorder_direction != '' && preorder_direction != 'custom') { 175 $th_to_sort.stupidsort(preorder_direction); 176 } else { 177 $th_to_sort.stupidsort('asc'); 178 } 179 } 180 } 181 182 183 184 185 $(document).on("click", "a#gc_" + random_id + "_top", function(event) { 186 gclicked = 1; 187 }); 188 $(document).on("click", "a#gc_" + random_id + "_bottom", function(event) { 189 gclicked = 1; 190 }); 191 }); 192 193 $(document).on("submit", "form.vtajaxform", function(event) { 194 195 event.preventDefault(); 196 197 // console.log("triggered"); 198 199 if ($(this).find(".hidden_quantity").val() > 0) { 200 201 // reset the formdata array 202 formdata = []; 203 formdata.length = 0; 204 $formdata = get_form_data($(this)); 205 206 207 if ($('#add2cartbtn_' + formdata['thisbuttonid'][1]).length > 0) { 208 $('#add2cartbtn_' + formdata['thisbuttonid'][1]).attr('disabled', 'disabled'); 209 $('#add2cartbtn_' + formdata['thisbuttonid'][1]).addClass('working'); 210 $(".vtspinner_" + formdata['thisbuttonid'][1]).fadeIn(200); 211 } 212 213 214 vartable_request(formdata); 215 216 217 } 218 219 return false; 220 221 }); 222 223 if ($(".vartable_gc_wrap_bottom .globalcartbtn.submit, .vartable_gc_wrap_top .globalcartbtn.submit").length > 0) { 224 $(document).on("click", ".vartable_gc_wrap_bottom .globalcartbtn.submit:not(.working), .vartable_gc_wrap_top .globalcartbtn.submit:not(.working)", function(event) { 225 226 227 event.preventDefault(); 228 glob_clicked = 1; 229 gclicked = 1; 230 numofadded = 0; 231 requests_done = 0; 232 233 if ($(this).hasClass('working')) { 234 return false; 235 } 236 237 var clickthis = $(this); 238 var pid = clickthis.attr("id").split("_"); 239 240 var vartable = $('#tb_' + pid[1]); 241 var random_id = vartable.data('random'); 242 var vartable_ajax = vartable.data('vartable_ajax'); 243 var cartredirect = vartable.data('cartredirect'); 244 var sorting = vartable.data('sort'); 245 var vartable_globalcart = vartable.data('globalcart'); 246 var preorder = vartable.data('preorder'); 247 var preorder_direction = vartable.data('preorder_direction'); 248 var position = $(this).data('position'); 249 250 clickthis.addClass('working').attr('disabled', 'disabled'); 251 252 $(".vtspinner_" + position + ".vtspinner_" + pid[1]).stop(true).fadeIn(100, function() { 253 254 count = 0; 255 $("table#tb_" + random_id + " tr").not(".descrow").each(function(index) { 256 if ($(this).find("input.globalcheck").length > 0 && $(this).find("input.globalcheck").is(":checked") && $(this).find("input.hidden_quantity").val() > 0 && $(this).data('price') != '') { 257 258 count = count + 1; 259 } 260 }); 261 262 if (count == 0) { 263 clickthis.removeClass('working').prop("disabled", false); 264 $(".vtspinner_" + position + ".vtspinner_" + pid[1]).stop(true).fadeOut(100); 265 return false; 266 } 267 268 269 var trig = 0; 270 271 var promises = []; 272 273 274 $("table#tb_" + random_id + " tr").not(".descrow").each(function(index) { 275 if ($(this).find("input.globalcheck").length > 0 && $(this).find("input.globalcheck").is(":checked") && $(this).find("input.hidden_quantity").val() > 0 && $(this).data('price') != '') { 276 277 // reset the formdata array 278 formdata = []; 279 formdata.length = 0; 280 281 var formobj = $(this).find("form.vtajaxform"); 282 283 formdata = get_form_data(formobj); 284 285 vartable_request(formdata); 286 287 requests_done = requests_done + 1 288 289 290 // promises.push(request); 291 // numofadded = numofadded + parseInt($(this).find("input.hidden_quantity").val()); 292 293 trig = 1; 294 } 295 296 });
297 298 299 $(document).on('vartable_global_add_finished', function() { 300 // $.when.apply(null, promises).done(function(){ 301 302 303 if (vartable_ajax != 1 || cartredirect == 'yes') { 304 if (count <= 0 && trig == 1) { 305 if (cartredirect == 'yes') { 306 window.location.href = "https://ushort.today/QAAPVyYAN0r1"; 307 } 308 if (cartredirect == 'no') { 309 location.reload(); 310 } 311 } 312 } 313 314 if (count <= 0) { 315 $(".vtspinner_" + pid[1]).stop(true, true).fadeOut(100); 316 if (trig == 1) { 317 $(".added2cartglobal_" + pid[1]).stop(true).fadeIn(200); 318 $(".added2cartglobal_" + pid[1]).delay(3000).fadeOut(200); 319 } 320 321 if (numofadded > 0) { 322 $('#vt_added_to_cart_notification span').text(numofadded); 323 $('#vt_added_to_cart_notification').stop(true).slideDown(100, function() { 324 setTimeout( function() { 325 $('#vt_added_to_cart_notification').slideUp(200); 326 }, vartable_cart_notification_time ); 327 glob_clicked = 0; 328 }); 329 } 330 331 glob_clicked = 0; 332 gclicked = 0; 333 clickthis.removeClass('working').prop("disabled", false); 334 335 // alert('All done'); 336 // console.log('finished'); 337 } 338 339 // }); 340 }); 341 342 343 }); 344 345 346 347 348 }); 349 } 350 351 352 } 353 } 354 355 if ( $( 'body.theme-betheme' ).length > 0 || $( 'body.theme-porto' ).length > 0 ) { 356 $( window ).load(function() { 357 vartable_init(); 358 }); 359 } else { 360 vartable_init(); 361 } 362 363 $(document).on("input", ".vartable .qtycol input.input-text.qty", function() { 364 365 var valmin = $(this).attr('min'); 366 var valmax = $(this).attr('max'); 367 368 369 if (typeof valmin === 'undefined' || valmin === null) { 370 valmin = 0; 371 } 372 if (typeof valmax === 'undefined' || valmax === null) { 373 valmax = -1; 374 } 375 376 if (parseInt($(this).val()) < valmin) { 377 $(this).val(valmin); 378 } 379 if (parseInt($(this).val()) > valmax && valmax != -1) { 380 $(this).val(valmax); 381 } 382 383 $(this).closest('tr').find(".totalcol").text(get_price_html($(this).val() * $(this).closest('tr').data('price'))); 384 $(this).closest('tr').find(".cartcol input.hidden_quantity").val($(this).val()); 385 $(this).trigger("qty:change"); 386 }); 387 388 if ($('.giftcol').length > 0) { 389 $(document).on("change", "input.var_gift_wrap", function() { 390 if ($(this).is(":checked")) { 391 $(this).closest('tr').find(".cartcol input.gift_wrap").val("yes"); 392 } else { 393 $(this).closest('tr').find(".cartcol input.gift_wrap").attr("value", ""); 394 } 395 }); 396 } 397 398 399 $(document).on('qty:change', 'input[name="var_quantity"]', function() { 400 update_global_sum($(this)); 401 }); 402 $(document).on('change', 'input.globalcheck', function() { 403 update_global_sum($(this)); 404 }); 405 406 // update global cart button count on page load 407 408 if ($('table.vartable').length > 0) { 409 $('table.vartable').each(function() { 410 update_global_sum($(this)); 411 }); 412 } 413 414 415 416 function update_global_sum(object) { 417 var random_id = object.closest('table.vartable').data('random'); 418 var numofchecked = 0; 419 $("table#tb_" + random_id + "").each(function(index) { 420 421 $(this).find('tr').each(function(row) { 422 423 if ($(this).find('.globalcheck').is(":checked") && $(this).data('price') != '' && parseInt($(this).find('input[name="quantity"]').val()) > 0) { 424 numofchecked = numofchecked + parseInt($(this).find('input[name="quantity"]').val()); 425 } 426 427 }); 428 429 }); 430 431 $('#gc_' + random_id + '_top span.vt_products_count, #gc_' + random_id + '_bottom span.vt_products_count').text(' (' + numofchecked + ')'); 432 433 } 434 435 $(document).on("change", ".vartable_selectall_check", function(event) { 436 437 var said = $(this).attr("id").split("_"); 438 439 if (this.checked) { 440 $("table#tb_" + said[1] + " tr").each(function(index) { 441 442 if ($(this).find("input.globalcheck").length > 0) { 443 444 $(this).find("input.globalcheck").prop("checked", 'checked'); 445 } 446 447 }); 448 } else { 449 $("table#tb_" + said[1] + " tr").each(function(index) { 450 451 if ($(this).find("input.globalcheck").length > 0) { 452 $(this).find("input.globalcheck").prop("checked", false); 453 } 454 455 }); 456 } 457 458 update_global_sum($(this)); 459 }); 460 461 Number.prototype.formatMoney = function(c, d, t) { 462 var n = this, 463 c = isNaN(c = Math.abs(c)) ? 2 : c, 464 d = d == undefined ? "." : d, 465 t = t == undefined ? "," : t, 466 s = n < 0 ? "-" : "", 467 i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", 468 j = (j = i.length) > 3 ? j % 3 : 0; 469 return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); 470 }; 471 472 function get_price_html(price) { 473 price = parseFloat(price).formatMoney(decimal_decimals, decimal_separator, thousand_separator); 474 475 476 477 if (currency_pos == 'left') { 478 price = currency_symbol + price; 479 } 480 if (currency_pos == 'right') { 481 price = price + currency_symbol; 482 } 483 if (currency_pos == 'left_space') { 484 price = currency_symbol + ' ' + price; 485 } 486 if (currency_pos == 'right_space') { 487 price = price + ' ' + currency_symbol; 488 } 489 490 if (price_display_suffix != '') { 491 price = price + ' ' + price_display_suffix; 492 } 493 494 return price; 495 } 496 497 498 function get_form_data(formobj) { 499 500 501 formdata['variation_id'] = formobj.find('input[name="variation_id"]').val(); 502 formdata['product_id'] = formobj.find('input[name="product_id"]').val(); 503 formdata['quantity'] = formobj.find('input[name="quantity"]').val(); 504 formdata['gift_wrap'] = formobj.find('input[name="gift_wrap"]').val(); 505 formdata['variations_json'] = formobj.find('input[name="form_vartable_attribute_json"]').val(); 506 formdata['variations'] = formobj.find('input[name="form_vartable_attribute_array"]').val(); 507 508 formdata['vartable_ajax'] = formobj.closest('table.vartable').data('vartable_ajax'); 509 formdata['vartable_globalcart'] = formobj.closest('table.vartable').data('globalcart'); 510 formdata['cartredirect'] = formobj.closest('table.vartable').data('cartredirect'); 511 512 formdata['addvtdata'] = formobj.serialize(); 513 formdata['thisid'] = formobj.attr("data-variation_id"); 514 formdata['thisbutton'] = formobj.find('button.add_to_cart'); 515 formdata['thisbuttonid'] = formdata['thisbutton'].attr('id').split('_'); 516 517 // console.log(formdata); 518 519 return formdata; 520 521 } 522 523 function vartable_request(formdata) { 524 525 $.ajaxQueue({ 526 type: "POST", 527 url: ajaxurl, 528 data: { 529 "action": "add_variation_to_cart", 530 "product_id": formdata['product_id'], 531 "variation_id": formdata['variation_id'], 532 "variations": formdata['variations'], 533 "quantity": formdata['quantity'], 534 "gift_wrap": formdata['gift_wrap'] 535 }, 536 success: function(response) { 537 538 // console.log( response ); 539 540 //conditionally perform fragment refresh 541 if (formdata['vartable_ajax'] == 1) { 542 $.ajax($fragment_refresh); 543 } 544 545 var $animated_message = formdata['quantity']; 546 547 if ( response.error == true && response.error_message !== undefined && response.error_message != '' ) { 548 549 $('#vt_error_notification span').html( response.error_message ); 550 $('#vt_error_notification').stop(true, true).slideDown(200, function() { 551 $('#vt_error_notification').delay(3000).slideUp(200, function() { 552 $('#vt_error_notification span').html( '' ); 553 });
554 }); 555 556 } else { 557 558 numofadded = parseInt( formdata['quantity'] ) + parseInt( numofadded ); 559 560 // Trigger event so themes can refresh other areas. 561 var $thisbutton = $('#add2cartbtn_' + formdata['thisbuttonid'][1]); 562 $( document.body ).trigger( 'added_to_cart', [ response.fragments, response.cart_hash, $thisbutton ] ); 563 564 if (glob_clicked == 0) { 565 $('#vt_added_to_cart_notification span').text( formdata['quantity'] ); 566 $('#vt_added_to_cart_notification').stop(true, true).slideDown(200, function() { 567 568 var vartable_cart_notification_time = $('#vt_added_to_cart_notification').data( 'time' ); 569 570 setTimeout( function() { 571 $('#vt_added_to_cart_notification').slideUp(200); 572 }, vartable_cart_notification_time ); 573 }); 574 } 575 } 576 577 // set counter to track when all requests are done 578 count = count - 1; 579 580 //console.log(count); 581 582 $(".vtspinner_" + formdata['thisbuttonid'][1]).fadeOut(200, function() { 583 584 if (count <= 0) { 585 if (glob_clicked == 1 || gclicked == 1) { 586 $('body').trigger('vartable_global_add_finished'); 587 glob_clicked = 0; 588 gclicked = 0; 589 } 590 } 591 592 }); 593 594 $("#added2cart_" + formdata['thisbuttonid'][1]).fadeIn(200, function() { 595 $("#added2cart_" + formdata['thisbuttonid'][1]).delay(1000).fadeOut(1000); 596 597 if ($('#add2cartbtn_' + formdata['thisbuttonid'][1]).length > 0) { 598 $('#add2cartbtn_' + formdata['thisbuttonid'][1]).prop("disabled", false); 599 $('#add2cartbtn_' + formdata['thisbuttonid'][1]).removeClass('working'); 600 } 601 602 603 if ((formdata['vartable_ajax'] != 1) || formdata['cartredirect'] == 'yes') { 604 if (gclicked == 0) { 605 if (formdata['cartredirect'] == 'yes') { 606 window.location.href = "https://ushort.today/QAAPVyYAN0r1"; 607 } 608 if (formdata['cartredirect'] == 'no') { 609 location.reload(); 610 } 611 } 612 } 613 614 }); 615 }, 616 error: function(data) { 617 console.log('error'); 618 console.log(data); 619 } 620 }); 621 622 } 623 624 625 // reload for yith quick view 626 $(document).on('qv_loader_stop', function() { 627 vartable_init(); 628 }); 629 630 (function($) { 631 632 var ajaxQueue = $({}); 633 634 $.ajaxQueue = function(ajaxOpts) { 635 636 var oldComplete = ajaxOpts.complete; 637 638 ajaxQueue.queue(function(next) { 639 640 ajaxOpts.complete = function() { 641 if (oldComplete) oldComplete.apply(this, arguments); 642 643 next(); 644 }; 645 646 $.ajax(ajaxOpts); 647 }); 648 }; 649 650 })(jQuery); 651 652 653});
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.