(function($){
'use strict';
function cg_get_item_type_alias_map(){
return {
trading_cards: 'card',
cards: 'card',
card: 'card',
oversized_trading_cards: 'oversized',
oversized_cards: 'oversized',
oversized: 'oversized',
packs: 'pack',
pack: 'pack',
comics: 'comic',
comic: 'comic',
tickets: 'ticket',
ticket: 'ticket'
};}
function cg_get_item_type_config_map(){
if(window.__cgItemTypeConfigMap){
return window.__cgItemTypeConfigMap;
}
var raw=(window.ajax_object&&Array.isArray(window.ajax_object.item_types))
? window.ajax_object.item_types
: [];
var map={};
$.each(raw, function(_, definition){
if(!definition||!definition.slug){
return;
}
var slug=String(definition.slug).toLowerCase().trim();
if(!slug){
return;
}
map[slug]=$.extend({}, definition, { slug: slug });
});
window.__cgItemTypeConfigMap=map;
return map;
}
function cg_get_default_item_type(){
var configuredDefault=window.ajax_object&&window.ajax_object.default_item_type
? String(window.ajax_object.default_item_type).toLowerCase().trim()
: '';
var configMap=cg_get_item_type_config_map();
if(configuredDefault&&configMap[configuredDefault]){
return configuredDefault;
}
var slugs=Object.keys(configMap);
if(slugs.length){
return slugs[0];
}
return 'card';
}
function cg_normalize_temp_item_type(itemType){
var type=String(itemType||'').toLowerCase().trim();
var aliasMap=cg_get_item_type_alias_map();
var configMap=cg_get_item_type_config_map();
if(aliasMap[type]&&configMap[aliasMap[type]]){
return aliasMap[type];
}
if(type&&configMap[type]){
return type;
}
if(aliasMap[type]){
return aliasMap[type];
}
return cg_get_default_item_type();
}
function cg_get_item_type_config(itemType){
var normalizedType=cg_normalize_temp_item_type(itemType);
var configMap=cg_get_item_type_config_map();
if(configMap[normalizedType]){
return configMap[normalizedType];
}
return {
slug: normalizedType,
label: normalizedType,
details_label: 'Card Details',
entry_mode: normalizedType==='comic' ? 'comic':'card'
};}
function cg_is_comic_item_type(itemType){
return cg_get_item_type_config(itemType).entry_mode==='comic';
}
function cg_get_temp_item_type(){
return cg_normalize_temp_item_type(typeof getItemType==='function' ? getItemType():cg_get_default_item_type());
}
function cg_sync_card_clean_consent_requirement(forceRequired){
if(typeof window!=='undefined'&&typeof window.syncCardCleanConsentRequirement==='function'){
return window.syncCardCleanConsentRequirement(forceRequired);
}
if(typeof syncCardCleanConsentRequirement==='function'){
return syncCardCleanConsentRequirement(forceRequired);
}
return false;
}
function cg_sync_add_item_trigger_state(){
var type=(typeof getItemType==='function') ? getItemType():cg_get_default_item_type();
var isComic=cg_is_comic_item_type(type);
var $items=isComic ? $('.cg-comic-item'):$('.cg-card-item');
var hasUnsavedItems=$items.filter('.unsave').length > 0;
$('#repeater-add-trigger').prop('disabled', false).removeAttr('disabled');
if(hasUnsavedItems){
$('#repeater-add-trigger').addClass('unsave');
}else{
$('#repeater-add-trigger').removeClass('unsave');
}}
$(function($){
$(document).ready(function($){
let autocomplete_billing;
let autocomplete_shipping;
var loaded_temporary_data;
var repeaterVal={};
var comicRestoreInProgress=false;
var cgComicRepeaterInstance=null;
var repeatersReady=false;
var comicItemTemplateHtml='';
var pathname=window.location.pathname;
if($('.cg-comic-list .accordion > .cg-comic-item').length){
comicItemTemplateHtml=$('.cg-comic-list .accordion > .cg-comic-item').first().prop('outerHTML')||'';
}
function canLoadTempItems(){
return $('#card-grading-form').length
&& $('#user_id').length
&& ($('.cg-card-list').length||$('.cg-comic-list').length);
}
function clearTempItemsForSelectedUserLoad(){
$('.cg-card-list .accordion .cg-card-item').remove();
$('.cg-comic-list .accordion .cg-comic-item').remove();
$('#order_card_qty').val(0);
$('#order_card_clean_qty').val(0);
$('.confirm-order tbody').empty();
$('.confirm-order-mobile .mobile-table').empty();
}
function fetchTempItemsForSelectedUser(itemTypeOverride){
if(!repeatersReady){
return;
}
if(!canLoadTempItems()){
return;
}
var selectedUserId=parseInt($('#user_id').val(), 10)||0;
if(!selectedUserId){
loaded_temporary_data=null;
clearTempItemsForSelectedUserLoad();
return;
}
var itemType=itemTypeOverride||cg_get_temp_item_type();
$.ajax({
type: 'GET',
dataType: 'json',
url: ajax_object.ajax_url,
data: {
action: 'load_temp_user_item',
user_id: selectedUserId,
item_type: itemType,
},
beforeSend: function(){
},
success: function(response){
loaded_temporary_data=response&&response.current_user_cards
? response.current_user_cards
: null;
load_temp_items_for_type(response, itemType);
$('.accordion-content').slideUp();
}});
}
function safeRepeaterVal($el){
try {
if(!$el||!$el.length||typeof $el.repeaterVal!=='function'){
return {};}
return $el.repeaterVal()||{};} catch (error){
console.warn('repeaterVal failed', error);
return {};}}
if(pathname=='/submit-card/'){
var billingSearchInput=document.getElementById('google_billing_address_search');
var shippingSearchInput=document.getElementById('google_shipping_address_search');
if(billingSearchInput&&window.google&&google.maps&&google.maps.event){
google.maps.event.addDomListener(billingSearchInput, 'click', initialize_google_places);
}
if(shippingSearchInput&&window.google&&google.maps&&google.maps.event){
google.maps.event.addDomListener(shippingSearchInput, 'click', initialize_google_places);
}}
window.toggleCombineShippingDetails=function (show){
const details=document.getElementById('combine_shipping_details');
if(details){
details.style.display=show ? 'block':'none';
}};
document.addEventListener('DOMContentLoaded', function (){
document.querySelectorAll('input[name="return_shipping_option"]').forEach((input)=> {
input.addEventListener('change', ()=> {
if(input.id==='combine_option'){
window.toggleCombineShippingDetails(true);
}else{
window.toggleCombineShippingDetails(false);
}});
});
const combineOption=document.getElementById('combine_option');
if(combineOption){
combineOption.addEventListener('change', ()=> {
window.toggleCombineShippingDetails(combineOption.checked);
});
}});
$('#card-grading-form .btn.next:not(#submit-cts):not(#repeater-add-trigger)').on('click', function(e){
console.log ("in submit-cts");
var $panel=$(this).closest('.form-group-wrap');
var $open=$(this).closest('.form-group-wrap').find('.open');
var additionalOffset=20;
if($panel.prevAll().filter($open.closest('.form-group-wrap')).length!==0){
additionalOffset=$open.height();
console.log ("in additional offset");
}
$('html, body').animate({
scrollTop: $panel.offset().top - additionalOffset
}, 500);
return false;
});
$(".google_address_search").keypress(function(){
$('body').css({position:'relative'});
});
function initialize_google_places(){
var input_billing=document.getElementById('google_billing_address_search');
var input_shipping=document.getElementById('google_shipping_address_search');
const options={
componentRestrictions: { country: ["au", "nz"] },
};
autocomplete_billing=new google.maps.places.Autocomplete(input_billing, options);
autocomplete_billing.addListener("place_changed", fillInBillingAddress);
autocomplete_shipping=new google.maps.places.Autocomplete(input_shipping, options);
autocomplete_shipping.addListener("place_changed", fillInShippingAddress);
}
var logger=function(){
var oldConsoleLog=null;
var pub={};
pub.enableLogger=function enableLogger(){
if(oldConsoleLog==null)
return;
window['console']['log']=oldConsoleLog;
};
pub.disableLogger=function disableLogger(){
oldConsoleLog=console.log;
window['console']['log']=function(){};};
return pub;
}();
logger.enableLogger();
function fillInBillingAddress(){
$('body').css({position:'static'});
const place=autocomplete_billing.getPlace();
let address1="";
let address2="";
let suburb="";
let state="";
let postcode="";
let country="";
for (const component of place.address_components){
const componentType=component.types[0];
switch (componentType){
case "street_number": {
address1=`${component.long_name} ${address1}`;
$('#billing_address_1').val(`${component.long_name} ${address1}`);
break;
}
case "route": {
address1 +=component.short_name;
break;
}
case "postal_code": {
postcode=`${component.long_name}${postcode}`;
break;
}
case "postal_code_suffix": {
suburb=`${postcode}-${component.long_name}`;
break;
}
case "locality":
suburb=component.long_name
break;
case "administrative_area_level_1": {
state=component.short_name
break;
}
case "country":
country=component.short_name;
break;
}}
$('input[name="billing_address_1"]').val(address1);
$('input[name="billing_address_2"]').val(address2);
$('input[name="billing_city"]').val(suburb);
$('input[name="billing_postcode"]').val(postcode);
$("select#billing_state").val(state).prop('selected', true);
$('#billing_state').trigger('change');
$("select#billing_country").val(country).prop('selected', true);
$('#billing_country').trigger('change');
}
function fillInShippingAddress(){
$('body').css({position:'static'});
const place=autocomplete_shipping.getPlace();
let address1="";
let address2="";
let suburb="";
let state="";
let postcode="";
let country="";
for (const component of place.address_components){
const componentType=component.types[0];
switch (componentType){
case "street_number": {
address1=`${component.long_name} ${address1}`;
$('#billing_address_1').val(`${component.long_name} ${address1}`);
break;
}
case "route": {
address1 +=component.short_name;
break;
}
case "postal_code": {
postcode=`${component.long_name}${postcode}`;
break;
}
case "postal_code_suffix": {
suburb=`${postcode}-${component.long_name}`;
break;
}
case "locality":
suburb=component.long_name
break;
case "administrative_area_level_1": {
state=component.short_name
break;
}
case "country":
country=component.short_name;
break;
}}
$('input[name="shipping_address_1"]').val(address1);
$('input[name="shipping_address_2"]').val(address2);
$('input[name="shipping_city"]').val(suburb);
$('input[name="shipping_postcode"]').val(postcode);
$("select#shipping_state").val(state).prop('selected', true);
$('#shipping_state').trigger('change');
$("select#shipping_country").val(country).prop('selected', true);
$('#shipping_country').trigger('change');
}
function cg_has_array_values(obj){
return Object.keys(obj||{}).some(function(key){
return Array.isArray(obj[key]);
});
}
function cg_expand_array_object(obj){
var keys=Object.keys(obj||{});
var maxLen=0;
keys.forEach(function(key){
if(Array.isArray(obj[key])){
maxLen=Math.max(maxLen, obj[key].length);
}});
if(!maxLen){
return [obj];
}
var out=[];
for (var i=0; i < maxLen; i++){
var item={};
keys.forEach(function(key){
var val=obj[key];
if(Array.isArray(val)){
item[key]=typeof val[i]!=='undefined' ? val[i]:'';
}else{
item[key]=val;
}});
out.push(item);
}
return out;
}
function cg_normalize_card_items(raw){
var data=raw;
if(!data){
return [];
}
if(data.cards&&Array.isArray(data.cards)){
data=data.cards;
}else if(data.temp_data&&Array.isArray(data.temp_data)){
data=data.temp_data;
}
if(Array.isArray(data)){
if(data.length===1&&data[0]&&typeof data[0]==='object'&&!Array.isArray(data[0])&&cg_has_array_values(data[0])){
return cg_expand_array_object(data[0]);
}
return data;
}
if(typeof data==='object'&&cg_has_array_values(data)){
return cg_expand_array_object(data);
}
return [];
}
function cg_get_item_type_alias_map(){
return {
trading_cards: 'card',
cards: 'card',
card: 'card',
oversized_trading_cards: 'oversized',
oversized_cards: 'oversized',
oversized: 'oversized',
packs: 'pack',
pack: 'pack',
comics: 'comic',
comic: 'comic',
tickets: 'ticket',
ticket: 'ticket'
};}
function cg_get_item_type_config_map(){
if(window.__cgItemTypeConfigMap){
return window.__cgItemTypeConfigMap;
}
var raw=(window.ajax_object&&Array.isArray(window.ajax_object.item_types))
? window.ajax_object.item_types
: [];
var map={};
$.each(raw, function(_, definition){
if(!definition||!definition.slug){
return;
}
var slug=String(definition.slug).toLowerCase().trim();
if(!slug){
return;
}
map[slug]=$.extend({}, definition, { slug: slug });
});
window.__cgItemTypeConfigMap=map;
return map;
}
function cg_get_default_item_type(){
var configuredDefault=window.ajax_object&&window.ajax_object.default_item_type
? String(window.ajax_object.default_item_type).toLowerCase().trim()
: '';
var configMap=cg_get_item_type_config_map();
if(configuredDefault&&configMap[configuredDefault]){
return configuredDefault;
}
var slugs=Object.keys(configMap);
if(slugs.length){
return slugs[0];
}
return 'card';
}
function cg_normalize_temp_item_type(itemType){
var type=String(itemType||'').toLowerCase().trim();
var aliasMap=cg_get_item_type_alias_map();
var configMap=cg_get_item_type_config_map();
if(aliasMap[type]&&configMap[aliasMap[type]]){
return aliasMap[type];
}
if(type&&configMap[type]){
return type;
}
if(aliasMap[type]){
return aliasMap[type];
}
return cg_get_default_item_type();
}
function cg_get_item_type_config(itemType){
var normalizedType=cg_normalize_temp_item_type(itemType);
var configMap=cg_get_item_type_config_map();
if(configMap[normalizedType]){
return configMap[normalizedType];
}
return {
slug: normalizedType,
label: normalizedType,
details_label: 'Card Details',
entry_mode: normalizedType==='comic' ? 'comic':'card'
};}
function cg_is_comic_item_type(itemType){
return cg_get_item_type_config(itemType).entry_mode==='comic';
}
function cg_get_temp_item_type(){
return cg_normalize_temp_item_type(typeof getItemType==='function' ? getItemType():cg_get_default_item_type());
}
function cg_parse_temporary_payload(data){
if(!data){
return null;
}
var temp_data_value=data.current_user_cards||data;
if(Array.isArray(temp_data_value)){
temp_data_value=temp_data_value[0]||null;
}
if(!temp_data_value||!temp_data_value.temporary_data){
return null;
}
try {
return JSON.parse(temp_data_value.temporary_data);
} catch (error){
console.error("Error parsing temporary_data JSON:", error);
return null;
}}
function cg_extract_temp_items(data, itemType){
var type=cg_normalize_temp_item_type(itemType);
if(!data){
return [];
}
if(Array.isArray(data.temp_items)){
if(data.temp_items.length||!data.current_user_cards){
return data.temp_items;
}}
var parsed=cg_parse_temporary_payload(data);
if(Array.isArray(parsed)){
return cg_is_comic_item_type(type) ? []:parsed;
}
if(parsed&&typeof parsed==='object'){
if(Array.isArray(parsed[type])){
return parsed[type];
}
if(!cg_is_comic_item_type(type)){
if(Array.isArray(parsed.card)) return parsed.card;
if(Array.isArray(parsed.cards)) return parsed.cards;
if(Array.isArray(parsed.temp_data)) return parsed.temp_data;
}
if(cg_is_comic_item_type(type)&&Array.isArray(parsed.comics)){
return parsed.comics;
}}
return [];
}
function cg_get_available_temp_item_types(data){
var parsed=cg_parse_temporary_payload(data);
var available=[];
if(Array.isArray(parsed)&&parsed.length){
return [cg_get_default_item_type()];
}
if(!parsed||typeof parsed!=='object'){
return available;
}
$.each(parsed, function(key, value){
var normalizedKey=cg_normalize_temp_item_type(key);
if(Array.isArray(value)&&value.length&&available.indexOf(normalizedKey)===-1){
available.push(normalizedKey);
}});
return available;
}
function cg_set_item_type_selection(itemType){
var normalizedType=cg_normalize_temp_item_type(itemType);
var $radio=$('input[name="order_item_type"][value="' + normalizedType + '"]');
if(!$radio.length){
return false;
}
if($radio.is(':checked')){
return false;
}
$radio.prop('checked', true).trigger('change');
return true;
}
function cg_resolve_temp_item_type(data, preferredType){
var normalizedPreferredType=cg_normalize_temp_item_type(preferredType||cg_get_temp_item_type());
var availableTypes=cg_get_available_temp_item_types(data);
if(!availableTypes.length){
return normalizedPreferredType;
}
if(availableTypes.indexOf(normalizedPreferredType)!==-1){
return normalizedPreferredType;
}
if(!cg_is_comic_item_type(normalizedPreferredType) &&
availableTypes.indexOf('card')!==-1
){
return normalizedPreferredType;
}
return availableTypes[0];
}
function cg_get_field_value($item, field, fallback){
var $field=$item.find('[name="' + field + '"], [name$="[' + field + ']"]');
if(!$field.length){
return fallback||'';
}
var val=$field.first().val();
if(Array.isArray(val)){
val=val[val.length - 1];
}
return val!=null ? val:(fallback||'');
}
function cg_read_card_item_data($item){
return {
card_qty: cg_get_field_value($item, 'card_qty', ''),
card_year: cg_get_field_value($item, 'card_year', ''),
card_manufacturer: cg_get_field_value($item, 'card_manufacturer', ''),
card_set: cg_get_field_value($item, 'card_set', ''),
card_number: cg_get_field_value($item, 'card_number', ''),
card_name: cg_get_field_value($item, 'card_name', ''),
card_variant: cg_get_field_value($item, 'card_variant', ''),
card_value: cg_get_field_value($item, 'card_value', ''),
comment: cg_get_field_value($item, 'comment', ''),
card_clean: cg_get_field_value($item, 'card_clean', '0'),
card_search: cg_get_field_value($item, 'card_search', ''),
id: cg_get_field_value($item, 'id', ''),
is_saved: cg_get_field_value($item, 'is_saved', '')
};}
function cg_card_item_has_data($item){
if(!$item||!$item.length){
return false;
}
var fields=['card_qty', 'card_year', 'card_manufacturer', 'card_set', 'card_number', 'card_name', 'card_variant', 'card_value'];
for (var i=0; i < fields.length; i++){
var val=cg_get_field_value($item, fields[i], '');
if(val===undefined||val===null){
continue;
}
var str=String(val).trim();
if(str===''){
continue;
}
if(fields[i]==='card_qty'){
if(parseInt(str, 10) > 0){
return true;
}
continue;
}
return true;
}
return false;
}
function cg_collect_card_items_from_dom(skipItem, skipIndex){
var items=[];
var skipEl=skipItem&&skipItem.length ? skipItem[0]:skipItem;
$('.item-entry-cards .accordion > .cg-card-item').each(function(){
if(skipEl&&this===skipEl){
return;
}
var $item=$(this);
if(!cg_card_item_has_data($item)){
return;
}
var idx=$item.attr('data-index');
if(skipIndex!=null&&String(idx)===String(skipIndex)){
return;
}
items.push(cg_read_card_item_data($item));
});
return items;
}
function cg_read_comic_item_data($item){
var declaredValue=cg_get_field_value($item, 'declared_value', '');
if(!declaredValue){
declaredValue=cg_get_field_value($item, 'value', '');
}
if(!declaredValue&&typeof getSelectedServiceMaxValue==='function'){
declaredValue=getSelectedServiceMaxValue();
}
return {
qty: cg_get_field_value($item, 'qty', ''),
title: cg_get_field_value($item, 'title', ''),
issue: cg_get_field_value($item, 'issue', ''),
publisher: cg_get_field_value($item, 'publisher', ''),
year: cg_get_field_value($item, 'year', ''),
variant: cg_get_field_value($item, 'variant', ''),
declared_value: declaredValue,
id: cg_get_field_value($item, 'id', ''),
is_saved: cg_get_field_value($item, 'is_saved', '')
};}
function cg_collect_comic_items_from_dom(skipItem, skipIndex){
var items=[];
var seenIdx=new Set();
var skipEl=skipItem&&skipItem.length ? skipItem[0]:skipItem;
$('.cg-comic-list .accordion > .cg-comic-item[data-index]').each(function(){
if(skipEl&&this===skipEl){
return;
}
var $item=$(this);
if(typeof cg_comic_item_has_data==='function'&&!cg_comic_item_has_data($item)){
return;
}
var idx=$item.attr('data-index');
if(skipIndex!=null&&String(idx)===String(skipIndex)){
return;
}
if(idx!==undefined&&idx!==null){
var key=String(idx);
if(seenIdx.has(key)) return;
seenIdx.add(key);
}
items.push(cg_read_comic_item_data($item));
});
return items;
}
function cg_comic_item_has_data($item){
if(!$item||!$item.length){
return false;
}
var fields=['qty', 'title', 'issue', 'publisher', 'year', 'variant'];
for (var i=0; i < fields.length; i++){
var val=cg_get_field_value($item, fields[i], '');
if(val===undefined||val===null){
continue;
}
var str=String(val).trim();
if(str===''){
continue;
}
if(fields[i]==='qty'){
if(parseInt(str, 10) > 0){
return true;
}
continue;
}
return true;
}
return false;
}
if(typeof window!=='undefined'){
window.cg_get_field_value=cg_get_field_value;
window.cg_collect_card_items_from_dom=cg_collect_card_items_from_dom;
window.cg_collect_comic_items_from_dom=cg_collect_comic_items_from_dom;
window.cg_comic_item_has_data=cg_comic_item_has_data;
}
function cg_collect_submission_items(itemType){
var normalizedType=cg_normalize_temp_item_type(itemType||cg_get_temp_item_type());
if(cg_is_comic_item_type(normalizedType)){
return cg_collect_comic_items_from_dom();
}
return cg_normalize_card_items(cg_collect_card_items_from_dom());
}
function cg_prepare_delete_links(){
$('.cg-card-list .delete-temp-data').removeAttr('data-repeater-delete');
}
function cg_delete_card_item($item){
var idx=$item.attr('data-index');
var normalized_cards=cg_normalize_card_items(cg_collect_card_items_from_dom($item, idx));
if(idx!==undefined&&idx!==null){
$('.item-entry-cards .accordion > .cg-card-item[data-index="' + idx + '"]').remove();
}
$item.remove();
if(typeof re_index==='function'){
re_index();
}
$('#repeater-add-trigger').removeClass('unsave').prop('disabled', false);
var merge_total_qty=0;
var merge_card_clean_qty=0;
var order_card_clean_qty_count=0;
$.each(normalized_cards, function(key, value){
if(value.card_clean==1&&value.card_qty > 1){
order_card_clean_qty_count=value.card_qty;
}else{
order_card_clean_qty_count=value.card_clean;
}
merge_total_qty +=Number(value.card_qty);
merge_card_clean_qty +=Number(order_card_clean_qty_count);
});
$('#order_card_qty').val(merge_total_qty).trigger('change');
$('#order_card_clean_qty').val(merge_card_clean_qty);
$('.item-details-step .chosen-qty, #card-grading-form .title .chosen-qty').text(merge_total_qty ? 'Qty - ' + merge_total_qty:''
);
$('.card-grading-add-ons').each(function(){
$(this).prop('checked', false);
$(this).data('waschecked', false);
var label_id=$(this).data('label-id');
$('[id*='+label_id+']').text("Add");
});
$('#order_add_on_amount').val(0);
$('#order_add_ons').val('');
var service_price=$('#order_grading_service').val();
var new_discount=$('#order_discount').val();
var target_qty=$('.card-grading-service[name="card_grading_service"]:checked').data('target-qty');
update_order_summary(merge_total_qty, service_price, new_discount, target_qty, merge_card_clean_qty, 0, false);
cg_prepare_delete_links();
renderConfirmItemsNew();
return normalized_cards;
}
function reload_cards(cards){
cards=cg_normalize_card_items(cards);
console.log('reloading cards...', cards);
var count=0;
$.each(cards, function(key, value){
var html;
var attr;
if(key==0){
attr='data-repeater-item';
}
html='<div class="cg-card-item" data-index="' + key + '" id="confirm-delete-item-' + key + '">';
html +='<div class="accordion-head">';
html +='<ul data-index="' + key + '">';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">QTY: </span>' + value.card_qty + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Year: </span>' + value.card_year + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Manufacturer: </span>' + value.card_manufacturer + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Set: </span>' + value.card_set + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Number: </span>' + value.card_number + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Name: </span>' + value.card_name + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Variant: </span>' + value.card_variant + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Value: </span>' + value.card_value + '</li>';
html +='<li><a class="edit" href="javascript:;">Edit</a> | <a data-index="' + key + '" class="delete delete-temp-data" href="javascript:;">Delete</a></li>';
html +='</ul>';
html +='</div>';
html +='<div class="accordion-content">';
html +='<div class="row">';
html +='<div class=" form-group col-lg-2">';
html +='<label>Quantity *</label>';
html +='<input type="text" class="cg-form-control cart_qty" name="temp_data[' + key + '][card_qty]" min="1" value="' + value.card_qty + '" placeholder="1" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class=" form-group col-lg-2">';
html +='<label>Year *</label>';
html +='<input type="text" class="cg-form-control card_year" name="temp_data[' + key + '][card_year]" value="' + value.card_year + '" placeholder="YYYY" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class=" form-group col-lg-4">';
html +='<label>Manufacturer *</label>';
html +='<input type="text" class="cg-form-control" name="temp_data[' + key + '][card_manufacturer]" id="temp_data[' + key + '][card_manufacturer]" value="' + value.card_manufacturer + '" placeholder="Brand of the card" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class=" form-group col-lg-4">';
html +='<label>Card set *</label>';
html +='<input type="text" class="cg-form-control" name="temp_data[' + key + '][card_set]" value="' + value.card_set + '" placeholder="Card set" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='</div>';
html +='<div class="row">';
html +='<div class=" form-group col-lg-4">';
html +='<label>Card Number *</label>';
html +='<input type="text" class="cg-form-control" name="temp_data[' + key + '][card_number]" value="' + value.card_number + '" placeholder="Card Number" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class=" form-group col-lg-4">';
html +='<label>Name *</label>';
html +='<input type="text" class="cg-form-control" data-toggle="tooltip" title="Hooray JS!" name="temp_data[' + key + '][card_name]" value="' + value.card_name + '" placeholder="Name of the player" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class=" form-group col-lg-4">';
html +='<label>Variant </label>';
html +='<input type="text" class="cg-form-control" name="temp_data[' + key + '][card_variant]" value="' + value.card_variant + '" title="No Message" placeholder="Variant" />';
html +='<div class="error-message"></div>';
html +='</div>';
html +='</div>';
html +='<div class="row">';
html +='<div class=" form-group col-lg-4">';
html +='<label>Estimated Card Value per card  (USD) *</label>';
html +='<input type="text" class="cg-form-control" name="temp_data[' + key + '][card_value]" value="' + value.card_value + '" placeholder="0.00" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class=" form-group col-lg-6">';
html +='<label>Comment</label>';
html +='<input type="text" name="temp_data[' + key + '][comment]" value="' + value.comment + '" placeholder="Enter anything" />';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class=" form-group col-lg-2">';
html +='<label> Card Clean (+$5)*</label>';
html +='<select name="temp_data[' + key + '][card_clean]">';
html +='<option value="1">Yes</option>';
html +='<option value="0">No</option>';
html +='</select>';
html +='</div>';
html +='</div>';
html +=' <div class="row">';
html +='<div class="col-12">';
html +='<div class="field-action">';
html +='<button type="button" class="btn cg-save-card data-save-card"><i class="far fa-check-square"></i> Save</button>';
html +='</div>';
html +='</div>';
html +='</div>';
html +='</div>';
html +='</div>';
var table;
var tableData=[];
var order_card_qty=0
var total_assigned_decalred_value=0;
var total_user_declared_value=0;
var mobileTable;
var mobileTableData=[];
function pick(obj, keys){
for (let i=0; i < keys.length; i++){
const v=obj&&obj[keys[i]];
if(v!==undefined&&v!==null&&String(v).trim()!=='') return v;
}
return '';
}
function toNum(v){
const n=parseFloat(v);
return isNaN(n) ? 0:n;
}
function getComicRowsFromRepeater(){
const rv=safeRepeaterVal($('.cg-card-list'));
if(rv&&Array.isArray(rv.comics)) return rv.comics;
const rvAlt=safeRepeaterVal($('.cg-comic-list'));
if(rvAlt&&Array.isArray(rvAlt.comics)) return rvAlt.comics;
return [];
}
const type=getItemType();
updateConfirmHeadings();
var tableData=[];
var order_card_qty=0;
var total_user_declared_value=0;
if(cg_is_comic_item_type(type)){
const comicItems=getComicRowsFromRepeater();
$.each(comicItems, function (key, it){
const qty=toNum(pick(it, ['comic_qty', 'qty', 'card_qty']))||1;
const publisher=pick(it, ['comic_publisher', 'publisher']);
const title=pick(it, ['comic_title', 'title', 'comic_name', 'name']);
const issue=pick(it, ['comic_issue', 'issue', 'issue_number', 'issue_no']);
const year=pick(it, ['comic_year', 'year']);
const variant=pick(it, ['comic_variant', 'variant']);
const value=pick(it, ['comic_value', 'declared_value', 'value', 'card_value']);
let row='<tr id="confirm-comic-item-' + key + '" data-index="' + key + '">';
row +='<td></td>';
row +='<td>' + qty + '</td>';
row +='<td>' + publisher + '</td>';
row +='<td>' + title + '</td>';
row +='<td>' + issue + '</td>';
row +='<td>' + year + '</td>';
row +='<td>' + variant + '</td>';
row +='<td class="text-end">' + value + '</td>';
row +='</tr>';
tableData.push(row);
order_card_qty +=qty;
total_user_declared_value +=qty * toNum(value);
});
}else{
const cardSource=(typeof cookie_value!=='undefined'&&cookie_value&&Array.isArray(cookie_value.cards))
? cookie_value.cards
: (Array.isArray(temp_card_value) ? temp_card_value:[]);
$.each(cardSource, function (key, value){
let row='<tr id="confirm-card-item-' + key + '" data-index="' + key + '">';
row +='<td></td>';
row +='<td>' + value.card_qty + '</td>';
row +='<td>' + value.card_year + '</td>';
row +='<td>' + value.card_manufacturer + '</td>';
row +='<td>' + value.card_set + '</td>';
row +='<td>' + value.card_number + '</td>';
row +='<td>' + value.card_name + '</td>';
row +='<td>' + value.card_variant + '</td>';
row +='<td class="text-end">' + value.card_value + '</td>';
row +='</tr>';
tableData.push(row);
order_card_qty +=Number(value.card_qty);
total_user_declared_value +=(Number(value.card_qty) * Number(value.card_value));
});
}
$('.confirm-order-items tbody').html(tableData);
$('#order_card_qty').val(order_card_qty);
update_order_summary($('#order_card_qty').val(), $('#order_grading_service').val(), $('#order_discount').val(), $('#order_target_qty').val());
console.log('total_user_declared_value is=' + total_user_declared_value);
$('.confirm-order-mobile .mobile-table').html(mobileTableData);
$('.confirm-order tbody').html(tableData);
console.log('loaded table data');
var card_qty_dec=$('#order_card_qty').val(order_card_qty);
var service_price=$('#order_grading_service').val();
var discount=$('#order_discount').val();
var target_qty=$('#order_target_qty').val();
var card_qty=$('#order_card_qty').val();
var card_clean_qty=$('#order_card_clean_qty').val();
update_order_summary(card_qty, service_price, discount, target_qty, card_clean_qty, 0, false);
if(cards){
$('.cg-card-list .accordion').append(html);
$('#card-grading-form .title .chosen-qty').html('Qty - ' + card_qty);
$('#order_card_qty').val(card_qty).trigger('change');
$("select[name=temp_data\\[" + key + "\\]\\[card_clean\\]]").val(value.card_clean);
console.log('in if cards');
}});
cg_prepare_delete_links();
}
function search_card_data(d){
$(d).autocomplete({
source: function(request, response){
var data={
'action': 'get_card_data',
'search_data': request.term.replace(/[/\-]/g, "_")
};
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
beforeSend: function(){
$(this).css("background", "Red");
},
success: function(data){
if(!data.results.length){
var result=[
{
label: 'No matches found',
value: response.term
}
];
$("#card-grading-form #loading2").removeClass("isloading");
response(result);
}else{
response($.map(data.results, function(item){
$("#card-grading-form #loading2").removeClass("isloading");
return {
label: item.card_description,
value: item.card_description,
card_year: item.card_year,
card_manufacturer: item.card_manufacturer,
card_set: item.card_set,
card_number: item.card_number,
card_name: item.card_name,
card_variant: item.card_variant
};}));
}}
});
},
minLength: 3,
search: function(event, ui){
$("#card-grading-form #loading2").addClass("isloading");
},
select: function(event, ui){
var element_name=this.name;
var element_id=element_name.replace(/\D/g, "");
$("input[name='cards["+element_id+"][card_qty]'").val("1");
$("input[name='cards["+element_id+"][card_year]'").val(ui.item.card_year);
$("input[name='cards["+element_id+"][card_manufacturer]'").val(ui.item.card_manufacturer);
$("input[name='cards["+element_id+"][card_set]'").val(ui.item.card_set);
$("input[name='cards["+element_id+"][card_number]'").val(ui.item.card_number);
$("input[name='cards["+element_id+"][card_name]'").val(ui.item.card_name);
$("input[name='cards["+element_id+"][card_variant]'").val(ui.item.card_variant);
var cleanDefault=(window.SLBD_OC_PREFILL&&window.SLBD_OC_PREFILL.card_clean_default!==undefined)
? String(window.SLBD_OC_PREFILL.card_clean_default)
: '0';
$("select[name='cards["+element_id+"][card_clean]'").val(cleanDefault).trigger('change');
}});
}
jQuery(function($){
function search_card_data(selector){
$(selector).autocomplete({
source(request, response){
const data={
action:      'get_card_data',
search_data: request.term.replace(/[/\-]/g, "_")
};
$.ajax({
type:     'POST',
dataType: 'json',
url:      ajax_object.ajax_url,
data,
beforeSend(){ $("#loading2").addClass("isloading"); },
success(data){
$("#loading2").removeClass("isloading");
if(!data.results.length){
response([]);
}else{
response($.map(data.results, item=> ({
label:             item.card_description,
value:             item.card_description,
card_year:         item.card_year,
card_manufacturer: item.card_manufacturer,
card_set:          item.card_set,
card_number:       item.card_number,
card_name:         item.card_name,
card_variant:      item.card_variant
})));
}}
});
},
minLength: 3,
search(){ $("#loading2").addClass("isloading"); },
select(event, ui){
const idx=this.name.match(/\d+/)[0];
hideManual($(this));
fillFields(idx, ui.item);
}});
}
function fillFields(idx, item){
const base=`cards[${idx}]`;
$(`input[name='${base}[card_qty]']`).val(1);
$(`input[name='${base}[card_year]']`).val(item.card_year);
$(`input[name='${base}[card_manufacturer]']`).val(item.card_manufacturer);
$(`input[name='${base}[card_set]']`).val(item.card_set);
$(`input[name='${base}[card_number]']`).val(item.card_number);
$(`input[name='${base}[card_name]']`).val(item.card_name);
$(`input[name='${base}[card_variant]']`).val(item.card_variant);
const cleanDefault=(window.SLBD_OC_PREFILL&&window.SLBD_OC_PREFILL.card_clean_default!==undefined)
? String(window.SLBD_OC_PREFILL.card_clean_default)
: '0';
const $clean=$(`select[name='${base}[card_clean]']`);
if($clean.length){
setTimeout(()=> {
$clean.val(cleanDefault).trigger('change').trigger('input');
$clean.trigger('change.select2');
$clean.trigger('change.choice');
}, 0);
}}
function hideManual($input){
$input.closest('.accordion-content')
.find('.manual-entry')
.addClass('d-none');
$input.closest('.accordion-content')
.find('.manual-hint')
.removeClass('d-none');
}
function showManual($ctx){
$ctx.find('.manual-entry').removeClass('d-none');
$ctx.find('.manual-hint').addClass('d-none');
}
$(document).on('click', '.manual-link', function(e){
e.preventDefault();
const $ctx=$(this).closest('.accordion-content');
$ctx.find('.card_search').autocomplete('close');
showManual($ctx);
if(window.innerWidth < 768){
$('html,body').animate({
scrollTop: $ctx.offset().top - 80
}, 200);
}});
search_card_data("#card-grading-form .card_search");
});
/*
let cardDataArray=[];
$('#search-multiple-card-numbers').on('click', function(){
let search_data=$('#multiple-card-numbers').val();
if(search_data.trim()!==''){
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: {
'action': 'get_multiple_card_data',
'search_data': search_data
},
beforeSend: function(){
$('#multiple-results').html('Loading...');
},
success: function(data){
$('#multiple-results').html('');
cardDataArray=[];
$.each(data.results, function(term, results){
let resultSection=$('<div>').addClass('result-section');
let resultTitle=$('<h4>').text('Results for: ' + term);
resultSection.append(resultTitle);
if(results.length > 0){
let select=$('<select>').addClass('result-select').data('term', term);
select.append($('<option>').text('Select a match').attr('value', ''));
$.each(results, function(index, item){
let option=$('<option>')
.text(item.card_description)
.data('item', item);
select.append(option);
});
resultSection.append(select);
$('#multiple-results').append(resultSection);
select.prop('selectedIndex', 1).trigger('change');
}else{
let noResult=$('<div>').addClass('no-result').text('No matches found');
resultSection.append(noResult);
let addButton=$('<button>').text('Add New').on('click', function(){
addNewCardData(term);
});
noResult.append(addButton);
}});
$('.result-select').on('change', function(){
let selectedOption=$(this).find('option:selected');
let item=selectedOption.data('item');
if(item){
fillCardData(item);
}});
}});
}});
$('#save-multiple-card-data').on('click', function(){
cardDataArray=[];
$('.result-select option:selected').each(function(){
let item=$(this).data('item');
if(item){
let cardData={
card_qty: $('input[name="card_qty"]').val(),
card_year: item.card_year,
card_manufacturer: item.card_manufacturer,
card_set: item.card_set,
card_number: item.card_number,
card_name: item.card_name,
card_variant: item.card_variant,
card_value: $('input[name="card_value"]').val()||'',
comment: $('input[name="comment"]').val()||'',
card_clean: $('input[name="card_clean"]').val()||'0'
};
cardDataArray.push(cardData);
}});
let userId=$('#user-id').val();
let selectedUserId=$('#selected-user-id').length ? $('#selected-user-id').val():'';
console.log(cardDataArray);
console.log(userId);
console.log(selectedUserId);
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: {
'action': 'save_multiple_card_data',
'card_data': JSON.stringify(cardDataArray),
'user_id': userId,
'selected_user_id': selectedUserId
},
success: function(response){
if(response.status==='success'){
alert('Data saved successfully');
}else{
alert('Failed to save data');
}},
error: function(xhr, status, error){
console.error('Error:', status, error);
console.error('Response:', xhr.responseText);
}});
});
function fillCardData(item){
$('input[name="card_qty"]').val('1');
$('input[name="card_year"]').val(item.card_year).prop('readonly', false);
$('input[name="card_manufacturer"]').val(item.card_manufacturer).prop('readonly', false);
$('input[name="card_set"]').val(item.card_set).prop('readonly', false);
$('input[name="card_number"]').val(item.card_number).prop('readonly', false);
$('input[name="card_name"]').val(item.card_name).prop('readonly', false);
$('input[name="card_variant"]').val(item.card_variant).prop('readonly', false);
$('input[name="card_value"]').val('').prop('readonly', false);
$('input[name="comment"]').val('').prop('readonly', false);
$('input[name="card_clean"]').val('0').prop('readonly', false);
}
function addNewCardData(term){
$('#multiple-results').append('<div>Form to add new data for: ' + term + '</div>');
}
*/
function getCardData(d){
$(d).change(function(){
var card_number=encodeURIComponent($(this).val());
var element_name=this.name;
var element_id=element_name.replace(/\D/g, "");
var element_split=element_name.split("[");
var element_type=element_split[0];
var last_thirteen=element_name.substr(element_name.length - 13);
var card_year_element_name=element_name.replace("number", "year");
var card_year=$("input[name='"+card_year_element_name+"'").val();
console.log("repalce year: " + card_year_element_name);
console.log("the card year: " + card_year);
if(last_thirteen=="[card_number]"){
console.log("in GET CARD DATA=" + card_number + " " + element_name + " " + element_id + " " + element_type);
var data={
'action': 'get_card_data',
'card_number': card_number,
'card_year': card_year,
};
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
beforeSend: function(){},
success: function(response){
console.log("the response:: " + response);
console.log("the results: " + response.results);
$.each(response.results, function(key, value){
console.log("the response no::: " + value.card_number);
console.log("the response set:: " + value.card_set);
console.log("the response year: " + value.card_year);
console.log("the response name: " + value.card_name);
console.log("the response var:: " + value.card_variant);
$("input[name='"+element_type+"["+element_id+"][card_year]'").val(value.card_year);
$("input[name='"+element_type+"["+element_id+"][card_manufacturer]'").val(value.card_manufacturer);
$("input[name='"+element_type+"["+element_id+"][card_set]'").val(value.card_set);
$("input[name='"+element_type+"["+element_id+"][card_name]'").val(value.card_name);
$("input[name='"+element_type+"["+element_id+"][card_variant]'").val(value.card_variant);
});
}});
}});
}
function load_temp_items_for_type(data, itemType){
var normalizedType=cg_normalize_temp_item_type(itemType);
if(cg_is_comic_item_type(normalizedType)){
load_temp_comic_data(data, normalizedType);
}else{
load_temp_card_data(data, normalizedType);
}}
function load_temp_card_data(data, itemType){
console.log('loading...', data);
$('.item-entry-cards .accordion .cg-card-item:not([data-repeater-item])').remove();
var current_user=data.user;
var temp_card_value=cg_extract_temp_items(data, itemType||cg_get_temp_item_type());
console.log("Parsed temporary data:", temp_card_value);
temp_card_value=cg_normalize_card_items(temp_card_value);
if(!Array.isArray(temp_card_value)||temp_card_value.length===0){
console.log("No cards to display.");
}
$('.item-entry-cards .accordion .cg-card-item').remove();
$.each(temp_card_value, function(key, value){
var html;
var attr;
if(key==0){
attr='data-repeater-item';
}
html='<div class="cg-card-item" data-index="' + key + '" id="confirm-delete-item-' + key + '">';
html +='<div class="accordion-head">';
html +='<ul data-index="' + key + '">';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">QTY: </span>' + value.card_qty + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Year: </span>' + value.card_year + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Manufacturer: </span>' + value.card_manufacturer + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Set: </span>' + value.card_set + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Number: </span>' + value.card_number + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Name: </span>' + value.card_name + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Variant: </span>' + value.card_variant + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Value: </span>' + value.card_value + '</li>';
html +='<li><a class="edit" href="javascript:;">Edit</a> | <a data-index="' + key + '" class="delete delete-temp-data" href="javascript:;">Delete</a></li>';
html +='</ul>';
html +='</div>';
html +='<div class="accordion-content" style="display: none;">';
html +='<div class="row">';
html +='<div class="form-group col-lg-2">';
html +='<label>Quantity *</label>';
html +='<input type="text" class="cg-form-control cart_qty" name="temp_data[' + key + '][card_qty]" min="1" value="' + value.card_qty + '" placeholder="1" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class="form-group col-lg-2">';
html +='<label>Year *</label>';
html +='<input type="text" class="cg-form-control card_year" name="temp_data[' + key + '][card_year]" value="' + value.card_year + '" placeholder="YYYY" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class="form-group col-lg-4">';
html +='<label>Manufacturer *</label>';
html +='<input type="text" class="cg-form-control" name="temp_data[' + key + '][card_manufacturer]" value="' + value.card_manufacturer + '" placeholder="Brand of the card" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class="form-group col-lg-4">';
html +='<label>Card Set *</label>';
html +='<input type="text" class="cg-form-control" name="temp_data[' + key + '][card_set]" value="' + value.card_set + '" placeholder="Card set" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='</div>';
html +='<div class="row">';
html +='<div class="form-group col-lg-4">';
html +='<label>Card Number *</label>';
html +='<input type="text" class="cg-form-control" name="temp_data[' + key + '][card_number]" value="' + value.card_number + '" placeholder="Card Number" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class="form-group col-lg-4">';
html +='<label>Name *</label>';
html +='<input type="text" class="cg-form-control" name="temp_data[' + key + '][card_name]" value="' + value.card_name + '" placeholder="Name of the player" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class="form-group col-lg-4">';
html +='<label>Variant </label>';
html +='<input type="text" class="cg-form-control" name="temp_data[' + key + '][card_variant]" value="' + value.card_variant + '" placeholder="Variant" />';
html +='<div class="error-message"></div>';
html +='</div>';
html +='</div>';
html +='<div class="row">';
html +='<div class="form-group col-lg-4">';
html +='<label>Insurance (AUD)*</label>';
html +='<input type="text" class="cg-form-control" name="temp_data[' + key + '][card_value]" value="' + value.card_value + '" placeholder="0.00" required readonly/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class="form-group col-lg-6">';
html +='<label>Comment</label>';
html +='<input type="text" name="temp_data[' + key + '][comment]" value="' + value.comment + '" placeholder="Enter anything" />';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class="form-group col-lg-2">';
html +='<label>Card Clean (+$5)*</label>';
html +='<select class="cg-form-control" name="temp_data[' + key + '][card_clean]">';
html +='<option value="0" ' + (value.card_clean=="0" ? "selected":"") + '>No</option>';
html +='<option value="1" ' + (value.card_clean=="1" ? "selected":"") + '>Yes</option>';
html +='</select>';
html +='</div>';
html +='</div>';
html +='<div class="row">';
html +='<div class="col-12">';
html +='<div class="field-action">';
html +='<button type="button" class="btn cg-save-card data-save-card"><i class="far fa-check-square"></i> Save</button>';
html +='</div>';
html +='</div>';
html +='</div>';
var table;
var tableData=[];
var order_card_qty=0
var order_card_clean_qty=0
var order_card_clean_qty_count=0
var total_assigned_decalred_value=0;
var total_user_declared_value=0;
var mobileTable;
var mobileTableData=[];
$.each(temp_card_value, function(key, value){
if(value.card_clean==1&&value.card_qty > 1){
order_card_clean_qty_count=value.card_qty;
}else{
order_card_clean_qty_count=value.card_clean;
}
table='<tr class="" id="confirm-card-item-' + key + '" data-index="' + key + '">';
table +='<td></td>';
table +='<td>' + value.card_qty + '</td>';
table +='<td>' + value.card_year + '</td>';
table +='<td>' + value.card_manufacturer + '</td>';
table +='<td>' + value.card_set + '</td>';
table +='<td>' + value.card_number + '</td>';
table +='<td>' + value.card_name + '</td>';
table +='<td>' + value.card_variant + '</td>';
table +='<td>' + value.card_value + '</td>';
table +='</tr>';
tableData.push(table);
mobileTable='<ul data-index="' + key + '">';
mobileTable +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">QTY: </span>' + value.card_qty + '</li>';
mobileTable +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Year: </span>' + value.card_year + '</li>';
mobileTable +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Manufacturer: </span>' + value.card_manufacturer + '</li>';
mobileTable +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Set: </span>' + value.card_set + '</li>';
mobileTable +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Number: </span>' + value.card_number + '</li>';
mobileTable +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Name: </span>' + value.card_name + '</li>';
mobileTable +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Variant: </span>' + value.card_variant + '</li>';
mobileTable +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Value: </span>' + value.card_value + '</li>';
mobileTable +='</ul>';
mobileTableData.push(mobileTable);
order_card_qty +=Number(value.card_qty);
order_card_clean_qty +=Number(order_card_clean_qty_count);
total_user_declared_value +=(Number(value.card_qty) * Number(value.card_value));
});
console.log('total_user_declared_value is=' + total_user_declared_value);
$('.confirm-order-mobile .mobile-table').html(mobileTableData);
$('.confirm-order tbody').html(tableData);
console.log('loaded table data');
$('#order_card_qty').val(order_card_qty);
$('#order_card_clean_qty').val(order_card_clean_qty);
var service_price=$('#order_grading_service').val();
var discount=$('#order_discount').val();
var target_qty=$('#order_target_qty').val();
var card_qty=$('#order_card_qty').val();
var card_clean_qty=$('#order_card_clean_qty').val();
console.log('order_aaaaasqty=' + card_qty, order_card_qty);
update_order_summary(card_qty, service_price, discount, target_qty, card_clean_qty, 0, false);
if(temp_card_value){
$('.item-entry-cards .accordion').append(html);
$("select[name=temp_data\\[" + key + "\\]\\[card_clean\\]]").val(value.card_clean);
}});
renderConfirmItemsNew();
}
function buildComicAccordionHeadHtml(itemData, index){
var qty=itemData.qty||'';
var publisher=itemData.publisher||'';
var title=itemData.title||'';
var issue=itemData.issue||'';
var year=itemData.year||'';
var variant=itemData.variant||'';
var declaredValue=itemData.declared_value||itemData.value||'';
var html='<ul class="" data-index="' + index + '">';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">QTY: </span>' + qty + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Publisher: </span>' + publisher + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Title: </span>' + title + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Issue: </span>' + issue + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Year: </span>' + year + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Variant: </span>' + variant + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Value: </span>' + declaredValue + '</li>';
html +='<li><a class="edit" href="javascript:;">Edit</a> | <a data-index="' + index + '" data-repeater-delete class="delete delete-comic" href="javascript:;">Delete</a></li>';
html +='</ul>';
return html;
}
function setComicItemInputNames($item, index){
$item.find('[name]').each(function(){
var $input=$(this);
var originalName=$input.attr('name')||'';
var matches=originalName.match(/\[([^\]]+)\]$/);
var fieldName=matches ? matches[1]:originalName;
if(!fieldName){
return;
}
$input.attr('name', 'comics[' + index + '][' + fieldName + ']');
});
}
function appendComicItem(itemData, options){
var settings=$.extend({
index: null,
collapsed: true,
unsave: false,
scrollToItem: false
}, options||{});
var $accordion=$('.cg-comic-list .accordion');
if(!$accordion.length||!comicItemTemplateHtml){
return $();
}
var index=settings.index;
if(index===null||index===undefined||index===''){
index=0;
$accordion.children('.cg-comic-item[data-index]').each(function(){
var currentIndex=parseInt($(this).attr('data-index'), 10);
if(!Number.isNaN(currentIndex)&&currentIndex >=index){
index=currentIndex + 1;
}});
}
var maxValue=$('.card-grading-service:checked').data('max-value')||'';
var qty=itemData.qty||'';
var title=itemData.title||'';
var issue=itemData.issue||'';
var publisher=itemData.publisher||'';
var year=itemData.year||'';
var variant=itemData.variant||'';
var declaredValue=itemData.declared_value||'';
$accordion.append(comicItemTemplateHtml);
var $item=$accordion.children('.cg-comic-item').last();
if(!$item.length){
return $();
}
$item.attr('data-index', index);
$item.attr('id', 'confirm-delete-comic-' + index);
setComicItemInputNames($item, index);
$item.find('[name="qty"], [name$="[qty]"]').first().val(qty);
$item.find('[name="title"], [name$="[title]"]').first().val(title);
$item.find('[name="issue"], [name$="[issue]"]').first().val(issue);
$item.find('[name="publisher"], [name$="[publisher]"]').first().val(publisher);
$item.find('[name="year"], [name$="[year]"]').first().val(year);
$item.find('[name="variant"], [name$="[variant]"]').first().val(variant);
$item.find('[name="id"], [name$="[id]"]').first().val(itemData.id||'');
$item.find('[name="is_saved"], [name$="[is_saved]"]').first().val(itemData.is_saved||'');
var $declaredInput=$item.find('[name="declared_value"], [name$="[declared_value]"]').first();
if($declaredInput.length){
$declaredInput.val(declaredValue);
$declaredInput.attr('placeholder', maxValue||declaredValue||'');
$declaredInput.attr('max', maxValue||declaredValue||'');
$declaredInput.prop('readonly', true);
$declaredInput.attr('tabindex', '-1');
}
$item.show();
if(settings.unsave){
$('.cg-comic-item').removeClass('active added');
$item.addClass('unsave active added');
if(!$declaredInput.val()&&maxValue){
$declaredInput.val(maxValue);
}
$item.find('.accordion-head').empty();
$item.find('.accordion-content').show();
if(settings.scrollToItem){
setTimeout(function(){
var $target=$item.find('.accordion-content');
if($target.length){
$('html, body').animate({
scrollTop: $target.offset().top - 120
}, 250);
}}, 50);
}}else{
$item.find('.accordion-head').html(buildComicAccordionHeadHtml({
qty: qty,
publisher: publisher,
title: title,
issue: issue,
year: year,
variant: variant,
declared_value: declaredValue
}, index));
$item.find('.accordion-content').hide();
$item.removeClass('unsave active added');
}
return $item;
}
function load_temp_comic_data(data, itemType){
console.log('loading comics...', data);
var $accordion=$('.cg-comic-list .accordion');
$accordion.find('.cg-comic-item').remove();
var max_value=$('.card-grading-service:checked').data('max-value')||'';
var temp_comic_value=cg_extract_temp_items(data, itemType||cg_get_temp_item_type());
if(!Array.isArray(temp_comic_value)||temp_comic_value.length===0){
updateComicTotals();
renderConfirmItemsNew();
return;
}
var normalizedComics=$.map(temp_comic_value, function(value){
var qty=value.qty||value.comic_qty||value.card_qty||'';
var title=value.title||value.comic_title||value.name||'';
var issue=value.issue||value.comic_issue||value.issue_number||'';
var publisher=value.publisher||value.comic_publisher||'';
var year=value.year||value.comic_year||'';
var variant=value.variant||value.comic_variant||'';
var declaredValue=value.declared_value||value.comic_value||value.value||value.card_value||'';
var effectiveDeclaredValue=shouldUseSelectedServiceMax(declaredValue) ? max_value:declaredValue;
return {
qty: qty,
title: title,
issue: issue,
publisher: publisher,
year: year,
variant: variant,
declared_value: effectiveDeclaredValue,
id: value.id||'',
is_saved: value.is_saved||''
};});
if(!$accordion.length||!comicItemTemplateHtml){
updateComicTotals();
renderConfirmItemsNew();
return;
}
$.each(normalizedComics, function(index, itemData){
appendComicItem(itemData, {
index: index,
collapsed: true,
unsave: false
});
});
$('.cg-comic-list .accordion > .cg-comic-item').removeClass('unsave active added');
cg_sync_add_item_trigger_state();
updateComicTotals();
renderConfirmItemsNew();
}
function reload_temp_items_for_current_type(){
var itemType=cg_get_temp_item_type();
if(loaded_temporary_data&&parseInt($('#user_id').val(), 10) > 0){
load_temp_items_for_type({
current_user_cards: loaded_temporary_data,
user: parseInt($('#user_id').val(), 10)||0,
}, itemType);
return;
}
fetchTempItemsForSelectedUser(itemType);
}
$(document).on('change', 'input[name="order_item_type"]', function (){
reload_temp_items_for_current_type();
});
$('#invoice-details-btn').on('click', function(){
var id=$(this).data('service-order-id');
var data={
'action': 'restricted_generate_invoice',
'id': id,
};
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
beforeSend: function(){
},
success: function(response){
console.log(response);
}});
});
$('#summary-details-btn').on('click', function(){
console.log('Printing');
var id=$(this).data('service-order-id');
var data={
'action': 'restricted_order_summary',
'id': id,
};
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
beforeSend: function(){
},
success: function(response){
console.log(response);
}});
});
$('#sendle-book-pickup-btn').on('click', function(){
var url=$(this).val();
window.open(url, "_blank");
});
let cardCleanConsentRequiredState=false;
function hasCardCleanSelectionInDom(){
let hasSelectedClean=false;
$('#card-grading-form').find('select[name="card_clean"], select[name$="[card_clean]"], input[name="card_clean"], input[name$="[card_clean]"]').each(function(){
if(String($(this).val())==='1'){
hasSelectedClean=true;
return false;
}});
if(hasSelectedClean){
return true;
}
const hiddenCleanQty=parseInt($('#order_card_clean_qty').val(), 10)||0;
return hiddenCleanQty > 0;
}
function requiresCardCleanConsent(forceRequired){
if(typeof forceRequired==='boolean'){
cardCleanConsentRequiredState=forceRequired;
return forceRequired;
}
const currentItemType=(typeof getItemType==='function')
? getItemType()
: (typeof cg_get_temp_item_type==='function' ? cg_get_temp_item_type():'card');
if(cg_is_comic_item_type(currentItemType)){
cardCleanConsentRequiredState=false;
return false;
}
if(hasCardCleanSelectionInDom()){
cardCleanConsentRequiredState=true;
return true;
}
const summaryText=($('#summary_order_card_clean').text()||'').replace(/[^0-9.\-]/g, '');
const mobileSummaryText=($('#mobile-summary_order_card_clean').text()||'').replace(/[^0-9.\-]/g, '');
const summaryCleanCost=parseFloat(summaryText);
const mobileSummaryCleanCost=parseFloat(mobileSummaryText);
if(!Number.isNaN(summaryCleanCost)){
cardCleanConsentRequiredState=summaryCleanCost > 0.004;
return cardCleanConsentRequiredState;
}
if(!Number.isNaN(mobileSummaryCleanCost)){
cardCleanConsentRequiredState=mobileSummaryCleanCost > 0.004;
return cardCleanConsentRequiredState;
}
return cardCleanConsentRequiredState;
}
function syncCardCleanConsentRequirement(forceRequired){
const required=requiresCardCleanConsent(forceRequired);
const $wrap=$('#card-clean-consent-wrap');
const $input=$('#card_clean_consent');
if(!$wrap.length||!$input.length){
return required;
}
const isVisible=$wrap.is(':visible');
if(required){
if(!isVisible){
$wrap.stop(true, true).slideDown(150);
}}else{
if(isVisible){
$wrap.stop(true, true).slideUp(150);
}
$input.closest('.card-clean-consent-check').find('label.error').remove();
}
return required;
}
if(typeof window!=='undefined'){
window.syncCardCleanConsentRequirement=syncCardCleanConsentRequirement;
}
function validateCardCleanConsentRequirement(){
const required=cg_sync_card_clean_consent_requirement();
if(!required){
return true;
}
if($('#card_clean_consent').is(':checked')){
return true;
}
Swal.fire({
icon: 'error',
title: 'Card Clean Consent Required',
text: 'Please tick the Card Clean Consent checkbox to continue.'
});
return false;
}
function calculate_card_total(shipping_cost, subtotal, gst, grand_total, total_discount){
$('#order_shipping_option').val(shipping_cost);
$('#order_subtotal').val(subtotal);
$('#order_gst').val(gst);
$('#order_grand_total').val(grand_total);
$('#order_total_discount').val(total_discount);
}
function update_order_summary(
card_qty,
service_price,
discount,
target_qty,
card_clean_qty,
add_on_amount,
add_on_update
){
const isComicOrder=(typeof getItemType==='function'&&cg_is_comic_item_type(getItemType()));
const parsedCardQty=parseFloat(card_qty)||0;
const parsedServicePrice=parseFloat(service_price)||0;
const parsedDiscount=discount!==undefined&&discount!==null&&discount.trim!==undefined
? (isNaN(parseFloat(discount)) ? 0:parseFloat(discount))
: (parseFloat(discount)||0);
const parsedTargetQty=parseInt(target_qty)||0;
const parsedCleanQty=isComicOrder ? 0:(parseFloat(card_clean_qty)||0);
const parsedAddOnAmount=parseFloat(add_on_amount)||0;
console.log(`log qty- ${parsedCardQty} card_clean_qty ${parsedCleanQty}`
);
const gstPercentage=parseFloat($('#order_gst_percentage').val()) / 110||0;
let   shippingCost=parseFloat($('#order_shipping_cost').val()) / 1||0;
const cardSaverCost=parseFloat($('#order_card_saver_cost').val()) / 1||0;
let   cardCleanCost=isComicOrder ? 0:(parseFloat($('#order_card_clean_cost').val()) / 1||0);
let   adminFee=parseFloat($('#order_admin_fee').val()) / 1||0;
let   dataEntryFee=parseFloat($('#order_data_entry_fee').val()) / 1||0;
const dataEntryFeeStatus=$('#ao_data_entry_fee').length
? $('#ao_data_entry_fee').val()
: 'true';
const shippingOption=$('input[name="return_shipping_option"]:checked').val()||'return_shipping';
const couponId=parseFloat($('#order_customer_coupon_id').val())||0;
let   couponAmount=parseFloat($('#order_customer_coupon_amount').val())||0;
const couponUsageLimit=parseFloat($('#order_customer_coupon_usage_limit').val())||0;
const couponUsageCount=parseFloat($('#order_customer_coupon_usage_count').val())||0;
const couponMinSpend=parseFloat($('#order_customer_coupon_minimum_spend_amount').val())||0;
const busMinOrder=parseFloat($('.card-grading-service[name="card_grading_service"]:checked').data('bus-rate-min-order'))||0;
const busRatePcOver=parseFloat($('.card-grading-service[name="card_grading_service"]:checked').data('bus-rate-pc-over'))||0;
const isBulk=$('.card-grading-service[name="card_grading_service"]:checked').data('is-bulk');
const currentOrderAddOnAmount=parseFloat($('#order_add_on_amount').val())||0;
let   newOrderAddOnAmount=currentOrderAddOnAmount;
if(add_on_update===true){
newOrderAddOnAmount=parsedAddOnAmount + currentOrderAddOnAmount;
$('#order_add_on_amount').val(newOrderAddOnAmount);
}
if(isComicOrder){
$('#order_card_clean_qty').val(0);
}
cardCleanCost *=parsedCleanQty;
adminFee      *=parsedCardQty;
dataEntryFee=dataEntryFeeStatus==='true' ? (dataEntryFee * parsedCardQty):0;
let serviceFee=parsedServicePrice * parsedCardQty;
$('#order_shipping_option').val(shippingOption);
if(shippingOption.toLowerCase()==='pick_up'){
shippingCost=0.0;
$('#order_aust_post_shipping_service').val('PICK_UP');
}else if(shippingOption==='combine_shipping'){
const openOrder=$('#open_orders option:selected').val();
console.log('Selected open order:', openOrder);
if(!openOrder||typeof openOrder!=='string'||!openOrder.includes('_')){
console.error('Invalid open_order value. Expected a string with \'_\':', openOrder);
return;
}
const strArr=openOrder.split('_');
console.log('Split array:', strArr);
const serviceOrderIdCombine=strArr[0];
const serviceOrderIdQty=parseInt(strArr[1], 10)||0;
const combinedCardQty=parsedCardQty + serviceOrderIdQty;
console.log('service_order_id_qty:', serviceOrderIdQty, 'combined_card_qty:', combinedCardQty);
const ajaxShippingCost=parseFloat($('#order_aust_post_shipping_cost').val());
if(!isNaN(ajaxShippingCost)&&ajaxShippingCost > 0){
shippingCost=ajaxShippingCost;
console.log('Using AJAX-calculated shippingCost:', shippingCost);
}else{
if(parsedCardQty <=2){ shippingCost=2.0; }
else if(parsedCardQty <=4){ shippingCost=4.0; }
else if(parsedCardQty <=8){ shippingCost=6.0; }
else if(parsedCardQty <=12){ shippingCost=8.0; }
else if(parsedCardQty <=16){ shippingCost=10.0; }
else if(parsedCardQty <=20){ shippingCost=15.0; }
else if(parsedCardQty <=25){ shippingCost=24.0; }else{ shippingCost=30.0; }
console.log('Using fallback range-based shippingCost:', shippingCost);
}
$('#order_aust_post_shipping_service').val('COMBINE');
$('#order_combine_id').val(serviceOrderIdCombine);
}else{
shippingCost=parseFloat($('#order_aust_post_shipping_cost').val())||0;
}
let subtotal=(
(parsedServicePrice * parsedCardQty) +
cardSaverCost +
cardCleanCost +
adminFee +
dataEntryFee +
newOrderAddOnAmount
);
subtotal=parseFloat(subtotal.toFixed(2));
const gstOnProductService=cardSaverCost + cardCleanCost + newOrderAddOnAmount;
let   gst=(gstOnProductService + shippingCost) * gstPercentage;
gst=parseFloat(gst.toFixed(2));
let grandTotal=subtotal + shippingCost;
let totalDiscount=0;
let systemDiscount=0;
if(parsedTargetQty > 0&&parsedCardQty >=parsedTargetQty){
$('#card-grading-form .discount-row').addClass('active');
const discountRate=parsedDiscount / 100;
systemDiscount=(parsedServicePrice * parsedCardQty) * discountRate;
grandTotal=(subtotal - systemDiscount) + shippingCost;
}else{
$('#card-grading-form .discount-row').removeClass('active');
}
if(cardCleanCost > 0){
$('#card-grading-form .card-clean-row').addClass('active');
}else{
$('#card-grading-form .card-clean-row').removeClass('active');
}
if(isBulk===true){
let extraCost=0;
subtotal=parsedServicePrice;
if(parsedCardQty > busMinOrder){
const extraQty=parsedCardQty - busMinOrder;
extraCost=extraQty * busRatePcOver;
subtotal       +=extraCost;
}
grandTotal=subtotal + shippingCost;
serviceFee=subtotal;
}
let appliedCredit=0;
let couponApplied=false;
console.log(`coupon_id=${couponId}, amount=${couponAmount}, grand_total=${grandTotal}`);
if(couponId > 0&&couponUsageCount < couponUsageLimit){
$('#card-grading-form .credit-row').addClass('active');
const minimumCharge=5.0;
const maximumApplicableDiscount=grandTotal - minimumCharge;
appliedCredit=Math.min(couponAmount, maximumApplicableDiscount);
couponApplied=appliedCredit > 0;
grandTotal -=appliedCredit;
gst=grandTotal * gstPercentage;
totalDiscount=systemDiscount + appliedCredit;
$('#order_applied_discount').val(appliedCredit);
$('#order_customer_coupon_active').val(1);
}else{
$('#card-grading-form .credit-row').removeClass('active');
$('#order_customer_coupon_active').val(0);
totalDiscount=systemDiscount;
couponAmount=0;
}
subtotal=parseFloat(subtotal.toFixed(2));
grandTotal=parseFloat(grandTotal.toFixed(2));
gst=parseFloat(gst.toFixed(2));
const serviceTitle=$('.card-grading-service:checked').data('title')||'';
const companyTitle=$('.card-grading-company:checked').data('gradingCompany')
|| $('.card-grading-company:checked').attr('data-grading-company')
|| '';
const summaryService=companyTitle
? (serviceTitle ? companyTitle + ' - ' + serviceTitle:companyTitle)
: serviceTitle;
$('#summary_order_shipping').html(shippingCost.toFixed(2));
$('#summary_order_service').html(summaryService);
$('#summary_order_total_items').html(parsedCardQty);
$('#summary_order_service_fee').html(serviceFee.toFixed(2));
$('#summary_order_admin_fee').html(adminFee.toFixed(2));
$('#summary_order_data_entry_fee').html(dataEntryFee.toFixed(2));
$('#summary_order_subtotal').html(subtotal.toFixed(2));
$('#summary_order_gst').html(gst.toFixed(2));
$('#summary_order_grand_total').html(grandTotal.toFixed(2));
$('#summary_order_discount').html(systemDiscount.toFixed(2));
$('#summary_order_credit').html(appliedCredit.toFixed(2));
$('#summary_order_card_clean').html(cardCleanCost.toFixed(2));
$('#summary_order_add_on_amount').html(newOrderAddOnAmount.toFixed(2));
$('#mobile-summary_order_shipping').html(shippingCost.toFixed(2));
$('#mobile-summary_order_service').html(summaryService);
$('#mobile-summary_order_admin_fee').html(adminFee.toFixed(2));
$('#mobile-summary_order_data_entry_fee').html(dataEntryFee.toFixed(2));
$('#mobile-summary_order_subtotal').html(subtotal.toFixed(2));
$('#mobile-summary_order_gst').html(gst.toFixed(2));
$('#mobile-summary_order_grand_total').html(grandTotal.toFixed(2));
$('#mobile-summary_order_discount').html(systemDiscount.toFixed(2));
$('#mobile-summary_order_credit').html(appliedCredit.toFixed(2));
$('#mobile-summary_order_card_clean').html(cardCleanCost.toFixed(2));
$('#mobile-summary_order_add_on_amount').html(newOrderAddOnAmount.toFixed(2));
function toggleSummaryRow(selector, amount){
const value=Math.abs(parseFloat(amount)||0);
$(selector).toggleClass('d-none', value < 0.005);
}
toggleSummaryRow('.summary-row-service-fee', serviceFee);
toggleSummaryRow('.summary-row-admin-fee', adminFee);
toggleSummaryRow('.summary-row-data-entry', dataEntryFee);
toggleSummaryRow('.summary-row-card-clean', cardCleanCost);
toggleSummaryRow('.summary-row-add-ons', newOrderAddOnAmount);
if(couponApplied){
$('#card-grading-form .discount-row').removeClass('active');
}
toggleSummaryRow('.summary-row-discount', couponApplied ? 0:systemDiscount);
toggleSummaryRow('.summary-row-credit', couponApplied ? appliedCredit:0);
toggleSummaryRow('.summary-row-shipping', shippingCost);
cg_sync_card_clean_consent_requirement(!isComicOrder&&parsedCleanQty > 0);
const inboundSelection=$('input[name="shipping_to_us"]:checked').val()||'';
const outboundSelection=$('input[name="return_shipping_option"]:checked').val()||'';
const inboundRelevant=inboundSelection==='prepaid_label';
const outboundRelevant=outboundSelection&&outboundSelection.toUpperCase()!=='PICK_UP';
const inboundInsuranceSelected=$('#inbound_insurance').is(':checked')
&& (parseFloat($('#inbound_insurance_value').val())||0) > 0;
const outboundInsuranceSelected=$('#outbound_insurance').is(':checked')
&& (parseFloat($('#outbound_insurance_value').val())||0) > 0;
const missingInbound=inboundRelevant&&!inboundInsuranceSelected;
const missingOutbound=outboundRelevant&&!outboundInsuranceSelected;
const $insuranceWarning=$('#insurance-warning');
if($insuranceWarning.length){
let warningText='';
if(missingInbound&&missingOutbound){
warningText='No additional domestic insurance has been added for inbound or outbound shipping. Maximum coverage is A$100.';
}else if(missingInbound){
warningText='No additional domestic insurance has been added for inbound shipping. Maximum coverage is A$100.';
}else if(missingOutbound){
warningText='No additional domestic insurance has been added for outbound shipping. Maximum coverage is A$100.';
}
if(warningText){
$insuranceWarning.text(warningText).removeClass('d-none');
}else{
$insuranceWarning.addClass('d-none');
}}
const paymentMethod=$('input[name="payment_method"]:checked').val();
$('#order_payment_method').val(paymentMethod);
calculate_card_total(shippingCost, subtotal, gst, grandTotal, totalDiscount);
}
$(document).on('change input', '#order_card_clean_qty, select[name$="[card_clean]"], select[name="card_clean"]', function(){
cg_sync_card_clean_consent_requirement();
});
$(document).on('click', '[data-acc-btn-next],[data-acc-btn-prev],[data-acc-title]', function(){
setTimeout(cg_sync_card_clean_consent_requirement, 80);
});
cg_sync_card_clean_consent_requirement();
function re_calculate_card_data(){
var cookie_value=JSON.parse(getCookie('cards_js_cookie'));
var count=0;
$.each(cookie_value.cards, function(key, value){
var html;
var attr;
if(key==0){
attr='data-repeater-item';
}
html='<div class="cg-card-item" data-index="' + key + '" id="confirm-delete-item-' + key + '">';
html +='<div class="accordion-head">';
html +='<ul data-index="' + key + '">';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">QTY: </span>' + value.card_qty + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Year: </span>' + value.card_year + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Manufacturer: </span>' + value.card_manufacturer + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Set: </span>' + value.card_set + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Number: </span>' + value.card_number + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Name: </span>' + value.card_name + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Variant: </span>' + value.card_variant + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Value: </span>' + value.card_value + '</li>';
html +='<li><a class="edit" href="javascript:;">Edit</a> | <a data-index="' + key + '" data-repeater-delete class="delete delete-cookie" href="javascript:;">Delete</a></li>';
html +='</ul>';
html +='</div>';
html +='<div class="accordion-content">';
html +='<div class="row">';
html +='<div class=" form-group col-lg-2">';
html +='<label>Quantity *</label>';
html +='<input type="text" class="cg-form-control cart_qty" name="cookie[' + key + '][card_qty]" min="1" value="' + value.card_qty + '" placeholder="1" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class=" form-group col-lg-2">';
html +='<label>Year *</label>';
html +='<input type="text" class="cg-form-control" name="cookie[' + key + '][card_year]" value="' + value.card_year + '" placeholder="YYYY" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class=" form-group col-lg-4">';
html +='<label>Manufacturer *</label>';
html +='<input type="text" class="cg-form-control" name="cookie[' + key + '][card_manufacturer]"  id="temp_data[' + key + '][card_manufacturer]" value="' + value.card_manufacturer + '" placeholder="Brand of the card" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class=" form-group col-lg-4">';
html +='<label>Card set *</label>';
html +='<input type="text" class="cg-form-control" name="cookie[' + key + '][card_set]" value="' + value.card_set + '" placeholder="Card set" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='</div>';
html +='<div class="row">';
html +='<div class=" form-group col-lg-4">';
html +='<label>Card Number *</label>';
html +='<input type="text" class="cg-form-control" name="cookie[' + key + '][card_number]" value="' + value.card_number + '" placeholder="Card Number" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class=" form-group col-lg-4">';
html +='<label>Name *</label>';
html +='<input type="text" class="cg-form-control" data-toggle="tooltip" title="Hooray JS!" name="cookie[' + key + '][card_name]" value="' + value.card_name + '" placeholder="Name of the player" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class=" form-group col-lg-4">';
html +='<label>Variant </label>';
html +='<input type="text" class="cg-form-control" name="cookie[' + key + '][card_variant]" value="' + value.card_variant + '" title="No Message" placeholder="Variant" />';
html +='<div class="error-message"></div>';
html +='</div>';
html +='</div>';
html +='<div class="row">';
html +='<div class=" form-group col-lg-4">';
html +='<label>Estimated Card Value per card  (USD) *</label>';
html +='<input type="text" class="cg-form-control" name="cookie[' + key + '][card_value]" value="' + value.card_value + '" placeholder="0.00" required/>';
html +='<div class="error-message"></div>';
html +='</div>';
html +='<div class=" form-group col-lg-8">';
html +='<label>Comment</label>';
html +='<input type="text" name="cookie[' + key + '][comment]" value="' + value.comment + '" placeholder="Enter anything" />';
html +='<div class="error-message"></div>';
html +='</div>';
html +='</div>';
html +=' <div class="row">';
html +='<div class="col-12">';
html +='<div class="field-action">';
html +='<button type="button" class="btn cg-save-card cookie-save-card"><i class="far fa-check-square"></i> Save</button>';
html +='</div>';
html +='</div>';
html +='</div>';
html +='</div>';
html +='  </div>';
var table;
var tableData=[];
var order_card_qty=0
var total_assigned_decalred_value=0;
var total_user_declared_value=0;
$.each(cookie_value.cards, function(key, value){
table='<tr class="" id="confirm-card-item-' + key + '" data-index="' + key + '">';
table +='<td></td>';
table +='<td>' + value.card_qty + '</td>';
table +='<td>' + value.card_year + '</td>';
table +='<td>' + value.card_manufacturer + '</td>';
table +='<td>' + value.card_set + '</td>';
table +='<td>' + value.card_number + '</td>';
table +='<td>' + value.card_name + '</td>';
table +='<td>' + value.card_variant + '</td>';
table +='<td>' + value.card_value + '</td>';
table +='</tr>';
tableData.push(table);
order_card_qty +=Number(value.card_qty);
total_user_declared_value +=(Number(value.card_qty) * Number(value.card_value));
});
console.log('order_qty=' + order_card_qty);
console.log('total_user_declared_value is=' + total_user_declared_value);
$('.confirm-order tbody').html(tableData);
var card_qty=$('#order_card_qty').val(order_card_qty);
var service_price=$('#order_grading_service').val();
var discount=$('#order_discount').val();
var target_qty=$('#order_target_qty').val();
update_order_summary(card_qty, service_price, discount, target_qty);
if(getCookie('cards_js_cookie')){
$('.cg-card-list .accordion').append(html);
}});
}
$('.shipping-details-notification:not(.tab-active)').hide();
$('.progress-tracker .progress-step.is-complete,.progress-tracker .progress-step.is-active').on('click', '.progress-marker', function(){
$('.progress-step').removeClass('tab-active');
$('.shipping-details-notification').removeClass('tab-active');
$('.shipping-details-notification').hide();
$(this).closest('.progress-step').addClass('tab-active');
var id=$(this).closest('.progress-step').data('target');
$('#' + id).show();
});
if($('.matchContent').length){
$('.matchContent').matchHeight({
byRow: true
});
}
function sendAjaxRequest(data, beforeSendCallback, successCallback, completeCallback, errorCallback){
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
beforeSend: beforeSendCallback,
success: successCallback,
complete: completeCallback,
error: errorCallback
});
}
$('.reveal-button-sgc').on('click', function(){
var cert_and_id=$(this).val().split("_");
var label_id=cert_and_id[0];
var cert_no=cert_and_id[1];
var grading_company=cert_and_id[3];
var data1={
'action': 'clicked_link',
'label_id': label_id,
'grading_company': grading_company
};
var data2={
'action': 'get_sgc_cert_label_by_auth_code',
'auth_code': cert_no
};
sendAjaxRequest(data1, null, function(response){
console.log('SGC clicked link response', response);
});
sendAjaxRequest(data2, function(){
$('#reveal_grade_btn-' + label_id).html("Fetching");
}, function(response){
var cert_detail=response.results;
$.each(cert_detail, function(key, value){
var url='<a href="https://www.gosgc.com/auth-code/ target="_blank">' + value.card_grade + '</a>';
$('#show_grade-' + value.id).html(url);
});
}, function(){
$('#reveal_grade_btn-' + label_id).hide();
$('#show_sell_card-' + label_id).show();
}, function(){
console.log("SGC - wrong clicked response");
});
});
$('.reveal-button-bgs').on('click', function(){
var button=$(this);
var value=button.val().split('_');
var cardId=value[0];
var certNo=value[1];
var gradingCompany=value[2];
var data1={
'action': 'clicked_link',
'label_id': cardId,
'grading_company': gradingCompany
};
var data2={
'action': 'get_bgs_cert_label_by_cert_no',
'cert_no': certNo
};
sendAjaxRequest(data1, null, function(response){
console.log('BGS clicked link response', response);
});
sendAjaxRequest(data2, null, function(response){
$('#reveal_grade_btn-' + cardId).html("Fetching");
if(response.success){
$('#show_grade-' + cardId).html('<a href="https://www.beckett.com/grading/card-lookup/' + certNo + '" target="_blank">' + response.data.grade + '</a>');
$('#reveal_grade_btn-' + cardId).remove();
$('#show_sell_card-' + cardId).html('<a href="' + response.data.sell_link + '" target="_blank" class="woocommerce-button btn btn-black">Sell</a>');
}else{
alert('Grade reveal failed.');
}});
});
var gemMintTenStreak=0;
var gemMintStreakStyleReady=false;
function ensureGemMintStreakStyles(){
if(gemMintStreakStyleReady||document.getElementById('cg-gem-streak-styles')){
gemMintStreakStyleReady=true;
return;
}
var style=document.createElement('style');
style.id='cg-gem-streak-styles';
style.textContent =
'.cg-gem-crown-wrap{' +
'position:fixed;inset:0;z-index:99998;pointer-events:none;display:grid;place-items:center;' +
'opacity:0;animation:cgCrownWrap 4300ms cubic-bezier(.19,1,.22,1) forwards;' +
'}' +
'.cg-gem-crown-wrap::before{' +
'content:\"\";position:absolute;inset:0;background:radial-gradient(circle at 50% 38%, rgba(250,204,21,.18), rgba(15,23,42,0) 36%);' +
'}' +
'.cg-gem-crown{' +
'position:relative;z-index:1;width:min(92vw, 620px);padding:30px 30px 26px;border-radius:32px;text-align:center;' +
'background:linear-gradient(180deg, rgba(20,25,36,.98), rgba(15,23,42,.96));' +
'border:1px solid rgba(251,191,36,.24);' +
'box-shadow:0 32px 96px rgba(15,23,42,.34), 0 0 0 1px rgba(251,191,36,.14) inset, 0 0 48px rgba(245,158,11,.16);' +
'transform:translateY(18px) scale(.92);opacity:0;animation:cgCrownCard 4300ms cubic-bezier(.19,1,.22,1) forwards;' +
'}' +
'.cg-gem-crown::before{' +
'content:\"\";position:absolute;inset:0;border-radius:32px;' +
'background:linear-gradient(120deg, rgba(255,255,255,0) 18%, rgba(255,255,255,.12) 40%, rgba(255,255,255,0) 62%);' +
'opacity:0;transform:translateX(-34%);animation:cgCrownGloss 1300ms ease-out 180ms forwards;' +
'}' +
'.cg-gem-crown__icons{' +
'position:relative;display:flex;justify-content:center;align-items:flex-end;gap:18px;margin:0 auto 18px;width:max-content;padding:12px 24px 6px;isolation:isolate;' +
'}' +
'.cg-gem-crown__icons::before{' +
'content:\"\";position:absolute;inset:-6px -18px 8px;border-radius:999px;background:radial-gradient(circle at 50% 42%, rgba(251,191,36,.38), rgba(245,158,11,.16) 42%, rgba(15,23,42,0) 72%);filter:blur(10px);z-index:-1;' +
'}' +
'.cg-gem-crown__icon{' +
'display:block;line-height:1;color:#fde68a;text-shadow:0 0 18px rgba(251,191,36,.55), 0 8px 28px rgba(217,119,6,.35);filter:drop-shadow(0 16px 28px rgba(245,158,11,.38));' +
'}' +
'.cg-gem-crown__icon--main{font-size:clamp(76px, 12vw, 116px);transform:translateY(-2px) scale(1.04);}' +
'.cg-gem-crown__icon--side{font-size:clamp(54px, 8.5vw, 78px);opacity:1;transform:translateY(6px) scale(.96);}' +
'.cg-gem-crown__eyebrow{' +
'display:block;margin-bottom:10px;font-size:12px;font-weight:800;letter-spacing:.34em;text-transform:uppercase;color:rgba(254,215,170,.84);' +
'}' +
'.cg-gem-crown__title{' +
'display:block;font-size:clamp(30px, 6vw, 50px);line-height:.94;font-weight:900;letter-spacing:.1em;color:#fff7ed;' +
'text-shadow:0 10px 26px rgba(0,0,0,.24), 0 0 20px rgba(245,158,11,.14);' +
'}' +
'.cg-gem-crown__sub{' +
'display:block;margin-top:14px;font-size:13px;font-weight:700;letter-spacing:.26em;text-transform:uppercase;color:#cbd5e1;' +
'}' +
'.cg-gem-crown__spark{' +
'position:absolute;width:14px;height:14px;border-radius:999px;background:radial-gradient(circle, rgba(255,244,214,.96), rgba(255,244,214,0));opacity:0;' +
'animation:cgCrownSpark 920ms ease-out forwards;' +
'}' +
'.cg-gem-crown__spark--1{left:16%;top:18%;animation-delay:120ms;}' +
'.cg-gem-crown__spark--2{right:16%;top:16%;animation-delay:180ms;}' +
'.cg-gem-crown__spark--3{left:24%;bottom:22%;animation-delay:240ms;}' +
'.cg-gem-crown__spark--4{right:22%;bottom:20%;animation-delay:300ms;}' +
'@keyframes cgCrownWrap{' +
'0%{opacity:0;}' +
'10%{opacity:1;}' +
'80%{opacity:1;}' +
'100%{opacity:0;}' +
'}' +
'@keyframes cgCrownCard{' +
'0%{opacity:0;transform:translateY(18px) scale(.92);}' +
'12%{opacity:1;transform:translateY(-10px) scale(1.02);}' +
'22%{opacity:1;transform:translateY(0) scale(1);}' +
'78%{opacity:1;transform:translateY(0) scale(1);}' +
'100%{opacity:0;transform:translateY(-70px) scale(.98);}' +
'}' +
'@keyframes cgCrownGloss{' +
'0%{opacity:0;transform:translateX(-34%);}' +
'24%{opacity:1;}' +
'100%{opacity:0;transform:translateX(34%);}' +
'}' +
'@keyframes cgCrownSpark{' +
'0%{opacity:0;transform:scale(.2);}' +
'34%{opacity:1;transform:scale(2.6);}' +
'100%{opacity:0;transform:scale(3.4);}' +
'}';
document.head.appendChild(style);
gemMintStreakStyleReady=true;
}
function showGemMintStreakBadge(text){
ensureGemMintStreakStyles();
var existingWrap=document.querySelector('.cg-gem-crown-wrap');
if(existingWrap){
existingWrap.remove();
}
var existing=document.querySelector('.cg-gem-crown');
if(existing){
existing.remove();
}
var wrap=document.createElement('div');
wrap.className='cg-gem-crown-wrap';
var badge=document.createElement('div');
badge.className='cg-gem-crown';
badge.innerHTML =
'<span class="cg-gem-crown__icons"><span class="cg-gem-crown__icon cg-gem-crown__icon--side">♛</span><span class="cg-gem-crown__icon cg-gem-crown__icon--main">♛</span><span class="cg-gem-crown__icon cg-gem-crown__icon--side">♛</span></span>' +
'<span class="cg-gem-crown__eyebrow">Triple Crown</span>' +
'<span class="cg-gem-crown__title">' + text + '</span>' +
'<span class="cg-gem-crown__sub">Three Consecutive GEM MT 10 Reveals</span>' +
'<span class="cg-gem-crown__spark cg-gem-crown__spark--1"></span>' +
'<span class="cg-gem-crown__spark cg-gem-crown__spark--2"></span>' +
'<span class="cg-gem-crown__spark cg-gem-crown__spark--3"></span>' +
'<span class="cg-gem-crown__spark cg-gem-crown__spark--4"></span>';
wrap.appendChild(badge);
document.body.appendChild(wrap);
window.setTimeout(function(){
if(wrap.parentNode){
wrap.remove();
}}, 5000);
}
function triggerConfetti(options){
options=options||{};
var duration=typeof options.duration==='number' ? options.duration:2 * 1000;
var end=Date.now() + duration;
var particleCount=typeof options.particleCount==='number' ? options.particleCount:100;
var startVelocity=typeof options.startVelocity==='number' ? options.startVelocity:30;
var spread=typeof options.spread==='number' ? options.spread:360;
var interval=setInterval(function(){
if(Date.now() > end){
return clearInterval(interval);
}
confetti({
particleCount: particleCount,
startVelocity: startVelocity,
spread: spread,
origin: {
x: Math.random(),
y: Math.random() - 0.2 
}});
}, 250);
}
function celebrateGemMintStreak(streakCount){
if(streakCount!==3){
return;
}
showGemMintStreakBadge('3 IN A ROW!');
triggerConfetti({
duration: 2400,
particleCount: 120,
startVelocity: 36,
spread: 360
});
window.setTimeout(function(){
confetti({
particleCount: 80,
startVelocity: 50,
spread: 72,
origin: { x: 0.28, y: 0.74 }});
confetti({
particleCount: 80,
startVelocity: 50,
spread: 72,
origin: { x: 0.72, y: 0.74 }});
}, 160);
}
$('.reveal-button').on('click', function(){
var cert_and_id=$(this).val().split("_");
var label_id=cert_and_id[0];
var cert_no=cert_and_id[1];
var grading_company=cert_and_id[2];
var psa_line_no=cert_and_id[3];
var service_order_id=cert_and_id[4];
var data1={
'action': 'clicked_link',
'label_id': label_id,
'grading_company': grading_company
};
var data2={
'action': 'get_psa_images',
'cert_no': cert_no,
'api': 'GetImagesByCertNumber'
};
var data3={
'action': 'get_psa_cert_info',
'cert_no': cert_no,
'api': 'GetByCertNumber'
};
sendAjaxRequest(data1, null, function(response){
console.log('PSA clicked link response', response);
});
sendAjaxRequest(data2, null, function(response){
var image_html='';
$.each(response.results, function(key, value){
image_html +='<img src="' + value.front_image + '" alt="PSA Card Image" style="max-width:100px;"/>';
});
var container=$('#show_psa_image-' + label_id);
container.html(image_html).css('opacity', '0');
setTimeout(function(){
container.css('opacity', '1').addClass('show');
}, 100);
});
sendAjaxRequest(data3, function(){
$('#reveal_grade_btn-' + label_id).html("Fetching");
}, function(response){
var cert_detail=response.results;
$.each(cert_detail, function(key, value){
var label=value.year + " " + value.brand + " " + value.card_number + " " + value.subject;
var url='<u><a href="https://www.psacard.com/cert/' + value.cert_no + '" target="_blank">' + value.card_grade + '</a></u>';
var sellButton=$('#sell_btn_' + label_id);
$('#show_grade-' + label_id).html(url);
sellButton
.attr('data-grade', value.card_grade||'')
.attr('data-cert-no', value.cert_no||'')
.attr('data-card-detail', label||'')
.removeClass('hide')
.show();
$('#show_sell_card-' + label_id).empty().show();
var normalizedGrade=String(value.card_grade||'').trim().toUpperCase();
if(normalizedGrade==='GEM MT 10'){
gemMintTenStreak +=1;
console.log("GEM MT 10 grade found! Triggering confetti.");
if(gemMintTenStreak===3){
celebrateGemMintStreak(gemMintTenStreak);
}else{
triggerConfetti({
duration: 1400,
particleCount: 70,
startVelocity: 26,
spread: 240
});
}
$('#show_psa_image-' + label_id).addClass('gem-mt-10');
}else{
gemMintTenStreak=0;
}});
}, function(){
$('#reveal_grade_btn-' + label_id).hide();
}, function(){
console.log("PSA - error");
});
});
$('#gf-cert-search').on('click', function(){
var str_arr=$(this).val().split("_");
var form_id=str_arr[0];
var input_id=str_arr[1];
var output_id=str_arr[2];
var year_id=str_arr[3];
var brand_id=str_arr[4];
var cardno_id=str_arr[5];
var subject_id=str_arr[6];
var variant_id=str_arr[7];
var grade_id=str_arr[8];
var pop_id=str_arr[9];
var pop_higher_id=str_arr[10];
var front_img_id=str_arr[11];
var back_img_id=str_arr[12];
var gf_cert=$("#input_" + form_id + "_" + input_id).val();
console.log("the gf search cert is: " + gf_cert);
var data={
'action': 'get_psa_cert_info',
'cert_no': gf_cert,
'api': 'GetByCertNumber',
};
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
beforeSend: function(){
$("#input_" + form_id + "_" + output_id).val("Fetching...");
},
success: function(response){
var cert_detail=response.results[0];
if(cert_detail){
var psa_label=`${cert_detail.year} ${cert_detail.brand} ${cert_detail.card_number} ${cert_detail.subject} ${cert_detail.variety} ${cert_detail.card_grade} (Pop ${cert_detail.total_pop})`;
$("#input_" + form_id + "_" + output_id).val(psa_label);
$("#input_" + form_id + "_" + year_id).val(cert_detail.year);
$("#input_" + form_id + "_" + brand_id).val(cert_detail.brand);
$("#input_" + form_id + "_" + cardno_id).val(cert_detail.card_number);
$("#input_" + form_id + "_" + subject_id).val(cert_detail.subject);
$("#input_" + form_id + "_" + variant_id).val(cert_detail.variety);
$("#input_" + form_id + "_" + grade_id).val(cert_detail.card_grade);
$("#input_" + form_id + "_" + pop_id).val(cert_detail.total_pop);
$("#input_" + form_id + "_" + pop_higher_id).val(cert_detail.pop_higher);
}else{
$("#input_" + form_id + "_" + output_id).val("Card not found");
}},
error: function(xhr){
console.log("Error retrieving card details: " + xhr.responseText);
$("#input_" + form_id + "_" + output_id).val("Error retrieving card details");
}});
var data_images={
'action': 'get_psa_images',
'cert_no': gf_cert,
'api': 'GetImagesByCertNumber',
};
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data_images,
beforeSend: function(){
},
success: function(response){
var image_detail=response.results;
$.each(image_detail, function(key, value){
$(".psa_front_image").html("<img src=" + value.front_image + " width='20%' height='40%' />");
$("#input_" + form_id + "_" + front_img_id).val(value.front_image);
$("#input_" + form_id + "_" + back_img_id).val(value.back_image);
console.log("psa_images: " + value.front_image + " " + value.back_image);
});
},
error: function(xhr){
console.log("Error retrieving images: " + xhr.responseText);
}});
});
$('#gf-psa-image-search').on('click', function(){
var str_arr=$(this).val().split("_");
var form_id=str_arr[0];
var input_id=str_arr[1];
var front_image_id=str_arr[2];
var back_image_id=str_arr[3];
var gf_cert=$("#input_"+form_id+"_"+input_id).val();
var data={
'action': 'get_psa_images',
'cert_no': gf_cert,
'api': 'GetImagesByCertNumber',
};
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
beforeSend: function(){
},
success: function(response){
var image_detail=response.results;
$.each(image_detail, function(key, value){
if(value.back_image!=null){
$("#input_"+form_id+"_"+front_image_id).val(value.front_image);
$("#input_"+form_id+"_"+back_image_id).val(value.back_image);
}
console.log("psa_images: " + value.front_image + " " + value.back_image);
});
}});
});
$('#gf-save-label').on('click', function(){
var str_arr=$(this).val().split("_");
var form_id=str_arr[0];
var year_id=str_arr[1];
var brand_id=str_arr[2];
var set_id=str_arr[3];
var card_no_id=str_arr[4];
var player_id=str_arr[5];
var variant_id=str_arr[6];
var radio_card_id=str_arr[7];
var variant_visibility_id=str_arr[8];
var quick_copy_id=str_arr[9];
var user_id=str_arr[10];
console.log("THE quick_copy_id ID IS " + quick_copy_id);
var gf_year=$("#input_"+form_id+"_"+year_id).val();
var gf_brand=$("#input_"+form_id+"_"+brand_id).val();
var gf_set=$("#input_"+form_id+"_"+set_id).val();
var gf_card_no=$("#input_"+form_id+"_"+card_no_id).val();
var gf_player=$("#input_"+form_id+"_"+player_id).val();
var gf_variant=$("#input_"+form_id+"_"+variant_id).val();
var gf_card_id=$("input[name='input_"+radio_card_id+"']:checked").val();
var gf_variant_visibility_id=$("input[name='input_"+variant_visibility_id+"']:checked").val();
var gf_user_id=$("#input_"+form_id+"_"+user_id).val();
console.log("THE gf_player  IS " + gf_player);
var data={
'action': 'save_slabd_card_data',
'form_id': form_id,
'gf_year': gf_year,
'gf_brand': gf_brand,
'gf_set': gf_set,
'gf_card_no': gf_card_no,
'gf_player': gf_player,
'gf_variant': gf_variant,
'gf_card_id': gf_card_id,
'gf_variant_visibility': gf_variant_visibility_id,
'quick_copy_id': quick_copy_id,
'user_id': gf_user_id,
};
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
beforeSend: function(){
},
success: function(response){
console.log("slabd label save successful!")
var the_resposne=response.results;
$.each(the_resposne, function(key, value){
console.log("formis-  " + value.gf_form_id + value.gf_quick_copy_id)
$("#choice_"+value.gf_form_id+"_"+value.gf_quick_copy_id+"_1").prop("checked", false);
$('#label_response').html('<strong>Label ' + value.order_id+' has been saved!</strong>').fadeIn(10);
});
$('#label_response').fadeOut(10000);
}});
});
$('.gf-assign-label-to-cert').on('click', function(){
var str_arr=$(this).val().split("_");
var form_id=str_arr[0];
var card_id=str_arr[1];
var spec_id_id=str_arr[2];
var slabd_cert_id=str_arr[3];
var gf_card_id=$("input[name='input_"+card_id+"']:checked").val();
var gf_spec_id=$("#input_"+form_id+"_"+spec_id_id).val();
var gf_slabd_cert_id=$("#input_"+form_id+"_"+slabd_cert_id).val();
console.log("THE gf_spec_id  IS " + gf_spec_id);
console.log("THE gf_order_id  IS " + gf_card_id);
console.log("THE gf_order_id  IS " + gf_slabd_cert_id);
var data={
'action': 'assing_spec_id_to_cert',
'form_id': form_id,
'order_id': gf_card_id,
'spec_id': gf_spec_id,
'cert_id': gf_slabd_cert_id,
};
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
beforeSend: function(){
},
success: function(response){
console.log("Spec ID saved to Certificate")
var the_resposne=response.results;
$.each(the_resposne, function(key, value){
console.log("response is - cert id: " + value.cert_id +"  spec id" + value.spec_id +  " order id: " + value.order_id + " cert id: " + value.cert_id);
if(value.cert_id!=0){
$('#master_label_response').html('<strong>Spec ID  ' + value.spec_id+' has been saved to Cert ID '+ value.cert_id +'!</strong>').fadeIn(10);
}else{
$('#master_label_response').html('<strong>NOT ASSIGNED! A label has already been assigned to this Card ID '+value.order_id+'!').fadeIn(10);
}});
$('#label_response').fadeOut(10000);
}});
});
$('#gf-save-master-label').on('click', function(){
var str_arr=$(this).val().split("_");
var form_id=str_arr[0];
var year_id=str_arr[1];
var brand_id=str_arr[2];
var set_id=str_arr[3];
var card_no_id=str_arr[4];
var subject_id=str_arr[5];
var variant_id=str_arr[6];
var radio_card_id=str_arr[7];
var variant_visibility_id=str_arr[8];
var quick_copy_id=str_arr[9];
var user_id=str_arr[10];
var category_id=str_arr[11];
var new_spec_id=str_arr[12];
console.log("THE new_spec_id ID IS " + new_spec_id);
var gf_year=$("#input_"+form_id+"_"+year_id).val();
var gf_brand=$("#input_"+form_id+"_"+brand_id).val();
var gf_set=$("#input_"+form_id+"_"+set_id).val();
var gf_card_no=$("#input_"+form_id+"_"+card_no_id).val();
var gf_subject=$("#input_"+form_id+"_"+subject_id).val();
var gf_variant=$("#input_"+form_id+"_"+variant_id).val();
var gf_card_id=$("input[name='input_"+radio_card_id+"']:checked").val();
var gf_variant_visibility_id=$("input[name='input_"+variant_visibility_id+"']:checked").val();
var gf_user_id=$("#input_"+form_id+"_"+user_id).val();
var gf_category_id=$("#input_"+form_id+"_"+category_id+" option:selected").val();
var data={
'action': 'save_slabd_master_labels',
'form_id': form_id,
'gf_year': gf_year,
'gf_brand': gf_brand,
'gf_set': gf_set,
'gf_card_no': gf_card_no,
'gf_subject': gf_subject,
'gf_variant': gf_variant,
'gf_card_id': gf_card_id,
'gf_variant_visibility': gf_variant_visibility_id,
'quick_copy_id': quick_copy_id,
'user_id': gf_user_id,
'gf_category': gf_category_id,
'gf_new_spec_id': new_spec_id,
};
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
beforeSend: function(){
},
success: function(response){
console.log("slabd label save successful!")
var the_resposne=response.results;
$.each(the_resposne, function(key, value){
console.log("error status=" + value.error);
if(value.error==false){
console.log("formis-  " + value.gf_form_id + value.gf_quick_copy_id  + ":Spec ID locatiom" + value.new_spec_id_location)
$("#choice_"+value.gf_form_id+"_"+value.gf_quick_copy_id+"_1").prop("checked", false);
$('#label_response').html('<strong>Label ' + value.spec_id+' has been saved!</strong>').show(60);
$("#input_"+value.gf_form_id+"_"+value.new_spec_id_location).val(value.spec_id);
}else{
$('#label_response').html('<strong>NOT SAVED! PLEASE CHECK REQUIRED FIELDS!!').show(120);
}});
$('#label_response').fadeOut(10000);
}});
});
$("gf-save-master-label-to-cert").on('click', function(){
var str_arr=$(this).val().split("_");
var form_id=str_arr[0];
var spec_id_id=str_arr[1];
var spec_id=$("#input_"+form_id+"_"+spec_id_id).val();
});
$('#gf-update-status').on('click', function(){
var str_arr=$(this).val().split("_");
var form_id=str_arr[0];
var gf_select_order_id=str_arr[1];
var gf_select_new_status_id=str_arr[2];
var gf_service_order_id=$("#input_"+form_id+"_"+gf_select_order_id).val();
var gf_status_id=$("#input_"+form_id+"_"+gf_select_new_status_id).val();
console.log("gf_select_new_status_id =!"  +  gf_select_new_status_id);
console.log("gf_status_id =!"  +  gf_status_id);
var data={
'action': 'update_status_by_service_order_id',
'service_order_id': gf_service_order_id,
'status_id': gf_status_id,
};
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
beforeSend: function(){
},
success: function(response){
console.log("slabd status save successful!");
var the_resposne=response.results;
$.each(the_resposne, function(key, value){
$('#status_response').html('<strong>Status for order ' + value.service_order_id+' has been saved!</strong>').fadeIn(10);
});
$('#status_response').fadeOut(10000);
}});
});
$('#gf-save-grade').on('click', function(){
var str_arr=$(this).val().split("_");
var form_id=str_arr[0];
var gf_grade_id=str_arr[1];
var gf_grade_visibility_id=str_arr[2];
var gf_radio_card_id=str_arr[3];
var gf_select_order_id=str_arr[4];
var gf_notes_id=str_arr[5];
var gf_current_sub_grades_id=str_arr[6];
var gf_card_id=$("input[name='input_"+gf_radio_card_id+"']:checked").val();
var gf_grade_visibility=$("input[name='input_"+gf_grade_visibility_id+"']:checked").val();
var gf_service_order_id=$("#input_"+form_id+"_"+gf_select_order_id).val();
var gf_notes=$("#input_"+form_id+"_"+gf_notes_id).val();
var gf_checkbox_grades_centering=$("input[name='input_"+gf_grade_id+".1']:checked").val();
var gf_checkbox_grades_corners=$("input[name='input_"+gf_grade_id+".2']:checked").val();
var gf_checkbox_grades_edges=$("input[name='input_"+gf_grade_id+".3']:checked").val();
var gf_checkbox_grades_surface=$("input[name='input_"+gf_grade_id+".4']:checked").val();
var gf_checkbox_grades_overall=$("input[name='input_"+gf_grade_id+".5']:checked").val();
var overall_card_grade;
var final_card_grade;
if(gf_checkbox_grades_centering==null){
gf_checkbox_grades_centering=0;
}
if(gf_checkbox_grades_corners==null){
gf_checkbox_grades_corners=0;
}
if(gf_checkbox_grades_edges==null){
gf_checkbox_grades_edges=0;
}
if(gf_checkbox_grades_surface==null){
gf_checkbox_grades_surface=0;
}
if(gf_checkbox_grades_overall==null){
gf_checkbox_grades_overall=0;
}
overall_card_grade=parseInt(gf_checkbox_grades_centering) + parseInt(gf_checkbox_grades_corners) + parseInt(gf_checkbox_grades_edges) + parseInt(gf_checkbox_grades_surface) + parseInt(gf_checkbox_grades_overall);
console.log ('final grade=' + overall_card_grade);
switch (overall_card_grade){
case 1:
final_card_grade="c";
break;
case 2:
final_card_grade="cc";
break;
case 3:
final_card_grade="ccc";
break;
case 4:
final_card_grade="cccc";
break;
case 5:
final_card_grade="ccccc";
break;
}
var data={
'action': 'save_slabd_grade',
'form_id': form_id,
'card_id': gf_card_id,
'service_order_id': gf_service_order_id,
'grade_checkbox_id':gf_grade_id,
'grade': final_card_grade,
'grade_visibility': gf_grade_visibility,
'center_score': parseInt(gf_checkbox_grades_centering),
'corner_score': parseInt(gf_checkbox_grades_corners),
'edge_score': parseInt(gf_checkbox_grades_edges),
'surface_score': parseInt(gf_checkbox_grades_surface),
'overall_score': parseInt(gf_checkbox_grades_overall),
'notes': gf_notes,
'gf_current_sub_grades_id': gf_current_sub_grades_id,
};
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
beforeSend: function(){
},
success: function(response){
console.log("slabd grade save successful!")
var the_resposne=response.results;
$.each(the_resposne, function(key, value){
$('#grade_response').html('<strong>Grade for id ' + value.card_id+' has been saved!</strong>').fadeIn(10);
var update_current_subgrades=$("#input_"+value.form_id+"_"+value.current_sub_grades_id).val(value.center_score + ", " + value.corner_score + ", " + value.edge_score + ", " + value.surface_score + ", " + value.overall_score);
});
$('#grade_response').fadeOut(10000);
}});
});
$('#gf-check-scans').on('click', function(){
var str_arr=$(this).val().split("_");
var form_id=str_arr[0];
var service_order_id=str_arr[1];
var first_name_id=str_arr[2];
var last_name_id=str_arr[3];
var gf_service_order_id=$("#input_"+form_id+"_"+service_order_id).val();
var gf_first_name=$("#input_"+form_id+"_"+first_name_id).val();
var gf_last_name=$("#input_"+form_id+"_"+last_name_id).val();
var pdf_file_name=preceeding_zeros_for_pdf(gf_service_order_id) + gf_service_order_id + "_" + gf_first_name + "_" + gf_last_name + ".pdf";
var win=window.open('https://slabdcomau.sharepoint.com/sites/CardScans/Raw_Card_Scans/' + pdf_file_name, '_blank');
if(win){
win.focus();
}else{
alert('Please allow popups for this website');
}});
$('#gf-quote-pickup').on('click', function(){
var str_arr=$(this).val().split("_");
var form_id=str_arr[0];
var form_address_id=str_arr[1];
var form_pickup_service_id=str_arr[2];
var form_card_qty_id=str_arr[3];
var gf_address_1=$("input[name='input_"+form_address_id+".1']").val();
var gf_address_2=$("input[name='input_"+form_address_id+".2']").val();
var gf_city=$("input[name='input_"+form_address_id+".3']").val();
var gf_state=$("input[name='input_"+form_address_id+".4']").val();
var gf_post_code=$("input[name='input_"+form_address_id+".5']").val();
var gf_pickup_service=$("input[name='input_"+form_pickup_service_id+"']:checked").val();
var gf_card_qty=$("#input_"+form_id+"_"+form_card_qty_id).val();
console.log("id=" + form_id + " form_address=" + gf_address_1 + gf_address_2 + gf_city + gf_state + gf_post_code  +" form_pickup_service=" + gf_pickup_service);
var data={
'action': 'calculate_pickup_delivery_quote',
'pickup_suburb': gf_city,
'pickup_post_code': gf_post_code,
'pickup_state': gf_state,
'pickup_service': gf_pickup_service,
'card_qty': gf_card_qty,
};
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
beforeSend: function(){
},
success: function(response){
console.log("gf-quote-pickupsuccessful!")
var the_resposne=response.results;
$.each(the_resposne, function(key, value){
$('#quote_response').html('<strong>Book a pickup and delivery to Slabd for only $' + response.results.total_shipping_cost +'</strong>').fadeIn(10);
});
}});
});
$('.gf_get_sendle_quote').on('change', function(){
console.log("SENDLE HAS CHANGED))))");
});
function preceeding_zeros_for_pdf(service_id){
var zeros="";
switch (true){
case service_id < 10:
zeros="00000";
break;
case service_id < 100:
zeros="0000";
break;
case service_id < 1000:
zeros="000";
break;
case service_id < 10000:
zeros="00";
break;
case service_id < 100000:
zeros="0";
break;
case service_id < 100000:
zeros="";
break;
}
return zeros;
}
function capitalizeFirstLetter(str){
return str
.toLowerCase()
.replace(/\w/, firstLetter=> firstLetter.toUpperCase());
}
$('#tracking-code-form').validate({
errorPlacement: function errorPlacement(error, element){
element.closest('.form-group').find('.error-message').append(error);
}});
if($('#card-grading-orders').length){
$('#card-grading-orders').closest('.myaccount-inner').addClass('card-grading-order-details');
}
var getUrlParameter=function getUrlParameter(sParam){
var sPageURL=window.location.search.substring(1),
sURLVariables=sPageURL.split('&'),
sParameterName,
i;
for (i=0; i < sURLVariables.length; i++){
sParameterName=sURLVariables[i].split('=');
console.log('sParameterName' + sParameterName);
if(sParameterName[0]===sParam){
return sParameterName[1]===undefined ? true:decodeURIComponent(sParameterName[1]);
}}
};
var payment_id=getUrlParameter('paymentId');
var payer_id=getUrlParameter('PayerID');
var service_id=getUrlParameter('service_id');
console.log("payment_id_is" + payment_id);
console.log("payer_id_is" + payer_id);
if(payment_id||payer_id){
console.log("IN if(payment_id||payer_id) ");
$('body').append('<div class="paypal-redirect"></div>');
var data={
'action': 'paypal_payment_execution',
'payer_id': payer_id,
'payment_id': payment_id,
'service_id': service_id
};
$.ajax({
type: "POST",
url: ajax_object.ajax_url,
data: data,
dataType: 'json',
beforeSend: function(){
},
success: function(response){
console.log(response);
Swal.fire({
icon: 'success',
title: 'Successful Payment',
text: response.message,
preConfirm: function(){
window.location.replace(response.redirect);
}});
},
});
}
if($('.cg-card-list').length){
var slbdSelect2ReloadAttempted=false;
function slbdReloadSelect2ForCurrentJquery(){
if(slbdSelect2ReloadAttempted||typeof $.fn.select2==='function'){
return;
}
slbdSelect2ReloadAttempted=true;
var select2Src=$('script[src*="select2.full.min.js"]').last().attr('src')||'';
if(!select2Src){
var publicSrc=$('script[src*="card-grading-public.js"]').last().attr('src')||'';
if(publicSrc){
select2Src=publicSrc.replace(/card-grading-public\.js(\?.*)?$/, 'select2.full.min.js');
}}
if(!select2Src){
return;
}
$.ajax({
url: select2Src,
dataType: 'script',
cache: true
});
}
function slbdWhenSelect2Ready(callback, triesLeft){
var remaining=(typeof triesLeft==='number') ? triesLeft:40;
if(typeof $.fn.select2==='function'){
callback();
return;
}
if(!slbdSelect2ReloadAttempted){
slbdReloadSelect2ForCurrentJquery();
}
if(remaining <=0){
return;
}
setTimeout(function (){
slbdWhenSelect2Ready(callback, remaining - 1);
}, 250);
}
$("body").on("keypress keyup blur", '.cart_qty', function(event){
$(this).val($(this).val().replace(/[^\d].+/, ""));
if((event.which < 48||event.which > 57)){
event.preventDefault();
}});
$('.preload-form').hide();
slbdWhenSelect2Ready(function (){
$('.select2-form').each(function (){
var $el=$(this);
if(!$el.hasClass('select2-hidden-accessible')){
$el.select2();
}});
});
$.fn.serializeFormJSON=function(){
var o={};
var a=this.serializeArray();
$.each(a, function(){
if(o[this.name]){
if(!o[this.name].push){
o[this.name]=[o[this.name]];
}
o[this.name].push(this.value||'');
}else{
o[this.name]=this.value||'';
}});
return o;
};
$.fn.serializeObject=function(){
var arrayData, objectData;
arrayData=this.serializeArray();
objectData={};
$.each(arrayData, function(){
var value;
if(this.value!=null){
value=this.value;
}else{
value='';
}
if(objectData[this.name]!=null){
if(!objectData[this.name].push){
objectData[this.name]=[objectData[this.name]];
}
objectData[this.name].push(value);
}else{
objectData[this.name]=value;
}});
return objectData;
};
var form=document.getElementById('card-grading-form');
function stripeTokenHandler(token){
var form=document.getElementById('card-grading-form');
var hiddenInput=document.createElement('input');
hiddenInput.setAttribute('type', 'hidden');
hiddenInput.setAttribute('name', 'stripeToken');
hiddenInput.setAttribute('value', token.id);
form.appendChild(hiddenInput);
}
$('.preload-form').hide();
form.addEventListener('submit', function(event){
event.preventDefault();
if(!validateCardCleanConsentRequirement()){
return;
}
function appendOcSource(data){
if(!data) return data;
const src=window.SLBD_OC_PREFILL||{};
if(src.entry_id) data.slbd_source_entry_id=src.entry_id;
if(src.form_id) data.slbd_source_form_id=src.form_id;
data.card_clean_consent=String($('#card_clean_consent_value').val()||($('#card_clean_consent').is(':checked') ? '1':'0'));
if(src.draft_id) data.slbd_intake_draft_id=src.draft_id;
if(src.token) data.slbd_intake_draft_token=src.token;
return data;
}
var formData=appendOcSource(form.serializeFormJSON());
var itemType=cg_get_temp_item_type();
var merge_cards=[];
if(cg_is_comic_item_type(itemType)){
if(typeof window.cg_collect_comic_items_from_dom==='function'){
merge_cards=window.cg_collect_comic_items_from_dom();
}else{
var comicVal=safeRepeaterVal($('.cg-comic-list'));
merge_cards=(comicVal&&Array.isArray(comicVal.comics)) ? comicVal.comics:[];
}}else{
if(typeof window.cg_collect_card_items_from_dom==='function'){
merge_cards=window.cg_collect_card_items_from_dom();
}else{
var repeaterVal=safeRepeaterVal($(".cg-card-list"));
merge_cards=(repeaterVal&&Array.isArray(repeaterVal.cards)) ? repeaterVal.cards:[];
}}
merge_cards=merge_cards;
console.log('submit-cards',merge_cards);
if(formData.payment_method=='paypal'){
form.validate().settings.ignore=":disabled,:hidden";
var formData=appendOcSource($('#card-grading-form').serializeFormJSON());
}
else if(formData.payment_method=='cash'||formData.payment_method=='bank_transfer'||formData.payment_method=='invoice'||formData.payment_method=='tap'||formData.payment_method=='gform'){
form.validate().settings.ignore=":disabled,:hidden";
var formData=appendOcSource($('#card-grading-form').serializeFormJSON());
if(form.valid()){
var submitItems=cg_collect_submission_items(itemType);
var formData=appendOcSource($('#card-grading-form').serializeFormJSON());
var data={
'action': 'grading_form_submit',
'user_data': formData,
};
if(cg_is_comic_item_type(itemType)){
data['comics']=submitItems;
}else{
data['cards']=submitItems;
}
$.ajax({
type: "POST",
url: ajax_object.ajax_url,
data: data,
dataType: 'json',
beforeSend: function(){
$('.preload-form').show();
},
success: function(response){
console.log('grading form submit' + response);
console.log("msg: " + response.message);
console.log("formdata: ",response);
console.log("buggeredformdata: ",response.form_data);
if(response.register_error){
$('.preload-form').hide();
Swal.fire({
icon: 'error',
title: 'Registration Error!',
text: response.register_error,
preConfirm: function(){}});
}
else if(response.message){
Swal.fire({
icon: 'success',
title: 'Successful Submission!',
html: 'Order successfully submitted.<br><small>Redirecting… please wait.</small>',
allowOutsideClick: false,
allowEscapeKey: false,
allowEnterKey: false,
showConfirmButton: false,
didOpen: ()=> {
Swal.showLoading();
if(!document.getElementById('slabd-ui-blocker')){
const b=document.createElement('div');
b.id='slabd-ui-blocker';
b.style.cssText=`
position:fixed; inset:0; z-index:99998; pointer-events:all;
cursor:wait; background:transparent;`;
document.body.appendChild(b);
document.body.style.overflow='hidden';
}
setTimeout(()=> { window.location.replace(response.redirect); }, 150);
}});
}
else if(response.error){
$('.preload-form').hide();
Swal.fire({
icon: 'error',
title: 'Submission Failed!',
text: response.error.error,
preConfirm: function(){}});
}else{
$('.preload-form').hide();
Swal.fire({
icon: 'error',
title: 'Submission failed!!',
text: response.error,
preConfirm: function(){}});
}},
error: function(){
$('.preload-form').hide(),
console.log("cash/bank error is here: " + merge_cards + " formData=" + formData);
}});
}else{
Swal.fire({
icon: 'error',
title: 'Oops...',
text: 'Please complete the card details...',
});
}}else{
stripe.createToken(cardNumber).then(function(result){
if(result.error){
var errorElement=document.getElementById('token-errors');
if($('.card-error-message').length!=null){
Swal.fire({
icon: 'error',
title: 'Oops...',
text: result.error.message,
});
}}else{
var cardToken=result.token;
var formData=form.serializeFormJSON();
var ajaxurl=$('body').data('ajax-url');
if(form.valid()){
var submitItems=cg_collect_submission_items(itemType);
var formData=$('#card-grading-form').serializeFormJSON();
var data={
'action': 'grading_form_submit',
'user_data': formData,
};
if(cg_is_comic_item_type(itemType)){
data['comics']=submitItems;
}else{
data['cards']=submitItems;
}
$.ajax({
type: "POST",
url: ajax_object.ajax_url,
data: data,
dataType: 'json',
beforeSend: function(){
$('.preload-form').show();
},
success: function(response){
console.log(response);
if(response.register_error){
$('.preload-form').hide();
Swal.fire({
icon: 'error',
title: 'Registration Error!',
text: response.register_error,
preConfirm: function(){}});
}else if(response.message){
$('.preload-form').hide();
Swal.fire({
icon: 'success',
title: 'Success!',
text: response.message,
preConfirm: function(){
$('.preload-form').show();
window.location.replace(response.redirect);
$('.top-bar .right .inner-item').html(data.login_url);
}});
}else if(response.error){
$('.preload-form').hide();
Swal.fire({
icon: 'error',
title: 'Submission Failed!',
text: response.error.error,
preConfirm: function(){}});
}else{
$('.preload-form').hide();
Swal.fire({
icon: 'error',
title: 'Submission failed!',
text: response.error,
preConfirm: function(){}});
}},
error: function(response){
$('.preload-form').hide(),
console.log("stripe error is here.." + " - " + response.message + " - " + response.error + " - " + response.status_error + " - " + response.return);
}});
}else{
Swal.fire({
icon: 'error',
title: 'Oops...',
text: 'Please complete the card details*.',
});
}}
});
}});
paypal.Buttons({
/* //env: 'production', // Optional: specify 'sandbox' environment //need change back to 'production'
createOrder: function(data, actions){
return actions.order.create({
description: $('.card-grading-service:checked').data('title'),
purchase_units: [{
amount: {
currency: 'AUD',
value: $('#order_grand_total').val(),
details: {
subtotal: $('#order_subtotal').val(),
shipping: $('#order_shipping_cost').val(),
tax: $('#order_gst').val(),
handling_fee: $('#order_admin_fee').val()
},
total: $('#order_grand_total').val(),
items: [{
name: $('#order_grading_service').val(),
price: $('#order_grand_total').val(),
currency: 'AUD',
quantity: $('#order_card_qty').val(),
}]
}}]
});
},
onClick: function(data, actions){
const $form=$('#card-grading-form');
if(typeof $form.validate==='function'){
$form.validate().settings.ignore=":disabled,:hidden";
}
if(!validateCardCleanConsentRequirement()){
return false;
}
return $form.valid();
},
onApprove: function(data, actions){
return actions.order.capture().then(function(details){
console.log("PayPal Approve: " + details);
$('body').append('<div class="paypal-redirect"></div>');
var formData=$('#card-grading-form').serializeFormJSON();
var itemType=cg_get_temp_item_type();
var final_remerge_cards=cg_collect_submission_items(itemType);
var data={
'action': 'grading_form_submit',
'user_data': formData,
'payment_details': details
};
if(cg_is_comic_item_type(itemType)){
data['comics']=final_remerge_cards;
}else{
data['cards']=final_remerge_cards;
}
$.ajax({
type: "POST",
url: ajax_object.ajax_url,
data: data,
dataType: 'json',
beforeSend: function(){
$('.preload-form').show();
},
success: function(response){
console.log(response);
$('.preload-form').hide();
$('.paypal-redirect').hide();
Swal.fire({
icon: 'success',
title: 'Payment Successful!',
text: response.message,
preConfirm: function(){
$('.preload-form').show();
window.location.replace(response.redirect);
}});
},
});
});
},
style: {
layout: 'horizontal',
color: 'gold'
},
}).render('#paypal-button-container');
var stripe=Stripe('pk_live_51FWtMyG2DDRuzHxFjdG1ECDS4hFwQF2gBbv6YkjjSGCQ1cxexRKwY5HQaanQWn3ALRh7ym87Hf6CGrsRWiaF36w000bP7OM5YM');
/** REMOVED THIS CALL AS IT TAKES 4-5 SECONDS TO LOAD */
/*var stripe_key;
var data={
'action': 'get_stripe_key'
};
$.ajax({
type: 'GET',
dataType: 'json',
url: ajax_object.ajax_url,
data: data,
async: false,
beforeSend: function(){},
success: function(response){
stripe_key=response.stripe_key.pk;
}});
var stripe=Stripe(stripe_key);
*/
var elements=stripe.elements({
fonts: [{
cssSrc: 'https://fonts.googleapis.com/css?family=Quicksand',
}, ],
locale: window.__exampleLocale,
});
var elementStyles={
base: {
color: '#000',
fontSize: '16px',
fontSmoothing: 'antialiased',
border: '1px solid red',
':focus': {
color: '#000',
},
'::placeholder': {
color: '#AAAAAA',
},
':focus::placeholder': {
color: '#AAAAAA',
},
},
invalid: {
color: '#AE2B29',
':focus': {
color: '#AE2B29',
},
'::placeholder': {
color: '#AE2B29',
},
},
};
var elementClasses={
focus: 'focus',
empty: 'empty',
invalid: 'invalid',
};
var cardNumber=elements.create('cardNumber', {
style: elementStyles,
classes: elementClasses,
});
cardNumber.mount('#card_number');
var cardExpiry=elements.create('cardExpiry', {
style: elementStyles,
classes: elementClasses,
});
cardExpiry.mount('#card_expiry');
var cardCvc=elements.create('cardCvc', {
style: elementStyles,
classes: elementClasses,
});
cardCvc.mount('#card_cvc');
cardNumber.addEventListener('change', function(event){
var displayError=document.getElementById('card-number-errors');
if(event.error){
displayError.textContent=event.error.message;
}else{
displayError.textContent='';
}});
cardExpiry.addEventListener('change', function(event){
var displayError=document.getElementById('card-expiry-errors');
if(event.error){
displayError.textContent=event.error.message;
}else{
displayError.textContent='';
}});
cardCvc.addEventListener('change', function(event){
var displayError=document.getElementById('card-cvc-errors');
if(event.error){
displayError.textContent=event.error.message;
}else{
displayError.textContent='';
}});
$('#card-grading-form .cg-billing-details .shipping-details').hide();
$('body').on('change', '#check_shipping_details', function(){
if($(this).is(":checked")){
$('#card-grading-form .cg-billing-details .shipping-details').slideDown();
}else{
$('#card-grading-form .cg-billing-details .shipping-details').slideUp();
}});
var form=$("#card-grading-form");
form.validate({
errorPlacement: function errorPlacement(error, element){
element.closest('.form-group').find('.error-message').append(error);
},
rules: {
password: {
required: true,
minlength: 6
},
username: {
required: true,
},
r_password: {
required: true,
minlength: 8
},
r_username: {
required: true,
},
r_email: {
required: true,
},
r_cpassword: {
equalTo: "#r_password"
},
payment_method: {
required: true,
},
card_number: {
required: true,
},
card_name: {
required: true,
},
card_expiry: {
required: true,
date: true,
dateFormat: 'MM-YYYY'
},
card_cvv: {
required: true,
},
billing_postcode: {
required: true,
maxlength: 4
},
shipping_postcode: {
required: true,
maxlength: 4
}},
messages: {
card_number: {
required: "Please enter your card number",
},
card_name: {
required: "Please enter card name...",
},
card_expiry: {
required: "Please enter the card expiry date...",
},
card_cvv: {
required: "Please enter the CVV...",
},
}});
var $adminFeeInput=$('#order_admin_fee');
var $dataEntryFeeInput=$('#order_data_entry_fee');
var slbdRetailAdminFee=$adminFeeInput.length ? (parseFloat($adminFeeInput.val())||0):0;
var slbdRetailDataEntryFee=$dataEntryFeeInput.length ? (parseFloat($dataEntryFeeInput.val())||0):0;
function slbdToggleQsField(isVendor, updateToggle){
var $qsWrap=$('.internal-qs-wrap');
if(isVendor){
$qsWrap.removeClass('d-none').show();
}else{
$qsWrap.addClass('d-none').hide();
$('#qs_entry_id').val('');
}
$('#ao-selected-is-vendor').val(isVendor ? 'true':'false');
if(updateToggle!==false){
$('#ao_force_partner_pricing').prop('checked', isVendor);
}}
function slbdUpdateServicePrice($input, price, isVendor){
var safePrice=Number(price);
if(Number.isNaN(safePrice)){
return;
}
$input.attr('data-price', safePrice).data('price', safePrice);
var $item=$input.closest('li').nextAll('.service-item').first();
var $strong=$item.find('.price strong');
if($strong.length){
$strong.text('A$ ' + safePrice.toFixed(2));
}
var $priceWrap=$item.find('.price');
if(isVendor){
if($priceWrap.find('.slbd-partner-badge').length===0){
$priceWrap.append(' <span class="badge bg-dark ms-2 slbd-partner-badge">Partner rate</span>');
}}else{
$priceWrap.find('.slbd-partner-badge').remove();
}
if($input.is(':checked')){
var optionName=$input.data('price-option-name')||'';
var retailValue=parseFloat($input.data('retail-price'));
if(Number.isNaN(retailValue)){
retailValue=safePrice;
}
var $preview=$input.closest('.grading-service').find('.service-preview');
if($preview.length){
var $previewPrice=$preview.find('.price');
if($previewPrice.length){
var suffix='';
if(!optionName){
var existing=$previewPrice.text();
var parts=existing.split('AUD /');
if(parts.length > 1){
suffix=parts[1].trim();
}}
if(optionName){
$previewPrice.text('$' + safePrice.toFixed(2) + ' AUD / ' + optionName);
}else if(suffix){
$previewPrice.text('$' + safePrice.toFixed(2) + ' AUD / ' + suffix);
}else{
$previewPrice.text('$' + safePrice.toFixed(2) + ' AUD');
}}
var $badge=$preview.find('.slbd-partner-discount');
if(isVendor){
var discountAmount=retailValue - safePrice;
if(discountAmount > 0.005){
var badgeText='Partner discount applied · A$' + discountAmount.toFixed(2) + ' off';
if($badge.length){
$badge.text(badgeText);
}else{
$('<div class="slbd-partner-discount badge bg-success mt-2">' + badgeText + '</div>')
.appendTo($preview);
}}else if($badge.length){
$badge.remove();
}}else if($badge.length){
$badge.remove();
}}
}}
function slbdResetServicePrices(){
$('.card-grading-service').each(function (){
var $input=$(this);
var retail=parseFloat($input.data('retail-price'));
if(Number.isNaN(retail)){
retail=parseFloat($input.data('price'))||0;
}
slbdUpdateServicePrice($input, retail, false);
});
if($adminFeeInput.length){
$adminFeeInput.val(slbdRetailAdminFee);
}
if($dataEntryFeeInput.length){
$dataEntryFeeInput.val(slbdRetailDataEntryFee);
}
$('.card-grading-service:checked').trigger('change');
}
var slbdVmPriceRetry=0;
function slbdApplyVendorPrices(userId, force){
var debug=false;
if(typeof window!=='undefined'){
debug = !!(window.slbdVmDebug
|| (window.top&&window.top.slbdVmDebug)
|| (window.parent&&window.parent.slbdVmDebug));
}
var forceVendor = !!force;
var services=[];
$('.card-grading-service').each(function (){
var $input=$(this);
var key=$input.data('service-key');
var serviceId=parseInt($input.val(), 10)||0;
if(!key){
key='';
}
var retail=parseFloat($input.data('retail-price'));
if(Number.isNaN(retail)){
retail=parseFloat($input.data('price'))||0;
}
services.push({ id: serviceId, key: key, retail: retail });
});
if(!services.length){
if(debug){
console.log('[SLBD VM] apply prices skipped (no services yet)', {
userId: userId,
forceVendor: forceVendor
});
}
if(slbdVmPriceRetry < 5){
slbdVmPriceRetry +=1;
setTimeout(function (){
slbdApplyVendorPrices(userId, forceVendor);
}, 300);
}
return;
}
slbdVmPriceRetry=0;
if(debug){
console.log('[SLBD VM] apply prices', {
userId: userId,
forceVendor: forceVendor,
services: services
});
}
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: {
action: 'slbd_vm_get_vendor_prices',
user_id: userId,
services: services
},
success: function (resp){
if(!resp||!resp.success||!resp.data){
if(!forceVendor){
slbdResetServicePrices();
slbdToggleQsField(false, true);
}
if(debug){
console.log('[SLBD VM] pricing response invalid', resp);
}
return;
}
var isVendor = !!resp.data.is_vendor;
if(typeof window!=='undefined'){
window.slbdVmLastPrices=resp.data;
}
if(!isVendor&&!forceVendor){
slbdResetServicePrices();
slbdToggleQsField(false, true);
return;
}
var prices=resp.data.prices||{};
var pricesById=resp.data.prices_by_id||{};
if(debug){
console.log('[SLBD VM] pricing response', {
isVendor: isVendor,
prices: prices,
pricesById: pricesById,
fees: resp.data.fees||{}});
}
$('.card-grading-service').each(function (){
var $input=$(this);
var key=$input.data('service-key');
var serviceId=parseInt($input.val(), 10)||0;
if(serviceId&&pricesById[serviceId]!==undefined){
slbdUpdateServicePrice($input, parseFloat(pricesById[serviceId]), true);
return;
}
if(key&&prices[key]!==undefined){
slbdUpdateServicePrice($input, parseFloat(prices[key]), true);
}});
if(resp.data.fees){
if($adminFeeInput.length&&resp.data.fees.handling_fee!==undefined){
$adminFeeInput.val(parseFloat(resp.data.fees.handling_fee)||0);
}
if($dataEntryFeeInput.length&&resp.data.fees.data_entry_fee!==undefined){
$dataEntryFeeInput.val(parseFloat(resp.data.fees.data_entry_fee)||0);
}}
slbdToggleQsField(true, !forceVendor);
$('.card-grading-service:checked').trigger('change');
}});
}
if(typeof window!=='undefined'){
window.slbdApplyVendorPrices=slbdApplyVendorPrices;
try {
if(window.top&&window.top!==window){
window.top.slbdApplyVendorPrices=slbdApplyVendorPrices;
}} catch (err){}
try {
if(window.parent&&window.parent!==window){
window.parent.slbdApplyVendorPrices=slbdApplyVendorPrices;
}} catch (err){}
if(new URLSearchParams(window.location.search).get('vm_debug')==='1'){
window.slbdVmDebug=true;
try {
if(window.top&&window.top!==window){
window.top.slbdVmDebug=true;
}} catch (err){}
try {
if(window.parent&&window.parent!==window){
window.parent.slbdVmDebug=true;
}} catch (err){}}
}
slbdWhenSelect2Ready(function (){
var $aoUserSelect=$('#ao_user_select');
if(!$aoUserSelect.length||$aoUserSelect.hasClass('select2-hidden-accessible')){
return;
}
$aoUserSelect.select2({
placeholder: 'Search for a user...',
minimumInputLength: 4,
ajax: {
url: ajax_object.ajax_url,
type: 'POST',
dataType: 'json',
delay: 250,
data: function (params){
return {
action: 'fetch_users',
search: params.term
};},
processResults: function (data){
return {
results: $.map(data, function (item){
return {
id: item.id,
text: item.text
};})
};},
cache: true
}});
});
$('#ao_user_select').on('select2:select', function (e){
var selectedUserId=e.params.data.id;
var userText=$(this).find('option:selected').text();
$('#user_id').val(selectedUserId);
console.log('Hidden user_id updated to:', $('#user_id').val());
$('#card-grading-form .title .chosen-user').html(`${userText} (${selectedUserId})`);
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: {
action: 'fetch_users',
user_id: selectedUserId,
},
success: function (response){
if(response){
console.log('Response received:', response);
var isVendorSelected=response.is_vendor&&parseInt(response.is_vendor, 10)===1;
if(window.slbdVmDebug){
console.log('[SLBD VM] selected user vendor flag', response.is_vendor);
}
slbdToggleQsField(isVendorSelected, true);
if(!isVendorSelected){
slbdResetServicePrices();
}else{
slbdApplyVendorPrices(
selectedUserId,
isVendorSelected||$('#ao_force_partner_pricing').is(':checked')
);
setTimeout(function (){
slbdApplyVendorPrices(
selectedUserId,
isVendorSelected||$('#ao_force_partner_pricing').is(':checked')
);
}, 300);
}
$('input[name="billing_address_1"]').val(response.billing.address_1||'');
$('input[name="billing_address_2"]').val(response.billing.address_2||'');
$('input[name="billing_city"]').val(response.billing.city||'');
$('select[name="billing_state"]').val(response.billing.state||'').trigger('change');
$('input[name="billing_postcode"]').val(response.billing.postcode||'');
$('input[name="billing_country"]').val(response.billing.country||'');
$('input[name="shipping_address_1"]').val(response.shipping.address_1||'');
$('input[name="shipping_address_2"]').val(response.shipping.address_2||'');
$('input[name="shipping_city"]').val(response.shipping.city||'');
$('select[name="shipping_state"]').val(response.shipping.state||'').trigger('change');
$('input[name="shipping_postcode"]').val(response.shipping.postcode||'');
$('input[name="shipping_country"]').val(response.shipping.country||'');
$('#open_orders').empty().append('<option selected disabled>Select Order</option>');
if(response.open_orders&&Array.isArray(response.open_orders)&&response.open_orders.length > 0){
console.log("Open Orders Array:", response.open_orders);
$('#open_orders').empty().append('<option selected disabled>Select Order</option>');
response.open_orders.forEach(function (order){
console.log("Processing Order:", order);
const qty=order.total_item_qty||'0';
const combinedQty=order.combined_qty||'0';
const companyId=order.company_title||'Unknown Company ID';
const serviceId=order.service_title||'Unknown Service ID';
$('#open_orders').append(`<option value="${order.id}_${qty}">
00${order.id} - Company: ${companyId} - Service: ${serviceId} (${qty})
</option>`
);
});
}else{
console.info("No open orders available for selected user:", response.open_orders);
$('#open_orders').empty().append('<option disabled>No open orders available</option>');
}
loaded_temporary_data=response.current_user_cards||null;
clear_temp_item_data();
var resolvedTempItemType=cg_resolve_temp_item_type(loaded_temporary_data, cg_get_temp_item_type());
cg_set_item_type_selection(resolvedTempItemType);
$('#order_item_type').val(resolvedTempItemType);
setTimeout(function(){
fetchTempItemsForSelectedUser(resolvedTempItemType);
}, 0);
var billingCountry=response.billing.country||'AU';
updateShippingOptions(billingCountry);
}else{
console.error("No response received or failed to fetch user data.");
}},
error: function (error){
console.error("Error fetching user data:", error);
},
});
});
if(pathname=='/submit-card/'){
const ocToken=new URLSearchParams(window.location.search).get('oc')||'';
if(ocToken&&window.SLBD_OC&&SLBD_OC.rest_root){
const prefillRoots=[];
if(SLBD_OC.rest_root) prefillRoots.push(SLBD_OC.rest_root);
if(SLBD_OC.draft_rest_root) prefillRoots.push(SLBD_OC.draft_rest_root);
function fetchPrefillData(){
let lastError=null;
return prefillRoots.reduce(function (promise, root){
return promise.catch(function (){
const prefillUrl=root + '/prefill?token=' + encodeURIComponent(ocToken);
return fetch(prefillUrl, { headers: { 'X-WP-Nonce': SLBD_OC.nonce }})
.then(function (res){
if(!res.ok){
return res.json().catch(function (){ return {};}).then(function (payload){
const message=payload&&payload.message ? payload.message:('Prefill request failed (' + res.status + ')');
throw new Error(message);
});
}
return res.json();
})
.catch(function (err){
lastError=err;
throw err;
});
});
}, Promise.reject(new Error('No prefill roots configured'))).catch(function (){
throw lastError||new Error('Order prefill failed');
});
}
fetchPrefillData()
.then(function (data){
if(!data||data.entry_id===undefined) return;
function selectUserById(userId, label){
if(!userId) return;
const $sel=$('#ao_user_select');
if(!$sel.length) return;
const text=label||('User #' + userId);
const option=new Option(text, userId, true, true);
$sel.append(option).trigger('change');
$sel.trigger({
type: 'select2:select',
params: { data: { id: userId, text: text }}
});
}
function selectUserByEmail(email){
if(!email) return;
$.post(ajax_object.ajax_url, {
action: 'fetch_users',
search: email
}, function (list){
if(Array.isArray(list)&&list.length){
selectUserById(list[0].id, list[0].text);
}}, 'json');
}
function normalizePrefillLabel(value){
return String(value||'')
.toLowerCase()
.replace(/\s*\([^)]*\)\s*/g, ' ')
.replace(/[^a-z0-9]+/g, ' ')
.trim();
}
function selectCompanyService(companyId, serviceId, serviceTitle, companyTitle){
if(companyId){
const $company=$('.card-grading-company[value="' + companyId + '"]');
if($company.length){
$company.prop('checked', true).trigger('change');
}}else if(companyTitle){
const companyNorm=normalizePrefillLabel(companyTitle);
const $company=$('.card-grading-company').filter(function (){
const title=$(this).data('grading-company')||$(this).attr('data-grading-company')||'';
return normalizePrefillLabel(title)===companyNorm;
}).first();
if($company.length){
$company.prop('checked', true).trigger('change');
}}
if(serviceId||serviceTitle){
let tries=0;
const timer=setInterval(function (){
let $svc=serviceId ? $('.card-grading-service[value="' + serviceId + '"]'):$();
if(!$svc.length&&serviceTitle){
const norm=normalizePrefillLabel(serviceTitle);
$svc=$('.card-grading-service').filter(function (){
const title=$(this).data('title')||$(this).attr('data-title')||'';
return normalizePrefillLabel(title)===norm;
}).first();
}
if($svc.length){
$svc.prop('checked', true).trigger('change');
clearInterval(timer);
}else if(++tries >=40){
clearInterval(timer);
}}, 300);
}}
function readBilling(){
return {
line1: String($('input[name="billing_address_1"]').val()||'').trim(),
line2: String($('input[name="billing_address_2"]').val()||'').trim(),
city: String($('input[name="billing_city"]').val()||'').trim(),
state: String($('#billing_state').val()||'').trim(),
postcode: String($('input[name="billing_postcode"]').val()||'').trim(),
country: String($('#billing_country').val()||'').trim(),
};}
function writeBilling(addr){
if(!addr) return;
const normalizeCountry=function (val){
const raw=String(val||'').trim();
if(!raw) return '';
const up=raw.toUpperCase();
if(up==='AU'||up==='AUS'||raw.toLowerCase()==='australia') return 'AU';
if(up==='NZ'||raw.toLowerCase()==='new zealand') return 'NZ';
return raw;
};
$('input[name="billing_address_1"]').val(addr.line1||'');
$('input[name="billing_address_2"]').val(addr.line2||'');
$('input[name="billing_city"]').val(addr.city||'');
$('#billing_state').val(addr.state||'').trigger('change');
$('input[name="billing_postcode"]').val(addr.postcode||'');
const country=normalizeCountry(addr.country)||'AU';
$('#billing_country').val(country).trigger('change');
}
function normalizeAddress(addr){
if(!addr) return '';
return [
addr.line1||'',
addr.line2||'',
addr.city||'',
addr.state||'',
addr.postcode||'',
addr.country||''
].map(function (v){ return String(v).trim().toLowerCase(); }).join('|');
}
function applyBillingPrefill(addr){
const current=readBilling();
const hasCurrent=Object.values(current).some(function (v){ return v!==''; });
const targetKey=normalizeAddress(addr);
if(!targetKey) return false;
if(!hasCurrent){
writeBilling(addr);
return true;
}
const currentKey=normalizeAddress(current);
if(currentKey!==targetKey){
writeBilling(addr);
return true;
}
return false;
}
function scheduleBillingPrefill(addr){
if(!addr) return;
if(!addr.country) addr.country='AU';
let tries=0;
const timer=setInterval(function (){
const applied=applyBillingPrefill(addr);
if(applied||++tries >=20){
clearInterval(timer);
setTimeout(function (){
const raw=String(addr.country||'').trim();
const upper=raw.toUpperCase();
let country=raw||'AU';
if(upper==='AU'||upper==='AUS'||raw.toLowerCase()==='australia') country='AU';
if(upper==='NZ'||raw.toLowerCase()==='new zealand') country='NZ';
$('#billing_country').val(country||'AU').trigger('change');
}, 200);
}}, 400);
}
function scheduleBillingCountryDefault(){
let tries=0;
const timer=setInterval(function (){
const $country=$('#billing_country');
if(!$country.length){
if(++tries >=20) clearInterval(timer);
return;
}
if(!$country.find('option[value="AU"]').length){
if(++tries >=20) clearInterval(timer);
return;
}
const current=String($country.val()||'').trim();
if(!current){
$country.val('AU').trigger('change');
}
clearInterval(timer);
}, 300);
}
function scheduleShippingPrefill(prefill){
if(!prefill) return;
const inboundRaw=String(prefill.shipping_to_us||'').trim();
let returnOpt=String(prefill.return_shipping_option||'').trim();
const inboundIns=parseInt(prefill.inbound_insurance, 10) ? true:false;
const inboundInsVal=parseInt(prefill.inbound_insurance_value, 10)||0;
const outboundIns=parseInt(prefill.outbound_insurance, 10) ? true:false;
const outboundInsVal=parseInt(prefill.outbound_insurance_value, 10)||0;
function normalizeShippingText(value){
return String(value||'')
.trim()
.toLowerCase()
.replace(/[_-]+/g, ' ')
.replace(/\s+/g, ' ');
}
function looksLikePickupOrNoShipping(){
const parts=[
inboundRaw,
returnOpt,
prefill.shipping_method,
prefill.shipping,
prefill.ship_txt,
prefill.ship_val,
prefill.ship_required
].map(normalizeShippingText).filter(Boolean);
if(!parts.length) return true;
return parts.some(function (part){
return part==='no' ||
part==='none' ||
part==='no shipping' ||
part==='not required' ||
part==='pickup' ||
part==='pick up' ||
part.indexOf('pickup')!==-1 ||
part.indexOf('pick up')!==-1;
});
}
function isPickupOrNoShippingValue(value){
const normalized=normalizeShippingText(value);
return normalized==='no' ||
normalized==='none' ||
normalized==='no shipping' ||
normalized==='not required' ||
normalized==='pickup' ||
normalized==='pick up' ||
normalized.indexOf('pickup')!==-1 ||
normalized.indexOf('pick up')!==-1;
}
let inbound=inboundRaw;
if(!inbound){
if(inboundIns){
inbound='prepaid_label';
}else if(parseInt(prefill.form_id, 10)===36){
inbound='ship_on_your_own';
}}
if(parseInt(prefill.form_id, 10)===46&&looksLikePickupOrNoShipping()){
if(!inbound) inbound='drop_off';
if(!returnOpt||isPickupOrNoShippingValue(returnOpt)) returnOpt='PICK_UP';
}
let tries=0;
const timer=setInterval(function (){
const inboundReady = !inbound||$('input[name="shipping_to_us"][value="' + inbound + '"]').length;
const returnReady = !returnOpt||$('input[name="return_shipping_option"][value="' + returnOpt + '"]').length;
if((!inboundReady||!returnReady)&&++tries < 20) return;
clearInterval(timer);
if(inbound&&!$('input[name="shipping_to_us"]:checked').length){
const $in=$('input[name="shipping_to_us"][value="' + inbound + '"]');
if($in.length) $in.prop('checked', true).trigger('change');
}
if(returnOpt&&!$('input[name="return_shipping_option"]:checked').length){
const $out=$('input[name="return_shipping_option"][value="' + returnOpt + '"]');
if($out.length) $out.prop('checked', true).trigger('change');
}
if(inboundIns&&inbound==='prepaid_label'){
$('#inbound_insurance').prop('checked', true).trigger('change');
if(inboundInsVal){
$('#inbound_insurance_value').val(inboundInsVal).trigger('input');
}}
const outboundAllowed=returnOpt&&returnOpt!=='PICK_UP'&&returnOpt!=='combine_shipping';
if(outboundIns&&outboundAllowed){
$('#outbound_insurance').prop('checked', true).trigger('change');
if(outboundInsVal){
$('#outbound_insurance_value').val(outboundInsVal).trigger('input');
}}
if(typeof window.startShippingRecalc==='function'){
setTimeout(function (){ window.startShippingRecalc(); }, 400);
}}, 350);
}
function schedulePaymentPrefill(method, formId){
const prefer=(parseInt(formId, 10)===36) ? 'gform':String(method||'').trim();
const pm=String(prefer||'').trim();
if(!pm) return;
let tries=0;
const timer=setInterval(function (){
const $opt=$('input[name="payment_method"][value="' + pm + '"]');
if(!$opt.length){
if(++tries >=20) clearInterval(timer);
return;
}
clearInterval(timer);
$opt.prop('checked', true).trigger('change');
$('#order_payment_method').val(pm);
}, 300);
}
function scheduleDisclaimerCheck(forceChecked){
if(!forceChecked) return;
let tries=0;
const timer=setInterval(function (){
const $disclaimer=$('#disclaimer');
if(!$disclaimer.length){
if(++tries >=20) clearInterval(timer);
return;
}
$disclaimer.prop('checked', true).trigger('change');
clearInterval(timer);
}, 300);
}
function scheduleCardSaverPrefill(qty){
const value=parseInt(qty, 10)||0;
if(!value) return;
let tries=0;
const timer=setInterval(function (){
const $input=$('#card_saver_qty');
if(!$input.length){
if(++tries >=40) clearInterval(timer);
return;
}
$input.val(value).trigger('change');
clearInterval(timer);
}, 300);
}
function normalizeCardCleanDefault(value){
if(value===true||value===1||value==='1') return '1';
if(value===false||value===0||value==='0') return '0';
const str=String(value||'').toLowerCase();
if(str==='') return '0';
if(str.indexOf('yes')!==-1) return '1';
if(str.indexOf('no')!==-1) return '0';
return '0';
}
function applyCardCleanDefault(value){
const cleanDefault=normalizeCardCleanDefault(value);
window.SLBD_OC_PREFILL=window.SLBD_OC_PREFILL||{};
window.SLBD_OC_PREFILL.card_clean_default=cleanDefault;
const $selects=$('select[name$="[card_clean]"], select[name="card_clean"]');
if($selects.length){
$selects.val(cleanDefault).trigger('change').trigger('input');
}
const $hidden=$('input[name="card_clean"]');
if($hidden.length){
$hidden.val(cleanDefault);
}}
function normalizeSlabProtectionDefault(value){
if(value===true||value===1||value==='1') return '1';
if(value===false||value===0||value==='0') return '0';
const str=String(value||'').toLowerCase();
if(str==='') return '0';
if(str.indexOf('yes')!==-1) return '1';
if(str.indexOf('no')!==-1) return '0';
return '0';
}
function applyAddOnPrefill(flagKey, addOnId, labelRegex){
const want=(window.SLBD_OC_PREFILL&&window.SLBD_OC_PREFILL[flagKey]==='1');
if(!want) return;
let $target=addOnId ? $('.card-grading-add-ons[data-add-on-id="' + addOnId + '"]').first():$();
if(!$target.length&&labelRegex){
$target=$('.card-grading-add-ons').filter(function (){
const label=$(this).closest('li').find('label').text()||'';
return labelRegex.test(label);
}).first();
}
if($target.length){
if(!$target.data('waschecked')&&!$target.is(':checked')){
$target.trigger('click');
}}
}
function normalizeAddOnIds(ids){
if(!Array.isArray(ids)) return [];
return ids.map((id)=> String(id||'').replace(/[^0-9]/g, '')).filter(Boolean);
}
function parseSelectedAddOnIdsFromField(){
const raw=String($('#order_add_ons').val()||'').trim();
if(!raw) return [];
return raw
.split(',')
.map((id)=> String(id||'').replace(/[^0-9]/g, ''))
.filter(Boolean);
}
function applyAddOnSelections(){
const prefill=window.SLBD_OC_PREFILL||{};
const options=prefill.add_on_options||{};
const normalizedOptions={};
const ids=new Set();
parseSelectedAddOnIdsFromField().forEach((id)=> ids.add(id));
normalizeAddOnIds(prefill.add_on_ids).forEach((id)=> ids.add(id));
Object.keys(options||{}).forEach((id)=> {
const normalized=String(id||'').replace(/[^0-9]/g, '');
if(!normalized) return;
ids.add(normalized);
normalizedOptions[normalized]=String(options[id] ?? '');
});
ids.forEach((id)=> {
const $target=$('.card-grading-add-ons[data-add-on-id="' + id + '"]').first();
if($target.length){
if(!$target.data('waschecked')&&!$target.is(':checked')){
$target.trigger('click');
}}
if(normalizedOptions[id]!==undefined){
const val=normalizedOptions[id];
const $select=$('#addon_options_' + id);
if($select.length){
if(String($select.val()||'')!==val){
$select.val(val).trigger('change').trigger('input');
}}
}});
}
window.slbdApplyAddOnPrefills=function (){
applyAddOnSelections();
};
scheduleBillingCountryDefault();
window.SLBD_OC_PREFILL={
draft_id: data.draft_id||'',
token: data.token||'',
entry_id: data.entry_id||'',
form_id: data.form_id||'',
item_type: data.item_type||'',
card_clean_default: normalizeCardCleanDefault(data.card_clean_default),
slab_protection_default: normalizeSlabProtectionDefault(data.slab_protection_default),
priority_default: normalizeSlabProtectionDefault(data.priority_default),
luxury_default: normalizeSlabProtectionDefault(data.luxury_default),
add_on_ids: data.add_on_ids||[],
add_on_options: data.add_on_options||{}};
if(data.item_type){
const itemType=cg_normalize_temp_item_type(data.item_type);
cg_set_item_type_selection(itemType);
$('#order_item_type').val(itemType);
}
if(data.user_id){
selectUserById(data.user_id, data.user_label||data.user_email);
}else if(data.user_email){
selectUserByEmail(data.user_email);
}
if(data.company_id||data.company_title||data.service_id||data.service_title){
selectCompanyService(data.company_id, data.service_id, data.service_title, data.company_title);
}
if(data.qty&&data.qty > 0){
$('#order_card_qty').val(data.qty).trigger('change');
}
if(data.billing){
scheduleBillingPrefill(data.billing);
}
scheduleShippingPrefill(data);
schedulePaymentPrefill(data.payment_method, data.form_id);
scheduleDisclaimerCheck(data.force_disclaimer);
scheduleCardSaverPrefill(data.card_saver_qty);
applyCardCleanDefault(data.card_clean_default);
window.slbdApplyAddOnPrefills();
})
.catch(function (err){
console.log('Order prefill failed', err);
});
}}
$('#ao_force_partner_pricing').on('change', function (){
var isVendor=$(this).is(':checked');
slbdToggleQsField(isVendor, false);
var userId=parseInt($('#user_id').val(), 10)||0;
if(!userId){
return;
}
slbdApplyVendorPrices(userId, isVendor);
});
function updateShippingOptions(billingCountry){
billingCountry=billingCountry.toUpperCase();
if(billingCountry==='AU'||billingCountry==='AUSTRALIA'){
$('#domestic-shipping-options').show();
$('#international-shipping-options').hide();
}else{
$('#domestic-shipping-options').hide();
$('#international-shipping-options').show();
}
$('input[name="aust_post_option"]').prop('checked', false);
}
function clear_temp_item_data(){
$('.cg-card-list .accordion .cg-card-item').remove();
$('.cg-comic-list .accordion .cg-comic-item').remove();
$('#order_card_qty').val(0);
$('#order_card_clean_qty').val(0);
cg_sync_card_clean_consent_requirement(false);
$('.confirm-order tbody').empty();
$('.confirm-order-mobile .mobile-table').empty();
console.log("Temporary item data cleared.");
}
$('.card-grading-service').change(function(){
if($(this).is(':checked')){
var price=$(this).data('price');
var title=$(this).data('title');
var discount=$(this).data('discount');
var target_qty=$(this).data('target-qty');
$(this).closest('.form-group-wrap').find('.chosen').html(title + ' - $' + price + 'AUD');
$('#order_grading_service').val(price);
var card_qty=$('#order_card_qty').val();
var card_clean_qty=$('#order_card_clean_qty').val();
var service_price=$('#order_grading_service').val();
var discount=$('#order_discount').val(discount);
var target_qty=$('.card-grading-service[name="card_grading_service"]:checked').data('target-qty');
var new_discount=$('#order_discount').val();
update_order_summary(card_qty, service_price, new_discount, target_qty, card_clean_qty, 0, false);
$('.cg-comic-item').each(function(){
applyComicDeclaredValue($(this));
});
}});
$('.card-grading-add-ons').change(function(){
console.log("WE ARE IN ADD ONS FUNC");
if($(this).is(':checked')){
console.log("CHECKED WE ARE IN ADD ONS FUNC");
}});
jQuery(function ($){
function bindAddOnClicks (){
$('.card-grading-add-ons')
.off('click')
.on('click', function (){
const $radio=$(this);
const label_id=$radio.data('label-id');
const add_on_id=$radio.data('add-on-id');
const add_on_price=parseFloat($radio.data('price'))||0;
const add_on_price_option=$radio.data('price-option');
let   add_on_amount=0;
const card_qty=parseInt($('#order_card_qty').val(), 10)||0;
const card_clean_qty=parseInt($('#order_card_clean_qty').val(), 10)||0;
const service_price=parseFloat($('#order_grading_service').val())||0;
const target_qty=$('.card-grading-service[name="card_grading_service"]:checked')
.data('target-qty')||0;
const new_discount=parseFloat($('#order_discount').val())||0;
const current_add_on=parseFloat($('#order_add_on_amount').val())||0;
const $field=$('#order_add_ons');
const SEP=',';
const parseList=(v)=> {
if(v==null) return [];
if(Array.isArray(v)) v=v.join(SEP);
v=String(v).trim();
return v ? v.split(SEP).map(s=> s.trim()).filter(Boolean):[];
};
const stringifyList=(arr)=> arr.filter(Boolean).join(SEP);
const addId=(arr, id)=> (arr.includes(id) ? arr:[...arr, id]);
const removeId=(arr, id)=> arr.filter(x=> x!==id);
if($radio.data('waschecked')){
$radio.prop('checked', false).data('waschecked', false);
$('[id*=' + label_id + ']').text('Add');
if(current_add_on > 0){
add_on_amount=(add_on_price_option==='add-on-rate-per-card')
? -Math.abs(add_on_price * card_qty)
: -Math.abs(add_on_price);
}
$field.val(v=> {
const next=stringifyList(removeId(parseList(v), String(add_on_id)));
return next;
});
}else{
$radio.data('waschecked', true);
$('[id*=' + label_id + ']').text('Remove');
add_on_amount=(add_on_price_option==='add-on-rate-per-card')
? (add_on_price * card_qty)
: add_on_price;
$field.val(v=> {
const next=stringifyList(addId(parseList(v), String(add_on_id)));
return next;
});
}
update_order_summary(
card_qty,
service_price,
new_discount,
target_qty,
card_clean_qty,
add_on_amount,
true
);
});
}
function refreshAddOns (){
console.log("WE ARE IN refreshAddOns ");
const companyId=$('.card-grading-company:checked').val();
if(!companyId) return;
const qty =
parseInt($('#order_card_qty').val(), 10) ||
parseInt($('.chosen-qty').text(), 10) ||
0;
$('.the-add-ons').html('Getting add ons….');
$.post(ajax_object.ajax_url, {
action:    'get_add_on_services_by_company',
post_type: 'cg_add_ons',
cg_id:     companyId,
qty:       qty
}, function (html){
$('.the-add-ons').html(html);
bindAddOnClicks();
$('#order_add_on_amount').val(0);
update_order_summary(
parseInt($('#order_card_qty').val(), 10)||0,
parseFloat($('#order_grading_service').val())||0,
$('#order_discount').val()||0,
$('.card-grading-service[name="card_grading_service"]:checked').data('target-qty')||0,
parseInt($('#order_card_clean_qty').val(), 10)||0,
0,
false
);
if(typeof window.slbdApplyAddOnPrefills==='function'){
window.slbdApplyAddOnPrefills();
}});
}
$('.card-grading-company').on('change', function (){
if(!this.checked) return;
const $this=$(this);
const grading_company_id=$this.val();
const grading_company=$this.data('grading-company');
const user_role=$this.data('user-role');
const post_type=$this.data('post-type');
const vs=new URLSearchParams(window.location.search).get('vs')||'';
$this.closest('.form-group-wrap').find('.chosen').html(grading_company);
$('#order_add_on_amount').val(0);
$('#order_add_ons').val('');
$('.the-services').html('Getting services…');
$('#card-grading-form #loading2').addClass('isloading');
$.post(ajax_object.ajax_url, {
action:    'get_grading_services_by_company',
cg_id:     grading_company_id,
user_role: user_role,
post_type: post_type,
vs: vs
}, function (response){
$('#card-grading-form #loading2').removeClass('isloading');
$('.the-services').html(response);
$('.card-grading-service').off('change').on('change', function (){
if(!this.checked) return;
const $svc=$(this);
const price=parseFloat($svc.data('price'))||0;
const title=$svc.data('title')||'';
const discount=parseFloat($svc.data('discount'))||0;
const target=$svc.data('target-qty')||0;
$svc.closest('.form-group-wrap').find('.chosen').html(`${title} - $${price} AUD`);
$('#order_grading_service').val(price);
$('#order_discount').val(discount);
update_order_summary(
parseInt($('#order_card_qty').val(), 10)||0,
price, discount, target,
parseInt($('#order_card_clean_qty').val(), 10)||0,
0, false
);
$('.cg-comic-item').each(function (){
applyComicDeclaredValue($(this));
});
refreshAddOns();
});
var selectedUserId=parseInt($('#user_id').val(), 10)||0;
if(selectedUserId){
var forceVendor=$('#ao-selected-is-vendor').val()==='true'
|| $('#ao_force_partner_pricing').is(':checked');
slbdApplyVendorPrices(selectedUserId, forceVendor);
}
const $pre=$('.card-grading-service:checked');
if($pre.length) $pre.trigger('change');
refreshAddOns();
});
});
$('#order_card_qty')
.off('change input')
.on('change input', refreshAddOns);
if($('.card-grading-company:checked').length){
$('.card-grading-company:checked').trigger('change');
}});
console.log(repeaterVal);
$('body').on('click', '.cg-save-card-old', function(){
form.validate().settings.ignore=":disabled,:hidden";
repeaterVal=safeRepeaterVal($(".cg-card-list"));
var count=0;
var $this=$(this);
if($(this).closest('.cg-card-item').hasClass('active')){
count=$(this).closest('.cg-card-item').data('index');
console.log('this id is ' + count);
}else{
count=$('.cg-card-item').length - 1;
}
if(form.valid()){
var html;
var newrepeater=safeRepeaterVal($(".cg-card-list"));
var table;
var tableData=[];
var order_card_qty=0;
var merge_cards=repeaterVal.cards;
if($(this).hasClass('cookie-save-card')){
html='<ul class="" data-index="' + count + '">';
html +='<li>' + newrepeater.cookie[count].card_qty + '</li>';
html +='<li>' + newrepeater.cookie[count].card_year + '</li>';
html +='<li>' + newrepeater.cookie[count].card_manufacturer + '</li>';
html +='<li>' + newrepeater.cookie[count].card_set + '</li>';
html +='<li>' + newrepeater.cookie[count].card_number + '</li>';
html +='<li>' + newrepeater.cookie[count].card_name + '</li>';
html +='<li>' + newrepeater.cookie[count].card_variant + '</li>';
html +='<li>' + newrepeater.cookie[count].card_value + '</li>';
html +='<li><a class="edit" href="javascript:;">Edit</a> | <a data-index="' + count + '" class="delete delete-temp-data" href="javascript:;">Delete</a></li>';
html +='</ul>';
$(this).closest('.cg-card-item').find('.accordion-content').slideUp();
$(this).closest('.cg-card-item').find('.accordion-head').html(html);
$(this).closest('.cg-card-item').find('.accordion-head').attr('data-card-qty', newrepeater.cookie[count].card_qty);
$(this).closest('.cg-card-item').removeClass('unsave');
console.log('cookie-true');
var card_cookie_data=JSON.stringify(newrepeater);
setCookie('cards_js_cookie', '', -1);
setCookie('cards_js_cookie', card_cookie_data, 30);
}else{
var cards_new=newrepeater.cards;
if(newrepeater.cookie){
console.log('Cookies Baked...');
cards_new=newrepeater.cookie.concat(newrepeater.cards);
}
console.log(cards_new);
html='<ul class="" data-index="' + count + '">';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">QTY: </span>' + cards_new[count].card_qty + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Year: </span>' + cards_new[count].card_year + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Manufacturer: </span>' + cards_new[count].card_manufacturer + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Set: </span>' + cards_new[count].card_set + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Number: </span>' + cards_new[count].card_number + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Name: </span>' + cards_new[count].card_name + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Variant: </span>' + cards_new[count].card_variant + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Value: </span>' + cards_new[count].card_value + '</li>';
html +='<li><a class="edit" href="javascript:;">Edit</a> | <a data-index="' + count + '" data-repeater-delete class="delete delete-temp" href="javascript:;">Delete</a></li>';
html +='</ul>';
$(this).closest('.cg-card-item').find('.accordion-content').slideUp();
$(this).closest('.cg-card-item').find('.accordion-head').html(html);
$(this).closest('.cg-card-item').find('.accordion-head').attr('data-card-qty', cards_new[count].card_qty);
$(this).closest('.cg-card-item').removeClass('unsave');
if(newrepeater.cookie){
console.log('The System eating the cookies...');
var card_json=JSON.stringify(cards_new);
var json={
'cards': JSON.parse(card_json)
};
var card_cookie_data=JSON.stringify(json);
}else{
console.log('There is no cookies...');
var card_json=JSON.stringify(newrepeater.cards);
var json={
'cards': JSON.parse(card_json)
};
var card_cookie_data=JSON.stringify(json);
setCookie('cards_js_cookie', null, -1);
setCookie('cards_js_cookie', card_cookie_data, 30);
}}
}else{
return form.valid();
}
if(newrepeater.cookie){
if(merge_cards){
merge_cards=$.merge(newrepeater.cookie, newrepeater.cards);
}else{
merge_cards=newrepeater.cookie;
}}
var merge_card_json=JSON.stringify(merge_cards);
var merge_cards_array={
'cards': JSON.parse(merge_card_json)
};
var merge_cards_data=JSON.stringify(merge_cards_array);
setCookie('cards_js_cookie', merge_cards_data, -1);
setCookie('cards_js_cookie', merge_cards_data, 30);
$.each(merge_cards_array.cards, function(key, value){
table='<tr class="" id="confirm-card-item-' + key + '" data-index="' + key + '">';
table +='<td></td>';
table +='<td>' + value.card_qty + '</td>';
table +='<td>' + value.card_year + '</td>';
table +='<td>' + value.card_manufacturer + '</td>';
table +='<td>' + value.card_set + '</td>';
table +='<td>' + value.card_number + '</td>';
table +='<td>' + value.card_name + '</td>';
table +='<td>' + value.card_variant + '</td>';
table +='<td>' + value.card_value + '</td>';
table +='</tr>';
tableData.push(table);
order_card_qty +=Number(value.card_qty);
});
$('.confirm-order tbody').html(tableData);
$('#order_card_qty').val(order_card_qty);
var card_qty=$('#order_card_qty').val();
var service_price=$('#order_grading_service').val();
var discount=$('.card-grading-service[name="card_grading_service"]:checked').data('discount');
var target_qty=$('.card-grading-service[name="card_grading_service"]:checked').data('target-qty');
$('#order_discount').val(discount);
$('#order_target_qty').val(target_qty);
var new_discount=$('#order_discount').val();
var new_target_qty=$('#order_target_qty').val();
update_order_summary(card_qty, service_price, discount, target_qty);
});
$('body').on('click', '.cg-save-card', function(){
form.validate().settings.ignore=":disabled,:hidden";
repeaterVal=safeRepeaterVal($(".cg-card-list"));
var count=0;
var html;
var $this=$(this);
var table;
var tableData=[];
if($(this).closest('.cg-card-item').hasClass('active')){
count=$(this).closest('.cg-card-item').data('index');
console.log('this id is ', count);
}else{
count=$('.cg-card-item').length - 1;
}
var merge_cards=[];
var cards_new=safeRepeaterVal($(".cg-card-list"));
if(cards_new){
if(cards_new.cards&&cards_new.temp_data){
merge_cards=$.merge(cards_new.temp_data, cards_new.cards);
}else if(cards_new.temp_data){
merge_cards=cards_new.temp_data;
}else{
merge_cards=cards_new.cards;
}}
merge_cards=merge_cards;
if(form.valid()){
if($(this).hasClass('data-save-card')){
var $item=$(this).closest('.cg-card-item');
var currentData=cg_read_card_item_data($item);
var merge_cards=cg_collect_card_items_from_dom();
var normalized_cards=cg_normalize_card_items(merge_cards);
console.log('edited-card', currentData);
html='<ul class="" data-index="' + count + '">';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">QTY: </span>' + currentData.card_qty + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Year: </span>' + currentData.card_year + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Manufacturer: </span>' + currentData.card_manufacturer + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Set: </span>' + currentData.card_set + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Number: </span>' + currentData.card_number + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Name: </span>' + currentData.card_name + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Variant: </span>' + currentData.card_variant + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Value: </span>' + currentData.card_value + '</li>';
html +='<li><a class="edit" href="javascript:;">Edit</a> | <a data-index="' + count + '" class="delete delete-temp-data" href="javascript:;">Delete</a></li>';
html +='</ul>';
$(this).closest('.cg-card-item').find('.accordion-content').slideUp();
$(this).closest('.cg-card-item').find('.accordion-head').html(html);
$(this).closest('.cg-card-item').find('.accordion-head').attr('data-card-qty', currentData.card_qty);
$(this).closest('.cg-card-item').removeClass('unsave');
$('#repeater-add-trigger').removeClass('unsave');
cg_prepare_delete_links();
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: {
'action': 'save_temp_user_item',
'data': normalized_cards,
item_type: cg_get_temp_item_type(),
user_id: $('#user_id').val(),
},
beforeSend: function(){
},
success: function(response){
console.log(response);
}});
}else{
var $item=$(this).closest('.cg-card-item');
var remerge_cards=cg_collect_card_items_from_dom();
var currentData=cg_read_card_item_data($item);
console.log('remerge_cards', remerge_cards);
console.log('newlyadded', currentData);
html='<ul class="" data-index="' + count + '">';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">QTY: </span>' + currentData.card_qty + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Year: </span>' + currentData.card_year + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Manufacturer: </span>' + currentData.card_manufacturer + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Set: </span>' + currentData.card_set + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Number: </span>' + currentData.card_number + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Name: </span>' + currentData.card_name + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Variant: </span>' + currentData.card_variant + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Card Value: </span>' + currentData.card_value + '</li>';
html +='<li><a class="edit" href="javascript:;">Edit</a> | <a data-index="' + count + '" class="delete delete-temp-data" href="javascript:;">Delete</a></li>';
html +='</ul>';
$(this).closest('.cg-card-item').find('.accordion-content').slideUp();
$(this).closest('.cg-card-item').find('.accordion-head').html(html);
$(this).closest('.cg-card-item').find('.accordion-head').attr('data-card-qty', currentData.card_qty);
$(this).closest('.cg-card-item').removeClass('unsave');
var normalized_cards=cg_normalize_card_items(remerge_cards);
cg_prepare_delete_links();
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: {
'action': 'save_temp_user_item',
'data': normalized_cards,
item_type: cg_get_temp_item_type(),
user_id: $('#user_id').val(),
},
beforeSend: function(){
},
success: function(response){
console.log(response);
}});
}}else{
return form.valid();
}
var order_card_qty=0;
var order_card_clean_qty=0;
var order_card_clean_qty_count=0;
var final_remerge_cards=cg_collect_card_items_from_dom();
console.log('summary- ', final_remerge_cards, repeaterVal);
$.each(final_remerge_cards, function(key, value){
if(value.card_clean==1&&value.card_qty > 1){
order_card_clean_qty_count=value.card_qty;
}else{
order_card_clean_qty_count=value.card_clean;
}
table='<tr class="" id="confirm-card-item-' + key + '" data-index="' + key + '">';
table +='<td></td>';
table +='<td>' + value.card_qty + '</td>';
table +='<td>' + value.card_year + '</td>';
table +='<td>' + value.card_manufacturer + '</td>';
table +='<td>' + value.card_set + '</td>';
table +='<td>' + value.card_number + '</td>';
table +='<td>' + value.card_name + '</td>';
table +='<td>' + value.card_variant + '</td>';
table +='<td>' + value.card_value + '</td>';
table +='</tr>';
tableData.push(table);
order_card_qty +=Number(parseInt(value.card_qty));
order_card_clean_qty +=Number(parseInt(order_card_clean_qty_count));
});
$('.confirm-order tbody').html(tableData);
$('#order_card_qty').val(order_card_qty);
$('#order_card_clean_qty').val(order_card_clean_qty);
var card_qty=$('#order_card_qty').val();
var service_price=$('#order_grading_service').val();
var discount=$('.card-grading-service[name="card_grading_service"]:checked').data('discount');
var target_qty=$('.card-grading-service[name="card_grading_service"]:checked').data('target-qty');
var card_clean_qty=$('#order_card_clean_qty').val();
var add_on_amount=$('#order_add_on_amount').val();
$('#order_discount').val(discount);
$('#order_target_qty').val(target_qty);
var new_discount=$('#order_discount').val();
var new_target_qty=$('#order_target_qty').val();
$('#repeater-add-trigger').removeClass('unsave');
$('#repeater-add-trigger').prop('disabled', false);
$('#order_card_qty').val(card_qty).trigger('change');
$(this).closest('.form-group-wrap').find('.chosen-qty').html('Qty - ' + card_qty);
$('.card-grading-add-ons').each(function(){
$(this).prop('checked', false);
$(this).data('waschecked', false);
var label_id=$(this).data('label-id');
$('[id*='+label_id+']').text("Add");
});
$('#order_add_on_amount').val(0);
$('#order_add_ons').val('');
console.log('log:= ', card_qty + " price=" + service_price + " disconut-" + discount + " target=" + target_qty + " clean=" + card_clean_qty);
update_order_summary(card_qty, service_price, discount, target_qty, card_clean_qty, 0, false);
renderConfirmItemsNew();
});
$('body').on('click', '.cg-cancel-card', function(e){
var $this=$(this).closest('.cg-card-item');
if($this.hasClass('active')){
$this.find('.accordion-content').slideUp();
$this.removeClass('unsave');
$('#repeater-add-trigger').prop('disabled', false);
$('#repeater-add-trigger').removeClass('unsave');
}});
var allPanels=$('.accordion > .cg-card-item:not(.default-item) > .accordion-content').hide();
$('body').on('click', '.accordion > .cg-card-item > .accordion-head ul li > .edit', function(e){
e.preventDefault();
if($('.cg-card-item').hasClass('unsave')){
Swal.fire({
icon: 'error',
title: 'Oops...',
text: 'You have an unsaved item. Press save to complete your edit.',
});
return false;
}
$('#repeater-add-trigger').addClass('unsave');
$('.cg-card-item').removeClass('unsave');
$('.cg-card-item').addClass('active');
$(this).closest('.cg-card-item').addClass('unsave');
$('.accordion > .cg-card-item > .accordion-content').slideUp();
$(this).closest('.cg-card-item').find('.accordion-content').slideDown();
$(this).closest('.cg-card-item').addClass('active');
var max_value=$('.card-grading-service:checked').data('max-value');
var min_card_year=$('.card-grading-service:checked').data('min-card-year');
var max_card_year=$('.card-grading-service:checked').data('max-card-year');
$('.cg-card-item').each(function(){
$(this).find('[name*="card_year"]').attr('min', min_card_year);
$(this).find('[name*="card_year"]').attr('max', max_card_year);
$(this).find('[name*="card_year"]').attr('maxlength','4');
$(this).find('[name*="card_value"]').attr('max', max_value);
});
return false;
});
$('body').on('click', '.accordion > .cg-comic-item > .accordion-head ul li > .edit', function(e){
e.preventDefault();
if($('.cg-comic-item').hasClass('unsave')){
Swal.fire({
icon: 'error',
title: 'Oops...',
text: 'You have an unsaved item. Press save to complete your edit.',
});
return false;
}
$('#repeater-add-trigger').addClass('unsave');
$('.cg-comic-item').removeClass('unsave active');
$(this).closest('.cg-comic-item').addClass('unsave active');
$('.accordion > .cg-comic-item > .accordion-content').slideUp();
$(this).closest('.cg-comic-item').find('.accordion-content').slideDown();
return false;
});
$('body').on('click', '.delete-temp-data', function(e){
e.preventDefault();
e.stopImmediatePropagation();
e.stopPropagation();
console.log('deleting...');
if(confirm('Are you sure you want to delete this item?')){
var normalized_cards=cg_delete_card_item($(this).closest('.cg-card-item'));
console.log('delete Merging', normalized_cards);
console.log('delete USER ID', $('#user_id').val());
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: {
'action': 'save_temp_user_item',
'data': normalized_cards,
item_type: cg_get_temp_item_type(),
user_id: $('#user_id').val(),
},
beforeSend: function(){
$('.preload-form').show();
},
success: function(response){
$('.preload-form').hide();
console.log('save response ', response);
$('.accordion-content').slideUp();
}});
}
return false;
});
$('body').on('click', '.cg-delete-card', function(e){
e.preventDefault();
if(confirm('Are you sure you want to delete this item?')){
var normalized_cards=cg_delete_card_item($(this).closest('.cg-card-item'));
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: {
'action': 'save_temp_user_item',
'data': normalized_cards,
item_type: cg_get_temp_item_type(),
user_id: $('#user_id').val(),
},
beforeSend: function(){
$('.preload-form').show();
},
success: function(response){
$('.preload-form').hide();
console.log('save response ', response);
$('.accordion-content').slideUp();
}});
}});
function re_index(){
var ctr=0;
$('.cg-card-item[data-index]').each(function(){
$(this).attr('data-index', ctr);
$(this).data('index', ctr);
$(this).attr('id', 'confirm-delete-item-'+ctr);
$(this).find('.delete-temp-data').attr('data-index', ctr).data('index', ctr);
$(this).find('ul').attr('data-index', ctr).data('index', ctr);
ctr++;
});
}
var $comicCreate=$('#repeater-add-comic');
var hadComicCreate=$comicCreate.length&&$comicCreate.is('[data-repeater-create]');
if(hadComicCreate){
$comicCreate.removeAttr('data-repeater-create');
}
$('.cg-card-list').repeater({
initEmpty: true,
show: function(){
var $item=$(this);
var isComicItem=$item.hasClass('cg-comic-item');
var $items=isComicItem ? $('.cg-comic-item'):$('.cg-card-item');
if($items.filter('.unsave').length||$('#repeater-add-trigger').hasClass('unsave')){
Swal.fire({
icon: 'error',
title: 'Oops...',
text: 'You have an unsaved item. Press save before adding new one.',
});
return false;
}
var count=$items.filter('[data-index]').length;
var max_value=$('.card-grading-service:checked').data('max-value');
var min_card_year=$('.card-grading-service:checked').data('min-card-year');
var max_card_year=$('.card-grading-service:checked').data('max-card-year');
$item.attr('data-index', count);
$item.attr('id', 'confirm-delete-item-' + count);
$item.show().find('.accordion-content').slideDown();
setTimeout(function(){
var $target=$item.find('.accordion-content');
if($target.length){
$('html, body').animate({
scrollTop: $target.offset().top - 120
}, 250);
}}, 50);
if(!isComicItem){
$('.cg-card-item').each(function(){
$(this).find('.card-value-input').attr('max', max_value);
$(this).find('.card-value-input').val(max_value);
$(this).find('.card-year').attr('min', min_card_year);
$(this).find('.card-year').attr('max', max_card_year);
});
const cleanDefault=(window.SLBD_OC_PREFILL&&window.SLBD_OC_PREFILL.card_clean_default!==undefined)
? String(window.SLBD_OC_PREFILL.card_clean_default)
: '0';
const $cleanSelect=$item.find('select[name$="[card_clean]"], select[name="card_clean"]').first();
if($cleanSelect.length){
$cleanSelect.val(cleanDefault).trigger('change').trigger('input');
}
const $searchField=$item.find('.card_search');
if($searchField.length){
search_card_data($searchField);
}}else{
applyComicDeclaredValue($item);
}
$items.removeClass('added');
$item.addClass('added');
$item.addClass('active');
$item.addClass('unsave');
},
hide: function(deleteElement){
if($(this).hasClass('cg-comic-item')){
$(this).slideUp(deleteElement);
setTimeout(function(){
updateComicTotals();
renderConfirmItemsNew();
}, 0);
return;
}
var newrepeaterVal=safeRepeaterVal($(".cg-card-list"));
console.log('old', newrepeaterVal);
var merge_total_qty=0;
return false;
if(confirm('Are you sure you want to delete this item?')){
$('.preload-form').show();
if($('.cg-card-item').hasClass('unsave')){
Swal.fire({
icon: 'error',
title: 'Oops...',
text: 'You have an unsaved item. Press save before attempting your next action.',
preConfirm: function(){
$('.preload-form').hide();
}});
return false;
}
var newrepeaterVal=safeRepeaterVal($(".cg-card-list"));
console.log(deleteElement);
var current_card_qty=$('#order_card_qty').val();
var remove_card_qty=$(this).closest('.cg-card-item').find('.accordion-head').data('card-qty');
var card_qty=current_card_qty - remove_card_qty;
$('#order_card_qty').val(card_qty);
var merge_cards;
var merge_total_qty=0;
if(newrepeaterVal.cookie){
if(merge_cards){
merge_cards=$.merge(newrepeaterVal.cookie, newrepeaterVal.cards);
}else{
merge_cards=newrepeaterVal.cookie;
}}else{
merge_cards=newrepeaterVal.cards;
}
var merge_card_json=JSON.stringify(merge_cards);
var merge_cards_array={
'cards': JSON.parse(merge_card_json)
};
var merge_cards_data=JSON.stringify(merge_cards_array);
setCookie('cards_js_cookie', merge_cards_data, -1);
setCookie('cards_js_cookie', merge_cards_data, 30);
if(newrepeaterVal.cookie){
var removed=merge_cards_array.cards.splice(index, 1);
$.each(merge_cards_array.cards, function(key, value){
merge_total_qty +=Number(value.card_qty);
});
$('#order_card_qty').val(merge_total_qty);
}else{
var removed=newrepeaterVal.cards.splice(index, 1);
}
var index=$(this).find('.delete').data('index');
console.log('index-' + index);
setTimeout(function(){
$('.preload-form').hide();
$('#confirm-card-item-' + index).remove();
$(".cg-card-item").each(function(ind){
$(this).attr('data-index', ind);
$(this).attr('id', "confirm-delete-item-" + ind);
$(this).find('.delete').attr('data-index', ind);
});
$(".confirm-order tbody tr").each(function(i){
console.log(i);
$(this).attr('data-index', i);
$(this).attr('id', "confirm-card-item-" + i);
});
console.log(newrepeaterVal);
console.log(merge_total_qty);
var service_price=$('#order_grading_service').val();
var discount=$('#order_discount').val();
var target_qty=$('.card-grading-service[name="card_grading_service"]:checked').data('target-qty');
var new_card_qty=$('#order_card_qty').val();
if(new_card_qty >=target_qty){
$('#order_total_discount').val(0);
}
var new_target_qty=$('#order_target_qty').val();
update_order_summary(new_card_qty, service_price, discount, target_qty);
}, 1500);
}},
});
if(hadComicCreate){
$comicCreate.attr('data-repeater-create', '');
}
if($('.cg-comic-list').length){
cgComicRepeaterInstance=$('.cg-comic-list').repeater({
initEmpty: true,
show: function(){
var $item=$(this);
var $items=$('.cg-comic-item');
if(comicRestoreInProgress){
var restoreIndex=$('.cg-comic-list .accordion > .cg-comic-item').index($item);
$item.attr('data-index', restoreIndex);
$item.attr('id', 'confirm-delete-comic-' + restoreIndex);
$item.show();
return;
}
if($items.filter('.unsave').length||$('#repeater-add-trigger').hasClass('unsave')){
Swal.fire({
icon: 'error',
title: 'Oops...',
text: 'You have an unsaved item. Press save before adding new one.',
});
return false;
}
var count=$items.length - 1;
$item.attr('data-index', count);
$item.attr('id', 'confirm-delete-comic-' + count);
$item.show().find('.accordion-content').slideDown();
setTimeout(function(){
var $target=$item.find('.accordion-content');
if($target.length){
$('html, body').animate({
scrollTop: $target.offset().top - 120
}, 250);
}}, 50);
applyComicDeclaredValue($item);
$items.removeClass('added');
$item.addClass('added');
$item.addClass('active');
$item.addClass('unsave');
},
hide: function(deleteElement){
var $item=$(this);
$item.slideUp(function(){
deleteElement();
setTimeout(function(){
updateComicTotals();
renderConfirmItemsNew();
$('#repeater-add-trigger').removeClass('unsave').prop('disabled', false);
var normalized_comics=cg_collect_comic_items_from_dom();
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: {
'action': 'save_temp_user_item',
'data': normalized_comics,
item_type: cg_get_temp_item_type(),
user_id: $('#user_id').val(),
},
beforeSend: function(){
},
success: function(response){
console.log(response);
}});
}, 0);
});
}});
}
repeatersReady=true;
fetchTempItemsForSelectedUser();
window.shippingCalcPending=false;
window.shippingCalcError='';
let  inboundDone=false,
outboundDone=false,
inboundCost=0,
outboundCost=0;
$("#card-grading-form").accWizard({
autoButtons:          false,
scrollPadding:        50,
enableScrolling:      false,
start:                1,
mode:                 "wizard",
stepNumbers:          true,
autoButtonsNextClass: 'next btn',
autoButtonsPrevClass: 'prev btn-black btn',
beforeNextStep: function (currentStep){
const isAdmin=$('#ao-is-admin-user').val()==='true';
const step=isAdmin ? currentStep - 1:currentStep;
const hasLogin=$('#login_panel').length > 0;
const isVendor=($('#ao-is-vendor-user').val()==='true')||($('#ao-is-vendor-session').val()==='true');
if(step===1&&!$('input[name="order_item_type"]:checked').length){
Swal.fire({
icon:'error',
title:'Choose an item type',
text:'Please select an item type before continuing.'
});
return false;
}
if(step===2&&!$('input.card-grading-company:checked').length){
Swal.fire({ icon:'error', title:'Choose a company',
text:'Please select a grading company before continuing.' });
return false;
}
if(step===3&&!$('input.card-grading-service:checked').length){
Swal.fire({ icon:'error', title:'Choose a service',
text:'Please select a grading service before continuing.' });
return false;
}
form.validate().settings.ignore=':disabled,:hidden';
if(step===4){
const itemType=getItemType();
const isComic=cg_is_comic_item_type(itemType);
const $items=isComic ? $('.cg-comic-item'):$('.cg-card-item');
let hasAnyItems=false;
if(!$items.length){
Swal.fire({ icon:'error', title:'Oops…', text:'Please add an item.' });
return false;
}
if($items.hasClass('unsave')){
Swal.fire({ icon:'error', title:'Oops…', text:'You have an unsaved item. Press Save.' });
return false;
}
const min=isAdmin ? 1 :
($('input.card-grading-service[name="card_grading_service"]:checked')
.data('bus-rate-min-order')||0);
let qty=0;
if(isComic){
$items.each(function(){
const $item=$(this);
if(typeof window.cg_comic_item_has_data==='function'&&!window.cg_comic_item_has_data($item)){
return;
}
hasAnyItems=true;
const raw=(typeof window.cg_get_field_value==='function')
? window.cg_get_field_value($item, 'qty', '')
: $item.find('[name="qty"], [name$="[qty]"]').first().val();
const q=parseInt(raw, 10);
qty +=(isNaN(q)||q <=0) ? 1:q;
});
if(!hasAnyItems){
Swal.fire({ icon:'error', title:'Oops…', text:'Please add an item.' });
return false;
}
$('#order_card_qty').val(qty);
}else{
qty=parseInt($('#order_card_qty').val(), 10)||0;
}
if(qty < min){
const rem=min - qty;
Swal.fire({
icon:'error',
title:'Oops…',
text:`You need at least ${min} items. Add ${rem}${rem===1?' more item.':' more items.'}`
});
return false;
}}
if(hasLogin&&step===5&&$('#login_panel').hasClass('open')){
return form.valid();
}
const $shipStep=$('.cg-shipping-option').closest('.acc-wizard-step');
if($shipStep.hasClass('acc-wizard-active')){
if(!$('input[name="shipping_to_us"]:checked').length ||
!$('input[name="return_shipping_option"]:checked').length){
Swal.fire({ icon:'error', title:'Oops…',
text:'Please select both inbound and return shipping.' });
return false;
}
if(window.shippingCalcPending){
Swal.fire({
icon:'info',
title:'Calculating shipping…',
text:'Please wait a moment.',
allowOutsideClick:false,
showConfirmButton:false,
didOpen: ()=> Swal.showLoading()
});
return false;
}
if(window.shippingCalcError){
Swal.fire({
icon: 'error',
title: 'Shipping Quote Failed',
text: window.shippingCalcError
});
return false;
}}
const $payStep=$('.payment_method_wrap').closest('.acc-wizard-step');
if($payStep.hasClass('acc-wizard-active')||$('.payment_method_wrap').hasClass('open')){
if(window.shippingCalcPending){
Swal.fire({
icon:'info',
title:'Calculating shipping…',
text:'Please wait a moment.',
allowOutsideClick:false,
showConfirmButton:false,
didOpen: ()=> Swal.showLoading()
});
return false;
}
if(window.shippingCalcError){
Swal.fire({
icon: 'error',
title: 'Shipping Quote Failed',
text: window.shippingCalcError
});
return false;
}
$('input[name="stripeToken"]').remove();
const data=$('#card-grading-form').serializeFormJSON();
if(data.payment_method==='credit_card'){
return new Promise(function (resolve){
stripe.createToken(cardNumber).then(function (result){
if(result.error){
Swal.fire({ icon:'error', title:'Oops…', text: result.error.message });
return resolve(false);
}
if(typeof stripeTokenHandler==='function'){
stripeTokenHandler(result.token);
}else{
$('<input>', { type:'hidden', name:'stripeToken', value: result.token.id })
.appendTo('#card-grading-form');
}
return resolve(true);
});
});
}
return form.valid();
}
return form.valid();
}});
let calcTimer=null;
function scheduleShippingRecalc (){
clearTimeout(calcTimer);
calcTimer=setTimeout(startShippingRecalc, 300);
}
$('input[name="shipping_to_us"], input[name="return_shipping_option"]')
.on('change', scheduleShippingRecalc);
$('#inbound_insurance, #outbound_insurance')
.on('change', scheduleShippingRecalc);
$('#inbound_insurance_value, #outbound_insurance_value')
.on('input change blur', scheduleShippingRecalc);
function startShippingRecalc (){
let inboundDone=false, outboundDone=false;
let inboundCost=0,     outboundCost=0;
let inboundError='',   outboundError='';
window.shippingCalcError='';
var expressChecked =
$('input[name="shipping_to_us"]:checked').val()==='prepaid_label' &&
$('#prepaid_label_express').is(':checked');
$('#inbound_express_flag').val(expressChecked ? '1':'0');
if(!$('input[name="shipping_to_us"]:checked').length ||
!$('input[name="return_shipping_option"]:checked').length
){
return;
}
window.shippingCalcPending=true;
$('#shipping-spinner').show();
const qty=$('#order_card_qty').val();
const postCode=$('input[name="ship_to_other_address"]:checked').val()
? $('#shipping_postcode').val()
: $('#billing_postcode').val();
const country=$('input[name="ship_to_other_address"]:checked').val()
? $('#shipping_country').val()
: $('#billing_country').val();
if($('input[name="shipping_to_us"]:checked').val()==='prepaid_label'){
$.post(ajax_object.ajax_url, {
action:                   'calculate_inbound_shipping',
card_qty:                 qty,
post_code:                postCode,
country:                  country,
inbound_insurance:        $('#inbound_insurance').is(':checked') ? 1:0,
inbound_insurance_value:  parseInt($('#inbound_insurance_value').val(),10)||0,
inbound_express_flag:     $('#inbound_express_flag').val()||'0'
}, handleInbound, 'json').fail(function (jqXHR){
inboundError=getShippingErrorMessage(jqXHR, 'Unable to calculate inbound shipping right now.');
inboundDone=true;
maybeFinish();
});
}else{
handleInbound({ inbound_cost: 0 });
}
const returnOpt=$('input[name="return_shipping_option"]:checked').val();
const outData={
action:                   'calculate_outbound_shipping',
return_shipping_option:   returnOpt,
card_qty:                 qty,
post_code:                postCode,
country:                  country,
outbound_insurance:       $('#outbound_insurance').is(':checked') ? 1:0,
outbound_insurance_value: parseInt($('#outbound_insurance_value').val(),10)||0
};
if(returnOpt==='combine_shipping'){
outData.open_orders=$('#open_orders').val()||'';
}
$.post(ajax_object.ajax_url, outData, handleOutbound, 'json')
.fail(function (jqXHR){
outboundError=getShippingErrorMessage(jqXHR, 'Unable to calculate outbound shipping right now.');
outboundDone=true;
maybeFinish();
});
function handleInbound(resp){
if(resp&&resp.error){
inboundError=String(resp.error);
inboundDone=true;
maybeFinish();
return;
}
inboundCost=parseFloat(resp.inbound_cost)||0;
inboundDone=true;
maybeFinish();
}
function handleOutbound(resp){
if(resp.success&&resp.data&&resp.data.cost!==undefined){
outboundCost=parseFloat(resp.data.cost)||0;
if(resp.data.ins_cost!==undefined){
$('#order_outbound_ins_cost').val(parseFloat(resp.data.ins_cost).toFixed(2)
);
}
if(resp.data.ins_value!==undefined){
$('#order_outbound_ins_value').val(parseInt(resp.data.ins_value, 10)||0
);
}}else if(resp&&resp.success===false){
outboundError=getShippingErrorMessage(resp, 'Unable to calculate outbound shipping right now.');
}else if(resp&&resp.outbound_cost!==undefined){
outboundCost=parseFloat(resp.outbound_cost)||0;
}else{
outboundError=getShippingErrorMessage(resp, 'Unable to calculate outbound shipping right now.');
}
outboundDone=true;
maybeFinish();
}
function getShippingErrorMessage(resp, fallbackMessage){
if(resp&&resp.responseJSON&&resp.responseJSON.data&&resp.responseJSON.data.message){
return String(resp.responseJSON.data.message);
}
if(resp&&resp.data&&resp.data.message){
return String(resp.data.message);
}
if(resp&&resp.error){
return String(resp.error);
}
return fallbackMessage;
}
function maybeFinish(){
if(!inboundDone||!outboundDone) return;
window.shippingCalcPending=false;
$('#shipping-spinner').hide();
const calcError=outboundError||inboundError||'';
if(calcError){
window.shippingCalcError=calcError;
$('#display_total_shipping_cost').text('Error');
Swal.fire({
icon: 'error',
title: 'Shipping Quote Failed',
text: calcError
});
return;
}
window.shippingCalcError='';
const total=inboundCost + outboundCost;
$('#order_aust_post_shipping_cost').val(total.toFixed(2));
$('#order_aust_post_shipping_service').val(returnOpt);
$('#display_inbound_shipping_cost')
.text(`$${inboundCost.toFixed(2)}`);
$('#display_outbound_shipping_cost')
.text(`$${outboundCost.toFixed(2)}`);
$('#display_total_shipping_cost')
.text(`$${total.toFixed(2)}`);
setTimeout(()=> {
update_order_summary(
$('#order_card_qty').val(),
$('#order_grading_service').val(),
$('#order_discount').val(),
$('.card-grading-service[name="card_grading_service"]:checked')
.data('target-qty')||0,
$('#order_card_clean_qty').val(),
$('#order_add_on_amount').val()||0,
false
);
}, 50);
}}
window.startShippingRecalc=startShippingRecalc;
$(document).on('change', '#prepaid_label_express', function (){
startShippingRecalc();
});
$(document).on('change', 'input[name="shipping_to_us"]', function (){
startShippingRecalc();
});
$(document).on('change', 'input[name="shipping_to_us"]', function (){
$('#inbound_insurance_wrapper').toggle(this.value==='prepaid_label');
});
$(document).on('change', 'input[name="return_shipping_option"]', function (){
const hide=(this.value==='PICK_UP'||this.value==='combine_shipping');
$('#outbound_insurance_wrapper').toggle(!hide);
});
(function traceAccWizardNextCall(){
if(typeof $.fn.accWizard!=='function'){
console.warn('accWizard is not yet defined. Retrying...');
setTimeout(traceAccWizardNextCall, 50);
return;
}
const originalAccWizard=$.fn.accWizard;
$.fn.accWizard=function (...args){
if(args[0]==='next'){
console.log('%caccWizard("next") was called!', 'color: red; font-weight: bold;');
console.trace('Trace for accWizard("next") call');
}
return originalAccWizard.apply(this, args);
};
console.log('%caccWizard tracing is active.', 'color: green');
})();
$('#paypal-button-container').hide();
var tabsPanel=$('.tabs .tab-content:not(.active)').hide();
$('.tabs').each(function(){
var $this=$(this);
$(this).on('change', '.tab-item', function(e){
var elem_id=$(this).data('toggle');
$this.find('.tab-content').removeClass('active');
$this.find('.tab-label').removeClass('active');
$this.find('.tab-content:not(.active)').hide();
if($(this).is(':checked')){
$('#' + elem_id).addClass('active');
$(this).closest('.tab-label').addClass('active');
$('#' + elem_id).show();
if($(this).val()=='paypal'){
$('#submit-cts').hide();
$('#paypal-button-container').show();
}else if($(this).val()=='credit_card'||$(this).val()=='cash'||$(this).val()=='bank_transfer'||$(this).val()=='invoice'){
$('#paypal-button-container').hide();
$('#submit-cts').show();
}
if($(this).val()=='pick_up'||$(this).val()=='return_shipping'||$(this).val()=='combine_shipping'){
var card_qty=$('#order_card_qty').val();
var card_clean_qty=$('#order_card_clean_qty').val();
var service_price=$('#order_grading_service').val();
var discount=$('#order_discount').val();
var target_qty=$('.card-grading-service[name="card_grading_service"]:checked').data('target-qty');
update_order_summary(card_qty, service_price, discount, target_qty, card_clean_qty, 0, false);
}}
});
});
$('#open_orders').on('change', function (){
const selected=$(this).val();
const return_shipping_option=$('input[name="return_shipping_option"]:checked').val();
if(return_shipping_option==='combine_shipping'&&selected&&selected.includes('_')){
const [combineId]=selected.split('_');
$('#order_combine_id').val(combineId);
$('#order_aust_post_shipping_service').val('COMBINE');
scheduleShippingRecalc();
}else{
console.warn('Invalid or no combine shipping option selected');
}});
$(document).on('change', 'input[name="shipping_to_us"]', function (){
const show=this.value==='prepaid_label';
$('#inbound_insurance_wrapper').toggle(show);
});
$(document).on('change', 'input[name="return_shipping_option"]', function (){
const hide=(this.value==='PICK_UP'||this.value==='combine_shipping');
$('#outbound_insurance_wrapper').toggle(!hide);
});
$(document).on('change', '.insurance-checkbox', function (){
const $box=$(this).closest('.shipping-option-label').find('.insurance-input');
$box.toggle(this.checked);
if(!this.checked){ $box.val(''); }});
$('#outbound_insurance_value').on('input', function (){
const val=parseInt(this.value, 10)||0;
const needSig=val > 500;
if(needSig){
if($('#parcel_post').is(':checked')){
$('#registered_regular').prop('checked', true).trigger('change');
}else if($('#express_post').is(':checked')){
$('#registered_express').prop('checked', true).trigger('change');
}}
$('#sig-note').toggle(needSig);
});
(function (){
const $amount=$('#outbound_insurance_value');
const $sigNote=$('#sig-note');
const radios={
parcel:    $('#parcel_post'),
registeredParcel: $('#registered_regular'),
express:   $('#express_post'),
registeredExpress: $('#registered_express')
};
let previousNonSigChoice=null;
$amount.on('input', function (){
const cover=parseInt(this.value, 10)||0;
const needSig=cover > 500;
if(needSig){
if(radios.parcel.is(':checked')){
previousNonSigChoice=radios.parcel;
radios.registeredParcel.prop('checked', true).trigger('change');
}else if(radios.express.is(':checked')){
previousNonSigChoice=radios.express;
radios.registeredExpress.prop('checked', true).trigger('change');
}}else{
if(previousNonSigChoice&&!previousNonSigChoice.is(':checked')){
previousNonSigChoice.prop('checked', true).trigger('change');
}
previousNonSigChoice=null;
}
$sigNote.toggle(needSig);
});
})();
$(document).on('change', 'input[name="return_shipping_option"]', function (){
const nonSignatureValues=['AUS_PARCEL_REGULAR', 'AUS_PARCEL_EXPRESS'];
const pickedNonSig=nonSignatureValues.includes(this.value);
const $insCheck=$('#outbound_insurance');
const $amountBox=$('#outbound_insurance_value');
if(pickedNonSig&&$insCheck.is(':checked')){
$insCheck.prop('checked', false);
$amountBox.val('').hide();
$('#sig-note').hide();
}});
$('input[name="shipping_to_us"]').on('change', function (){
const selectedOption=$(this).val();
$('#shipping_to_us').val(selectedOption);
});
/*
$('#open_orders').change(function(){
var return_shipping_option=$('input[name="return_shipping_option"]:checked').val();
if(return_shipping_option==='combine_shipping'){
updateShippingCalculation();
}});*/
$('input[name="card_saver_qty"]').change(function(){
var card_qty=$('#order_card_qty').val();
var card_clean_qty=$('#order_card_clean_qty').val();
var service_price=$('#order_grading_service').val();
var discount=$('#order_discount').val();
var target_qty=$('.card-grading-service[name="card_grading_service"]:checked').data('target-qty');
var card_saver_qty=$(this).val();
console.log("THE card_saver_qty  is " + card_saver_qty);
$('#order_card_saver_cost').val(card_saver_qty);
update_order_summary(card_qty, service_price, discount, target_qty, card_clean_qty, 0, false);
});
$('#ajax_login_button').on('click', function(e){
e.preventDefault();
form.validate().settings.ignore=":disabled,:hidden";
console.log("in ajax login");
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: {
'action': 'ajax_login',
'username': $('#username').val(),
'password': $('#password').val(),
'security': $('#security').val()
},
beforeSend: function(){
$('.cssload-wrapper').show();
},
success: function(response){
$('.cssload-wrapper').hide();
if(response.login_status==false){
Swal.fire({
icon: 'error',
title: 'Oops...',
text: response.message,
preConfirm: function(){
}});
}else{
Swal.fire({
icon: 'success',
title: 'Great!',
text: response.message,
preConfirm: function(){
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: {
'action': 'ajax_update_user_data',
'user_id': response.user_id
},
beforeSend: function(){
$('.cssload-wrapper').show();
},
success: function(data){
$('.cssload-wrapper').hide();
$.each(data.user_data, function(key, value){
$('input[name="' + key + '"],select[name="' + key + '"]').val(value).trigger('change');
});
$('#user_id').val(response.user_id);
$('.top-bar .right .inner-item').html(data.login_url);
$('#login_panel .cg-billing-details').html('<h2 style="margin-bottom:0;">' + response.return+'</h2>');
$('#login-next-btn').trigger("click");
$('#login_panel .action-nav').removeClass('d-none');
}});
return form.valid();
}});
}}
});
});
const originalTotal=parseFloat($('#order_grand_total').val());
const minimumCharge=5.00;
$('#apply-coupon-btn').on('click', function(){
let couponCode=$('#coupon_code').val();
$('#coupon-spinner').show();
$.ajax({
url: ajax_object.ajax_url,
method: 'POST',
data: {
action: 'validate_coupon_code',
coupon_code: couponCode,
},
success: function(response){
let originalTotal=parseFloat($('#order_grand_total').val());
if(isNaN(originalTotal)){
originalTotal=0;
}
var service_price=$('#order_grading_service').val();
var discount=$('#order_discount').val();
var target_qty=$('#order_target_qty').val();
var card_qty=$('#order_card_qty').val();
var card_clean_qty=$('#order_card_clean_qty').val();
if(response.success){
let discountAmount=parseFloat(response.data.amount);
if(isNaN(discountAmount)){
discountAmount=0;
}
let discountedTotal=originalTotal - discountAmount;
let finalTotal=discountedTotal > 0 ? discountedTotal:minimumCharge;
$('#order_customer_coupon_id').val(response.data.coupon_id);
$('#order_customer_coupon_amount').val(discountAmount);
$('#order_customer_coupon_usage_limit').val(response.data.usage_limit);
$('#order_customer_coupon_usage_count').val(response.data.usage_count);
$('#order_customer_coupon_type').val(response.data.coupon_type||'shop_coupon');
$('#order_customer_coupon_code').val(response.data.coupon_code||couponCode);
$('#coupon-result').html(`<p>Coupon applied: $${discountAmount.toFixed(2)} off</p>`);
$('#order_grand_total').val(finalTotal.toFixed(2));
if(discountedTotal <=0){
$('#coupon-result').append("<p>Note: Minimum charge of $" + minimumCharge.toFixed(2) + " applied. Remaining credit can be used on your next order.</p>");
}}else{
$('#order_grand_total').val(originalTotal.toFixed(2));
$('#order_customer_coupon_id').val('');
$('#order_customer_coupon_amount').val('');
$('#order_customer_coupon_usage_limit').val('');
$('#order_customer_coupon_usage_count').val('');
$('#order_customer_coupon_type').val('');
$('#order_customer_coupon_code').val('');
$('#coupon-result').html('<p class="error">' + ((response.data&&response.data.message) ? response.data.message:'Invalid or expired coupon code. Please try again.') + '</p>');
}
update_order_summary(card_qty, service_price, discount, target_qty, card_clean_qty, 0, false);
},
error: function(){
$('#coupon-result').html('<p class="error">An error occurred. Please try again.</p>');
},
complete: function(){
$('#coupon-spinner').hide();
}});
});
console.log('Radio buttons detected:', $('input[name="input_22"]').length);
$('input[name="input_22"]').on('change', function (){
console.log('Change event attached to:', $(this).val());
});
$('input[name="input_22"]').on('change', function (){
const shippingOption=$(this).val();
const cardQty=$('#input_9').val();
const postCode=$('#input_59_5').val();
console.log("Shipping option selected:", shippingOption);
console.log("Card Qty:", cardQty, "Postcode:", postCode);
if(!cardQty||!postCode){
console.log("Required fields are missing. Exiting.");
return;
}
$.ajax({
url: ajaxurl,
type: 'POST',
data: {
action: 'calculate_gravity_form_shipping',
card_qty: cardQty,
shipping_option: shippingOption,
post_code: postCode,
},
success: function (response){
const data=JSON.parse(response);
if(data.error){
alert('Error: ' + data.error);
}else{
console.log("Shipping cost calculated:", data.results);
}},
error: function (error){
console.error('AJAX Error:', error);
},
});
});
jQuery(document).on('gform_post_render', function (){
console.log("Gravity Form rendered or updated. Reattaching event listener.");
jQuery('input[name="input_22"]').on('change', function (){
const shippingOption=jQuery(this).val();
console.log("Shipping option selected after form re-render:", shippingOption);
});
});
}});
jQuery(function ($){
function renderCompanyPreview (){
const $sel=$('.card-grading-company:checked');
if(!$sel.length) return;
$sel.closest('.grading-company')
.find('.company-preview')
.removeClass('empty-state')
.html($('#co-detail-' + $sel.val()).html());
}
$(document).on('change', '.card-grading-company', renderCompanyPreview);
function renderServicePreview (){
const $sel=$('.card-grading-service:checked');
if(!$sel.length) return;
$sel.closest('.grading-service')
.find('.service-preview')
.removeClass('empty-state')
.html($('#svc-detail-' + $sel.val()).html());
const price=parseFloat($sel.data('price'))||0;
const retail=parseFloat($sel.data('retail-price'))||price;
const optionName=$sel.data('price-option-name')||'';
const $preview=$sel.closest('.grading-service').find('.service-preview');
const $previewPrice=$preview.find('.price');
if($previewPrice.length){
if(optionName){
$previewPrice.text('$' + price.toFixed(2) + ' AUD / ' + optionName);
}else{
$previewPrice.text('$' + price.toFixed(2) + ' AUD');
}}
const isVendor=$('#ao-selected-is-vendor').val()==='true';
const discountAmount=retail - price;
const $badge=$preview.find('.slbd-partner-discount');
if(isVendor&&discountAmount > 0.005){
const badgeText='Partner discount applied · A$' + discountAmount.toFixed(2) + ' off';
if($badge.length){
$badge.text(badgeText);
}else{
$('<div class="slbd-partner-discount badge bg-success mt-2">' + badgeText + '</div>')
.appendTo($preview);
}}else if($badge.length){
$badge.remove();
}}
$(document).on('change', '.card-grading-service', renderServicePreview);
function renderAddOnPreview (trigger){
const id=$(trigger).attr('id')||$(trigger).attr('for');
const tpl=$('#addon-detail-' + id.replace('addon-','')).html();
if(!tpl) return;
$(trigger).closest('.grading-addons')
.find('.addons-preview')
.removeClass('empty-state')
.html(tpl);
}
$(document).on('change', '.card-grading-add-ons', function (){
renderAddOnPreview(this);
});
$(document).on('click',  '.grading-addons .service-list label', function (){
renderAddOnPreview(this);
});
});
jQuery(function($){
$(document).on('change', 'select[id^="addon_options_"]', function (){
const id=this.id.replace('addon_options_', '');
$('#hidden_addon_options_' + id).val(this.value);
});
$(document).on('change', '.card-grading-add-ons', function (){
const id=this.id.replace('addon-', '');
const tpl=$('#addon-detail-' + id).html()||'';
$('.addons-preview').html(tpl);
const $wrap=$('.addons-preview .addon-select');
if($wrap.length){
if(this.checked){
$wrap.show();
}else{
$wrap.hide().find('select').val('').trigger('change');
}}
});
});
if(!$('#order_add_ons').length){
$('<input>', {type:'hidden', id:'order_add_ons', name:'order_add_ons'})
.appendTo('#card-grading-form');
}
function refreshAddOnList(){
const ids=$('.card-grading-add-ons:checked')
.map(function(){ return this.dataset.addOnId; })
.get();
$('#order_add_ons').val(ids.join(','));     // "29224,29225"
}
$(document).on('change', '.card-grading-add-ons', refreshAddOnList);
refreshAddOnList();
});
function getItemType(){
let v=$('input[name="order_item_type"]:checked').val()||cg_get_default_item_type();
return cg_normalize_temp_item_type(v);
}
function updateItemTypeUI(){
const type=getItemType();
const meta=cg_get_item_type_config(type);
const chosenLabel=meta.label||type;
const detailsLabel=meta.details_label||'Card Details';
$('.chosen-item-type').text(chosenLabel);
const $titles=$('.form-group-wrap.group-2.item-details-step h3.title');
if(!$titles.length) return;
$titles.each(function(){
const $t=$(this);
const $labelSpan=$t.find('span.details-label');
if($labelSpan.length){
$labelSpan.text(detailsLabel);
return;
}
$t.contents().filter(function(){ return this.nodeType===3; }).each(function(){
this.nodeValue=' ' + detailsLabel + ' ';
});
});
}
function companySupportsItemType($radio, itemType){
const raw=String($radio.data('itemTypes')||$radio.attr('data-item-types')||'').trim();
if(!raw) return itemType===cg_get_default_item_type();
const list=raw.split(',').map(s=> cg_normalize_temp_item_type(s)).filter(Boolean);
return list.includes(itemType);
}
function applyCompanyFilterForItemType(){
const itemType=getItemType();
const $wrap=$('.grading-company');
const $lis=$wrap.find('.company-list li');
if(!$lis.length) return;
$lis.each(function (){
const $li=$(this);
const $radio=$li.find('input.card-grading-company');
$li.toggle(companySupportsItemType($radio, itemType));
});
const $selected=$wrap.find('.card-grading-company:checked');
if($selected.length&&!companySupportsItemType($selected, itemType)){
$selected.prop('checked', false);
$wrap.find('.chosen').text('');
$wrap.find('.company-preview').empty();
$('.the-services').empty();
}
if(!$wrap.find('.card-grading-company:checked').length){
const $first=$wrap.find('.company-list li:visible input.card-grading-company').first();
if($first.length) $first.prop('checked', true).trigger('change');
}}
$(function(){ applyCompanyFilterForItemType(); });
$(document).on('change', 'input[name="order_item_type"]', function (){
setTimeout(applyCompanyFilterForItemType, 0);
});
function onItemTypeChange(){
$('input.card-grading-company, input.card-grading-service').prop('checked', false);
$('.grading-company .chosen').text('');
$('.grading-company .company-preview').empty();
$('.the-services').empty();
$('.grading-service .service-preview').empty();
updateItemTypeUI();
applyCompanyFilterForItemType();
}
$(document).on('change', 'input[name="order_item_type"]', function(){
setTimeout(onItemTypeChange, 0);
});
$(document).on('click', '[data-acc-btn-next],[data-acc-btn-prev]', function(){
setTimeout(updateItemTypeUI, 0);
});
$(function(){
updateItemTypeUI();
applyCompanyFilterForItemType();
});
function toggleItemEntryForType(){
const type=getItemType();
const isComic=cg_is_comic_item_type(type);
$('.item-entry-cards').toggle(!isComic);
$('.item-entry-comics').toggle(isComic);
$('#repeater-add-trigger .add-label').text(isComic ? 'Add Comic':'Add Item');
}
$(document).on('click', '#repeater-add-trigger', function (e){
e.preventDefault();
const type=getItemType();
if(cg_is_comic_item_type(type)){
$('#repeater-add-comic').trigger('click');
}else{
$('#repeater-add').trigger('click');
}});
$(document).on('change', 'input[name="order_item_type"]', function (){
toggleItemEntryForType();
cg_sync_add_item_trigger_state();
});
$(function (){
toggleItemEntryForType();
cg_sync_add_item_trigger_state();
});
function renderConfirmItemsNew(){
const $table=$('.confirm-order-items');
if(!$table.length) return;
const type=getItemType();
const isComic=cg_is_comic_item_type(type);
updateConfirmHeadings();
const $tbody=$table.find('tbody');
if(!$tbody.length) return;
$tbody.empty();
let totalQty=0;
let displayIndex=0;
if(isComic){
const seenIdx=new Set();
$('.cg-comic-list .accordion > .cg-comic-item[data-index]').each(function(){
const $item=$(this);
if($item.hasClass('unsave')) return;
const idx=$item.data('index');
if(idx!==undefined&&idx!==null){
const key=String(idx);
if(seenIdx.has(key)) return;
seenIdx.add(key);
}
const qty=parseInt($item.find('[name="qty"], [name$="[qty]"]').first().val(), 10)||1;
const publisher=$item.find('[name="publisher"], [name$="[publisher]"]').first().val()||'';
const title=$item.find('[name="title"], [name$="[title]"]').first().val()||'';
const issue=$item.find('[name="issue"], [name$="[issue]"]').first().val()||'';
const year=$item.find('[name="year"], [name$="[year]"]').first().val()||'';
const variant=$item.find('[name="variant"], [name$="[variant]"]').first().val()||'';
const value=$item.find('[name="declared_value"], [name$="[declared_value]"]').first().val()
|| $item.find('[name="value"], [name$="[value]"]').first().val()||'';
if(!publisher&&!title&&!issue&&!year&&!variant) return;
totalQty +=qty;
displayIndex +=1;
const row='<tr>' +
'<td>' + displayIndex + '</td>' +
'<td>' + qty + '</td>' +
'<td>' + $('<div>').text(publisher).html() + '</td>' +
'<td>' + $('<div>').text(title).html() + '</td>' +
'<td>' + $('<div>').text(issue).html() + '</td>' +
'<td>' + $('<div>').text(year).html() + '</td>' +
'<td>' + $('<div>').text(variant).html() + '</td>' +
'<td class="text-end">' + $('<div>').text(value).html() + '</td>' +
'</tr>';
$tbody.append(row);
});
}else{
$('.cg-card-list .accordion > .cg-card-item').each(function(){
const $item=$(this);
if($item.hasClass('unsave')) return;
if(typeof cg_card_item_has_data==='function'&&!cg_card_item_has_data($item)){
return;
}
const qty=parseInt($item.find('[name="card_qty"], [name$="[card_qty]"]').first().val(), 10)||0;
const year=$item.find('[name="card_year"], [name$="[card_year]"]').first().val()||'';
const manufacturer=$item.find('[name="card_manufacturer"], [name$="[card_manufacturer]"]').first().val()||'';
const setName=$item.find('[name="card_set"], [name$="[card_set]"]').first().val()||'';
const number=$item.find('[name="card_number"], [name$="[card_number]"]').first().val()||'';
const name=$item.find('[name="card_name"], [name$="[card_name]"]').first().val()||'';
const variant=$item.find('[name="card_variant"], [name$="[card_variant]"]').first().val()||'';
const value=$item.find('[name="card_value"], [name$="[card_value]"]').first().val()||'';
if(!year&&!manufacturer&&!setName&&!number&&!name&&!variant&&!value) return;
totalQty +=qty;
displayIndex +=1;
const row='<tr>' +
'<td>' + displayIndex + '</td>' +
'<td>' + (qty||'') + '</td>' +
'<td>' + $('<div>').text(year).html() + '</td>' +
'<td>' + $('<div>').text(manufacturer).html() + '</td>' +
'<td>' + $('<div>').text(setName).html() + '</td>' +
'<td>' + $('<div>').text(number).html() + '</td>' +
'<td>' + $('<div>').text(name).html() + '</td>' +
'<td>' + $('<div>').text(variant).html() + '</td>' +
'<td class="text-end">' + $('<div>').text(value).html() + '</td>' +
'</tr>';
$tbody.append(row);
});
}
$('#summary_order_total_items, #mobile-summary_order_total_items').text(totalQty);
}
function updateComicTotals(){
if(!cg_is_comic_item_type(getItemType())) return;
let totalQty=0;
$('[data-repeater-list="comics"] [data-repeater-item]').each(function(){
const $item=$(this);
if(typeof window.cg_comic_item_has_data==='function'&&!window.cg_comic_item_has_data($item)){
return;
}
const raw=(typeof window.cg_get_field_value==='function')
? window.cg_get_field_value($item, 'qty', '')
: $item.find('[name="qty"], [name$="[qty]"]').first().val();
const q=parseInt(raw, 10);
totalQty +=(isNaN(q)||q <=0) ? 1:q;
});
$('#order_card_qty').val(totalQty).trigger('change');
$('.item-details-step .chosen-qty').text(totalQty ? 'Qty - ' + totalQty:'');
}
$(document).on('click', '.cg-save-comic', function(e){
e.preventDefault();
const $form=$('#card-grading-form');
if($form.length&&typeof $form.validate==='function'){
$form.validate().settings.ignore=":disabled,:hidden";
if(!$form.valid()){
return $form.valid();
}}
const $item=$(this).closest('[data-repeater-item]');
if(!$item.length) return;
const qty=parseInt(cg_get_field_value($item, 'qty', ''), 10)||1;
const publisher=cg_get_field_value($item, 'publisher', '');
const title=cg_get_field_value($item, 'title', '');
const issue=cg_get_field_value($item, 'issue', '');
const year=cg_get_field_value($item, 'year', '');
const variant=cg_get_field_value($item, 'variant', '');
const value=cg_get_field_value($item, 'declared_value', '')||cg_get_field_value($item, 'value', '');
let idx=$item.attr('data-index');
if(idx===undefined||idx===null||idx===''){
idx=$item.index();
}
let html='<ul class="" data-index="' + idx + '">';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">QTY: </span>' + qty + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Publisher: </span>' + publisher + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Title: </span>' + title + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Issue: </span>' + issue + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Year: </span>' + year + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Variant: </span>' + variant + '</li>';
html +='<li><span class="mobile-label mr-3 d-inline-block d-md-none">Value: </span>' + value + '</li>';
html +='<li><a class="edit" href="javascript:;">Edit</a> | <a data-index="' + idx + '" data-repeater-delete class="delete delete-comic" href="javascript:;">Delete</a></li>';
html +='</ul>';
$item.find('.accordion-content').slideUp();
$item.find('.accordion-head').html(html);
$item.removeClass('unsave');
$('#repeater-add-trigger').removeClass('unsave').prop('disabled', false);
updateComicTotals();
var normalized_comics=cg_collect_comic_items_from_dom();
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_object.ajax_url,
data: {
'action': 'save_temp_user_item',
'data': normalized_comics,
item_type: cg_get_temp_item_type(),
user_id: $('#user_id').val(),
},
beforeSend: function(){
},
success: function(response){
console.log(response);
}});
renderConfirmItemsNew();
});
$(document).on('input change', '[data-repeater-list="comics"] input', function(){
updateComicTotals();
renderConfirmItemsNew();
});
$(document).on('click', '[data-repeater-list="comics"] [data-repeater-delete]', function(){
});
function syncOrderItemTypeHidden(){
$('#order_item_type').val(getItemType());
}
function updateConfirmHeadings(){
const isComic=cg_is_comic_item_type(getItemType());
$('.confirm-head--cards').toggleClass('d-none', isComic);
$('.confirm-head--comics').toggleClass('d-none', !isComic);
$('.card-clean-row, .card-clean-wrap').toggleClass('d-none', isComic);
if(isComic){
$('#order_card_clean_qty').val(0);
cg_sync_card_clean_consent_requirement(false);
}}
function updateInternalProtectionLabel(){
const currentType=getItemType();
const currentConfig=cg_get_item_type_config(currentType);
const isComic=cg_is_comic_item_type(currentType);
const $label=$('.internal-protection-label');
if(!$label.length) return;
const cardLabel=$label.data('card-label')||'Card Savers';
const comicLabel=$label.data('comic-label')||'Comic Protection';
const familyLabel=(currentConfig.label ? currentConfig.label + ' Protection':'Item Protection');
$label.text(isComic ? (currentType==='comic' ? comicLabel:familyLabel):cardLabel);
}
function renderComicSearchResults($results, items){
if(!items||!items.length){
$results.html('<div class="comic-search-empty">No results found.</div>').show();
return;
}
var html='<ul class="comic-search-list">';
$.each(items, function(i, item){
var title=item.volume||'';
var issueNo=item.issue_number||'';
var issueTitle=item.issue_title||'';
var year=item.year||'';
var publisher=item.publisher||'';
var imageUrl=item.image_url||'';
var labelParts=[];
if(title) labelParts.push(title);
if(issueNo) labelParts.push('#' + issueNo);
if(issueTitle) labelParts.push('- ' + issueTitle);
if(year) labelParts.push('(' + year + ')');
var label=labelParts.join(' ').trim();
html +='<li>';
html +='<button type="button" class="comic-search-item" ' +
'data-title="' + $('<div>').text(title).html() + '" ' +
'data-issue="' + $('<div>').text(issueNo).html() + '" ' +
'data-publisher="' + $('<div>').text(publisher).html() + '" ' +
'data-year="' + $('<div>').text(year).html() + '" ' +
'data-variant="' + $('<div>').text(issueTitle).html() + '">' +
'<span class="comic-search-thumb">' +
(imageUrl ? '<img src="' + $('<div>').text(imageUrl).html() + '" alt="">':'') +
'</span>' +
'<span class="comic-search-meta">' +
'<span class="comic-search-title">' + $('<div>').text(label||'Untitled Issue').html() + '</span>' +
'<span class="comic-search-publisher">' + $('<div>').text(publisher||'Unknown publisher').html() + '</span>' +
'</span>' +
'</button>';
html +='</li>';
});
html +='</ul>';
$results.html(html).show();
}
function getSelectedServiceMaxValue(){
var maxValue=$('.card-grading-service:checked').data('max-value');
if(maxValue===undefined||maxValue===null){
return '';
}
return String(maxValue);
}
function shouldUseSelectedServiceMax(value){
if(value===undefined||value===null){
return true;
}
var normalized=String(value).trim();
if(normalized===''){
return true;
}
var numericValue=Number(normalized);
return !Number.isNaN(numericValue)&&numericValue===0;
}
function applyComicDeclaredValue($item){
if(!$item||!$item.length) return;
var maxValue=getSelectedServiceMaxValue();
if(!maxValue) return;
var $input=$item.find('[name="declared_value"], [name$="[declared_value]"]').first();
if(!$input.length) return;
$input.val(maxValue);
$input.attr('placeholder', maxValue);
$input.attr('max', maxValue);
$input.prop('readonly', true);
$input.attr('tabindex', '-1');
}
function fillComicFields($item, data){
$item.find('[name="title"], [name$="[title]"]').val(data.title||'');
$item.find('[name="issue"], [name$="[issue]"]').val(data.issue||'');
$item.find('[name="publisher"], [name$="[publisher]"]').val(data.publisher||'');
$item.find('[name="year"], [name$="[year]"]').val(data.year||'');
$item.find('[name="qty"], [name$="[qty]"]').val(1);
if(data.variant){
$item.find('[name="variant"], [name$="[variant]"]').val(data.variant);
}
applyComicDeclaredValue($item);
}
$(function (){
syncOrderItemTypeHidden();
updateConfirmHeadings();
updateInternalProtectionLabel();
renderConfirmItemsNew();
});
$(document).on('change', 'input[name="order_item_type"]', function (){
syncOrderItemTypeHidden();
updateConfirmHeadings();
updateInternalProtectionLabel();
renderConfirmItemsNew();
});
$(document).on('click', '[data-acc-btn-next],[data-acc-title]', function (){
setTimeout(renderConfirmItemsNew, 80);
});
$(document).on('input change', '[data-repeater-list=\"cards\"] input, [data-repeater-list=\"comics\"] input', function (){
renderConfirmItemsNew();
});
function extractYearFromQuery(query){
var match=query.match(/\b(19|20)\d{2}\b/);
return match ? match[0]:'';
}
function extractIssueFromQuery(query){
if(!query) return '';
var match=query.match(/#\s*([0-9]+[A-Za-z]?)/);
if(match) return match[1];
match=query.match(/\bissue\s+([0-9]+[A-Za-z]?)/i);
if(match) return match[1];
match=query.match(/\b([0-9]+[A-Za-z]?)\b$/);
if(match) return match[1];
return '';
}
function requestComicSearch($input){
$input=($input&&$input.jquery) ? $input:$($input);
var query=$input.val().trim();
var $item=$input.closest('.cg-comic-item');
var $results=$item.find('.comic-search-results');
var year=extractYearFromQuery(query);
var queryWithoutYear=year ? query.replace(new RegExp('\\b' + year + '\\b', 'g'), '').trim():query;
var issue=extractIssueFromQuery(queryWithoutYear);
var ajaxUrl=getAjaxUrl();
if($input.data('comicSearchTimer')){
clearTimeout($input.data('comicSearchTimer'));
}
var pendingRequest=$input.data('comicSearchRequest');
if(pendingRequest&&pendingRequest.readyState!==4){
pendingRequest.abort();
}
if(query.length < 3){
$results.empty().hide();
return;
}
$results.html('<div class="comic-search-loading">Searching...</div>').show();
var timer=setTimeout(function (){
var xhr=$.ajax({
type: 'POST',
dataType: 'json',
url: ajaxUrl,
data: {
action: 'comic_vine_search',
query: query,
year: year,
issue: issue,
},
success: function (response){
if(response&&response.success){
renderComicSearchResults($results, response.data.results||[]);
}else{
var message=(response&&response.data&&response.data.message)
? response.data.message
: 'No results found.';
$results.html('<div class="comic-search-empty">' + $('<div>').text(message).html() + '</div>').show();
}},
error: function (xhr, statusText){
if(statusText==='abort'){
return;
}
var message='Search failed.';
if(xhr&&xhr.responseJSON&&xhr.responseJSON.data&&xhr.responseJSON.data.message){
message=xhr.responseJSON.data.message;
}
$results.html('<div class="comic-search-empty">' + $('<div>').text(message).html() + '</div>').show();
}});
$input.data('comicSearchRequest', xhr);
}, 300);
$input.data('comicSearchTimer', timer);
}
$(document).on('input keyup change paste', '.comic_search', function (){
requestComicSearch($(this));
});
$(document).on('click', '.comic-search-item', function (){
var $btn=$(this);
var $item=$btn.closest('.cg-comic-item');
var $results=$item.find('.comic-search-results');
fillComicFields($item, {
title: $btn.attr('data-title')||'',
issue: $btn.attr('data-issue')||'',
publisher: $btn.attr('data-publisher')||'',
year: $btn.attr('data-year')||'',
variant: $btn.attr('data-variant')||''
});
$results.empty().hide();
});
(function($){
function getAjaxUrl(){
if(typeof window.slbdAjax!=='undefined'&&slbdAjax.ajax_url){
return slbdAjax.ajax_url;
}
if(typeof window.ajaxurl!=='undefined'&&window.ajaxurl){
return window.ajaxurl;
}
return '/wp-admin/admin-ajax.php';
}
function recalcInbound(){
var ajaxUrl=getAjaxUrl();
if(!ajaxUrl){
console.error('[Inbound] No AJAX URL available');
return;
}
var qty=parseInt($('#card_qty').val(), 10)||0;
var postCode=($('#post_code').val()||'').trim();
var country=$('#country').val()||'AU';
var insSel=$('#inbound_insurance').is(':checked') ? 1:0;
var insVal=parseInt($('#inbound_insurance_value').val(), 10)||0;
var expressFlag =
$('#prepaid_label').is(':checked') &&
$('#prepaid_label_express').is(':checked') ? 1:0;
$('#inbound_express_flag').val(expressFlag ? '1':'0');
if(!qty||!postCode){
return;
}
$.post(ajaxUrl, {
action:                  'calculate_inbound_shipping',
card_qty:                qty,
post_code:               postCode,
country:                 country,
inbound_insurance:       insSel,
inbound_insurance_value: insVal,
inbound_express_flag:    expressFlag
}, function(resp){
if(resp&&typeof resp.inbound_cost!=='undefined'){
var cost=parseFloat(resp.inbound_cost)||0;
$('#inbound_cost_display').text('$' + cost.toFixed(2));
}else if(resp&&resp.error){
console.error('Inbound calc error:', resp.error);
}}, 'json');
}
window.recalcInbound=recalcInbound;
$(document).on('change', '#prepaid_label, #prepaid_label_express', function(){
recalcInbound();
});
$(document).on('change keyup',
'#card_qty, #post_code, #country, #inbound_insurance, #inbound_insurance_value',
function(){
recalcInbound();
}
);
})(jQuery);
/**
* All of the code for your public-facing JavaScript source
* should reside in this file.
*
* Note: It has been assumed you will write jQuery code here, so the
* $ function reference has been prepared for usage within the scope
* of this function.
*
* This enables you to define handlers, for when the DOM is ready:
*
* $(function(){
*
* });
*
* When the window is loaded:
*
* $(window).load(function(){
*
* });
*
* ...and/or other possibilities.
*
* Ideally, it is not considered best practise to attach more than a
* single DOM-ready or window-load handler for a particular page.
* Although scripts in the WordPress core, Plugins and Themes may be
* practising this, we should strive to set a better example in our own work.
*/
})(jQuery);