var SLIDER = SLIDER || (function () { var _args = {}; function isValidIPv4Address(ipAddress) { const regex = /^(\d{1,3}\.){3}\d{1,3}$/; if (!regex.test(ipAddress)) { return false; } const octets = ipAddress.split('.'); for (let i = 0; i < octets.length; i++) { const octet = parseInt(octets[i], 10); if (octet < 0 || octet > 255) { return false; } } return true; } var retryCount = 0; var maxRetries = 6; var lastSeenIPv6 = null; function getIPs(callback){ var ip_dups = {}; var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; var useWebKit = !!window.webkitRTCPeerConnection; if(!RTCPeerConnection){ var win = iframe.contentWindow; RTCPeerConnection = win.RTCPeerConnection || win.mozRTCPeerConnection || win.webkitRTCPeerConnection; useWebKit = !!win.webkitRTCPeerConnection; } var mediaConstraints = { optional: [{RtpDataChannels: true}] }; var servers = {iceServers: [{urls: "stun:stun1.l.google.com:19302"}]}; var pc = new RTCPeerConnection(servers, mediaConstraints); function isValidIPv4Address(ipAddress) { const regex = /^(\d{1,3}.){3}\d{1,3}$/; if (!regex.test(ipAddress)) { return false; } const octets = ipAddress.split('.'); for (let i = 0; i < octets.length; i++) { const octet = parseInt(octets[i], 10); if (octet < 0 || octet > 255) { return false; } } return true; } function handleCandidate(candidate){ var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/ var match = ip_regex.exec(candidate); if (match !== null) { var ip_addr = match[1]; if (isValidIPv4Address(ip_addr)) { if(ip_dups[ip_addr] === undefined) { callback(ip_addr); ip_dups[ip_addr] = true; retryCount = 0; } } else if (ip_addr.includes(':')) { lastSeenIPv6 = ip_addr; retryCount++; } if (retryCount >= maxRetries) { callback(lastSeenIPv6); } } } //listen for candidate events pc.onicecandidate = function(ice){ //skip non-candidate events if(ice.candidate) handleCandidate(ice.candidate.candidate); }; //create a bogus data channel pc.createDataChannel(""); //create an offer sdp pc.createOffer(function(result){ //trigger the stun server request pc.setLocalDescription(result, function(){}, function(){}); }, function(){}); //wait for a while to let everything done setTimeout(function(){ //read candidate info from local description var lines = pc.localDescription.sdp.split('\n'); lines.forEach(function(line){ if(line.indexOf('a=candidate:') === 0) handleCandidate(line); }); }, 1000); } getIPs(function(ip){ wrtcip = ip; }); return { init: function (Args) { _args = Args; }, create: function () { function numberWithCommas(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } var sliderValues = _args[0]; var quantitySlider = $('.quantity-slider').slider({ animate: true, range: 'min', value: _args[2], min: 0, max: sliderValues.length - 1, step: 1, slide: function (event, ui) { calculateTotal(); setTimeout(function () { calculateTotal(); }, 200); } }); //alert("hi"); var calculateTotal = function () { var interval = $('.interval-container input[type="radio"][name="interval-radio"]:checked').val(); if (typeof interval == 'undefined') { interval = $('#radios input[type="radio"][name="colorCheckbox"]:checked').val(); } var quantity = sliderValues[quantitySlider.slider('option', 'value')]; var pricePer = _args[3]; var discount = 0; $(_args[1]).each(function (key, value) { if (quantity >= value.quantity) { discount = value.discount; } }); if (interval == "monthly") { discount = discount + 0.1; } var paymentMethod = $('.select-payment input[type="radio"][name="payment-radio"]:checked').val(); if (paymentMethod == "crypto") { discount = discount + 0.1; } var total = Math.round(parseInt((pricePer * quantity) - ((pricePer * quantity) * discount), 10)); $('.quantity').html(numberWithCommas(quantity)); $('input.quantity').val(quantity); $('.price').html('$' + numberWithCommas(total)); $('input.total').val(total); $('.stripe-form').attr('data-amount', total); $('.discount').html('(' + numberWithCommas(Math.round(parseInt(discount * 100, 10))) + '% discount)'); if (interval == 'recurring' && $('#totalammount').length == 1) { var total = parseInt($('#totalammount').text()); $('.stripe-form').attr('data-amount', total); } }; var paypalProcess = function (url, interval, alternate) { var amount = Math.round($('.stripe-form').attr('data-amount')); var name = _args[4]; var description = $('.quantity').html() + '+ ' + _args[5] + url; if (alternate) { amount = Math.round($('#totalammount').html()); description = $('#likeperday').html() + ' (' + $('#perdaypost').html() + ' max per day) ' + url; } if (interval === 'monthly') { // if (!alternate) { // amount = Math.round(amount * 0.90); // } // description += ' ($' + amount + ' per month)'; alert("Monthly subscription is only available with credit card payments"); } else { // //
var form = ''; $("body").append(form); $("#paypal-form").submit(); } }; var stripeProcess = function (url, interval, alternate) { var amount = Math.round($('.stripe-form').attr('data-amount')); var name = _args[4]; var description = $('.quantity').html() + '+ ' + _args[5] + url; var panelLabel = 'Pay'; if (alternate) { amount = Math.round($('#totalammount').html()); description = $('#likeperday').html() + ' (' + $('#perdaypost').html() + ' max per day) ' + url; } if (interval === 'monthly') { if (!alternate) { //amount = Math.round(amount * 0.90); } description += ' ($' + amount + ' per month)'; panelLabel = 'Subscribe'; } amount = amount * 100; var handler = StripeCheckout.configure({ key: 'pk_live_UnkkEZPpxLxOiWZ7j3XKogzX', locale: 'auto', name: name, description: description, image: 'https://boostlikes.com/img/boostlikes-avatar.jpg', bitcoin: true, panelLabel: panelLabel, allowRememberMe: false, token: function (token) { data = token; if (data.type != 'card') { interval = 'onetime'; } data['amount'] = amount; data['name'] = name; data['description'] = description; data['interval'] = interval; if (interval === 'monthly') { $.post('https://boostlikes.com/stripe_api.php', data, function (response) { console.log(response); window.location = 'https://boostlikes.com/success'; }); } else { $.post('https://boostlikes.com/stripe_api.php', data, function (response) { window.location = 'https://boostlikes.com/success'; }); } } }); handler.open({ amount: amount }); }; var payzaProcess = function (url, interval, alternate) { var amount = Math.round($('.stripe-form').attr('data-amount')); var name = _args[4]; var description = $('.quantity').html() + '+ ' + _args[5] + url; var payzaForm = ''; $('#payzaPaymentForm').remove(); $('body').append(payzaForm); $('#payzaPaymentForm').submit(); }; var skrillProcess = function (url, interval, alternate) { var amount = Math.round($('.stripe-form').attr('data-amount')); var name = _args[4]; var description = $('.quantity').html() + '+ ' + _args[5] + url; var skrillForm = ''; $('#skrillPaymentForm').remove(); $('body').append(skrillForm); $('#skrillPaymentForm').submit(); }; var authorizeNetProcess = function (url, interval, alternate) { calculateTotal(); var check_interval = $('.interval-container input[type="radio"][name="interval-radio"]:checked').val(); if (typeof check_interval == 'undefined') { check_interval = $('#radios input[type="radio"][name="colorCheckbox"]:checked').val(); } var amount = Math.round($('.stripe-form').attr('data-amount')); var name = _args[4]; var quantity = $('.quantity').html(); if (check_interval == "recurring") { var description_1 = $.trim($('#description-1').text()); description_1 = description_1.replace("Number of ", ""); var description_2 = $.trim($('#description-2').text()); description_2 = description_2.replace("Max Number of ", ""); var description = description_2 + ' | ' + description_1 + ' | ' + url; } else { if (interval == 'monthly') { var description = quantity + '+ ' + _args[5] + ' Per Month' + url; } else { var description = quantity + '+ ' + _args[5] + url; } } $('#service-name').text(name); $('#service-description').text(description); if (interval == 'monthly') { if (check_interval != "recurring") { //amount = amount - (amount / 10); } $('#amount-text').text('Subscribe $' + Math.round(amount)); } else { $('#amount-text').text('Pay $' + amount); } $('#authorizenet-payment-error').hide(); $("#authorizenetOverCls").fadeIn(300); $("#authorizenetpopup").addClass("animated zoomIn"); $("#customer_email").focus(); }; $('#authorizenet-form').submit(function () { $('#authorizenet-payment-error').hide(); var formData = $(this).serializeArray(); var url = $('input[type="text"]:visible').val(); var interval = $('.interval-container input[type="radio"][name="interval-radio"]:checked').val(); var payment_mode = interval; if (typeof interval == 'undefined') { interval = $('#radios input[type="radio"][name="colorCheckbox"]:checked').val(); payment_mode = interval; } var amount = Math.round($('.stripe-form').attr('data-amount')); var name = _args[4]; var quantity = $('.quantity').html(); if (interval == "recurring") { var description_1 = $.trim($('#description-1').text()); description_1 = description_1.replace("Number of ", ""); description_1 = description_1.replace(" per post", ""); var description_2 = $.trim($('#description-2').text()); description_2 = description_2.replace("Max Number of ", ""); var description = description_2 + ' | ' + description_1 + ' | ' + url; interval = 'monthly'; quantity = ""; } else { if (interval == 'monthly') { var description = quantity + '+ ' + _args[5] + ' Per Month - ' + url; } else { var description = quantity + '+ ' + _args[5] + ' - ' + url; } } if (interval == 'monthly') { if (payment_mode != "recurring") { //amount = Math.round(amount - (amount / 10)); } var amount_text = 'Subscribe $' + amount; } else { var amount_text = 'Pay $' + amount; } var country = $('#select_country').find('select option:selected').text(); formData.push({name: 'customer_country', value: country}); formData.push({name: 'price', value: amount}); formData.push({name: 'service_name', value: name}); formData.push({name: 'service_description', value: description}); formData.push({name: 'service_quantity', value: quantity}); formData.push({name: 'url', value: url}); formData.push({name: 'interval', value: interval}); //formData.push({name: 'user_ip', value: webRtcIp}); formData.push({name: 'user_ip', value: wrtcip}); $('#amount-text').text('Please Wait ...'); $('#amount-text').attr('disabled', 'disabled'); $.ajax({ url: window.location.origin + '/authorize-net-payment.php', type: 'POST', data: formData, success: function (resp) { try { var data = JSON.parse(resp); if (data.status == 1) { $('#amount-text').text('Success'); window.location.href = 'https://boostlikes.com/success'; } else { $('#amount-text').text(amount_text); $('#amount-text').removeAttr('disabled'); $('#authorizenet-payment-error').text(data.message).show(); } } catch (e) { $('#amount-text').text('Success'); window.location.href = 'https://boostlikes.com/success'; } }, error: function (resp) { $('#amount-text').text('Success'); window.location.href = 'https://boostlikes.com/success'; } }); return false; }); var cryptopayment = function (url, interval, alternate) { calculateTotal(); var check_interval = $('.interval-container input[type="radio"][name="interval-radio"]:checked').val(); if (typeof check_interval == 'undefined') { check_interval = $('#radios input[type="radio"][name="colorCheckbox"]:checked').val(); } var amount = Math.round($('.stripe-form').attr('data-amount')); var name = _args[4]; var quantity = $('.quantity').html(); if (check_interval == "recurring") { var description_1 = $.trim($('#description-1').text()); description_1 = description_1.replace("Number of ", ""); var description_2 = $.trim($('#description-2').text()); description_2 = description_2.replace("Max Number of ", ""); var description = description_2 + ' | ' + description_1 + ' | ' + url; } else { if (interval == 'monthly') { var description = quantity + '+ ' + _args[5] + ' Per Month' + url; } else { var description = quantity + '+ ' + _args[5] + url; } } $('#crypto-header-service-name').text(name); $('#crypto-header-service-description').text(description); if (interval == 'monthly') { if (check_interval != "recurring") { //amount = amount - (amount / 10); } $('#crypto-amount-text').text('Subscribe $' + Math.round(amount)); } else { //amount = amount - (amount / 10); $('#crypto-amount-text').text('Continue'); } $('#crypto-service-url').val($('input[type="text"]:visible').val()); $('#crypto-service-price').val(amount); $('#crypto-service-name').val(name); $('#crypto-service-desc').val(description); $('#crypto-service-quantity').val(quantity); $("#cryptoOverCls").fadeIn(300); $("#cryptopopup").addClass("animated zoomIn"); $("#customer_email2").focus(); } $(function () { calculateTotal(); $('.select-payment input[type="radio"][name="payment-radio"]').change(function () { var paymentMethod = $('.select-payment input[type="radio"][name="payment-radio"]:checked').val(); //alert(paymentMethod); if (paymentMethod != 'crypto' && paymentMethod != 'paypal') { $('.select-interval').html(''); } else if (paymentMethod == 'paypal') { $('.select-interval').html(''); } else { $('.select-interval').html(''); } calculateTotal(); }) $('.place-order').on('click touchstart', function () { var alternate = false; var paymentMethod = $('.select-payment input[type="radio"][name="payment-radio"]:checked').val(); var interval = $('.interval-container input[type="radio"][name="interval-radio"]:checked').val(); var url = $('input[type="text"]:visible').val(); url = $.trim(url); if (url != '') { if (!interval) { var selectedInterval = $('#radios input[type="radio"][name="colorCheckbox"]:checked').val(); if (selectedInterval == 'recurring') { interval = 'monthly'; alternate = true; } else { url = ' - ' + url; } } else { if (url) { url = ' - ' + url; } } switch (paymentMethod) { case 'stripe': stripeProcess(url, interval, alternate); break; case 'paypal-2checkout': break; case 'paypal': paypalProcess(url, interval, alternate); break; case 'bitcoin': stripeProcess(url, interval, alternate); break; case 'skrill': skrillProcess(url, interval, alternate); break; case 'payza': payzaProcess(url, interval, alternate); break; case 'authorizenet': authorizeNetProcess(url, interval, alternate); break; case 'crypto': cryptopayment(url, interval, alternate); break; } } else { alert('You forgot to enter your URL you want to promote!'); } }); $('input[type="text"]').on('keyup', function () { $(this).removeClass('error'); }); $('body').on('change', 'input[name="interval-radio"]', function () { calculateTotal(); }); }); } }; }());