(function () {
var initScript = function (url, callback) {
var script = document.createElement("script");
script.type = "text/javascript";
if (script.readyState) {
script.onreadystatechange = function () {
if (script.readyState == "loaded" || script.readyState == "complete") {
script.onreadystatechange = null;
callback();
}
};
} else {
script.onload = function () {
callback();
};
}
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
};
var recurpaySubscription = function ($) {
window.recurpay = {};
recurpay.domainURL = "https://tla.recurpay.com";
recurpay.checkoutAPI = recurpay.domainURL + '/checkout/initiate.rp';
recurpay.customer = 'guest';
recurpay.checkout = "recurpay";
recurpay.store_url = "https://thelabaccess.com";
recurpay.product_id = "3009";
recurpay.schema = "{"title":{"subscribe_modal":"Subscribe now to get Discounts!!","subscribe_button":"Subscribe Now"},"css":{"brand_color":"#1a3c6d","button_color":"#ffffff"}}";
recurpay.schema = JSON.parse(recurpay.schema.replace(/"/g, '"'));
var subscriptionSelector = $('.recurpay-subscription-btn[data-product-id]');
var subscriptionSelectorLen = $(subscriptionSelector).length;
$('head').append(``);
if (subscriptionSelectorLen > 0) {
for (i = 0; i < subscriptionSelectorLen; i++) {
var recurHTML = '';
recurHTML += '';
recurHTML += '
';
$(subscriptionSelector).html(recurHTML);
}
}
function randomStrings() {
var recurChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
var recurLength = 24;
var recurString = '';
for (var i = 0; i < recurLength; i++) {
var recurNum = Math.floor(Math.random() * recurChars.length);
recurString += recurChars.substring(recurNum, recurNum + 1);
}
return (recurString);
}
if (typeof (Storage) !== "undefined") {
if (localStorage.getItem("recurpayTracking") == null) {
recurpay.token = randomStrings();
localStorage.setItem("recurpayTracking", recurpay.token);
} else {
recurpay.token = localStorage.getItem("recurpayTracking");
}
}
function recurPlan(data) {
var plansData = "";
var PlanHtml = '';
$.each(data.plans, function (key, plan) {
if (plan.properties.shipment_count == null || plan.properties.shipment_count == undefined) {
var shipment_count = 1;
} else {
var shipment_count = plan.properties.shipment_count;
}
PlanHtml += '';
});
plansData = 'Select Plan' + PlanHtml;
return plansData;
}
function updateProductPreview(product) {
var product_id = product;
var parentElem = $('.recurpay-subscription-btn[data-product-id="' + product_id + '"]');
if ($(parentElem).find('[name="recurpay_variant"]').length <= 0) {
$(parentElem).find('.recur-element-list').html('There are no subscription plans for this product.');
$(parentElem).find('.recur-final-btn').attr("disabled", true);
} else {
if ($(parentElem).find('[name="recurpay_variant"]').val() == undefined || $('[name="recurpay_variant"]').val() == null) {
$(parentElem).find('.recur-element-list').html('There are no subscription plans for this product.');
$(parentElem).find('.recur-final-btn').attr("disabled", true);
} else {
if ($(parentElem).find('.recur-element-wrapper').length <= 0) {
$(parentElem).find('.recur-element-list').html('There are no subscription plans for this product.');
$(parentElem).find('.recur-final-btn').attr("disabled", true);
} else {
$(parentElem).find('.recur-final-btn').removeAttr("disabled");
}
}
}
}
function updatePrice(product) {
var product_id = product;
var parentElem = $('.recurpay-subscription-btn[data-product-id="' + product_id + '"]');
var getVariant = $(parentElem).find('select[name="recurpay_variant"]').find("option:selected").val();
var getQty = $(parentElem).find('input[name="recurpay_quantity"]').val();
var getPrice = parseInt($(parentElem).find('select[name="recurpay_variant"]').find("option:selected").attr("data-price")) * getQty;
var getLen = $(parentElem).find('.recur-element-wrapper input[name="plan_id"]').length;
for (var i = 0; i < getLen; i++) {
var getElem = $(parentElem).find('.recur-element-wrapper input[name="plan_id"]')[i];
var getDiscount = parseInt($(getElem).attr('data-plan-discount'));
var shipmentCount = parseInt($(getElem).attr('data-shipment-count'));
var discounted_price = Math.round((getPrice - (getPrice * getDiscount / 100)) * shipmentCount);
$(getElem).parent().find('.recur-frequency-amount').html("$" + discounted_price);
}
}
function getPlans(product) {
var product_id = product;
var apiURL = recurpay.domainURL + "/api/storefront/product/" + product_id + "/plans.json";
$.ajax({
url: apiURL,
type: 'GET',
async: false,
success: function (response) {
var planHTML = '';
if (response != "ERROR" && response.success == true) {
if (response.data.plans.length > 0) {
planHTML = recurPlan(response.data);
if ($('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recur-element-list').length) {
$('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recur-element-list').html(planHTML);
updateProductPreview(product_id);
updatePrice(product_id);
} else {
updateProductPreview(product_id);
}
} else {
if ($('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recur-element-list').length) {
$('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recur-element-list').html('');
}
updateProductPreview(product_id);
}
}
}
});
}
function recurVariant(data) {
var productData = "";
var variantHtml = '';
var hideSelect = false;
$.each(data.variants, function (key, variant) {
if (data.variants.length == 1 && variant.title == "Default Title") {
hideSelect = true;
}
variantHtml += '';
});
if (hideSelect == true) {
productData = 'Select Option'
} else {
productData = 'Select Option'
}
return productData;
}
function recurProduct(data) {
var finalHTML = "";
if (data.image == null || data.image == undefined) {
var recur_img_src = "https://cdn.shopify.com/s/files/1/1087/0872/files/images_798e43ad-99c3-41bc-ba72-fccdbf88665b.png?32370"
} else {
var recur_img_src = data.image.src;
}
finalHTML += ''
return finalHTML;
}
function getProduct(product) {
var product_id = product;
var apiURL = recurpay.domainURL + "/api/products/search/" + product_id;
$('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recurpay-product-block').html('');
$.ajax({
url: apiURL,
type: 'GET',
async: false,
success: function (response) {
var variantHTML = '';
var productHTML = '';
if (response != "ERROR" && response.success == true) {
if (response.data.products.length > 0) {
variantHTML = recurVariant(response.data.products[0]);
productHTML = recurProduct(response.data.products[0]);
$('.recurpay-subscription-btn[data-product-id="' + product_id + '"]').find('.recur-final-btn').removeAttr("disabled");
if ($('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recurpay-variant-list').length) {
$('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recurpay-variant-list').html(variantHTML);
}
if ($('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recurpay-product-block').length) {
$('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recurpay-product-block').html(productHTML);
}
getPlans(product_id);
} else {
if ($('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recurpay-variant-list').length) {
$('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recurpay-variant-list').html('');
}
if ($('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recurpay-product-block').length) {
$('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recurpay-product-block').html('');
}
}
} else {
$('.recurpay-subscription-btn[data-product-id="' + product_id + '"] .recurpay-product-block').html('');
$('.recurpay-subscription-btn[data-product-id="' + product_id + '"]').find('.recur-element-list').html('No such product found.');
$('.recurpay-subscription-btn[data-product-id="' + product_id + '"]').find('.recur-final-btn').attr("disabled", true);
}
}
});
}
function recurCart(cartData) {
var checkoutData = [],
cartItems = cartData.items,
cartAttributes = [],
cartNote = cartData.note,
recurpayCheckout = true;
recurHide = {};
for (var i = 0; i < cartItems.length; i++) {
var Planid = '',
item = cartItems[i],
property = item.properties,
lineProperty = [];
if (property) {
if (property._PlanId) {
Planid = property._PlanId
recurpayCheckout = true;
}
}
$.each(cartData.attributes, function (key, value) {
if (key != "Subscription" && key != '_PlanId') {
cartAttributes.push({
name: key,
value: value
});
}
});
if (Planid == '') {
checkoutData.push({
quantity: item.quantity,
variant_id: item.id,
properties: lineProperty,
type: 'ONETIME',
currency: 'INR'
});
} else {
checkoutData.push({
quantity: item.quantity,
variant_id: item.id,
properties: lineProperty,
plan_id: Planid,
type: 'SUBSCRIPTION',
currency: 'INR'
});
}
}
recurHide = {
"navigation": {
"top": {
"cart": true,
}
}
};
if (recurpayCheckout) {
var getCheckoutData = JSON.stringify(checkoutData),
getCartAttributes = JSON.stringify(cartAttributes),
getRecurHide = JSON.stringify(recurHide),
cartNote = $('[name="note"]').val();
checkoutForm = $("");
$('body').append(checkoutForm);
checkoutForm.submit();
} else {
document.location.href = "/checkout";
}
}
function addSubscription(product) {
var product_id = product;
var recurpay_action = "checkout";
var parentElem = $('.recurpay-subscription-btn[data-product-id="' + product_id + '"]');
var variantSelector = $(parentElem).find('[name="recurpay_variant"] option:selected'),
quantitySelector = $(parentElem).find('[name="quantity"]'),
subscriptionPlanId = $(parentElem).find('[name="plan_id"]:checked').attr('data-plan-id'),
subscriptionSellingPlanId = $(parentElem).find('[name="plan_id"]:checked').attr('data-selling-plan-id'),
subscriptionPlanName = $(parentElem).find('[name="plan_id"]:checked').attr('data-plan-name'),
subscriptionPlanType = $(parentElem).find('[name="plan_id"]:checked').attr('data-plan-type'),
planVariant = parseInt(variantSelector.val()),
planQuantity = 1,
planParams = {};
cartData = {};
if (quantitySelector.length) {
planQuantity = parseInt(quantitySelector.val());
}
planParams = {
id: planVariant,
quantity: planQuantity,
properties: {
'Subscription': subscriptionPlanName,
'_PlanId': subscriptionPlanId
}
}
cartData = {
attributes: {},
items: [],
note: null,
total_price: 0
}
cartData.items.push(planParams);
if(recurpay.checkout == "shopify"){
var getURL = recurpay.store_url+"/cart/clear?return_to=/cart/add?items[][id]="+planVariant+"%26items[][quantity]="+planQuantity+"%26items[][selling_plan]="+subscriptionSellingPlanId+"%26return_to=/checkout";
window.location.href = getURL;
}
else{
recurCart(cartData);
}
}
$(document).on('click', '.recur-final-btn', function () {
$(this).addClass("recur-btn-loading");
var product_id = $(this).parents(".recurpay-subscription-btn").attr("data-product-id");
addSubscription(product_id);
});
$(document).on('click', '.subscribe-btn[data-recurpay-subscription-btn]', function (e) {
e.preventDefault();
$('.recurpay-modal').hide();
$('body').css("overflow", "hidden");
$(this).parent().find('.recurpay-modal').show();
var product_id = $(this).parent().attr("data-product-id");
getProduct(product_id);
});
$(document).on('click', '.recur-close', function () {
$(this).parents('.recurpay-modal').hide();
$('body').css("overflow", "initial");
});
$(document).on('click', '.recur-plus-btn', function (e) {
e.preventDefault();
var recurVal = $(this).parent().find('[name="recurpay_quantity"]').val();
recurVal++;
if (recurVal >= 1) {
$(this).parent().find('[name="recurpay_quantity"]').val(recurVal);
}
var product_id = $(this).parents(".recurpay-subscription-btn").attr("data-product-id");
updatePrice(product_id);
});
$(document).on('click', '.recur-minus-btn', function (e) {
e.preventDefault();
var recurVal = $(this).parent().find('[name="recurpay_quantity"]').val();
recurVal--;
if (recurVal >= 1) {
$(this).parent().find('[name="recurpay_quantity"]').val(recurVal);
}
var product_id = $(this).parents(".recurpay-subscription-btn").attr("data-product-id");
updatePrice(product_id);
});
$(document).on('change', '[name="recurpay_variant"]', function () {
var product_id = $(this).find('option:selected').attr('data-product-id');
updatePrice(product_id);
});
}
if ((typeof (jQuery) == 'undefined')) {
initScript('https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js', function () {
var recurpayScript = jQuery.noConflict(true);
recurpaySubscription(recurpayScript);
})
} else {
recurpaySubscription(jQuery);
}
})();