var serversApi = 'https://api-s-2.playerauctions.com/' + 'api/'; var api = 'https://pa-f-5.azurewebsites.net/' + 'api/'; var errorMsg = { filedEmpty: "Please select a market!", noOffer: "Sorry, we currently don't have offers." } var LANGUAGE = GetQueryString && GetQueryString("hl") || getCookie("hl") || "en"; var filters = { gameId: 0, gameseo: '', gameCurName: '', selectedGame: 0, selectedServer: 0, copy_selectedServer: 0, //为了不影响其他的逻辑,加了个和selectedServer差不多的参数,不要动 selectedFaction: 0, discounts: [], quantity: 0, currencyType: GetQueryString && GetQueryString("currencyType") || getCookie("currencyType") || "USD", QuickBuyCurrencyOfferModel: '', Categorys: '', offer: { min: '', max: '', discount: '', currentDis: '', price: '', currencyName: '', currencySuffix: '' } } var defaultOptions = { faction: 0, game: 0, server: 0 } function checkout() { var curServerIndex = $("#server-select-parent-hook").find("option:selected").index(); if (!curServerIndex) { $('#errorMsg').html(errorMsg.filedEmpty); $('#errorMsg').addClass('act'); return; } if (filters.Categorys && !curServerIndex) { $('#errorMsg').html(errorMsg.filedEmpty); $('#errorMsg').addClass('act'); return; } } var freshSelect = initServerSelect(); function resetChooseNum() { var rangeNum = $('#range-num'); var buyNum = $('#buy-num'); $(rangeNum).attr({ value: 0, min: 0, max: 0, style: 'background-size: 0% 100%', disabled: true }); $(buyNum).attr({ value: 0, min: 0, max: 0, disabled: true }); filters.Categorys = []; $(rangeNum).val(0).trigger("change"); $(rangeNum).prop('disabled', true); $('#discount-txt,.wrap-txt').text(''); $('#price').html('BUY NOW'); $('#errorMsg').html(''); $('#errorMsg').removeClass('act'); $('#price').attr('href', 'javascript:;'); $('#price').attr('disabled', false); $('#no-discount-txt').text(''); $('#no-discount-txt').removeClass('act'); defaultOptions.game = ''; defaultOptions.server = ''; $('.discount-outer').removeClass('act'); } function renderTotal(filters, sum) { if (!sum || sum == '0') { return; } $('#discount-txt').text(''); var currencySuffix = filters.QuickBuyCurrencyOfferModel.CurrencySuffix; var currencyName = filters.QuickBuyCurrencyOfferModel.CurrencyName; var totalUnit = filters.QuickBuyCurrencyOfferModel.TotalUnit; var price = filters.QuickBuyCurrencyOfferModel.PricePerUnit; var currencyTxt = '$'; if ($.cookie('currencyType') == 'CNY') { currencyTxt = '¥'; } var total = price * sum; var dis = total * filters.offer.discount; var c_dis = price * sum * filters.offer.currentDis; var totalPrice = precise_round(price * sum - c_dis, 2); total = (total - dis).toFixed(2); filters.quantity = total; $('#no-discount-txt').text(formatNum(filters.offer.currencyPerUnit * sum, 'int') + currencySuffix + ' ' + currencyName); $('#no-discount-txt').addClass('act'); if ((filters.discounts && filters.discounts.length > 0)) { var max = filters.discounts[filters.discounts.length - 1]; var min = filters.discounts[0]; if (precise_round(price * sum, 2) < min.StartPrice) { $('#discount-txt').text("Buy " + getNextDiscount(min.StartPrice, price) + currencySuffix + ' ' + currencyName + ' and get ' + toPercent(min.DiscountRate) + ' off!'); } else { if (precise_round(price * sum, 2) >= max.StartPrice && precise_round(price * sum, 2) <= max.EndPrice) { $('#discount-txt').text("You're getting " + toPercent(filters.offer.discount) + " off!"); } else { $('#discount-txt').text("Buy " + getNextDiscount(filters.startPrice, price) + currencySuffix + ' ' + currencyName + ' and get ' + toPercent(filters.offer.discount) + ' off!'); } } } if (filters.QuickBuyCurrencyOfferModel) { $('.wrap-txt').html('
x
' + filters.QuickBuyCurrencyOfferModel.CurrencyPerUnit + ' ' + filters.QuickBuyCurrencyOfferModel.CurrencySuffix + ' ' + filters.QuickBuyCurrencyOfferModel.CurrencyName + '
'); } $('#price').html('BUY FOR ' + currencyTxt + totalPrice); } function getNextDiscount(startPrice, price) { var nextDiscount = Number.isInteger(startPrice / price) ? startPrice / price : Math.ceil(startPrice / price); return nextDiscount = formatNum(nextDiscount * filters.offer.currencyPerUnit, 'int'); } function sumPrice(filters, data) { if (!data) return; var offer = data.QuickBuyCurrencyOfferModel; var rangeNum = $('#range-num'); var buyNum = $('#buy-num'); if (!offer) { $(rangeNum).prop('disabled', true); $(buyNum).prop('disabled', true); } else { // //计算价格 $(rangeNum).prop('disabled', false); $(buyNum).prop('disabled', false); $(rangeNum).attr({ value: offer.MinUnitPerOrder, min: offer.MinUnitPerOrder, max: offer.TotalUnit, style: 'background-size: ' + getPercent(offer.MinUnitPerOrder, offer.TotalUnit) + ' 100%' }); $(buyNum).attr({ value: offer.MinUnitPerOrder, min: offer.MinUnitPerOrder, max: offer.TotalUnit }); $(buyNum).val(offer.MinUnitPerOrder); filters.offer.max = offer.TotalUnit; renderTotal(filters, offer.MinUnitPerOrder); addNumChangeEvent(data); } } function getDiscounts(data, sum) { if (!data) return; var discounts = data.OfferDiscounts; var _sum = precise_round(data.QuickBuyCurrencyOfferModel.PricePerUnit * sum, 2); var discountRate = 0; var currentDiscount = 0; var next = 0; var end = discounts[discounts.length - 1]; var startPrice = 0; $.each(discounts, function (i, v) { if (_sum >= v.StartPrice && _sum <= v.EndPrice) { currentDiscount = v.DiscountRate; if (discounts[i] == end) { discountRate = end.DiscountRate; startPrice = end.StartPrice; } else { next = discounts[i + 1].DiscountRate; discountRate = next; startPrice = discounts[i + 1].StartPrice; } } }); filters.startPrice = startPrice; filters.offer.discount = discountRate; filters.offer.currentDis = currentDiscount; renderTotal(filters, sum); } function addNumChangeEvent(data) { var rangeNum = $('#range-num'); var buyNum = $('#buy-num'); var TotalUnit = filters.QuickBuyCurrencyOfferModel.TotalUnit; var num = 0; function setNum(type, _num) { num = _num; switch (type) { case "input": break; case "slider": break; default: break; } } $(rangeNum).on('click change input propertychange', function (event) { var that = this; if (!$(this).val()) { return; } $(buyNum).val($(this).val()); getDiscounts(data, $(this).val()); }); $(buyNum).change(function (event) { var _this = this; if (!$(_this).val() || $(this).val() == '') { $(_this).val(filters.QuickBuyCurrencyOfferModel.MinUnitPerOrder); } if ($(_this).val() <= filters.QuickBuyCurrencyOfferModel.MinUnitPerOrder) { $(_this).val(filters.QuickBuyCurrencyOfferModel.MinUnitPerOrder); } $(rangeNum).val($(_this).val()); $(rangeNum).attr({ style: 'background-size: ' + getPercent($(_this).val(), filters.QuickBuyCurrencyOfferModel.TotalUnit) + ' 100%' }); getDiscounts(data, $(_this).val()); }); } function removeFocus() { $("#select-games select").removeClass("focus"); $("#server-select-parent-hook,#server-select-sub-hook select").removeClass("focus"); } function switchFocus() { $(this).toggleClass("focus"); event.stopPropagation(); } function addGameSelectEvent() { var $this = $("#select-games select"); var $index = $($this).find("option:selected"); document.addEventListener("click", removeFocus); $($this).on("click", switchFocus); $($this).on("change", function () { if ($(this).val()) { filters.selectedGame = $(this).val().split('|')[1]; }; $("#server-select-parent-hook").find("option:first").text("Loading..."); $("#server-select-sub-hook select").find("option:first").text("Loading..."); $(this).blur(); freshSelect([]); resetChooseNum(); $('#server-select-parent-hook, #server-select-sub-hook').find("option:not(:first)").remove(); if (!$(this).val()) { $('#select-server select').attr('disabled', 'disabled'); return; } else { $('#select-server select').removeAttr('disabled'); filters.gameseo = $($this).find("option:selected").val().split('|')[0]; filters.gameId = $($this).find("option:selected").val().split('|')[1]; filters.gameCurName = $($this).find("option:selected").val().split('|')[2]; initCategorys(filters); } });} function renderGames(data) { var selectStr = ''; var wrapper = $("#select-games select"); $.each(data, function (index, val) { selectStr += ``; }); $(wrapper).append(selectStr); $(wrapper).find("option:first").text("Select Game"); addGameSelectEvent(); } function getOfferDetail(filters) { var url = api + 'qbOfferDetail/' + filters.currencyType + '/' + filters.gameId + '/' + filters.selectedServer; $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { resetChooseNum(); if (data.StatusCode == 401) { $('#errorMsg').text(errorMsg.noOffer); $('#errorMsg').addClass('act'); filters.QuickBuyCurrencyOfferModel = null; $('#price').attr('disabled', true); } else { if (data.StatusCode == 402) { $('.discount-outer').removeClass('act'); } if (data.Result) { $('.discount-outer').addClass('act'); filters.discounts = data.Result.OfferDiscounts; filters.QuickBuyCurrencyOfferModel = data.Result.QuickBuyCurrencyOfferModel; filters.offer.currencyPerUnit = filters.QuickBuyCurrencyOfferModel.CurrencyPerUnit; sumPrice(filters, data.Result); } else { $('#price').html('CHECK ALL OFFERS'); filters.QuickBuyCurrencyOfferModel = null; $('#discount-txt').text(''); $('#no-discount-txt').text(''); filters.discounts = []; } } }, error: function (reason) { } }) } function initCategorys(filters) { var url = serversApi + 'Game/' + filters.gameseo + '/Info/?DisplayFileds=servers'; $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { filters.Categorys = data.Result; freshSelect(data.Result); $("#server-select-parent-hook").find("option:first").text("Select server"); $("#server-select-sub-hook select").find("option:first").text("Select faction"); $("#server-select-parent-hook") .val(defaultOptions.server) .trigger('change'); if (defaultOptions.faction && filters.selectedFaction) { $("#server-select-sub-hook select") .val(defaultOptions.faction) .trigger('change'); } }, error: function (reason) { } }) } function initGames() { var url = api + 'games'; $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { renderGames(data.Result.Games); initDefaultOptions(); } }); } function initDefaultOptions() { if (getItems('defaultOptions')) { defaultOptions = getItems('defaultOptions'); } $("#select-games select").find("option[data-init=" + defaultOptions.game + "]").prop("selected", true); var selectedGame = $("#select-games select").find("option:selected").val().split("|"); filters.gameseo = selectedGame[0]; filters.gameId = selectedGame[1]; filters.gameCurName = selectedGame[2]; filters.selectedGame = filters.gameId; if (filters.gameseo) { initCategorys(filters) } } $(function () { defaultOptions.game = '5567'; defaultOptions.server = '5568'; //initGames(); initNumCustomStyle(); initSliderCustomStyle(); })