function AjaxManager(params) { this.typeArray = [ "POST", "GET" ], this.update(params), this.clear(); } function compareLabel(a, b) { return $(a).data("label") < $(b).data("label") ? -1 : $(a).data("label") > $(b).data("label") ? 1 : 0; } function compareOrder(a, b) { return $(a).data("order") < $(b).data("order") ? -1 : $(a).data("order") > $(b).data("order") ? 1 : 0; } function extractnotificationFromButton(button) { return button.attr("id").replace("validate-notifs-", "").trim(); } function validateNotification(notificationType) { var params = { type: "POST", url: Routing.generate("genybet_myaccount_ajax_notifications_validation", { notificationsType: notificationType }) }; am.update(params), am.flush(notificationsCallback); } function availableFraction() { "SIMPLE" == Betslip.bet ? $("#clavier .fractions").addClass("disable") : $("#clavier .fractions").removeClass("disable"); } function cleanBetslip() { updatePositionCheckboxes(), clearCheckboxes(), clearBetHorse(), clearBetHorseComplexe(), Betslip.reset(), BetslipSimple.init(), BetslipOrder.init(), removeAmount(), sortAndShowDesignation(), disableSorting($(".sortable")), resetBetslipLabel(), saveBetSlipTemp(Betslip), saveStackSimple(BetslipSimple); } function isBaseDisable() { Betslip.disable ? $(".checkbox-wrap .checkbox").not(".champ, .checked").each(function() { $(this).addClass("disable"); }) : $(".checkbox-wrap .checkbox").not(".champ, .checked").each(function() { $(this).hasClass("np") || $(this).removeClass("disable"); }); } function toggleChecked(elmt) { elmt.hasClass("disable") || elmt.hasClass("np") || (elmt.toggleClass("checked"), elmt.next().removeClass("checked").addClass("disable")); } function sortDesignation() { Betslip.sortDesignation(), console.warn("[sortDesignation] Betslip.isOrder() " + Betslip.isOrder()), !Betslip.isOrder() || "PART_WHEEL" != Betslip.formula && "WHEEL" != Betslip.formula ? $("#betslip .header .combinaison").html(Betslip.showDesignation()) : $("#betslip .header .combinaison").html(BetslipOrder.showDesignation()); } function sortAndShowDesignation() { sortDesignation(), "SIMPLE" == Betslip.bet && (clearBetHorse(), createBetSimple(Betslip.designation.base)), Betslip.showDesignation(); } function clearCheckboxes() { $(".checkbox-wrap .checkbox").each(function() { $(this).removeClass("checked").removeClass("disable"); }); } function clearCheckboxesBase() { $(".checkbox-wrap .checkbox").not(".champ").each(function() { $(this).removeClass("checked").removeClass("disable").html(" "); }); } function clearDaCheckbox(numHorse) { $(".checkbox-wrap .checkbox").each(function() { $(this).data("numhorse") == numHorse && $(this).removeClass("checked").removeClass("disable"); }); } function clearChampDisableCheckbox() { $(".checkbox-wrap .checkbox.champ").each(function() { $(this).prev().hasClass("checked") || $(this).removeClass("disable"); }); } function displayAmount(amount) { $(".amount-wrap .amount").html(number_format(amount, 2, ",", " ") + " €"); } function removeAmount() { $(".amount-wrap .amount").html("0,00 €"), $(".amount-wrap .stake").val(""); } function removeTrashMode() { $(".logo-basket").removeClass("on"); } function enableButton() { $(".amount-wrap button#validateBtn").removeClass("disable"); } function disableButton() { $(".amount-wrap button#validateBtn").not(".login").addClass("disable"); } function showDepositBtn() { $(".amount-wrap button#validateBtn").not(".login").addClass("hidden"), $(".amount-wrap button#DepositBtn").removeClass("hidden disable"); } function hideDepositBtn() { $(".amount-wrap button#validateBtn").removeClass("hidden"), $(".amount-wrap button#DepositBtn").addClass("hidden"); } function isEmpty(obj) { for (var prop in obj) if (obj.hasOwnProperty(prop)) return !1; return !0; } function hideForBetAuto() { Betslip.isAuto ? ($(".logo-basket").hide(), $(".sel-formula-key").hide(), "MULTI" != Betslip.bet ? $(".formula-wrap").hide() : $(".formula-wrap").show()) : ($(".sel-formula-key").show(), $(".formula-wrap").show()); } function resetBetslipLabel() { $(".my-horse-base").hide(), $(".my-horses-base").show(); } function getPathList() { return [ Routing.generate("genybet_grid_bet"), Routing.generate("genybet_sport_program"), Routing.generate("genybet_sport_all_sports"), Routing.generate("genybet_grid_list"), Routing.generate("genybet_sport_paris_stars"), Routing.generate("genybet_sport_paris_live"), Routing.generate("genybet_sport_event"), Routing.generate("genybet_sport_event_live") ]; } function checkSportPage(longPath) { return -1 != longPath.indexOf("/sport") ? "sport" : "turf"; } function refreshHeader() { var statePath = checkSportPage(window.location.href), params = { type: "POST", url: Routing.generate("genybet_ajax_header_path", { currentPath: statePath }), dataType: "html" }; refreshAm.update(params), refreshAm.flush(refreshHeaderCallBack); } function refreshGridHeader() { $.get(Routing.generate("genybet_ajax_header"), function(data) { data = data.replace("sb-toggle-left", "back"), $("#header").html(data); }); } function backToList() { $("#grille-wrap").removeClass("shown"), setTimeout(function() { $("html,body").scrollTop(0), $("#grille-wrap").removeClass("shown").hide(), $("#grille-list").parent().fadeIn(200); }, 300); } function goBack() { window.history.back(); } function refreshBandeau() { $("#betslip .header").removeAttr("style"); } function displayNotifications(notificationsList) { $.each(notificationsList, function(key, currentelement) { $("#notifications-popup-wrapper").append(returnNotificationHtml(currentelement, key)); }), showCurrentPopUp("#notifications-popup-wrapper"); } function returnNotificationHtml(notificationsElement, notificationType) { return notificationTemplate(notificationsElement, notificationType); } function notificationTemplate(notificationsElement, notificationType) { var descriptionList = "", montant = "", dateNotificaiton = ""; return $.each(notificationsElement, function(key, currentelement) { "transaction" == notificationType.trim() && (montant = " (" + currentelement.montant + " €) ", montant = montant.replace(".", ",")), dateNotificaiton = currentelement.date, "limiteur" == notificationType.trim() && (dateNotificaiton = ""), descriptionList = descriptionList + '
' + currentelement.description + montant + " " + dateNotificaiton + "
"; }), ''; } function showCurrentPopUp(wrapperId) { if ($(wrapperId).children().length > 0) { var currentNotification = $(wrapperId).children().first(); showPopup(currentNotification.attr("id"), $("#" + currentNotification.attr("id")).html()); } } function hideModalPopUp(button) { $(".greyed-out").remove(), button.closest(".popup-container").remove(); } function removeShowedPop(button) { var PopUpToClose = button.closest(".popup-container"), parentId = PopUpToClose.attr("id"); $("#" + parentId).remove(); } function createSession(name, value) { sessionStorage.setItem(name, value); } function readSession(name) { return sessionStorage.getItem(name); } function eraseSession(name) { sessionStorage.removeItem(name); } function resetBetslipAftervalidation() { void 0 !== $("#partants-list").attr("data-bet-selected") && "null null" == $("#partants-list").attr("data-bet-selected").trim() && (eraseSession("tiket-race-" + currentRaceId()), eraseSession("selected-bet-type-race-" + currentRaceId()), eraseSession("simple-bet-race-" + currentRaceId()), eraseSession("order-bet-race-" + currentRaceId())); } function animateSportTitles() { function isEllipsisActive(e) { return e.offsetWidth < e.scrollWidth; } $(".betslip-sport-scroll-text").each(function() { var scrollWidth = $(this)[0].parentElement.scrollWidth, offsetWidth = $(this)[0].parentElement.offsetWidth, margin = scrollWidth - offsetWidth + 10; isEllipsisActive($(this)[0].parentElement) && $(this).delay(500).animate({ "margin-left": -margin }, 5e3, "easeInOutCubic", function() { $(this).css("margin-left", "0px"); }); }), $(".txt-scroll").each(function() { var scrollWidth = $(this)[0].scrollWidth, offsetWidth = $(this)[0].offsetWidth, margin = scrollWidth - offsetWidth + 10; isEllipsisActive($(this)[0]) && $(this).delay(500).animate({ "margin-left": -margin }, 5e3, "easeInOutCubic", function() { $(this).css("margin-left", "0px"); }); }), setTimeout(animateSportTitles, 6e3); } function resizeLongTexts() { var container = $("#sport-event-label-container"), text = $("#sport-event-label"); if (container && text) { var fontsize = text.css("font-size"), lineHeight = text.css("line-height"); container.css("fontSize", parseFloat(fontsize) - 1), container.css("line-height", parseFloat(lineHeight) - 1 + "px"), text.height() > 45 && resizeLongTexts(); } } function disableSwipe() { $("html,body").css("overscroll-behavior-x", "none"), $("html,body").css("overscroll-behavior-y", "none"); } function enableSwipe() { $("html,body").css("overscroll-behavior-x", "auto"), $("html,body").css("overscroll-behavior-y", "auto"); } function confirmationGridBet() { showPopup("confirmation-sport-grid-popup", $("#confirmation-sport-grid-popup").html()); } function resetGridState() { $(".split.secondary.grey-xdark.clean").trigger("click"), disableValidateBtn(); } function getGridBetParameter(gridId) { var choiceArray = []; return $("span[id^='choice-" + gridId + "-']").filter(".selected").each(function() { var currentId = this.id.split("-")[2]; choiceArray.push(currentId); }), { mode: "grid", grid_id: gridId, bettingslip: choiceArray }; } function setBack() { var pageUrl = document.URL.split("/"); if ("liste-des-grilles" == (pageUrl = pageUrl[pageUrl.length - 1])) { $(".sb-toggle-left").remove(), allGrid = $("#all-grid"), backParent = $(".user-controls"), backParent.append(allGrid), allGrid.addClass("back"), allGrid.addClass("smart"); } } function ableValidationBtn() { $(".swiper-slide-active").find("button.bet-grid").removeClass("disable"); } function disableValidateBtn() { $(".swiper-slide-active").find("button.bet-grid").addClass("disable"); } function modifyAmount(field, amount) { amount > 0 ? ableValidationBtn() : disableValidateBtn(), field.text((Math.round(100 * amount) / 100).toFixed(2).replace(".", ",") + " €"); } function countSelected(gameGrid) { var totalSelected = 0; return gameGrid.children().each(function() { $(this).hasClass("selected") && (totalSelected += 1); }), totalSelected; } function defineAmount(gameBlock) { var totalAmount = 1; return gameBlock.each(function(index, value) { var gridSelectNumber = countSelected($(this)); totalAmount *= gridSelectNumber; }), totalAmount; } function setBetAmount() { modifyAmount($(".swiper-slide-active").find(".amount-grid"), defineAmount($(".swiper-slide-active").find(".game-grid"))); } function BetResponse(response) { var defaultData = { betType: "", formulaKey: "", formulaRisk: "NOT_AVAILABLE", stake: 0, betDesignation: null, status: "KO", bettingError: "EPDP000_BASE_ERROR", errorMessage: "" }; this.errorList = { EPDP_CANCEL_REQUEST_ERROR: "Vous ne pouvez pas annuler ce pari.", EPDP_PMC_RECORD_TRANSACTION_NON_RUNNER_ERROR: "Vous ne pouvez pas effectuer ce pari.", EPDP000_RACE_NOT_FOUND: "Cette course n'est plus ouverte aux paris.", EPDP000_EMPTY_RACE_FORMULATIONS: "Formulation du pari incorrecte.", EPDP000_INVALID_RACE_FORMULATION: "Formulation du pari incorrecte.", EPDP000_INVALID_FORMULATION_STATE: "Formulation du pari incorrecte.", EPDP000_INVALID_BET_BASE_LENGTH: "Formulation du pari incorrecte.", EPDP000_INVALID_BET_PART_WHEEL_LENGTH: "Formulation du pari incorrecte.", EPDP000_RACE_ID_ERROR: "Cette course n'est plus ouverte aux paris.", EPDP000_ACCOUNT_ID_ERROR: "Vous ne pouvez pas effectuer de pari.", EPDP000_BET_TYPE_ERROR: "Vous ne pouvez pas effectuer ce pari.", EPDP000_FORMULA_KEY_ERROR: "Le type de pari est manquant.", EPDP000_AMOUNT_ERROR: "La mise minimale pour un pari est de 1€.", EPDP000_UNIT_AMOUNT_LIMIT_EXCEEDED: "Votre mise unitaire dépasse le maximum autorisé pour ce type de pari.", EPDP000_AMOUNT_LIMIT_ERROR: "Le montant de votre pari dépasse la limite autorisée par combinaison.", EPDP000_MAX_STAKES_LIMIT_EXCEEDED: "Ce pari entrainerait le dépassement des enjeux maximum autorisés par client sur une même combinaison.", EPDP000_BASE_ERROR: "Vous ne pouvez pas effectuer ce pari.", EPDP000_RACE_NOT_IN_SALE: "Cette course n'est pas ouverte aux paris.", EPDP000_HR_TRANSAC_ACHAT_PARI_ERROR: "Le montant de votre solde/vos limiteurs ne permettent pas de prendre le pari.", EPDP000_EMPTY_ASSOCIATED_FOR_WHEEL_OR_PART_WHEEL: "Vous devez sélectionner des numéros associés pour un champ réduit ou total.", EPDP_ZETOTE_RECORD_TRANSACTION_ERROR: "Vous ne pouvez pas effectuer ce pari.", EPDP_TOTE_CANCEL_TRANSACTION_ERROR: "Vous ne pouvez pas annuler ce pari.", EPDP_ZETOTE_BREAK_INTO_UNIT_BETS_ERROR: "Vous ne pouvez pas effectuer ce pari.", EPDP_TOTE_CONTACT_WEBSERVICE: "Vous ne pouvez pas effectuer ce pari.", EPDP_TOTE_BET_REFUSED: "Vous ne pouvez pas effectuer ce pari.", EPDP_BET_ALREADY_CANCELED: "Votre pari a déjà été annulé.", EPDP_GEANT_SAME_BASES_AND_COMPLEMENT: "Un même cheval ne peut pas être une base et un complémentaire", EPDP_GEANT_NOT_ENOUGH_BASES: "Vous devez choisir au moins un cheval par course", EPDP_CANCEL_RACE_STARTED: "Impossible d'annuler un pari après le départ de la course", EPDP_CANCEL_RACE_STARTS_IN_10_MIN: "Impossible d'annuler un pari moins de 10 minutes avant le départ de la course" }, this.data = response.data || defaultData, this["@Type"] = response["@Type"] || "com.geny.pdp.firebirds.domainmodel.bet.impl.BetResponse", this.errors = response.errors || null, this.horse = response.horse || null, this.$popup = $("#betslip-popup") || null; } function getSavedAccept() { return void 0 !== Cookies.get("ticketSportAccept") ? Cookies.get("ticketSportAccept") : 2; } function updateAllSimpleBets() { $("#betslip-simple .betting-wrap .button").each(function() { var stake = $(this).parents(".betting-wrap").find("input[name=stake]").val(), event = $(this).parents(".choiceItem").data("event"), uid = $(this).parents(".choiceItem").data("unique-id"); BetSlipSport.updateStakeSimple(stake, event, uid); var odd = $(this).parents(".choiceItem").find(".odd-betslip").data("odds"), gains = computeTruncateAndFormatWinnings(odd, stake); updateTotal($(this).parents(".betting-wrap").find(".amount-wrap .amount"), gains), checkValidateButton(); }); } function generateAmountPopup() { $("#liste-soldes").clone().prop("id", "liste-soldes-sport-betslip").prependTo($("#sport-betslip-amount").parent()).css("z-index", 400), $("#liste-soldes-sport-betslip .greyed-out").fadeIn(200), $("#liste-soldes-sport-betslip .content").delay(200).slideDown(200), BetSlipSport.amountPopUp = !0; } function removeAmountPopup() { $("#liste-soldes-sport-betslip").remove(), BetSlipSport.amountPopUp = !1; } function toggleAmountPopup() { BetSlipSport.amountPopUp ? removeAmountPopup() : generateAmountPopup(); } function stakeSpiner(elmt) { var input = elmt.parent().find("input"), value = input.attr("value") || 1, operator = elmt.hasClass("more") ? "+" : "-"; if (value < 1 || 1 == value && elmt.hasClass("less")) var number = .1; else if (value >= 1 && value < 10 || 10 == value && elmt.hasClass("less")) var number = 1; else if (value >= 10 && value < 100 || 100 == value && elmt.hasClass("less")) var number = 10; else if (value >= 100 && value < 500 || 500 == value && elmt.hasClass("less")) var number = 100; else var number = 500; var newValue = parseFloat(eval(value + operator + number)); newValue > 0 && newValue <= 3e3 && input.attr("value", newValue.toFixed(2)); } function generateBetslip() { var betslipSimple = "", betslipSystem = "", betslip = ""; if (Object.keys(BetSlipSport.ticket.designation).length > 0) { $("#betslip-simple > .content").html('
'), $("#betslip-combine > .content").html('
'), $("#betslip-systeme > .content").html('
'); for (var event in BetSlipSport.ticket.designation) for (var choice in BetSlipSport.ticket.designation[event]) betslip += generateListBets(event, choice, BetSlipSport.ticket.designation[event][choice], !1), betslipSimple += generateListBets(event, choice, BetSlipSport.ticket.designation[event][choice], !0), betslipSystem += generateListBets(event, choice, BetSlipSport.ticket.designation[event][choice], !1); } if ("" != betslip && "" != betslipSimple && "" != betslipSystem) { var totalOdds = computeThenFormatTruncatedCombinedOdd(), totalStake = computeThenFormatTotalStakes(); $("#betslip-simple .betList").html(betslipSimple), $(generateBetslipFooter(!0, totalOdds, totalStake, !1)).insertAfter("#betslip-simple > .content"), totalStake = BetSlipSport.ticket.stake, $("#betslip-combine .betList").html(betslip), $(generateBetslipFooter(!1, totalOdds, totalStake, !1)).insertAfter("#betslip-combine > .content"), $("#betslip-systeme .betList").html(betslip); var totalStakeSystem = BetSlipSport.ticket.stakeSystem, totalStakeByCombi = computeTotalStakeSystem(totalStakeSystem); $(generateBetslipFooter(!1, totalStakeByCombi, totalStakeSystem, !0)).insertAfter("#betslip-systeme > .content"), BetSlipSport.enableCombineSystem(), BetSlipSport.activateTab(); } checkValidateButton(); } function generateListBets(event, uid, choice, isSimple) { betslip = "", betslip += '
', betslip += '
', betslip += '
', betslip += '', betslip += '
', betslip += '' + choice.eventTitle + "", betslip += "
", betslip += '', betslip += "
", betslip += '
', betslip += '
' + decodeURIComponent(choice.question) + "
", betslip += '
', betslip += "" + decodeURI(choice.actor) + ""; var oddFormated = ""; return oddFormated = choice.odd >= 100 ? number_format(choice.odd, 0, "", " ") : number_format(choice.odd, 2, ".", " "), betslip += '' + oddFormated + "", betslip += "
", 1 == isSimple && (betslip += '
', betslip += '
', betslip += '', betslip += '', betslip += '', betslip += '', betslip += "", betslip += '', betslip += "
", betslip += '
', betslip += '
' + Translator.trans("bet.potential.gains") + "
", betslip += '
' + computeTruncateAndFormatWinnings(choice.odd, choice.stake) + " €
", betslip += "
", betslip += "
"), betslip += "
", betslip; } function generateBetslipFooter(isSimple, oddOrStakeToDisplay, sumStakes, isSystem) { var stakeTypeBet = 1 == isSystem ? "totalStakeSystem" : "totalStakeCombine", oddsTypeBet = 1 == isSystem ? "totalOddsSystem" : "totalOddsCombine", solde = document.getElementById("betslip-sport").dataset.soldeSport; if (betslip = '", betslip; } function generateFreebetSwithcerHtml() { var disableClass = getFreebetBalance() <= 0 ? "disable" : "", html = '
'; return html += '
Parier en pari gratuit
', html += '
', 1 == BetSlipSport.ticket.useFreeBet ? (html += '
', html += ' ') : (html += '
', html += ' '), html += "
", html += "
"; } function showFreebetSwitcher(isSimple, isSystem) { return !(isSimple && BetSlipSport.choiceCount() > 1) && !isSystem; } function getFreebetBalance() { var formattedSoldeFreebet = null, freebetSolde = $("#betslip-sport").attr("data-solde-sport-freebet"); return void 0 !== freebetSolde && (formattedSoldeFreebet = parseFloat(freebetSolde)), formattedSoldeFreebet; } function computeTruncateAndFormatWinnings(odd, stake) { var res = odd * stake; return 1 == BetSlipSport.ticket.useFreeBet && (res -= stake), res = truncateFloat(res, 2), number_format(res, 2, ",", "."); } function addAllSimpleStakes() { var res = 0; if (Object.keys(BetSlipSport.ticket.designation).length > 0) for (var event in BetSlipSport.ticket.designation) for (var choice in BetSlipSport.ticket.designation[event]) res += BetSlipSport.ticket.designation[event][choice].stake; return res; } function computeThenFormatTotalStakes() { return number_format(addAllSimpleStakes(), 2, ",", " "); } function computeThenFormatTruncatedCombinedOdd() { return number_format(truncateFloat(computeRawCombinedOdd(), 2), 2, ".", " "); } function computeThenFormatRawCombinedOdd() { return number_format(computeRawCombinedOdd(), 2, ".", " "); } function computeRawCombinedOdd() { var res = 1; if (Object.keys(BetSlipSport.ticket.designation).length > 0) for (var event in BetSlipSport.ticket.designation) for (var choice in BetSlipSport.ticket.designation[event]) res *= BetSlipSport.ticket.designation[event][choice].odd; return res; } function updateTotal(elmt, total) { elmt.text(total + " €"); } function computeThenFormatWinningsSimple() { return number_format(computeRawWinningsSimple(), 2, ",", "."); } function computeRawWinningsSimple() { var res = 0, stake = 0, potentialGain = 0; if (Object.keys(BetSlipSport.ticket.designation).length > 0) for (var event in BetSlipSport.ticket.designation) for (var choice in BetSlipSport.ticket.designation[event]) potentialGain = BetSlipSport.ticket.designation[event][choice].odd * BetSlipSport.ticket.designation[event][choice].stake, res += truncateFloat(potentialGain, 2), stake += BetSlipSport.ticket.designation[event][choice].stake; return 1 === BetSlipSport.ticket.useFreeBet && 1 === Object.keys(BetSlipSport.ticket.designation).length && (res -= stake), res; } function computeThenFormatWinningsCombine() { var res = computeRawWinningsCombine(); return res = truncateFloat(res, 2), number_format(res, 2, ",", "."); } function computeRawWinningsCombine() { var res = computeRawCombinedOdd() * BetSlipSport.ticket.stake; return 1 === BetSlipSport.ticket.useFreeBet && (res -= BetSlipSport.ticket.stake), res; } function computeRawWinningsSystem(stake) { var totalOdds = totalOddsSystem(); return totalOdds * stake; } function computeThenFormatWinningsSystem(stake, separator) { return number_format(computeRawWinningsSystem(stake), 2, separator, "."); } function totalOddsSystem() { var answerList = [], totalOdds = 1, combination = 1; if (Object.keys(BetSlipSport.ticket.designation).length > 2 && Object.keys(BetSlipSport.ticket.designation).length < 7) { for (var event in BetSlipSport.ticket.designation) for (var choice in BetSlipSport.ticket.designation[event]) answerList.push(BetSlipSport.ticket.designation[event][choice].odd); combination = k_combinations(answerList, nbBetSystem[Object.keys(BetSlipSport.ticket.designation).length][BetSlipSport.ticket.risk].nbCombinaison), totalOdds = totalGainsSystem(combination); } return totalOdds; } function computeTotalStakeSystem(stake) { var res = 1; return Object.keys(BetSlipSport.ticket.designation).length > 2 && Object.keys(BetSlipSport.ticket.designation).length < 7 && (res = stake * nbBetSystem[Object.keys(BetSlipSport.ticket.designation).length][BetSlipSport.ticket.risk].totalCombi), number_format(res, 2, ",", " "); } function k_combinations(set, k) { var i, j, combs, head, tailcombs; if (k > set.length || k <= 0) return []; if (k == set.length) return [ set ]; if (1 == k) { for (combs = [], i = 0; i < set.length; i++) combs.push([ set[i] ]); return combs; } for (combs = [], i = 0; i < set.length - k + 1; i++) for (head = set.slice(i, i + 1), tailcombs = k_combinations(set.slice(i + 1), k - 1), j = 0; j < tailcombs.length; j++) combs.push(head.concat(tailcombs[j])); return combs; } function totalGainsSystem(combinations) { var res = 0; for (var item in combinations) { var tmp = 1; for (var elmt in combinations[item]) tmp *= combinations[item][elmt]; res += tmp; } return res; } function refreshRiskList() { var betslip = ""; if (Object.keys(BetSlipSport.ticket.designation).length > 2 && Object.keys(BetSlipSport.ticket.designation).length < 7) { betslip += '', betslip += '', betslip += '' + Translator.trans(nbBetSystem[Object.keys(BetSlipSport.ticket.designation).length][BetSlipSport.ticket.risk].label) + "", betslip += '', betslip += "", betslip += '"; } $("#betslip-systeme .select-box").html(betslip); } function checkValidateButton() { var betslipElement = $("#betslip-sport"), solde = betslipElement.attr("data-solde-sport"), useFreebet = BetSlipSport.ticket.useFreeBet, stakeSimple = BetSlipSport.getStakeSimple(), stakeComb = BetSlipSport.ticket.stake, stakeSys = BetSlipSport.getTotalStakeSystem(); getFreebetBalance() <= 0 ? BetSlipSport.ticket.enableFreeBetSwitcher = !1 : BetSlipSport.ticket.enableFreeBetSwitcher = !0, void 0 !== stakeSimple && (solde >= stakeSimple || 1 === useFreebet ? ($("#betslip-simple button.validate").removeClass("hidden"), $("#betslip-simple button#DepositBtn").addClass("hidden")) : ($("#betslip-simple button.validate").addClass("hidden"), $("#betslip-simple button#DepositBtn").removeClass("hidden"))), void 0 !== stakeComb && (solde >= stakeComb || 1 === useFreebet ? ($("#betslip-combine button.validate").removeClass("hidden"), $("#betslip-combine button#DepositBtn").addClass("hidden")) : ($("#betslip-combine button.validate").addClass("hidden"), $("#betslip-combine button#DepositBtn").removeClass("hidden"))), void 0 !== stakeSys && (solde >= stakeSys ? ($("#betslip-systeme button.validate").removeClass("hidden"), $("#betslip-systeme button#DepositBtn").addClass("hidden")) : ($("#betslip-systeme button.validate").addClass("hidden"), $("#betslip-systeme button#DepositBtn").removeClass("hidden"))); } function updateBetSlipStake() { var stake = $(".onChange input[name=stake]").val(), event = $(".onChange").parents(".choiceItem").data("event"), uid = $(".onChange").parents(".choiceItem").data("unique-id"); if (void 0 !== stake && void 0 !== event && void 0 !== uid) { BetSlipSport.updateStakeSimple(stake, event, uid), checkFreebetBalanceLimit("simple", !1) && (stake = BetSlipSport.getStakeSimple()); var odd = $(".onChange").parents(".choiceItem").find(".odd-betslip").data("odds"), gains = computeTruncateAndFormatWinnings(odd, stake), totalSimple = computeThenFormatWinningsSimple(), totalStake = computeThenFormatTotalStakes(); updateTotal($(".onChange").parents(".betting-wrap").find(".amount-wrap .amount"), gains), updateTotal($(".onChange").parents("#betslip-simple").find(".totalGainsSimple"), totalSimple), updateTotal($(".onChange").parents("#betslip-simple").find(".totalStakeSimple"), totalStake); } var type = $(".tab.selected").data("type"); if ("combine" == type) { BetSlipSport.updateStakeCombine(stake), checkFreebetBalanceLimit("combine", !1); var totalCombine = computeThenFormatWinningsCombine(); updateTotal($("#betslip-combine").find(".totalStakeCombine"), totalCombine); } if ("systeme" == type) { BetSlipSport.updateStakeSystem(stake); var totalSystem = computeThenFormatWinningsSystem(BetSlipSport.ticket.stakeSystem, "."), totalStakeByCombi = computeTotalStakeSystem(BetSlipSport.ticket.stakeSystem); updateTotal($("#betslip-systeme").find(".totalStakeSystem"), totalSystem), updateTotal($("#betslip-systeme").find(".totalOddsSystem"), totalStakeByCombi); } checkValidateButton(), BetSlipSport.setNbBets(); } function removeFreebetStakeLimitOnSimpleBets(resetOriginalStake) { null !== BetSlipSport.ticket.originalFreeBetStake && (resetOriginalStake && (BetSlipSport.ticket.stake = BetSlipSport.ticket.originalFreeBetStake, $("#betslip-simple .betting-wrap .button").each(function() { var stake = BetSlipSport.ticket.stake; $(this).parents(".betting-wrap").find("input[name=stake]").val(stake); var event = $(this).parents(".choiceItem").data("event"), uid = $(this).parents(".choiceItem").data("unique-id"); BetSlipSport.updateStakeSimple(stake, event, uid); })), BetSlipSport.ticket.originalFreeBetStake = null, 1 === $("#simple-freebet-limit").length && $("#simple-freebet-limit").remove()); } function removeFreebetStakeLimitOnCombineBets(resetOriginalStake) { null !== BetSlipSport.ticket.originalFreeBetStake && (resetOriginalStake && (BetSlipSport.ticket.stake = BetSlipSport.ticket.originalFreeBetStake, $(".combinated-stakes-wrap").find("input[name=stake]").val(BetSlipSport.ticket.stake)), BetSlipSport.ticket.originalFreeBetStake = null, 1 === $("#combine-freebet-limit").length && $("#combine-freebet-limit").remove()); } function addFreebetStakeLimitOnSimpleBets() { BetSlipSport.ticket.originalFreeBetStake || (BetSlipSport.ticket.originalFreeBetStake = BetSlipSport.getStakeSimple()), BetSlipSport.ticket.stake = getFreebetBalance(), $("#betslip-simple .betting-wrap .button").each(function() { var stake = BetSlipSport.ticket.stake; $(this).parents(".betting-wrap").find("input[name=stake]").val(stake); var event = $(this).parents(".choiceItem").data("event"), uid = $(this).parents(".choiceItem").data("unique-id"); BetSlipSport.updateStakeSimple(stake, event, uid); }), 0 === $("#simple-freebet-limit").length && $("#betslip-simple .footer > div:nth-child(1)").after('
montant ajusté avec max solde freebets
'); } function addFreebetStakeLimitOnCombineBets() { BetSlipSport.ticket.originalFreeBetStake || (BetSlipSport.ticket.originalFreeBetStake = BetSlipSport.ticket.stake), BetSlipSport.ticket.stake = getFreebetBalance(), $(".combinated-stakes-wrap").find("input[name=stake]").val(BetSlipSport.ticket.stake), 0 === $("#combine-freebet-limit").length && $("#betslip-combine .footer > div:nth-child(1)").after('
montant ajusté avec max solde freebets
'); } function checkFreebetBalanceLimit(betType, resetOriginalStake) { if ("simple" === betType) { if (1 === BetSlipSport.ticket.useFreeBet && getFreebetBalance() < BetSlipSport.getStakeSimple()) return addFreebetStakeLimitOnSimpleBets(), !0; removeFreebetStakeLimitOnSimpleBets(resetOriginalStake); } if ("combine" === betType) { if (1 === BetSlipSport.ticket.useFreeBet && getFreebetBalance() < BetSlipSport.ticket.stake) return addFreebetStakeLimitOnCombineBets(), !0; removeFreebetStakeLimitOnCombineBets(resetOriginalStake); } return !1; } function truncateFloat(number, digitsCount) { return Math.trunc(number * Math.pow(10, digitsCount)) / Math.pow(10, digitsCount); } function manageBasket(nbHorse) { nbHorse > 0 ? $("#betslip .logo-basket").removeClass("hidden") : $("#betslip .logo-basket").addClass("hidden"); } function calculateArrangement(n, p) { return n >= p ? calculateFactorielle(n) / calculateFactorielle(n - p) : 0; } function calculateCombination(n, p) { return calculateArrangement(n, p) / calculateFactorielle(p); } function calculateFactorielle(n) { return n <= 0 || isNaN(n) ? 1 : n * calculateFactorielle(n - 1); } function number_format(number, decimals, dec_point, thousands_sep) { number = (number + "").replace(/[^0-9+\-Ee.]/g, ""); var n = isFinite(+number) ? +number : 0, prec = isFinite(+decimals) ? Math.abs(decimals) : 0, sep = void 0 === thousands_sep ? "," : thousands_sep, dec = void 0 === dec_point ? "." : dec_point, s = "", toFixedFix = function(n, prec) { var k = Math.pow(10, prec); return "" + (Math.round(n * k) / k).toFixed(prec); }; return s = (prec ? toFixedFix(n, prec) : "" + Math.round(n)).split("."), s[0].length > 3 && (s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep)), (s[1] || "").length < prec && (s[1] = s[1] || "", s[1] += new Array(prec - s[1].length + 1).join("0")), s.join(dec); } function currentRaceId() { return $("#turf-race-id").attr("value"); } function saveBetTypeSelected(bet, formula) { if (!isGiantGrid()) { var betSelected = $("#partants-list").attr("data-bet-selected"), selectedOne = "no-bet-selected"; betSelected != bet + " " + formula && (selectedOne = { "data-bet-type": bet, "data-formula-key": formula }), createSession("selected-bet-type-race-" + currentRaceId(), JSON.stringify(selectedOne), .5); } } function readBetTypeSelected() { return JSON.parse(readSession("selected-bet-type-race-" + currentRaceId())); } function saveBetSlipTemp(betSlip) { createSession("tiket-race-" + currentRaceId(), JSON.stringify(betSlip), .5); } function readBetSlipTemp() { return JSON.parse(readSession("tiket-race-" + currentRaceId())); } function saveStackSimple(stackObject) { createSession("simple-bet-race-" + currentRaceId(), JSON.stringify(stackObject), .5); } function readStackSimple() { return JSON.parse(readSession("simple-bet-race-" + currentRaceId())); } function saveOrderStack(stackObject) { createSession("order-bet-race-" + currentRaceId(), JSON.stringify(stackObject), .5); } function readStackOrder() { return JSON.parse(readSession("order-bet-race-" + currentRaceId())); } function initBetSlipFromTemp() { var tempSlipStack = readStackSimple(), tempBetSlip = readBetSlipTemp(), tempOrder = readStackOrder(); null != tempBetSlip && (feedBetSlipObject(tempBetSlip), remindBetSelection(), "SIMPLE" == Betslip.bet && remindSimpleStack(tempSlipStack), null != tempOrder && BetslipOrder.init(), remindHorseSelection(), remindBetFormula(tempBetSlip.formula), remindType(tempBetSlip.type, tempOrder, tempBetSlip), remindRisk(tempBetSlip.risk), remindAllOrder(tempBetSlip.allOrder), remindChamp(tempBetSlip.designation.champ), remindUnitStake(tempBetSlip.unitStake, tempBetSlip.amount), "SIMPLE" != Betslip.bet && displayAmountComplexe(), refreshHeader()); } function feedBetSlipObject(unserializedBetslip) { Betslip = Object.assign({}, Betslip, unserializedBetslip), Betslip.type = [], Betslip.formula = "", Betslip.allOrder = !1, Betslip.disable = null, saveBetSlipTemp(Betslip); } function feedBetSlipOrder(tempOrder, tempBetSlip) { BetslipOrder = Object.assign({}, Betslip, BetslipOrder, tempOrder, tempBetSlip), saveOrderStack(BetslipOrder); } function feedBetSlipSimple(tempSimpleStack) { BetslipSimple = Object.assign({}, BetslipSimple, Betslip, tempSimpleStack), saveStackSimple(BetslipSimple); } function extractClickedBetType() { return readBetTypeSelected(); } function remindChamp(champ) { champ.length > 0 && (Betslip.designation.champ = [], selectChamp(champ)); } function remindRisk(risk) { "MULTI" == Betslip.bet && $(" .sel-box[data-formula-risk=" + risk + "]").click(); } function remindBetSelection() { selectBet(extractClickedBetType()); } function remindAllOrder(allorder) { 1 == allorder && $(".sel-formula-key .sel-box[data-bet-type=ALL_ORDERS]").click(); } function remindSimpleStack(tempBetSlip) { null != tempBetSlip && (feedBetSlipSimple(tempBetSlip), remindSimpleStackChoices()); } function remindStackOrder(StackOrder) { null != StackOrder && feedBetSlipOrder(StackOrder); } function remindSimpleStackChoices() { var stacke = BetslipSimple.stake; $.each(stacke, function(index, value) { $(".white .stake[data-numhorse=" + index + "][data-class=gagnant]").val(value.gagnant), $(".white .stake[data-numhorse=" + index + "][data-class=place]").val(value.place), "" == value.place && setTimeout(function() { $("#label-place-" + index).click(); }, 0), "" == value.gagnant && setTimeout(function() { $("#label-gagnant-" + index).click(); }, 0); }); } function remindHorseSelection() { var base = Betslip.designation.base; Betslip.designationHistory = [], Betslip.designation.base = [], selectHorseBase(base); } function remindBetFormula(oldFormula) { selectFormula(oldFormula); } function remindType(type, tempOrder, tempBetSlip) { console.log("[remindType] type=" + type), selectType(type, tempOrder, tempBetSlip); } function selectType(type, tempOrder, tempBetSlip) { console.log("[selectType] type=" + type); var searchTable = type; $.each(searchTable, function(index, value) { console.log("[selectType] value=" + value), "GAGNANT" !== value && $(getSubSelector(value) + " .sel-box[data-bet-type=" + value + "]").click(), "ORDRE" == value && (feedBetSlipOrder(tempOrder, tempBetSlip), displayDesignation()); }), removeDefaultType(searchTable); } function remindUnitStake(UnitStake, amount) { UnitStake.length > 0 && amount >= 0 && ($(".amount-wrap .amount").html(number_format(amount, 2, ",", " ") + " €"), $(".amount-wrap .stake").val(UnitStake), Betslip.amount = amount, Betslip.unitStake = UnitStake, saveBetSlipTemp(Betslip)), "SIMPLE" == Betslip.bet && ($(".amount").html(number_format(amount, 2, ",", " ") + " €"), Betslip.amount = amount, Betslip.unitStake = UnitStake, saveBetSlipTemp(Betslip)); } function deleteNullValueFromTempOrder(tempOrder) { var position = tempOrder.position; return $.each(position, function(index, value) { null == value && delete position[index]; }), tempOrder.position = position, tempOrder; } function removeDefaultType(searchTable) { if (console.warn("[removeDefaultType] searchTable " + searchTable), -1 == searchTable.indexOf("GAGNANT") && -1 == searchTable.indexOf("ORDRE") && -1 == searchTable.indexOf("ROYAL")) { $(".sel-bet-type .sel-box[data-bet-type=GAGNANT]").click(), console.warn("[removeDefaultType] auto-clicking GAGNANT"); try { console.warn("[removeDefaultType] auto-clicking " + $(".sel-bet-type .sel-box[data-bet-type=GAGNANT]")); } catch (e) {} } } function getSubSelector(value) { var subSelector = ".sel-bet-type"; return "COUPLE" == Betslip.bet && "ORDRE" == value && (subSelector = ".couples-only"), "TRIO" == Betslip.bet && "ORDRE" == value && (subSelector = ".trio-only"), "TOP4" == Betslip.bet && "ORDRE" == value && (subSelector = ".top4-only"), "ROYAL5" == Betslip.bet && (subSelector = ".royal5-only"), console.warn("[getSubSelector] value " + value + " => subSelector " + subSelector), subSelector; } function selectFormula(formula) { $(".sel-formula-key .sel-box[data-formula-key=" + formula + "]").click(); } function selectChamp(champ) { console.warn("selectChamp " + champ), $.each(champ, function(index, value) { $(".checkbox-wrap .checkbox.champ[data-numhorse=" + value + "]").click(); }); } function selectHorseBase(designationBase) { console.warn("selectHorseBase " + designationBase), $.each(designationBase, function(index, value) { $(".checkbox-wrap .checkbox[data-numhorse=" + value + "]").not(".champ").click(); }); } function selectBet(selected) { null != selected && ("BANKER" == selected["data-formula-key"] && $("#partants .bet-select-wrap .auto-bet-select .switch .selector").click(), $(".bet-box .logo-paris[data-bet-type='" + selected["data-bet-type"] + "'][data-formula-key='" + selected["data-formula-key"] + "']").click(), saveBetSlipTemp(Betslip)); } function isGiantGrid() { return 0 == window.location.pathname.indexOf("/geant/"); } function BetSportManager() { this.currentMode = "simple", this.locked = !1; } function checkEvolLiveOdds() { return new Promise(function(resolve, reject) { var lives = BetSlipSport.getBetsLive(), matchId = [], checkList = [], checkFlag = 0; if (Object.keys(lives).length > 0) { for (var uid in lives) -1 == matchId.indexOf(lives[uid].matchId) && matchId.push(lives[uid].matchId), checkList[uid] = clone(lives[uid]); var url = window.france_paris_ws_direct + "?id=" + matchId.join("|") + "&partner=352&mode=v2", source = new EventSource(url); showLoader(), source.addEventListener("odds", function(event) { var data = JSON.parse(event.data), checkValid = []; if (data.odds.length > 0) { for (var uid in lives) for (var tmpUid = "", i = 0; i < data.odds.length && tmpUid != uid; ) { for (var c in data.odds[i].tch) if ((tmpUid = sha1(lives[uid].eventId + data.odds[i].qt + data.odds[i].tch[c].act)) == uid) { checkList[uid].odd = data.odds[i].tch[c].ct, checkList[uid].choice = data.odds[i].tch[c].cid, checkFlag++; break; } i++; } for (var uid in lives) { var oldOdd = lives[uid].odd, newOdd = checkList[uid].odd; 1 == BetSlipSport.ticket.accept ? oldOdd > newOdd && checkValid.push({ eventId: lives[uid].eventId, uid: uid, choice: checkList[uid].choice, oldOdd: oldOdd, newOdd: newOdd }) : 2 == BetSlipSport.ticket.accept && oldOdd != newOdd && checkValid.push({ eventId: lives[uid].eventId, uid: uid, choice: checkList[uid].choice, oldOdd: oldOdd, newOdd: newOdd }); } checkFlag == Object.keys(lives).length && (this.close(), hideLoader(), resolve(checkValid)); } else this.close(), hideLoader(), reject({ err: 404, matchId: data.match_id }); }); } else resolve([]); }); } function getEventDetails(evtId, uid) { return new Promise(function(resolve, reject) { var url = window.france_paris_ws + "/app/webservices/getOneEventInfo?evtId=" + evtId, req = new XMLHttpRequest(); req.open("GET", url), req.onload = function() { if (200 == req.status) { var response = JSON.parse(req.response); void 0 === response.err ? resolve(checkEvolNonLiveOdd(response, uid)) : reject({ err: 404, uid: uid }); } }, req.send(); }); } function checkNonLiveBets() { var callsFP = [], bets = BetSlipSport.getNonLiveBets(); for (var uid in bets) callsFP.push(getEventDetails(bets[uid].eventId, uid)); return callsFP; } function checkEvolNonLiveOdd(inputData, uid) { console.log("[checkEvolNonLiveOdd] inputData=" + JSON.stringify(inputData)); var data = inputData.EventDetail; console.log("[checkEvolNonLiveOdd] data=" + JSON.stringify(data)); for (var tmpUid = "", i = 0, curBet = BetSlipSport.ticket.designation[data.event_id][uid]; i < data.bets.length && tmpUid != uid; ) { for (var c in data.bets[i].choices) if ((tmpUid = sha1(data.event_id + data.bets[i].question_label + data.bets[i].choices[c].choice_actor)) == uid) return { eventId: data.event_id, uid: uid, choice: data.bets[i].choices[c].choice_id, oldOdd: curBet.odd, newOdd: data.bets[i].choices[c].choice_odds }; i++; } return null; } function confirmationPopup() { hideLoader(), showPopup("confirmation-sport-popup", $("#confirmation-sport-popup").html()); } function warningCard(uid, oldOdd, newOdd, matchId) { if (null != uid) var card = $(".choiceItem[data-unique-id=" + uid + "]"); if (null != matchId) var card = $(".choiceItem[data-match-id=" + matchId + "]"); if (card.hasClass("warning") ? card.find(".warning-wrap").remove() : card.addClass("warning"), null != oldOdd) { var oldOddFormated = "", newOddFormated = ""; newOddFormated = newOdd >= 100 ? number_format(newOdd, 0, "", " ") : number_format(newOdd, 2, ".", " "), oldOddFormated = oldOdd >= 100 ? number_format(oldOdd, 0, "", " ") : number_format(oldOdd, 2, ".", " "); var warning = $('
' + Translator.trans("warning.terms_changed") + "
(" + Translator.trans("warning.new_odds") + newOddFormated + ")
"); card.find(".odd-betslip").html('(' + oldOddFormated + ") " + newOddFormated), card.find(".odd-betslip").attr("data-odds", newOddFormated); } else var warning = $('
' + Translator.trans("warning.bet_closed") + "
"); card.find(".content").prepend(warning); } function removeWarnings() { $("#betslip-sport .choiceItem").each(function() { $(this).hasClass("warning") && ($(this).removeClass("warning"), $(this).find(".warning-wrap").remove()); }); } function updateStakeDisplays(uid) { var cards = $(".choiceItem[data-unique-id=" + uid + "]"); $(cards).each(function() { updateStakeSimpleDisplay($(this)), updateStakeCombineDisplay($(this)), updateStakeSystemDisplay($(this)); }); } function updateStakeSimpleDisplay(card) { var stake = card.find("input[name=stake]").val(), odd = card.find(".odd-betslip").attr("data-odds"), gains = computeTruncateAndFormatWinnings(odd, stake), totalGains = computeThenFormatWinningsSimple(), totalStake = computeThenFormatTotalStakes(); updateTotal(card.find(".amount-wrap .amount"), gains), updateTotal(card.parents("#betslip-simple").find(".totalGainsSimple"), totalGains), updateTotal(card.parents("#betslip-simple").find(".totalStakeSimple"), totalStake); } function updateStakeCombineDisplay(card) { var totalGains = computeThenFormatWinningsCombine(); updateTotal(card.parents("#betslip-combine").find(".totalStakeCombine"), totalGains); var totalOddsComb = computeRawCombinedOdd(); $("#betslip-combine").find(".totalOddsCombine").text(totalOddsComb); } function updateStakeSystemDisplay(card) { var stakeSystem = $("#betslip-systeme .combinated-stakes-wrap input[name=stake]").val(), totalSystem = computeThenFormatWinningsSystem(stakeSystem, ","), totalStakeByCombi = computeTotalStakeSystem(stakeSystem); updateTotal(card.parents("#betslip-systeme").find(".totalStakeSystem"), totalSystem), updateTotal(card.parents("#betslip-systeme").find(".totalOddsSystem"), totalStakeByCombi), totalStakeByCombi = computeTotalStakeSystem(BetSlipSport.ticket.stakeSystem), updateTotal($("#betslip-systeme").find(".totalOddsSystem"), totalStakeByCombi); } function callExclusionAjax(password, type, classPwd, duree, dateEnd) { duree = void 0 !== duree ? duree : "", dateEnd = void 0 !== dateEnd ? dateEnd : ""; var params = { type: "POST", url: Routing.generate("genybet_myaccount_close_account"), data: { password: password, type: type, duree: duree, "date-end": dateEnd } }, am = new AjaxManager(); am.update(params), am.flush(function(data) { "OK" == data.response ? (hidePopup(), $("#confirmation-exclusion-temp-popup .popup .content .msg-error").html(data.error), 1 != Cookies.get("isAppUser") ? showPopup("confirmation-exclusion-temp-popup", $("#confirmation-exclusion-temp-popup").html()) : ($("#confirmation-exclusion-temp-popup .footer").remove(), $("#mon-compte").html('
' + $("#confirmation-exclusion-temp-popup").html() + "
"))) : "PWD" == data.error_code ? ($(classPwd).addClass("error"), $(classPwd).parent().find("label.error").removeClass("hidden"), hidePopup()) : "EDE" == data.error_code ? ($("#date-end").addClass("error"), $("#date-end").parent().find("label.error").removeClass("hidden"), hidePopup()) : "WS" == data.error_code ? (hidePopup(), $("#error-cloture-popup .popup .content .msg-error").html(data.error), showPopup("error-cloture-popup", $("#error-cloture-popup").html())) : ($("#error-cloture-popup .popup .content .msg-error").html(data.error), showPopup("error-cloture-popup", $("#error-cloture-popup").html())); }); } function callClotureAjax(password, type, classPwd, duree) { duree = void 0 !== duree ? duree : ""; var params = { type: "POST", url: Routing.generate("genybet_myaccount_close_account"), data: { password: password, type: type, duree: duree } }, am = new AjaxManager(); am.update(params), am.flush(function(data) { "OK" == data.response ? (hidePopup(), $("#confirmation-cloture-popup .popup .content .msg-error").html(data.error), 1 != Cookies.get("isAppUser") ? showPopup("confirmation-cloture-popup", $("#confirmation-cloture-popup").html()) : ($("#confirmation-cloture-popup .footer").remove(), $("#mon-compte").html('
' + $("#confirmation-cloture-popup").html() + "
"))) : "PWD" == data.error_code ? ($(classPwd).addClass("error"), $(classPwd).parent().find("label.error").removeClass("hidden"), hidePopup()) : "WS" == data.error_code ? (hidePopup(), $("#error-cloture-popup .popup .content .msg-error").html(data.error), showPopup("error-cloture-popup", $("#error-cloture-popup").html())) : ($("#error-cloture-popup .popup .content .msg-error").html(data.error), showPopup("error-cloture-popup", $("#error-cloture-popup").html())); }); } function updateBetslipLabel() { "UNIT" != Betslip.formula ? Betslip.nbBase > 1 ? ($(".my-horse-base").hide(), $(".my-horses-base").show()) : ($(".my-horse-base").show(), $(".my-horses-base").hide()) : ($(".my-horse-base").hide(), $(".my-horses-base").show()); } function displayAmountComplexe() { var amount = Betslip.calculateAmount($(".amount-wrap .split .stake").val()), soldeClient = $("#betslip").data("solde-turf"); availablePadKeyboard(), !isNaN(amount) && amount > 0 ? amount <= soldeClient ? (enableButton(), hideDepositBtn()) : showDepositBtn() : disableButton(), $(".amount-wrap .split.ra .amount").html(number_format(amount, 2, ",", " ") + " €"); } function availablePadKeyboard() { $("#clavier-fractions .pad[data-value]").removeClass("disable"), $("#clavier-fractions .pad[data-value]").each(function() { $(this).data("value") * Betslip.nbCombinaison < 1 && $(this).addClass("disable"); }); } function updateHorseTicket() { Betslip.isAuto && disableSorting($(".sortable")); var listBase = Betslip.designation.base, listChamp = Betslip.designation.champ; $(".horses-base .horse, .horses-champ .horse").remove(); var deleteHtml = isTrashMode() ? '' : ''; if (console.warn("[updateHorseTicket] Betslip.isOrder() " + Betslip.isOrder()), Betslip.isOrder()) updateHorseTicketOrder(); else if (Betslip.isAuto) for (i = 0; i < Betslip.getNbMaxHorse(); i++) $(".horses-base").append('
'); else for (i = 0; i < listBase.length; i++) $(".horses-base .horse.empty").length > 0 ? $('
' + listBase[i] + deleteHtml + '
' + (i + 1) + "
").insertBefore(".horses-base .horse.empty:first") : $(".horses-base").append('
' + listBase[i] + deleteHtml + '
' + (i + 1) + "
"); if (!Betslip.isAuto) for (i = 0; i < listChamp.length; i++) listChamp[i] && $(".horses-champ").append('
' + listChamp[i] + deleteHtml + "
"); updatePositionCheckboxes(), displayAmountComplexe(), Betslip.isAuto || addEmpty(), updateBetslipLabel(), "UNIT" == Betslip.formula ? listBase.length > Betslip.getNbMaxHorse() && (Betslip.formula = "COMBINED") : "COMBINED" == Betslip.formula && listBase.length <= Betslip.getNbMaxHorse() && (Betslip.formula = "UNIT"); } function addEmpty() { var max = Betslip.getNbMaxHorse(), baseMissing = max - Betslip.nbBase; baseMissing == max && removeTrashMode(), $(".horses-base .horse.empty, .horses-base .horse.banker, .horses-base .horse.champ").remove(); var classType = "empty"; if ("PART_WHEEL" == Betslip.formula || "WHEEL" == Betslip.formula ? classType = "champ" : Betslip.isAuto && (classType = "banker"), baseMissing > 0) { var j = Betslip.nbBase + 1; for (i = 0; i < baseMissing; i++) { var htmlPosition = "banker" == classType ? "" : '
' + j + "
"; $(".horses-base").append('
' + htmlPosition + "
"), j++; } } } function replaceEmptyToChamp() { $(".horses-base .horse.empty").removeClass("empty").addClass("champ"); } function replaceChampToEmpty() { $(".horses-base .horse.champ").removeClass("champ").addClass("empty"); } function displayDesignation() { console.warn("[displayDesignation] Betslip.isOrder() " + Betslip.isOrder()), !Betslip.isOrder() || "PART_WHEEL" != Betslip.formula && "WHEEL" != Betslip.formula ? $("#betslip .header .combinaison").html(Betslip.showDesignation()) : $("#betslip .header .combinaison").html(BetslipOrder.showDesignation()); } function clearBetHorseComplexe() { $(".horses-list .horses-champ, .horses-list .horses-base").html(""); } function isTrashMode() { return $(".logo-basket").hasClass("on"); } function sliceDesignation(keepChamp) { clearCheckboxesBase(); var nbTotalBase = maxNbBases[Betslip.bet]; if ("MULTI" == Betslip.bet && "UNIT" != Betslip.formula && (nbTotalBase = maxNbBasesMulti[Betslip.risk]), !keepChamp || nbTotalBase < Betslip.designation.base.length) { var tmpBase = Betslip.designation.base.concat(Betslip.designation.champ), truncateDesignationBase = tmpBase.slice(0, nbTotalBase), truncateDesignationChamp = tmpBase.slice(nbTotalBase, tmpBase.length); Betslip.designation.champ; for (i = 0; i < truncateDesignationBase.length; i++) $(".checkbox-wrap .checkbox:not(.champ)[data-numhorse=" + truncateDesignationBase[i] + "]").addClass("checked"), $(".checkbox-wrap .checkbox.champ[data-numhorse=" + truncateDesignationBase[i] + "]").addClass("disable"); clearChampDisableCheckbox(), Betslip.updateDesignation(truncateDesignationBase), Betslip.designation.champ = truncateDesignationChamp, Betslip.nbChamp = Betslip.designation.champ.length, isBaseDisable(); } updateHorseTicket(), displayDesignation(), saveOrderStack(BetslipOrder); } function setChampTotal() { Betslip.resetChamp(), $("#partants-list .cheval").not(".np").each(function() { $(this).find(".checkbox-wrap .checkbox").not(".champ").hasClass("checked") || Betslip.addHorseChamp($(this).find(".numero").text()); }); } function manageAppDisplay() { var parser = parseURL(window.location.href), search = parser.search; Cookies.set("isAppUser", 0), -1 != search.indexOf("token=") && Cookies.set("isAppUser", 1), 1 == Cookies.get("isAppUser") && $("#header, #footer").hide(); } function saveHistory() { var parser = parseURL(window.location.href), currentUrl = parser.pathname, thisRoute = Cookies.get("thisRoute"), lastRoute = Cookies.get("lastRoute"); if (void 0 !== thisRoute) { var fromCompetition = checkSportCompetitionRoute(currentUrl, thisRoute); if (!0 === checkLastRouteBeforeEvent(currentUrl, thisRoute)) return Cookies.set("lastRoute", thisRoute), void Cookies.set("thisRoute", lastRoute); } var isExcludedRoute = checkIsExcludedRoute(currentUrl); currentUrl != thisRoute && (void 0 === thisRoute && (thisRoute = isExcludedRoute ? Routing.generate("genybet_home_turf") : currentUrl), void 0 !== fromCompetition && 0 != fromCompetition && (thisRoute = fromCompetition), isExcludedRoute || (Cookies.set("lastRoute", thisRoute), Cookies.set("thisRoute", currentUrl))); } function checkIsExcludedRoute(url) { var isExcluded = !1, excludedRoute = [ Routing.generate("fos_js_routing_js"), Routing.generate("security_login"), Routing.generate("logout"), Routing.generate("genybet_myaccount_valid_deposit"), Routing.generate("payment_mercanet_response"), Routing.generate("payment_mercanet_cancel"), Routing.generate("genybet_bet_bet"), Routing.generate("gregwar_captcha.generate_captcha"), Routing.generate("payment_psc_response_ok"), Routing.generate("payment_psc_response_nok"), Routing.generate("bazinga_jstranslation_js"), Routing.generate("genybet_guide"), Routing.generate("genybet_myaccount_withdrawal_page"), Routing.generate("genybet_myaccount_withdrawal_post"), Routing.generate("genybet_inscription"), Routing.generate("genybet_myaccount_autoexclusion"), Routing.generate("genybet_forgotten_password"), Routing.generate("genybet_virement"), Routing.generate("payment_promo_code") ]; -1 != $.inArray(url, excludedRoute) && (isExcluded = !0); for (var excludePartialUrl = [ "mot-de-passe-oublie" ], i = 0; i < excludePartialUrl.length; i++) -1 != url.indexOf(excludePartialUrl[i]) && (isExcluded = !0); return isExcluded; } function checkLastRouteBeforeEvent(url, beforeUrl) { var excludedRoute = [ Routing.generate("genybet_sport_program"), Routing.generate("genybet_sport_paris_stars"), Routing.generate("genybet_sport_paris_live"), Routing.generate("genybet_sport_all_sports") ], eventRoute = [ Routing.generate("genybet_sport_event_live"), Routing.generate("genybet_sport_event") ], isExcluded = isEvent = !1; for (var route in excludedRoute) beforeUrl.match(excludedRoute[route]) && (isExcluded = !0); if (1 == isExcluded) for (var route in eventRoute) url.match(eventRoute[route]) && (isEvent = !0); return !0 === isEvent && !0 === isExcluded; } function checkMyAccountRoute(url) { var myAccountRoute = [ Routing.generate("genybet_myaccount_withdrawal_page"), Routing.generate("genybet_myaccount_autoexclusion") ]; return -1 != $.inArray(url, myAccountRoute); } function checkSportCompetitionRoute(url, beforeUrl) { var res = !1; return url.match(Routing.generate("genybet_sport_program")) && beforeUrl.match(Routing.generate("genybet_sport_program")) && (res = Routing.generate("genybet_home_sport")), url.match(Routing.generate("genybet_sport_all_sports")) && (res = Routing.generate("genybet_home_sport")), url.match(Routing.generate("genybet_sport_bet_competition")) && (res = Routing.generate("genybet_sport_all_sports")), res; } function manageBackButton() { var lastRoute = Cookies.get("lastRoute"); void 0 === lastRoute || null == lastRoute ? lastRoute = "undefined" != typeof Routing ? Routing.generate("genybet_home_turf") : "/" : lastRoute == Routing.generate("genybet_myaccount_user_data") ? lastRoute = Routing.generate("genybet_home_turf") : checkMyAccountRoute(parseURL(window.location.href).pathname) && (lastRoute = Routing.generate("genybet_myaccount_user_data")), $(".backBtn, .back.smart").each(function() { $(this).attr("href", lastRoute); }); } function parseURL(url) { var queries, split, i, parser = document.createElement("a"), searchObject = {}; for (parser.href = url, queries = parser.search.replace(/^\?/, "").split("&"), i = 0; i < queries.length; i++) split = queries[i].split("="), searchObject[split[0]] = split[1]; return { protocol: parser.protocol, host: parser.host, hostname: parser.hostname, port: parser.port, pathname: parser.pathname, search: parser.search, searchObject: searchObject, hash: parser.hash }; } function calculateAndShowMentions(amount, percent, moyenPaiment) { hideError(), hideMentions(), moyenPaiment = void 0 !== moyenPaiment ? moyenPaiment : $('form#depot input[name="payment"]').val(); var amountPercent = calculatePercent(amount, percent), commission = calculateCommission(amount); amountPercent > 500 && (percent = null, amountPercent = 500), showMentions(amountPercent, percent, moyenPaiment, commission); } function calculateCommission(amount) { return Math.max(amount * PAYSAFECARD_TAUX_COMMISSION, PAYSAFECARD_MIN_COMMISSION); } function addTypePayment(elmt, typePayment) { switch (typePayment) { case "cb": elmt.append(''), elmt.append(''); } } function getPercentByAmount(amount, arrBonus) { var percent = null; return arrBonus.forEach(function(pourcentage, montantPlanche) { amount >= montantPlanche && (percent = pourcentage); }), percent; } function calculatePercent(amount, percent) { var res = null; return void 0 !== amount && void 0 !== percent && null != amount && null != percent && (res = amount * percent / 100), res; } function validFormDeposit(montant, moyenPaiment, limit) { var isValid = !0, errorMsg = ""; return "" == montant ? (errorMsg += Translator.trans("deposit.alert.missing.amount"), isValid = !1) : (montant < 5 && (errorMsg += Translator.trans("deposit.alert.minimum.not.reached"), isValid = !1), montant > 1e3 && "psc" == moyenPaiment && (errorMsg += Translator.trans("deposit.alert.psc.limit.max"), isValid = !1), limit - montant < 0 && (errorMsg += Translator.trans("deposit.alert.limit.deposit.reached", { limit: number_format(limit, 2, ".", " ") }), isValid = !1)), "" == moyenPaiment && (errorMsg += Translator.trans("deposit.alert.type.deposit"), isValid = !1), showErrorMessage(errorMsg), isValid; } function showErrorMessage(errorMsg) { "" != errorMsg ? (hideLoader(), hideMentions(), $(".error").html(errorMsg)) : $(".error").html(""); } function showMentions(amountPercent, percent, moyenPaiment, commission) { var amount = $('form#depot input[name="amount"]').val(); commission = void 0 !== commission ? commission : 0, null != amountPercent && null != percent ? ($(".mentions .infos-bonus .percent").html(percent), $(".mentions .infos-bonus .bonus-amount").html(number_format(amountPercent, 2, ".")), $(".mentions .infos-bonus").removeClass("hidden"), $(".mentions").removeClass("hidden")) : null != amountPercent && null == percent ? ($(".mentions .infos-bonus-max .bonus-amount").html(number_format(amountPercent, 2, ".")), $(".mentions .infos-bonus-max").removeClass("hidden"), $(".mentions").removeClass("hidden")) : ($(".mentions").addClass("hidden"), $(".mentions .infos-bonus").addClass("hidden"), $(".mentions .infos-bonus-max").addClass("hidden"), $(".mentions .infos-paysafecard").addClass("hidden"), $(".mentions .infos-bonus .percent").html(""), $(".mentions .infos-bonus .bonus-amount, .mentions .infos-bonus-max .bonus-amount").html("")), "psc" == moyenPaiment && commission > 0 && amount >= 5 && amount <= 1e3 && ($(".mentions .infos-paysafecard .commission").html(number_format(commission, 2, ".")), $(".mentions .infos-paysafecard").removeClass("hidden"), $(".mentions").removeClass("hidden")), "psc" == moyenPaiment && (amount < 5 || amount > 1e3) && showErrorMessage(Translator.trans("deposit.alert.psc.limit")); } function hideMentions() { $(".mentions").addClass("hidden"), $(".mentions .infos-bonus").addClass("hidden"), $(".mentions .infos-bonus-max").addClass("hidden"), $(".mentions .infos-paysafecard").addClass("hidden"), $(".mentions .infos-bonus .percent").html(""), $(".mentions .infos-bonus .bonus-amount, .mentions .infos-bonus-max .bonus-amount").html(""); } function hideError() { $(".error").html(""); } function buildHipayForm() { showLoader(), $(".hipay-container").length > 0 || (addHipayHtml(), configCardHipay.fields.cardHolder.defaultFirstname = $("#mon-compte").attr("data-user-firstname"), configCardHipay.fields.cardHolder.defaultLastname = $("#mon-compte").attr("data-user-lastname"), null === hipay && (hipay = HiPay({ username: $(".content").data("hipay-user"), password: $(".content").data("hipay-pwd"), environment: $(".content").data("hipay-env"), lang: $(".content").data("hipay_lang") })), HipayCard = hipay.create("card", configCardHipay), HipayCard.on("ready", function() { hideLoader(); }), HipayCard.on("focus", function() { animateClavier("clavier", "close"); }), HipayCard.on("change", function(data) { handleErrorHipay(data.valid, data.error), isHiPayFormValid() && "" !== $("#deposit-amount").val() ? (document.getElementById("hipay-submit").disabled = !1, $("#hipay-submit").removeClass("green-disabled"), $("#hipay-submit").addClass("green")) : (document.getElementById("hipay-submit").disabled = !0, $("#hipay-submit").removeClass("green"), $("#hipay-submit").addClass("green-disabled")); }), $("#hipay-submit").click(function() { var montant = $('form#depot input[name="amount"]').val(), moyenPaiment = $('form#depot input[name="payment"]').val(), limit = $(".depot-max .amount").data("deposit-limit"); validFormDeposit(montant, moyenPaiment, limit) && (showLoader(), HipayCard.getPaymentData().then(function(response) { var params = { type: "POST", url: Routing.generate("genybet_myaccount_valid_deposit"), data: { amount: montant, payment_method: moyenPaiment, tokenizedCard: response }, dataType: "HTML" }, am = new AjaxManager(); am.update(params), am.flush(function(data) { var result = JSON.parse(data); "PSP_FORWARDING" === result.status && (window.location.href = result.message), frictionlessStatuses.includes(result.status) && (window.location.href = Routing.generate("payment_hipay_response_accept", { orderid: result.transactionSipsId, reference: result.referenceHipay })), hideLoader(); }, function(errors) { $("#hipay-gb-error-message").html(errors[0].error).show(), hideLoader(); var content = $("#hipay-error-popup"); showPopup("#hipay-error-popup", content.html()); }); }, function(errors) { $("#hipay-gb-error-message").html(errors[0].error).show(), hideLoader(); })); }), $("#deposit-amount-container").click(function() { $("#deposit-amount").val(""), $("#deposit-amount").trigger("change"); }), $("#deposit-amount").change(function() { "" === $("#deposit-amount").val() ? disableHiPaySubmit() : isHiPayFormValid() && enableHipaySubmit(), updateHypaySubmitLabel(); }), $("#validate").hide()); } function enableHipaySubmit() { var submit = $("#hipay-submit"); submit.prop("disabled", !1), submit.removeClass("green-disabled"), submit.addClass("green"); } function disableHiPaySubmit() { var submit = $("#hipay-submit"); submit.prop("disabled", !0), submit.removeClass("green"), submit.addClass("green-disabled"); } function updateHypaySubmitLabel() { var amount = $("#deposit-amount").val(); "" === amount ? $("#montantSubmit").text("") : $("#montantSubmit").text(" de " + amount + " €"); } function addHipayHtml() { $("#payment_type_select").append('
\n
'), updateHypaySubmitLabel(); } function deleteHipayForm() { $(".hipay-container").remove(), $("#validate").show(), null != HipayCard && HipayCard.destroy(), HipayCard = null; } function handleErrorHipay(valid, error) { var errorElement = $("#hipay-gb-error-message"); "" !== error ? (errorElement.html(error), errorElement.show()) : (errorElement.html(""), errorElement.hide()); } function isHiPayFormValid() { return 4 === $(".HiPayField--valid").length; } function validatePromoCode() { console.log("in validate"); var codeInput = $("#form_promo_code"); console.log(codeInput), codeInput.parent().find(".form-error, .error").remove(); var inputVal = codeInput.val(); return 0 !== inputVal.length && (inputVal.length < 4 || inputVal.length > 20 ? (codeInput.after('
' + Translator.trans("promocode.validation.length.error") + "
"), !1) : !!/^[a-zA-Z0-9_]*$/.test(inputVal) || (codeInput.after('
' + Translator.trans("promocode.validation.general.error") + "
"), !1)); } function initTransaction(transactionId, amount) { return ga("create", window.gauid), ga("require", "ecommerce"), ga("set", "currencyCode", "EUR"), ga("ecommerce:addTransaction", { id: transactionId, affiliation: "GenyBet-Mobile-Web", revenue: amount, shipping: 0, tax: 0 }), transactionId; } function addItem(transactionId, betName, idBet, type, amount) { ga("ecommerce:addItem", { id: transactionId, name: betName, sku: idBet, category: type, price: amount, quantity: "1" }); } function sendToAnalytics() { ga("ecommerce:send"); } function BetForRace(complement, chevaux, idCourse, numCourse) { this.complement = complement, this.chevaux = chevaux, this.idCourse = idCourse, this.numCourse = numCourse; } function closedGiant() { "Géant fermé" == $(".txt-white.closure").text().trim() && ($(".auto-bet").remove(), $(".checkbox").addClass("disable"), $(".select-box.on-popup").addClass("disable")); } function autoResetCombination() { resetCheckRace(), backToFirstRace(), resetRunnersList(), resetHorseSelection(Giant.geantRaceBetRequests), resetAmountOfBet(), Giant.init(); } function resetHorseSelection(betOnRace) { $.each(betOnRace, function(key, value) { var selected = $("#selection-race-" + value.numCourse); $("#partants-list-" + value.numCourse).find(".checkbox[data-numhorse='" + value.complement + "']").not(".champ").removeClass("disable"), $("#replacement-choice-" + value.numCourse).text("Choisir un cheval"), selected.text("Sélectionnez au minimum un cheval"), selected.removeClass("bold"), selected.addClass("txt-red"); }), $(".options .nowrap").removeClass("hidden"); } function resetAmountOfBet() { var money = $(".white.stake"); money.attr("value", ""), money.attr("placeholder", "Mise"), $("#perform-giant").addClass("disable"), $(".amount-wrap .amount").html(number_format(0, 2, ",", " ") + " €"); } function resetRunnersList() { $("span.checkbox.checked").removeClass("checked"); } function performGiantBet(BetData) { var params = { type: "POST", data: BetData.jsonSerialize(), dataType: "json", url: Routing.generate("genybet_bet_giant") }; showLoader(), am.update(params), am.flush(GiantBetCallBack); } function backToFirstRace() { $(".selector span[data-numrace=1]").click(); } function resetCheckRace() { $(".selector.checked").removeClass("checked"); } function autoCombination() { $("[id^='partants-list-']").each(function() { var horses = $(this).find(".checkbox").not(".champ"); deliverRandomHorse($(this), horses.size()); }), backToFirstRace(); } function deliverRandomHorse(list, total) { for (var randomHorse = getRandomIntInclusive(1, total), horsesList = []; 1 == list.find(".checkbox[data-numhorse='" + randomHorse + "']").not(".champ").hasClass("np") || 1 == list.find(".checkbox[data-numhorse='" + randomHorse + "']").not(".champ").hasClass("disable"); ) randomHorse = getRandomIntInclusive(1, total); var numRace = list.attr("id").replace("partants-list-", ""), raceBubble = $(".selector span[data-numrace=" + numRace + "]"); raceBubble.parent().addClass("checked"), list.find(".checkbox[data-numhorse='" + randomHorse + "']").not(".champ").addClass("checked"), horsesList.push(randomHorse); var currentBetForRace = new BetForRace(returnReplacementHorse(numRace), horsesList, raceBubble.attr("data-idrace"), numRace); Giant.addBetForRace(currentBetForRace), updateHiddenHorseField(!0, numRace, randomHorse), showGiantBetSlip(), printSelectedCombination(currentBetForRace), autoAmountManager(), setCombination(combinationCalculation()); } function autoAmountManager() { $(".white.stake").attr("value", 1), Giant.setUnitAmount(1), updateTotalAmount(); } function markRaceHasChecked(numRace) { var currentRace = $(".selector span[data-numrace=" + numRace + "]").parent(), currentListRunner = $("#partants-list-" + numRace); 0 == currentRace.hasClass("checked") && currentRace.addClass("checked"), 0 == currentListRunner.find(".checkbox.checked").length && currentRace.removeClass("checked"); } function getAmountStack() { return $(".amount-wrap .split .stake").val(); } function setSelectedCombination(numRace) { printSelectedCombination(Giant.getBetForRaceFromNum(numRace)); } function printSelectedCombination(raceObject) { var stringCombination = raceObject.chevaux.join("-") + " (" + raceObject.complement + ")", currentRace = $("#selection-race-" + raceObject.numCourse); currentRace.removeClass("txt-red"), 0 == currentRace.hasClass("bold") && currentRace.addClass("bold"), currentRace.text(stringCombination); } function updateTotalAmount() { var totalAmount = combinationCalculation() * getAmountStack(); $(".amount-wrap .amount").html(number_format(totalAmount, 2, ",", " ") + " €"), allowToPerformBet(totalAmount); } function allowToPerformBet(totalAmount) { if (parseFloat(totalAmount) > parseFloat(0)) { $("#perform-giant").removeClass("disable"); totalAmount > $("#betslip").data("solde-turf") ? showDepositGiantBtn() : hideDepositGiantBtn(); } parseFloat(totalAmount) > parseFloat(1e3) && $("#perform-giant").addClass("disable"); } function combinationCalculation() { var combination = 1; return $("[id^='partants-list-']").each(function() { combination *= $(this).find(".checkbox.checked").length; }), combination; } function setCombination(combination) { $(".combinaisons .right").text(combination); } function returnCurrentRaceIdAndNumRace() { return $(".selectors .selector.active > span"); } function giantVisibility(champ) { champ.hasClass("checked") ? showGiantBetSlip() : 0 == $(".checkbox-wrap .checkbox").hasClass("checked") && hideGiantBetSlip(); } function updateRacehorseSelected(horse, idCourse, numRace) { var BetForRaceFromId = Giant.getBetForRaceFromId(idCourse), horsesList = BetForRaceFromId.chevaux, currentBetForRace = ""; if (horse.hasClass("checked")) horsesList.push(horse.attr("data-numhorse")), horsesList.sort(function(a, b) { return a - b; }), currentBetForRace = new BetForRace(returnReplacementHorse(numRace, horse.attr("data-numhorse")), horsesList, idCourse, numRace), updateHiddenHorseField(!0, numRace, horse.attr("data-numhorse")); else for (var i = horsesList.length - 1; i >= 0; i--) if (horsesList[i] === horse.attr("data-numhorse")) { horsesList.splice(i, 1), updateHiddenHorseField(!1, numRace, horse.attr("data-numhorse")); var currentcallerRace = Giant.getBetForRaceFromNum(numRace), currentcallerComplement = currentcallerRace.complement; currentBetForRace = new BetForRace(currentcallerComplement, horsesList, idCourse, numRace); } Giant.addBetForRace(currentBetForRace), setCombination(combinationCalculation()); } function updateHiddenHorseField(status, numRace, numHorse) { status ? $("#replacement-" + numRace + "-" + numHorse).addClass("hidden") : $("#replacement-" + numRace + "-" + numHorse).removeClass("hidden"); } function returnReplacementHorse(numRace, clickedHorseNum) { var runnersTable = $("#partants-list-" + numRace), replacement = smallestUnselected(runnersTable.find(".cheval.card")), currentcallerRace = Giant.getBetForRaceFromNum(numRace), currentcallerComplement = currentcallerRace.complement; return 0 == replacement.num ? (updateReplacementHorse(replacement, numRace), "") : (clickedHorseNum == currentcallerComplement && updateReplacementHorse(replacement, numRace), replacement.num); } function initReplacementForAllRaces() { var raceNumberList = $("#meeting-nav").attr("data-meeting-races-list"); if (void 0 !== raceNumberList) { raceNumberList = raceNumberList.split("-"); for (var arrayLength = raceNumberList.length, i = 0; i < arrayLength; i++) { var runnersTable = $("#partants-list-" + raceNumberList[i]), replacement = smallestUnselected(runnersTable.find(".cheval.card")), idRace = $(".selectors .selector > span[data-numrace= '" + raceNumberList[i] + "']"), currentBetForRace = new BetForRace("", [], parseInt(idRace.attr("data-idrace")), raceNumberList[i]); Giant.addBetForRace(currentBetForRace), Giant.setReplacementForRace(raceNumberList[i], replacement.num), updateReplacementHorse(replacement, raceNumberList[i]); } } } function updateReplacementHorse(replacement, numRace) { $("#replacement-choice-" + numRace).text($("#replacement-" + numRace + "-" + replacement.num).text()); } function smallestUnselected(selector) { var smallOne = {}, smallOneToReturn = { num: 0, odd: Number.MAX_SAFE_INTEGER }; return selector.each(function() { $(this).hasClass("np") || (smallOne.num = $(".numero", this).html().trim(), smallOne.odd = $(".cote", this).html().trim(), 0 == $(".checkbox[data-numhorse='" + smallOne.num + "']", this).not(".champ").hasClass("checked") && parseFloat(smallOneToReturn.odd) >= parseFloat(smallOne.odd) && (smallOneToReturn.num = smallOne.num, smallOneToReturn.odd = smallOne.odd)); }), smallOneToReturn; } function showGiantBetSlip() { $("#betslip").attr("data-bet-selected", "GEANT UNIT"), $("#betslip").attr("class", "active sticky GEANT UNIT"), $("#logo-giant-down").attr("class", "logo-paris vm outlined GEANT UNIT"); } function hideGiantBetSlip() { $("#betslip").attr("data-bet-selected", ""), $("#betslip").attr("class", ""), $("#logo-giant-down").attr("class", ""); } function setCurrentMeeting(giant) { giant.idGeant = $("#meeting-nav").attr("data-meeting-number"); } function getRandomIntInclusive(min, max) { return min = Math.ceil(min), max = Math.floor(max), Math.floor(Math.random() * (max - min + 1)) + min; } function confirmationGiantBet() { showPopup("confirmation-giant-popup", $("#confirmation-giant-popup").html()); } function showDepositGiantBtn() { $(".amount-wrap button#perform-giant").not(".login").addClass("hidden"), $(".amount-wrap button#DepositBtn").removeClass("hidden disable"); } function hideDepositGiantBtn() { $(".amount-wrap button#perform-giant").removeClass("hidden"), $(".amount-wrap button#DepositBtn").addClass("hidden"); } function showButtonTop(elem) { var selector = elem ? $(elem) : $(window), button = $("
", { id: "back-to-the-top", html: " " }); $("#body").append(button), window.scrollY > 100 && button.addClass("shown"), selector.scroll(function() { selector.scrollTop() < 100 ? button.removeClass("shown") : button.addClass("shown"); }), button.on("click", function() { return elem ? selector.animate({ scrollTop: 0 }, 400) : $("html, body").animate({ scrollTop: 0 }, 400), !1; }); } function SortableArray(rows) { this.rows = rows, this.colToSort = 0; var table = this; this.sortAsc = function(index) { return table.colToSort = index, table.rows.sort(this.compareAsc); }, this.sortDesc = function(index) { return table.colToSort = index, table.rows.sort(this.compareDesc); }, this.compareAsc = function(a, b) { var valA = $($(a).children().get(table.colToSort)).data("sort-by"), valB = $($(b).children().get(table.colToSort)).data("sort-by"); return valA < valB ? -1 : valA > valB ? 1 : valA == valB ? table.compareIndex(a, b) : 0; }, this.compareDesc = function(a, b) { var valA = $($(a).children().get(table.colToSort)).data("sort-by"), valB = $($(b).children().get(table.colToSort)).data("sort-by"); return valA > valB ? -1 : valA < valB ? 1 : valA == valB ? table.compareIndex(a, b) : 0; }, this.compareIndex = function(a, b) { return $(a).data("index") < $(b).data("index") ? -1 : $(a).data("index") > $(b).data("index") ? 1 : 0; }; } function loadHorseHistory(horseId) { var activeSlide = $(".fiche-cheval .swiper-slide-active"); $.ajax({ type: "get", url: Routing.generate("genybet_race_horse_history", { horseid: horseId }), beforeSend: function() { showLoader(); }, success: function(data) { activeSlide.find(".content.horse-infos").after(data), showRaceHistory(), hideLoader(); }, statusCode: { 404: function() { hideLoader(); }, 500: function() { hideLoader(); } } }); } function loadRaceDetails(raceId, horseId, arHorseId) { var activeSlide = $(".fiche-cheval .swiper-slide-active"); $.ajax({ type: "get", url: Routing.generate("genybet_race_detailed", { raceid: raceId, horseid: horseId }), beforeSend: function() { showLoader(); }, success: function(data) { activeSlide.find(".content.race-horse-history").after(data), markHorses(arHorseId, horseId), showResultDetails(), hideLoader(); }, statusCode: { 404: function() { data = returnEmpty(), activeSlide.find(".content.race-horse-history").after(data), showResultDetails(), hideLoader(); }, 500: function() { hideLoader(); } } }); } function returnEmpty() { return '
les informations pour cette course sont indisponibles
'; } function showHorseInfos() { var activeSlide = $(".fiche-cheval .swiper-slide-active"); activeSlide.find(".content.result-detailed").fadeOut().removeClass("active"), activeSlide.find(".content.race-horse-history").fadeOut().removeClass("active"), activeSlide.find(".content.horse-infos").fadeIn().addClass("active"); } function showRaceHistory() { var activeSlide = $(".fiche-cheval .swiper-slide-active"); activeSlide.find(".content.horse-infos").fadeOut().removeClass("active"), activeSlide.find(".content.result-detailed").fadeOut().removeClass("active"), activeSlide.find(".content.race-horse-history").fadeIn().addClass("active"); } function showResultDetails() { var activeSlide = $(".fiche-cheval .swiper-slide-active"); activeSlide.find(".content.race-horse-infos").fadeOut().removeClass("active"), activeSlide.find(".content.race-horse-history").fadeOut().removeClass("active"), activeSlide.find(".content.result-detailed").fadeIn().addClass("active"); } function stepBack() { var activeSlide = $(".fiche-cheval .swiper-slide-active"); activeSlide.find(".content.result-detailed").hasClass("active") ? showRaceHistory() : activeSlide.find(".content.race-horse-history").hasClass("active") && showHorseInfos(); } function markHorses(horses, horseId) { var content = $(".fiche-cheval .swiper-slide-active .content.result-detailed"); $(content).find(".perf-table .row").each(function() { var opponent = $(this).data("horse-id"); horses.indexOf(opponent) >= 0 && opponent != horseId && ($(this).find(".horsename").addClass("bold"), $(this).find(".jockey").addClass("bold"), $(this).find(".sexeage").addClass("bold")); }); } function Notif(selector) { this.selector = selector, this.show = function() { $(this.selector).length > 0 && this.checkCookie() && this.checkPriority() && setTimeout(function() { showAlert(selector, 7e3); }, 400); }, this.checkCookie = function() { var message = $(this.selector).find(".message")[0].innerText, cookie = Cookies.get("infosNotif"); return (void 0 === cookie || cookie != message) && (Cookies.set("infosNotif", message), !0); }, this.checkPriority = function() { return !("#account-status-alert" != this.selector && $("#account-status-alert").length > 0); }, this.deleteCookie = function() { "undefined" != Cookies.get("infosNotif") && Cookies.set("infosNotif", "", -1); }; } function orderOnHistory() { BetslipOrder.designation.base.forEach(function(value, key) { BetslipOrder.setPosition(value, key + 1); }), saveOrderStack(BetslipOrder); } function addBtnAllOrder() { $(".sel-formula-key").append('
Tous les
ordres
'), enableSorting($(".sortable")), saveOrderStack(BetslipOrder); } function removeBtnAllOrder() { $('.sel-formula-key .sel-box[data-bet-type="ALL_ORDERS"]').remove(), saveOrderStack(BetslipOrder); } function updatePositionCheckboxes() { var list = Betslip.designation.base; if (0 == list.length) $(".checkbox-wrap .checkbox").not(".champ").html(" "), removeBetslip(); else for (i = 0; i < list.length; i++) console.warn("[updatePositionCheckboxes] Betslip.isOrder() = " + Betslip.isOrder()), Betslip.isOrder() ? (console.warn("[updatePositionCheckboxes] CAS 1"), $('.checkbox-wrap .checkbox[data-numhorse="' + list[i] + '"]').not(".champ").html(BetslipOrder.getPosition([ list[i] ]))) : (console.warn("[updatePositionCheckboxes] CAS 2"), $('.checkbox-wrap .checkbox[data-numhorse="' + list[i] + '"]').not(".champ").html(" ").addClass("checked")); saveOrderStack(BetslipOrder); } function enableSorting(element) { element.hasClass("ui-sortable") ? element.sortable("enable") : (element.sortable({ distance: 10, placeholder: "horse ui-sortable-placeholder", sort: function(event, ui) { var $target = $(event.target); if (!/html|body/i.test($target.offsetParent()[0].tagName)) { var top = event.pageY - $target.offsetParent().offset().top - ui.helper.outerHeight(!0) / 2; ui.helper.css({ top: top + "px" }); } }, stop: function() { sortDesignationOnDrag(), updatePositionCheckboxes(); } }), element.disableSelection()), saveBetSlipTemp(Betslip), saveOrderStack(BetslipOrder); } function disableSorting(element) { element.hasClass("ui-sortable") && (element.sortable("disable"), element.enableSelection()), saveOrderStack(BetslipOrder); } function sortDesignationOnDrag() { var list = [], i = 1; BetslipOrder.clean(), $(".horses-base .horse").each(function() { var numHorse = $(this).data("numhorse"); void 0 !== numHorse && (BetslipOrder.removePosition(numHorse), list.push(numHorse), BetslipOrder.setPosition(numHorse, i)), $(this).find(".position").html(i), i++; }), Betslip.setDesignationFromDragEvent(list), displayDesignation(), saveOrderStack(BetslipOrder); } function updateHorseTicketOrder() { $(".horses-base .horse, .horses-champ .horse").remove(); var deleteHtml = isTrashMode() ? '' : '', nb = Betslip.nbBase; for (Betslip.isAuto && (nb = Betslip.getNbMaxHorse()), i = 0; i < nb; i++) { var classType = "empty"; "PART_WHEEL" == Betslip.formula || "WHEEL" == Betslip.formula ? classType = "champ" : Betslip.isAuto && (classType = "banker"); var elmt = Betslip.designation.base[i], position = i + 1; BetslipOrder.removePosition(elmt), BetslipOrder.initPosition(elmt, position), Betslip.isAuto ? $(".horses-base").append('
') : null == elmt || Betslip.isAuto ? $(".horses-base").append('
' + i + "
") : $(".horses-base .horse.empty").length > 0 ? $('
' + elmt + deleteHtml + '
' + position + "
").insertBefore(".horses-base .horse.empty:first") : $(".horses-base").append('
' + elmt + deleteHtml + '
' + position + "
"); } saveOrderStack(BetslipOrder); } function dateFromTimestamp(timestamp) { var date = new Date(timestamp), d = "0" + date.getDate(), m = "0" + (date.getMonth() + 1), y = date.getFullYear(); return d.substr(-2) + "/" + m.substr(-2) + "/" + y; } function addErrorLimit(input, message) { $(input).removeClass("dirty"), $(input).parent().hasClass("error") || ($(input).parents(".limit-wrap").addClass("has-error"), $(input).parent().addClass("error"), $(input).parent().parent().parent().append('")); } function removeErrorLimit(input) { $(input).parent().hasClass("error") && ($(input).parents(".limit-wrap").removeClass("has-error"), $(input).parent().removeClass("error"), $(input).parent().parent().parent().find("label.error").remove()); } function validateLimitsForm() { var form = $("#mon-compte #form-limits"); return limitsOK = !0, $(form).find("input").each(function() { var value = number_format($(this).val(), 0, "", ""); isNaN(value) && (limitsOK = !1, addErrorLimit(this, "Doit être numérique")), (value < 50 || value > 1e5) && (limitsOK = !1, addErrorLimit(this, "La valeur doit être comprise entre 50 € et 100 000 €")); }), 0 == limitsOK ? $(".action").addClass("disable") : $(".action").removeClass("disable"), !0; } function refreshLimitsData(data) { var popup = { DEPOT: "limite-depot-popup", MISE_HIPPISME: "limite-mise-turf-popup", MISE_SPORT: "limite-mise-sport-popup", RETRAIT: "seuil-virement-popup" }, input = { DEPOT: "limiteDepot", MISE_HIPPISME: "limiteMiseHip", MISE_SPORT: "limiteMiseSport", RETRAIT: "seuilVirement" }, index = data.sousType ? data.type.toUpperCase() + "_" + data.sousType.toUpperCase() : data.type.toUpperCase(); if (data.date > Date.now()) { var text = "

Prochaine limite de " + data.limite + " €
effective le " + dateFromTimestamp(data.date) + "

", info = $("#" + popup[index]).find(".centered"); $(info).find(".content").length > 0 ? $(info).find(".content").html(text) : $(info).append('
' + text + "
"); } else $('#mon-compte #form-limits input[name="' + input[index] + '"]').attr("data-current", data.limite); } function getWeekNumber() { var d = new Date(); return d.setHours(0, 0, 0), d.setDate(d.getDate() + 4 - (d.getDay() || 7)), Math.ceil(((d - new Date(d.getFullYear(), 0, 1)) / 864e5 + 1) / 7); } function Prono(params) { this.raceId = params.raceId || null, this.bet = params.bet || null, this.formula = "UNIT", this.stake = params.stake || null, this.bases = params.bases || null; } function getStakeSimple() { var total = 0, isValid = !0; $("#betslip .horses-list .bets-horse .horse").each(function() { $(this).find(".stakes-wrap .sel-bet-type").each(function() { var isSelected = $(this).find(".label").hasClass("selected"), numHorse = $(this).find(".input .stake").data("numhorse"), typeBet = $(this).find(".input .stake").data("class"); if (isSelected) { var stake = $(this).find(".input .stake").val(); BetslipSimple.setStake(numHorse, typeBet, stake), "" == stake || isNaN(stake) ? isValid = !1 : !isNaN(stake) && stake > 0 && (total += parseFloat(stake), removeSimpleError($(this))); } else BetslipSimple.setStake(numHorse, typeBet, ""); }); }), 1 == isValid && enableButton(), 0 == $("#betslip .horses-list .bets-horse .horse").size() && ($(".simple-only .amount-wrap button").addClass("disable"), removeTrashMode()); var res = Betslip.calculateAmount(total); displayAmount(res); var soldeClient = $("#betslip").data("solde-turf"); !isNaN(res) && res > 0 ? res <= soldeClient ? (enableButton(), hideDepositBtn()) : showDepositBtn() : disableButton(), saveBetSlipTemp(Betslip), saveStackSimple(BetslipSimple); } function removeSimpleError(elmt) { elmt.parents(".horse").removeClass("has-error"), elmt.find(".stake").removeClass("error"); } function createBetSimple(listNumHorse) { if (listNumHorse.length > 0) { for (i = 0; i < listNumHorse.length; i++) { BetslipSimple.initStake(listNumHorse[i]); var html = $('
').append(listNumHorse[i]).append('').append('GagnantPlacéLa mise minimale pour un pari est de 1 €'); $(".horses-list .bets-horse").append(html); } getStakeSimple(); } saveStackSimple(BetslipSimple); } function isValidFormSimple() { var isValid = !0, count = 0; $("#betslip .horses-list .bets-horse .horse").each(function() { var nbStake = 0; $(this).find(".stakes-wrap .sel-bet-type").each(function() { if ($(this).find(".label").hasClass("selected")) { var stake = $(this).find(".input .stake").val(); (isNaN(stake) || 0 == stake) && ($(this).parents(".horse").addClass("has-error"), $(this).find(".stake").addClass("error"), $(".simple-only .amount-wrap button").addClass("disable"), isValid = !1), count++, nbStake++; } }), 0 == nbStake && ($(this).not(".empty").addClass("has-error"), $(this).not(".empty").find(".stake").addClass("error"), $(".simple-only .amount-wrap button").addClass("disable"), isValid = !1); }), 1 == isValid && count > 0 ? enableButton() : removeTrashMode(); } function clearBetHorse() { $(".horses-list .bets-horse").html(""); } function addLoaderBettingWrap() { $("#paris-direct .betting-wrap").each(function() { showLoader($(this)); }); } function refreshMatchDatas(data) { var match = document.getElementById(data.match_id), discipline = $(match).data("disc"); if ("ended" != data.stbrute && "Terminé" != data.st) switch (refreshActors(match, data.act1, data.act2), discipline) { case 21: refreshTennisScore(match, data); break; case 14: case 26: case 35: case 39: refreshSetScore(match, data); break; default: refreshScore(match, data.sc); } else $(match).remove(); } function refreshActors(elem, actor1, actor2) { $(elem).find("#actor-first").html(actor1), $(elem).find("#actor-second").html(actor2); } function refreshRunningSet(elem, score, match_id) { var scores = score.split(":"); "1" == $("#" + match_id).attr("data-event-displayscore") ? $(elem).find(".score").html('
' + scores[0] + '
' + scores[1] + "
") : $(elem).find(".score").html('
'); } function refreshServer(elem, serverPos) { $(elem).find(".set.running").find("div").removeClass("serve"), void 0 !== serverPos && $(elem).find(".act" + serverPos + "-set").addClass("serve"); } function refreshSet(elem, score) { var sets = score.split(" - "); sets.forEach(function(setScore, index) { var sc = setScore.split(":"), divSet = document.createElement("div"), player1 = document.createElement("div"), player2 = document.createElement("div"); $(divSet).addClass("fl").addClass("set"), $(player1).html(sc[0]), $(player2).html(sc[1]), (21 != $(elem).data("disc") || 21 == $(elem).data("disc") && index < sets.length - 1) && (sc[0] > sc[1] ? $(player1).addClass("txt-blue-sport") : $(player2).addClass("txt-blue-sport")), $(divSet).append(player1).append(player2), $(elem).find(".score").append(divSet); }); } function refreshTennisScore(match, data) { refreshRunningSet(match, data.gsc, data.match_id), refreshServer(match, data.sv), refreshSet(match, data.ssc); } function refreshSetScore(match, data) { var sets = data.ssc.split(" - "), runningSet = sets[sets.length - 1], pastSets = data.ssc; sets.length > 1 && (pastSets = pastSets.replace(" - " + runningSet, "")), refreshRunningSet(match, runningSet, data.match_id), refreshServer(match, data.sv), refreshSet(match, pastSets); } function refreshScore(elem, score) { var sc = score.split(":"), divScore = document.createElement("div"), player1 = document.createElement("div"), player2 = document.createElement("div"); $(player1).html(sc[0]), $(player2).html(sc[1]), sc[0] > sc[1] ? $(player1).addClass("txt-blue-sport") : $(player2).addClass("txt-blue-sport"), $(divScore).append(player1).append(player2), $(elem).find(".score").html(divScore); } function getWinnerOdd(arOdds, discipline) { for (var i = 0; i < arOdds.length; i++) if (arOdds[i].typparis == getDisciplineTypePari(discipline)) return arOdds[i]; } function refreshOdds(elem, odd, discipline, matchId) { var bets = $(elem).find(".bets-wrap .bet"); if (void 0 !== odd) if (0 == bets.length) { var typeBet = getDisciplineTypePari(discipline), nbCol = getNbColPerTypeBet(typeBet), listBet = generateBetsPerMatch(nbCol, matchId, odd); $("#" + matchId + " .betting-wrap").append(listBet), BetSlipSport.initializeGrid(), hideGoToLiveButton(elem, matchId), hideLoader($("#" + matchId + " .betting-wrap")); } else refreshLabelBet(elem, odd.qt), updateBetsPerMatch(odd, matchId, elem); else showGoToLiveButton(elem, matchId), hideLoader($("#" + matchId + " .betting-wrap")); recalculateWidthScore(), setTimeout(function() { removeUpDown(); }, 1e3); } function hideGoToLiveButton($sportCardElement, matchId) { var button = $($sportCardElement).find("#live-match-" + matchId); button.length > 0 && button[0].remove(); } function showGoToLiveButton($sportCardElement, matchId) { 0 === $($sportCardElement).find(".bets-wrap").length && (0 === $($sportCardElement).find("#live-match-" + matchId).length && $("#" + matchId + " .betting-wrap").append('')); } function updateBetsPerMatch(odd, matchId, elem) { if (timestamp + 2e3 < Date.now()) { var eventId = $("#" + matchId).data("event"); for (var choice in odd.tch) { var betElmt = $(elem).find(".bets-wrap .bet[data-unique-id= " + sha1(eventId + odd.qt + odd.tch[choice].act) + "]"), state = ""; switch (odd.tch[choice].td) { case "+": state = "up"; break; case "-": state = "down"; } "" != state && setBetState(betElmt, state), betElmt.find(".odd").text(odd.tch[choice].ct), betElmt.attr("data-odd", odd.tch[choice].ct), betElmt.attr("data-choice", odd.tch[choice].cid); } timestamp = Date.now(); } } function generateBetsPerMatch(nbCol, matchId, odd) { var eventCompetitionLabel = $("#" + matchId).data("competition"), eventId = $("#" + matchId).data("event"), eventLabel = $("#" + matchId).data("event-title"), sportId = $("#" + matchId).data("disc"), html = "", i = 1, j = 1; html += '
'; for (var choice in odd.tch) { var disable = ""; odd.tch[choice].ct <= 1 && (disable = " disable"); var oddFormated = ""; oddFormated = odd.tch[choice].ct >= 100 ? number_format(odd.tch[choice].ct, 0, "", " ") : number_format(odd.tch[choice].ct, 2, ".", " "), html += '
'; var defaultActorValue = 2 == i && 3 == nbCol ? "N" : j; html += '' + getActorValue(odd.tch[choice], defaultActorValue) + "", html += '' + oddFormated + "", html += "
", (2 != i && 3 == nbCol || 2 == nbCol) && j++, i++; } return html += '
+
', html += "
"; } function getTimer(discipline, data) { switch (discipline) { case 4: case 10: case 3: return data.stcourt; default: return data.mtm; } } function getDisciplineTypePari(discipline) { switch (discipline) { case -1: return -1; case 13: case 4: case 12: case 10: case 9: case 38: case 7: case 3: return 1; case 21: case 14: case 39: case 20: case 22: case 23: case 29: case 16: case 32: case 33: case 18: return 2; } } function getNbColPerTypeBet(typeBet) { switch (typeBet) { case 1: return 3; case 2: return 2; } } function refreshLabelBet(elem, label) { "" != label && $(elem).find(".betting-wrap .label").text(label); } function recalculateWidthScore() { function isEllipsisActive(e) { return e.offsetWidth < e.scrollWidth; } $(".match-wrap .match.nowrap").each(function() { var wrapWidth = $(this).parent().outerWidth(), timeWidth = $(this).prev(".time").outerWidth(), scoreWidth = $(this).next(".score").outerWidth(), matchWidth = wrapWidth - (timeWidth + scoreWidth) - 15; $(this).css("width", matchWidth), $(this).find(".txt-scroll").each(function() { var scrollWidth = $(this)[0].scrollWidth, offsetWidth = $(this)[0].offsetWidth, margin = scrollWidth - offsetWidth; isEllipsisActive($(this)[0]) && $(this).delay(500).animate({ "margin-left": -margin }, 2500, "easeInOutCubic", function() { $(this).css("margin-left", "0px"); }); }); }), $(".match-wrap.nowrap .txt-scroll").each(function() { var scrollWidth = $(this)[0].scrollWidth, offsetWidth = $(this)[0].offsetWidth, margin = scrollWidth - offsetWidth; isEllipsisActive($(this)[0]) && $(this).delay(500).animate({ "margin-left": -margin }, 2500, "easeInOutCubic", function() { $(this).css("margin-left", "0px"); }); }); } function getActorValue(choice, defaultValue) { var atpValue = "atp" in choice ? choice.atp : defaultValue; return "X" === atpValue.toUpperCase() ? "N" : atpValue; } function manageBets(data) { if (1 == firstDisplay || timestamp + 2e3 < Date.now()) { for (var itemBet in data) LiveEvent.setBet(data[itemBet].typparis), LiveEvent.setChoices(data[itemBet].typparis, data[itemBet].pid, data[itemBet].tch, data[itemBet].od), LiveEvent.setQuestion(data[itemBet].typparis, data[itemBet].pid, data[itemBet].qt), LiveEvent.setActivity(data[itemBet].typparis, data[itemBet].pid, data[itemBet].aive); var bodyEvent = generateLiveEvent(); $("#programme-sport #match .matchLiveBets").html(bodyEvent), BetSlipSport.initializeGrid(), upDownOdds(), recalculateHeightChoice(), LiveEvent.reinitialize(), setTimeout(function() { removeUpDown(); }, 1e3), timestamp = Date.now(), firstDisplay++; } } function recalculateHeightChoice() { $(".bets-wrap .type").each(function() { var height = $(this).outerHeight() || "30"; $(this).next(".odd").css({ height: height, "line-height": height + "px" }); }); } function generateLiveEvent() { var event = ""; if (Object.keys(LiveEvent.listBets).length > 0) { event += '
'; for (var bet in LiveEvent.listBets) if (LiveEvent.typeBetActivity(bet)) { event += '
' + Translator.trans(LiveEvent.listBets[bet].label) + "
", event += '
'; for (var betId in LiveEvent.listBets[bet].choices) 1 == LiveEvent.listBets[bet].active[LiveEvent.listBets[bet].choices[betId].bid] && (event += '
', !0 === LiveEvent.listBets[bet].subtitles && (event += '
' + LiveEvent.listBets[bet].question[LiveEvent.listBets[bet].choices[betId].bid] + "
"), event += '
', event += generateChoices(LiveEvent.listBets[bet].choices[betId].choices, LiveEvent.listBets[bet], LiveEvent.listBets[bet].choices[betId].bid), event += "
", event += "
"); event += "
"; } event += "
"; } return event; } function generateChoices(listChoices, bet, betId) { var col = "", eventCompetitionLabel = $("#programme-sport #match").data("competition-label"), eventLabel = $("#programme-sport #match").data("event-label"), eventId = $("#programme-sport #match").data("event-id"), sportId = $("#programme-sport #match").data("sport-id"), loop = 1; col += '
'; for (var choice in listChoices) { 3 == bet.col && 10 == loop && !0 === bet.more && (col += '"), loop++; } return 3 == bet.col && !0 === bet.more && listChoices.length > 9 && (col += '
' + Translator.trans("see.more") + "
"), col += "
"; } function upDownOdds() { var eventId = $("#programme-sport #match").data("event-id"); if (Object.keys(LiveEvent.listBets).length > 0) for (var bet in LiveEvent.listBets) for (var betId in LiveEvent.listBets[bet].choices) { var idBet = LiveEvent.listBets[bet].choices[betId].bid; for (var choice in LiveEvent.listBets[bet].choices[betId].choices) { var state = ""; switch (LiveEvent.listBets[bet].choices[betId].choices[choice].td) { case "+": state = "up"; break; case "-": state = "down"; } var uid = sha1(eventId + LiveEvent.listBets[bet].question[idBet] + LiveEvent.listBets[bet].choices[betId].choices[choice].act); "" != state && setBetState($('.bet[data-unique-id="' + uid + '"]'), state); } } recalculateHeightChoice(); } function setBetState(elmt, state) { elmt.not(".disable").fadeOut(200, function() { $(this).addClass(state).fadeIn(200); }); } function removeUpDown() { $(".bet.up, .bet.down").each(function() { $(this).fadeOut(200, function() { $(this).removeClass("up").removeClass("down").fadeIn(200); }); }), recalculateHeightChoice(); } function refreshMatchDatasLive(data) { var match = $("#programme-sport .card"), discipline = $(match).data("disc"); if ("ended" != data.stbrute && "Terminé" != data.st) switch (refreshActors(match, data.act1, data.act2), discipline) { case 21: refreshTennisScore(match, data); break; case 14: case 26: case 35: case 39: refreshSetScore(match, data); break; default: refreshScore(match, data.sc); } else $(match).remove(); } function clone(obj) { if (null == obj || "object" != typeof obj) return obj; var copy = obj.constructor(); for (var attr in obj) obj.hasOwnProperty(attr) && (copy[attr] = obj[attr]); return copy; } function refreshPasswordStrength(value) { var security = $(".security-level"), strength = getPasswordStrength(value), safe = !1; return $(security).children().removeClass("on"), value.length > 7 && strength > 2 ? ($(security).find(".high").addClass("on"), safe = !0) : value.length > 6 && 2 == strength ? ($(security).find(".middle").addClass("on"), safe = !0) : ($(security).find(".low").addClass("on"), safe = !1), safe; } function validateAllStep(validator, idSection) { var rtn = 0, inputs = $(idSection).find("input"); return $(inputs).each(function() { 0 == validator.element($(this)) && rtn++; }), rtn; } function validateStep1() { var validator = $("#inscriptionForm").validate(), rslt = validateAllStep(validator, "#infos-connexion"); return $("#infos-connexion #user_email").val().toLowerCase() != $("#infos-connexion #user_emailconfirm").val().toLowerCase() && (addErrorMessage($("#infos-connexion #user_emailconfirm"), "La confirmation ne correspond pas à l'email."), rslt++), $("#infos-connexion #user_mdp").val() != $("#infos-connexion #user_mdpconfirm").val() && (addErrorMessage($("#infos-connexion #user_mdpconfirm"), "La confirmation ne correspond pas au mot de passe."), rslt++), "" == $("#infos-connexion #user_secret_question").val() && (addSelectErrorMessage($("#infos-connexion .list"), "Ce champs est obligatoire."), rslt++), rslt; } function validateStep2() { var validator = $("#inscriptionForm").validate(), rslt = validateAllStep(validator, "#donnees-persos"), birthday = $("#user_bday").val(); if ("" != birthday) { var tabBD = birthday.split("/"); calculateAge(new Date(tabBD[2], tabBD[1] - 1, tabBD[0])) < 18 && (addErrorMessage($("#donnees-persos #user_bday"), "Vous devez être majeur"), rslt++); } return $("#donnees-persos .majority input").is(":checked") || (addErrorMessage($("#donnees-persos #user_maj"), ""), rslt++), "" == $("#donnees-persos #user_birth_country").val() && (addSelectErrorMessage($("#donnees-persos .country"), "Ce champs est obligatoire."), rslt++), rslt; } function validateStep3() { var validator = $("#inscriptionForm").validate(), rslt = validateAllStep(validator, "#coordonnees"); return "" == $("#coordonnees #user_country").val() && (addSelectErrorMessage($("#coordonnees .country"), "Ce champs est obligatoire."), rslt++), "" == $("#coordonnees #user_phone").val() && "" == $("#coordonnees #user_mobile").val() && (addErrorMessage($("#coordonnees #user_mobile"), "Veuillez renseigner au moins un des deux numéro de téléphone"), addErrorMessage($("#coordonnees #user_phone"), ""), rslt++), rslt; } function getPasswordStrength(psw) { var patterns = [ /[a-z]/, /[A-Z]/, /[0-9]/, /[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/ ], strength = 0; return $(patterns).each(function() { var pattern = $(this); null != psw.match(pattern[0]) && (strength += 1); }), strength; } function addErrorMessage(elem, msg) { if (!elem.hasClass("error")) { $(elem).addClass("error"); var error = '"; $(elem).before(error); } } function addSelectErrorMessage(elem, msg) { if (!$(elem).find(".selected").hasClass("error")) { $(elem).find(".selected").addClass("error"); var error = '"; $(elem).before(error); } } function checkCaptchaError(swiperSub) { return $("#jeu-responsable #captcha").hasClass("has-error") ? (enableAllSlides(), swiperSub.slideTo(3), $("#jeu-responsable #captcha").before(''), $("#inscription .steps-bar .step-4").addClass("error"), 3) : 0; } function enableAllSlides() { $("#inscription .steps-bar div[class*='step-']").not(".step-bonus").addClass("green"); } function calculateAge(birthday) { var ageDifMs = Date.now() - birthday.getTime(), ageDate = new Date(ageDifMs); return Math.abs(ageDate.getUTCFullYear() - 1970); } AjaxManager.prototype.update = function(params) { if (void 0 === params) var params = {}; this.type = params.type && this.typeArray.indexOf(params.type) > -1 ? params.type : "GET", this.url = params.url || "", this.data = params.data || "", this.dataType = params.dataType || "json", this.params = params || {}; }, AjaxManager.prototype.clear = function() { this.lastParams = {}, this.results = {}, this.error = {}; }, AjaxManager.prototype.isDuplicateCall = function() { return !isEmpty(this.results) && !isEmpty(this.lastParams) && this.params == this.lastParams; }, AjaxManager.prototype.flush = function(callback, errorCallback) { if (isEmpty(this.params)) this.error = { label: "parameters", msg: "Aucun paramètres envoyés." }; else if ("" == this.url) this.error = { label: "route", msg: "Aucune URL envoyée." }; else if (this.isDuplicateCall()) this.results = { label: "duplicate", msg: "Requête déjà envoyée." }; else { var that = this; $.ajax({ type: this.type, url: this.url, data: this.data, dataType: this.dataType, success: function(data) { that.results = data, "function" == typeof callback && callback(data); }, error: function(data, error) { var header = data.getResponseHeader("Content-Type"), redirectedTo = void 0 !== data.getResponseHeader("X-Redirection") && "" != data.getResponseHeader("X-Redirection") ? data.getResponseHeader("X-Redirection") : null; if ("application/json" == header) { var result = $.parseJSON(data.responseText); "USE_ORIGIN_ERROR_MSG" === result.code ? that.showOriginError(result.message, result.title) : void 0 !== result.code ? that.showError(result.code) : that.showError(result.status); } else that.showError(500, redirectedTo); "function" == typeof errorCallback && errorCallback(), that.error = { label: "xhr", msg: "La requête a échoué.", raw: data }, $("html, body").animate({ scrollTop: 0 }, "fast"); } }); } return this.results; }, AjaxManager.prototype.showError = function(code, redirectedTo) { if (void 0 !== redirectedTo && null !== redirectedTo) window.location.href = redirectedTo; else { var greyedItem = $("
", { class: "greyed-out", html: " " }), popup = $(''); if (hideLoader(), "LE_PARI_EST_CLOTURE" == code && 0 != BetSlipSport.ticket.accept) { new BetSportManager().manageEvol(); } $(document.body).append(greyedItem.css("cssText", "z-index: 400 !important;").fadeTo(200, .75, function() { $(document.body).append(popup); })); } }, AjaxManager.prototype.showOriginError = function(originMsg, originTitle) { var greyedItem = $("
", { class: "greyed-out", html: " " }), title = void 0 !== originTitle ? originTitle : "ERREUR", popup = $(''); hideLoader(), $(document.body).append(greyedItem.css("cssText", "z-index: 400 !important;").fadeTo(200, .75, function() { $(document.body).append(popup); })); }, $(document).ready(function() { $(document).on("click", ".alpha_sort button", function() { showLoader(); var sortedList, listContainer = $(this).parents(".alpha_sort").next(".item-list"), list = listContainer.children(); 0 == $(this).val() ? ($(this).val(1), sortedList = list.sort(compareLabel)) : ($(this).val(0), sortedList = list.sort(compareOrder)), listContainer.append(sortedList), hideLoader(); }), $(document).on("click", "#sport-list .item", function() { 13 != $(this).data("sport-id") ? $(".alpha_sort.sport").addClass("hidden") : $(".alpha_sort.sport").removeClass("hidden"); }); }); var logger = function() { var oldConsoleLog = null, pub = {}; return pub.enableLogger = function() { null != oldConsoleLog && (window.console.log = oldConsoleLog); }, pub.disableLogger = function() { oldConsoleLog = console.log, window.console.log = function() {}; }, pub; }(), Betslip1 = null, betType1, tailleCombiUnitaire1, type1, formule1, betType2, tailleCombiUnitaire2, formule2; $(document).ready(function() { function updateContentAmount() { null != Betslip.bet && ("SIMPLE" != Betslip.bet ? displayAmountComplexe() : ($('.stakes-wrap input[name="stake"]').each(function() { "" != $(this).val() && !isNaN($(this).val()) && $(this).val() > 0 && $(this).parent().parent().find(".label").addClass("selected"); }), getStakeSimple())), saveBetSlipTemp(Betslip); } Betslip.setRace($("#partants").data("race-id"), $("#partants").data("race-nbrunners")), $(".bet-box .logo-paris:not(.greyed)").on("click", function() { null != Betslip ? (betType1 = Betslip.bet, tailleCombiUnitaire1 = Betslip.getNbMaxHorse(), formule1 = Betslip.formula, type1 = Betslip.type, Betslip1 = JSON.parse(JSON.stringify(Betslip))) : formule1 = null, void 0 !== $("#partants-list").attr("data-bet-selected") && cleanBetslip(), setTimeout(function() { resetBetslipAftervalidation(); }, 0), removeBtnAllOrder(); var betType = $(this).data("bet-type"), formula = formule1, betslipType = null, auto = $(this).hasClass("BANKER"), pureBetType = betType; if ("BANKER" != formula || auto || (formula = "UNIT"), console.warn("pureBetType=" + pureBetType), "COUPLE" == betType) betslipType = "GAGNANT"; else if ("COUPLE_ORDRE" == betType || "TRIO_ORDRE" == betType || "TOP4_ORDRE" == betType) { var tabBet = betType.split("_"); betType = tabBet[0], betslipType = tabBet[1], addBtnAllOrder(); } else "ROYAL5" == betType && (betslipType = "ORDRE", addBtnAllOrder()); if (console.warn("betslipType=" + betslipType), Betslip.setBet(betType, formula, betslipType, auto), saveBetSlipTemp(Betslip), saveBetTypeSelected(pureBetType, formula), "SIMPLE" != Betslip.bet) { var classType = !0 === auto ? "banker" : "empty", htmlPosition = "banker" == classType ? "" : '
'; for (i = 0; i < maxNbHorses[Betslip.bet]; i++) $(".horses-base").append('
' + htmlPosition + "
"); } availableFraction(), hideForBetAuto(), null != Betslip && (betType2 = Betslip.bet, tailleCombiUnitaire2 = Betslip.getNbMaxHorse(), formule2 = Betslip.formula), Betslip.designation = Betslip1.designation, Betslip.formula = formule1, Betslip.nbChamp = Betslip1.nbChamp, Betslip.nbBase = Betslip1.nbBase, "UNIT" == Betslip.bet && Betslip.designation.champ.length > 0 && (Betslip.designation.base = Betslip.designation.base.concat(Betslip.designation.champ), Betslip.nbBase = Betslip.designation.base.length, Betslip.designation.champ = [], Betslip.nbChamp = Betslip.designation.champ.length), updatePositionCheckboxes(), sortAndShowDesignation(), void 0 == formula || auto || $(".sel-formula-key .sel-box[data-formula-key=" + formula + "]").click(), updateHorseTicket(), sliceDesignation(!1); }), $(".checkbox-wrap .checkbox").not(".champ").on("click", function() { removeTrashMode(), toggleChecked($(this)); var numHorse = $(this).data("numhorse"); $(".logo-paris.selected")[0] || (Betslip.nbBase >= 0 ? showBetslip("EMPTY") : $("#betslip").removeAttr("class")), isGiantGrid() || ($(this).hasClass("checked") ? (Betslip.addHorseBase(numHorse), Betslip.removeHorseChamp(numHorse), updateHorseTicket()) : (Betslip.removeHorseBase(numHorse), updateHorseTicket(), clearDaCheckbox(numHorse), BetslipOrder.removePosition(numHorse)), updatePositionCheckboxes(), isBaseDisable(), sortAndShowDesignation(), saveBetSlipTemp(Betslip), saveOrderStack(BetslipOrder)); }), $(".checkbox-wrap .checkbox.champ").on("click", function() { removeTrashMode(), toggleChecked($(this)); var numHorse = $(this).data("numhorse"); $(this).hasClass("checked") ? (Betslip.addHorseChamp(numHorse), updateHorseTicket()) : (Betslip.removeHorseChamp(numHorse), updateHorseTicket()), sortAndShowDesignation(), saveBetSlipTemp(Betslip); }), $(document).on("click", "#clavier button, .pad[data-value], .pad.correction, .stakes-wrap span.input", function() { updateContentAmount(); }); var am = new AjaxManager(), betCallback = function(data) { hideLoader(), enableSwipe(), $("#betslip-popup").find(".body").empty(); for (var errCnt = 0, simple = !1, i = 0; i < data.length; i++) { var br = new BetResponse(data[i]); if (br.hasError()) br.data.betType.match(/SIMPLE/) ? (simple = !0, br.addSimpleError(), errCnt++) : br.setErrorPopup(); else { var transactionId = 0; transactionId = initTransaction(Date.now(), parseFloat(br.data.stake).toFixed(2)), addItem(transactionId, br.data.betType.split("_").join(" "), br.data.id, "Enjeux_Turf", parseFloat(br.data.stake).toFixed(2)), sendToAnalytics(), br.removeErrorPopup(), br.addToPopup(), refreshHeader(), refreshBandeau(); } i != data.length - 1 || 0 != errCnt && errCnt == i + 1 || betslipPopup(); } simple && errCnt == data.length || cleanBetslip(); }; $(document).on("click", ".bet-submit", function() { disableSwipe(), "WHEEL" == Betslip.formula && setChampTotal(); var params = { type: "POST", url: Routing.generate("genybet_bet_bet"), data: Betslip.jsonSerialize() }; showLoader(), am.update(params), am.flush(betCallback); }), $(document).on("click", ".prono-bet-submit", function() { var json = { raceId: $("#partants").data("race-id"), bet: $(this).parent(".bet").data("bet"), stake: $(this).prev(".stake").find("input").val(), bases: $(this).siblings(".combinaison").text().replace(/\s+/, "").split("-") }, pr = new Prono(json), params = { type: "POST", url: Routing.generate("genybet_bet_bet"), data: pr.jsonSerialize() }; am.update(params), am.flush(betCallback); }), $(document).on("click", "#betslip-popup .popup:not(.error) button", function() { $("body").animate({ scrollTop: 0 }, "slow"), $("#betslip").removeAttr("class").removeAttr("style"), removeBetslip(), $(".logo-paris.selected").delay(100).trigger("click"), unlockScrolling(); }), $(document).on("click", "#error-popup button", function() { hidePopup(); }), $(document).on("click", ".general-info-link", function() { showPopup("infos-general-popup", $("#infos-general-popup").html()); }), $(document).on("click", "button[id^='validate-notifs-']", function() { hideModalPopUp($(this)), removeShowedPop($(this)), validateNotification(extractnotificationFromButton($(this))), showCurrentPopUp("#notifications-popup-wrapper"); }), animateSportTitles(), resizeLongTexts(); }); var notificationsCallback = function(data) {}, refreshAm = new AjaxManager(), refreshHeaderCallBack = function(data) { $("#headerinfoss").html(data); var newSolde = $("#headerinfoss .amount").attr("data-solde"), freebetNewSolde = $("#headerinfoss .amount").attr("data-solde-sport-freebet"); if (void 0 !== newSolde) { var formattedSolde = parseFloat(newSolde.replace(".", "").replace(",", ".")), formattedSoldeFreebet = parseFloat(freebetNewSolde.replace(".", "").replace(",", ".")), betslipElement = $("#betslip-sport"); betslipElement.attr("data-solde-sport", formattedSolde), betslipElement.attr("data-solde-sport-freebet", formattedSoldeFreebet), $("#betslip-sport .header .amount").html(newSolde), parseInt(formattedSolde) < 5 && NotifManager.getInstance("#amount-alert").show(); } }; $(document).on("click touchstart", ".back.smart", function() { $("#grille-wrap").hasClass("shown") && backToList(); }); var am = new AjaxManager(), gridBetCallBack = function(data) { resetGridState(), hideLoader(), refreshHeader(), setBack(), confirmationGridBet(); }; $(document).on("click touchstart", "button.bet-grid", function() { var gridId = $(this).attr("id").split("-")[2], gridBetParameter = getGridBetParameter(gridId), params = { type: "POST", url: Routing.generate("genybet_grid_bet"), data: gridBetParameter }; showLoader(), am.update(params), am.flush(gridBetCallBack); }), $(document).on("click", "#grille .result span", function() { $(this).toggleClass("selected"), setBetAmount(); }), $(document).on("click", "#grille button.clean", function() { $("#grille .swiper-slide-active .result span").removeClass("selected"), setBetAmount(); }), $(document).on("click", "#grille button.auto", function() { $("#grille .swiper-slide-active .result span").removeClass("selected"); for (var i = 0; i < $("#grille .swiper-slide-active .match-wrap").length; i++) { var random = Math.floor(3 * Math.random() + 0); $("#grille .swiper-slide-active .match-wrap").eq(i).find(".result span").eq(random).addClass("selected"); } setBetAmount(); }), $(document).ready(function() { setBack(); }), BetResponse.prototype.betTypeNatural = function() { return result = Translator.trans("bet_type." + this.data.betType, {}, "betslip"), result = result + '
' + Translator.trans("bet_type." + this.data.formulaKey, {}, "betslip") + "", result; }, BetResponse.prototype.getErrorString = function() { var result = null; return null != this.data.bettingError && (result = this.errorList[this.data.bettingError]), result; }, BetResponse.prototype.hasError = function() { return null != this.data.bettingError; }, BetResponse.prototype.addToPopup = function() { if (null !== this.$popup) { var html = '
' + this.data.betDesignation + '
' + this.betTypeNatural() + ("MULTI" == this.data.betType ? " " + this.data.formulaRisk.replace("IN", "") : "") + '
' + this.data.stake + " €
"; this.$popup.find(".body").append(html); } }, BetResponse.prototype.setErrorPopup = function() { if (null != this.$popup) { this.$popup.find(".popup").addClass("error"); var errMsg = '

ERREUR

' + this.getErrorString() + "

"; this.$popup.find(".header").html(errMsg); } }, BetResponse.prototype.removeErrorPopup = function() { if (null != this.$popup) { this.$popup.find(".popup").removeClass("error"); this.$popup.find(".header").html('

Vos paris ont bien été enregistrés

'); } }, BetResponse.prototype.addSimpleError = function() { if (null != this.horse) { var $horse = $('.horse[data-numhorse="' + this.horse + '"]'), $errorWrap = $horse.find(".error-wrap"), $input = $horse.find('input[data-class="' + this.getType().toLowerCase() + '"]'); $errorWrap.html(this.getErrorString()), $horse.addClass("has-error"), $input.addClass("error"); } }, BetResponse.prototype.getType = function() { var betType = this.data.betType.split("_"); return betType.length > 1 ? betType[1] : betType[0]; }; var nbBetSystem = { 3: { 0: { label: "bet.system.risk.deux.tiers.trois.combinaisons", nbCombinaison: 2, totalCombi: 3, code: "s2_3" } }, 4: { 0: { label: "bet.system.risk.trois.quart.quatre.combinaisons", nbCombinaison: 3, totalCombi: 4, code: "s3_4" }, 1: { label: "bet.system.risk.deux.quart.six.combinaisons", nbCombinaison: 2, totalCombi: 6, code: "s2_4" } }, 5: { 0: { label: "bet.system.risk.quatre.cinquieme.cinq.combinaisons", nbCombinaison: 4, totalCombi: 5, code: "s4_5" }, 1: { label: "bet.system.risk.trois.cinquieme.dix.combinaisons", nbCombinaison: 3, totalCombi: 10, code: "s3_5" }, 2: { label: "bet.system.risk.deux.cinquieme.dix.combinaisons", nbCombinaison: 2, totalCombi: 10, code: "s2_5" } }, 6: { 0: { label: "bet.system.risk.cinq.sixieme.six.combinaisons", nbCombinaison: 5, totalCombi: 6, code: "s5_6" }, 1: { label: "bet.system.risk.quatre.sixieme.quinze.combinaisons", nbCombinaison: 4, totalCombi: 15, code: "s4_6" }, 2: { label: "bet.system.risk.trois.sixieme.vingt.combinaisons", nbCombinaison: 3, totalCombi: 20, code: "s3_6" }, 4: { label: "bet.system.risk.deux.sixieme.quinze.combinaisons", nbCombinaison: 2, totalCombi: 15, code: "s2_6" } } }, BetSlipSport = { ticket: { designation: {}, stake: 10, stakeSystem: 10, risk: null, useFreeBet: 0, enableFreeBetSwitcher: !0, originalFreeBetStake: null, accept: getSavedAccept() }, currentTab: "", amountPopUp: !1 }; BetSlipSport.clearTicket = function() { this.ticket = { designation: [], stake: 10, stakeSystem: 10, risk: null, useFreeBet: 0, enableFreeBetSwitcher: !0, originalFreeBetStake: null, accept: getSavedAccept() }, this.currentTab = ""; }, BetSlipSport.log = function(msg, level) { }, BetSlipSport.addChoice = function(actor, sport, eventTitle, odd, eventId, betType, uid, choice, competition, matchId, question, questionId) { this.ticket.designation[eventId] || (this.ticket.designation[eventId] = {}), this.ticket.designation[eventId][uid] || (this.ticket.designation[eventId][uid] = {}), this.ticket.designation[eventId][uid] = { choice: choice, odd: odd, sport: sport, actor: actor, eventTitle: eventTitle, betType: betType, competition: competition, stake: 10, matchId: matchId, question: question, questionId: questionId }, this.initializeRisk(), this.selectChoice(uid), this.updateCookies(); }, BetSlipSport.updateStakeSimple = function(stake, eventId, uid) { this.ticket.designation[eventId][uid].stake = parseFloat(stake), this.updateCookies(); }, BetSlipSport.updateStakeCombine = function(stake) { this.ticket.stake = parseFloat(stake), this.updateCookies(); }, BetSlipSport.updateStakeSystem = function(stake) { this.ticket.stakeSystem = parseFloat(stake), this.updateCookies(); }, BetSlipSport.removeChoice = function(uid, eventId) { delete this.ticket.designation[eventId][uid], 0 == Object.keys(this.ticket.designation[eventId]).length && delete this.ticket.designation[eventId], this.unselectChoice(uid), this.initializeRisk(), this.updateCookies(), this.enableCombineSystem(), this.activateTab(), this.setNbBets(), this.checkClearBetslip(!1); }, BetSlipSport.choiceCount = function() { var count = 0; for (var event in this.ticket.designation) for (var choice in this.ticket.designation[event]) count++; return count; }, BetSlipSport.checkClearBetslip = function(clearAll) { 0 != Object.keys(this.ticket.designation).length && 1 != clearAll || (this.clearDomBetslip(), this.enableCombineSystem(), this.activateCombine(), 1 == clearAll && (this.clearCookies(), this.clearSelected(), this.clearTicket(), this.setNbBets())); }, BetSlipSport.initializeRisk = function(index) { Object.keys(this.ticket.designation).length > 2 && (riskIndex = void 0 !== index ? index : 0, this.ticket.risk = riskIndex); }, BetSlipSport.initializeAccept = function(index) { this.ticket.accept = void 0 !== index ? index : 0; }, BetSlipSport.saveAccept = function(index) { Cookies.set("ticketSportAccept", index); }, BetSlipSport.clearDomBetslip = function() { $("#betslip-simple .betList, #betslip-combine .betList, #betslip-combine .footer, #betslip-simple .footer, #betslip-systeme .betList, #betslip-systeme .footer").remove(), $("#betslip-simple > .content").html('' + Translator.trans("bet.error.no.bets") + ""), $("#betslip-combine > .content").html('' + Translator.trans("bet.error.no.bets") + ""), $("#betslip-systeme > .content").html('' + Translator.trans("bet.error.no.bets") + ""); }, BetSlipSport.initializeCookies = function() { if (void 0 !== Cookies.get("ticketSport")) { var ticket = this.decodeTicket(); this.ticket.stake = ticket.stake, this.ticket.stakeSystem = ticket.stakeSystem, this.ticket.risk = ticket.risk, this.ticket.designation = ticket.event, this.ticket.accept = ticket.accept, this.currentTab = ticket.currentTab, this.initializeGrid(); } }, BetSlipSport.updateCookies = function() { Object.keys(this.ticket.designation).length > 0 ? Cookies.set("ticketSport", this.encodeTicket()) : this.clearCookies(); }, BetSlipSport.clearCookies = function() { Cookies.remove("ticketSport"); }, BetSlipSport.selectChoice = function(choice) { $('.bet[data-unique-id="' + choice + '"]').not(".disable").addClass("selected"); }, BetSlipSport.unselectChoice = function(choice) { $('.bet[data-unique-id="' + choice + '"]').removeClass("selected"); }, BetSlipSport.clearSelected = function() { $(".bet").removeClass("selected"); }, BetSlipSport.setNbBets = function() { var count, totalGains, totalStake; if (count = totalGains = totalStake = 0, Object.keys(this.ticket.designation).length > 0) for (var event in this.ticket.designation) count += Object.keys(this.ticket.designation[event]).length; switch (BetSlipSport.log("[BetSlipSport.setNbBets] BetSlipSport.currentTab = " + BetSlipSport.currentTab, "INFO"), this.currentTab != BetSlipSport.currentTab && BetSlipSport.log("[BetSlipSport.setNbBets] different this.currentTab = " + this.currentTab, "WARN"), BetSlipSport.log("[BetSlipSport.setNbBets] BetSlipSport.isCombine = " + BetSlipSport.isCombine(), "WARN"), this.currentTab != BetSlipSport.currentTab && BetSlipSport.log("[BetSlipSport.setNbBets] different this.isCombine()= " + this.isCombine(), "WARN"), BetSlipSport.log("[BetSlipSport.setNbBets] BetSlipSport.isSystem = " + BetSlipSport.isSystem(), "WARN"), this.currentTab != BetSlipSport.currentTab && BetSlipSport.log("[BetSlipSport.setNbBets] different this.isSystem()= " + this.isSystem(), "WARN"), this.isCombine(), BetSlipSport.currentTab) { case "simple": "s", totalGains = computeRawWinningsSimple(), totalStake = addAllSimpleStakes(), BetSlipSport.log("[setNbBets] EXPLICIT CASE simple", "INFO"); break; case "combine": "c", totalGains = computeRawWinningsCombine(), totalStake = BetSlipSport.ticket.stake, BetSlipSport.log("[setNbBets] EXPLICIT CASE combine", "INFO"); break; case "systeme": "x", totalGains = computeRawWinningsSystem(BetSlipSport.ticket.stakeSystem), totalStake = BetSlipSport.getTotalStakeSystem(), BetSlipSport.log("[setNbBets] EXPLICIT CASE systeme", "INFO"); break; default: this.isCombine() && !this.containSuperCotes() ? ("C", totalGains = computeRawWinningsCombine(), totalStake = BetSlipSport.ticket.stake, BetSlipSport.log("[setNbBets] DEFAULT CASE combine", "INFO")) : (BetSlipSport.log("[setNbBets] DEFAULT CASE (simple par default)", "INFO"), "?", totalGains = computeRawWinningsSimple(), totalStake = addAllSimpleStakes()); } BetSlipSport.log("[setNbBets] before compute globalOddValueToDisplay totalGains " + totalGains + ", totalStake=" + totalStake + ", (totalGains/totalStake))=" + totalGains / totalStake, "INFO"); var globalOddValueToDisplay = truncateFloat(totalGains / totalStake, 2); BetSlipSport.log("[BetSlipSport.setNbBets] count = " + count + ", globalOddValueToDisplay = " + globalOddValueToDisplay, "INFO"); var counterContainer = $(".circle-label"); 0 === count ? (counterContainer.addClass("empty"), counterContainer.html(""), $(".front-stake").html(""), $("#header-sport-basket").removeClass("has-bets").find(".logo").removeClass("active").addClass("inactive")) : (counterContainer.removeClass("empty"), counterContainer.html(count), $("#header-sport-basket").addClass("has-bets").find(".logo").removeClass("inactive").addClass("active"), $(".front-stake").html(globalOddValueToDisplay.toFixed(2))); }, BetSlipSport.initializeGrid = function() { for (var event in this.ticket.designation) for (var choice in this.ticket.designation[event]) BetSlipSport.selectChoice(choice); this.setNbBets(); }, BetSlipSport.encodeTicket = function() { var i = 0, res = "{"; if (Object.keys(this.ticket.designation).length) { res += '"stake" : "' + this.ticket.stake + '",', res += '"stakeSystem" : "' + this.ticket.stakeSystem + '",', res += '"risk" : "' + this.ticket.risk + '",', res += '"accept" : "' + this.ticket.accept + '",', res += '"currentTab" : "' + this.currentTab + '",', res += '"event" : {'; for (var event in this.ticket.designation) { var j = 0; res += (i > 0 ? "," : "") + '"' + event + '" : {'; for (var choice in this.ticket.designation[event]) { var k = 0; res += (j > 0 ? "," : "") + '"' + choice + '" : {'; for (var field in this.ticket.designation[event][choice]) res += (k > 0 ? "," : "") + '"' + field + '":' + (void 0 === this.ticket.designation[event][choice][field] ? null : JSON.stringify(this.ticket.designation[event][choice][field])), k++; res += "}", j++; } res += "}", i++; } res += "}"; } return res += " } "; }, BetSlipSport.decodeTicket = function() { return JSON.parse(Cookies.get("ticketSport")); }, BetSlipSport.isCombine = function() { for (var event in this.ticket.designation) if (Object.keys(this.ticket.designation[event]).length > 1) return !1; return !(Object.keys(this.ticket.designation).length < 2 || 0 == Object.keys(this.ticket.designation).length || Object.keys(this.ticket.designation).length > 8); }, BetSlipSport.isSystem = function() { for (var event in this.ticket.designation) if (Object.keys(this.ticket.designation[event]).length > 1) return !1; return !(Object.keys(this.ticket.designation).length < 3 || 0 == Object.keys(this.ticket.designation).length || Object.keys(this.ticket.designation).length > 6); }, BetSlipSport.activateCombine = function() { 0 == this.isCombine() ? ($(".tab[data-type=simple]").addClass("selected"), slideTo("betslip-simple"), BetSlipSport.currentTab = "simple") : ($(".tab[data-type=combine]").addClass("selected"), slideTo("betslip-combine"), BetSlipSport.currentTab = "combine"); }, BetSlipSport.enableCombineSystem = function() { $(".tab").removeClass("selected"), 0 == this.isSystem() ? disableSlide("betslip-systeme") : (enableSlide("betslip-systeme"), enableSlide("betslip-combine")), 0 == this.isCombine() ? (enableSlide("betslip-simple"), disableSlide("betslip-combine")) : enableSlide("betslip-combine"), this.containSuperCotes() && (this.currentTab = "simple", enableSlide("betslip-simple"), disableSlide("betslip-combine"), disableSlide("betslip-systeme")); for (var event in BetSlipSport.ticket.designation) for (var choice in BetSlipSport.ticket.designation[event]) (BetSlipSport.questionSimple(BetSlipSport.ticket.designation[event][choice].questionId) || "TYPE_PARI_VAINQUEUR_FINAL" == BetSlipSport.ticket.designation[event][choice].betType) && (this.currentTab = "simple", disableSlide("betslip-combine")); }, BetSlipSport.questionSimple = function(questionId) { return questionsSimples = [ 1090, 1106, 1099, 3343, 3345, 4146, 4106, 4011, 4014, 1204, 4114, 4115, 3480, 4105, 4050, 950, 1116, 4013, 4012, 4109, 4010, 4112, 4104, 2169, 4133, 4119, 1701, 1702, 2171, 2172, 2175, 2176 ], questionsSimples.indexOf(questionId) > 0; }, BetSlipSport.getRiskCode = function() { return nbBetSystem[Object.keys(BetSlipSport.ticket.designation).length][BetSlipSport.ticket.risk].code; }, BetSlipSport.getStakeSimple = function() { var res = 0; if (Object.keys(BetSlipSport.ticket.designation).length > 0) for (var event in BetSlipSport.ticket.designation) for (var choice in BetSlipSport.ticket.designation[event]) res += BetSlipSport.ticket.designation[event][choice].stake; return res; }, BetSlipSport.containSuperCotes = function() { var res = !1; if (Object.keys(BetSlipSport.ticket.designation).length > 0) for (var event in BetSlipSport.ticket.designation) for (var choice in BetSlipSport.ticket.designation[event]) if (res = 71 === BetSlipSport.ticket.designation[event][choice].sport) return res; return res; }, BetSlipSport.getTotalStakeSystem = function() { var res = 1; return Object.keys(BetSlipSport.ticket.designation).length > 2 && Object.keys(BetSlipSport.ticket.designation).length < 7 && (res = BetSlipSport.ticket.stakeSystem * nbBetSystem[Object.keys(BetSlipSport.ticket.designation).length][BetSlipSport.ticket.risk].totalCombi), res; }, BetSlipSport.getBetsLive = function() { var listBets = []; if (Object.keys(BetSlipSport.ticket.designation).length > 0) for (var designation in BetSlipSport.ticket.designation) for (var choice in BetSlipSport.ticket.designation[designation]) null != BetSlipSport.ticket.designation[designation][choice].matchId && (null == listBets[choice] && (listBets[choice] = []), listBets[choice] = { matchId: BetSlipSport.ticket.designation[designation][choice].matchId, eventId: designation, odd: BetSlipSport.ticket.designation[designation][choice].odd, choiceId: BetSlipSport.ticket.designation[designation][choice].choice }); return listBets; }, BetSlipSport.getNonLiveBets = function() { var listBets = []; if (Object.keys(BetSlipSport.ticket.designation).length > 0) for (var designation in BetSlipSport.ticket.designation) for (var choice in BetSlipSport.ticket.designation[designation]) null == BetSlipSport.ticket.designation[designation][choice].matchId && (null == listBets[choice] && (listBets[choice] = []), listBets[choice] = { eventId: designation, odd: BetSlipSport.ticket.designation[designation][choice].odd, choiceId: BetSlipSport.ticket.designation[designation][choice].choice }); return listBets; }, BetSlipSport.updateChoice = function(eventId, uid, choice, odd) { void 0 !== BetSlipSport.ticket.designation[eventId] && void 0 !== BetSlipSport.ticket.designation[eventId][uid] && (BetSlipSport.ticket.designation[eventId][uid].odd = odd, BetSlipSport.ticket.designation[eventId][uid].choice = choice); }, BetSlipSport.updateCurrentTab = function(tab) { this.currentTab = tab; }, BetSlipSport.activateTab = function() { var disabled = $(".tab[data-type=" + this.currentTab + "]").hasClass("disable"); "" == this.currentTab || disabled ? this.activateCombine() : ($(".tab[data-type=" + this.currentTab + "]").addClass("selected"), slideTo("betslip-" + this.currentTab)); }, $(document).ready(function() { BetSlipSport.initializeCookies(), 0 != $("#betslip-sport").length && ($(document).on("click touchstart", ".betslip-sport, .circle-label", function() { disableSwipe(), generateBetslip(); var greyedItem = $("
", { class: "greyed-out", html: " " }); $(document.body).append(greyedItem.fadeTo(200, .75)), setTimeout(function() { $("#betslip-sport").addClass("shown"); }, 200); }), $(document).on("click", "#betslip-sport .close", function() { $(document.body).children(".greyed-out").remove(), $("#betslip-sport").removeClass("shown"), BetSlipSport.ticket.useFreeBet = 0, BetSlipSport.amountPopUp && removeAmountPopup(); })), $(document).on("click", ".bets-wrap .bet:not(.more):not(.disable)", function(e) { 0 == stopClick && ($(this).animateCircle(), e.preventDefault()); var actor = $(this).data("actor"), sport = $(this).data("sport"), eventTitle = $(this).data("event-title"), odd = $(this).attr("data-odd"), eventId = $(this).data("event"), betType = $(this).data("bet-type"), uid = $(this).data("unique-id"), choice = $(this).attr("data-choice"), competition = $(this).data("competition"), matchId = $(this).parents().closest("[data-match-id]").data("match-id"), question = $(this).data("question"), questionId = $(this).data("question-id"); matchId = void 0 === matchId ? null : matchId, !BetSlipSport.ticket.designation[eventId] || BetSlipSport.ticket.designation[eventId] && !BetSlipSport.ticket.designation[eventId][uid] ? BetSlipSport.addChoice(actor, sport, eventTitle, odd, eventId, betType, uid, choice, competition, matchId, question, questionId) : BetSlipSport.removeChoice(uid, eventId), BetSlipSport.setNbBets(); }), $(document).on("click", "#betslip-simple .betting-wrap .button", function() { stakeSpiner($(this)); var stake = $(this).parents(".betting-wrap").find("input[name=stake]").val(), event = $(this).parents(".choiceItem").data("event"), uid = $(this).parents(".choiceItem").data("unique-id"); BetSlipSport.updateStakeSimple(stake, event, uid), checkFreebetBalanceLimit("simple", !1) && (stake = BetSlipSport.getStakeSimple()); var odd = $(this).parents(".choiceItem").find(".odd-betslip").data("odds"), gains = computeTruncateAndFormatWinnings(odd, stake), totalGains = computeThenFormatWinningsSimple(), totalStake = computeThenFormatTotalStakes(); updateTotal($(this).parents(".betting-wrap").find(".amount-wrap .amount"), gains), updateTotal($(this).parents("#betslip-simple").find(".totalGainsSimple"), totalGains), updateTotal($(this).parents("#betslip-simple").find(".totalStakeSimple"), totalStake), checkValidateButton(), BetSlipSport.setNbBets(); }), $(document).on("click", "#betslip-combine .combinated-stakes-wrap .button, #betslip-systeme .combinated-stakes-wrap .button", function() { stakeSpiner($(this)); var stake = $("#betslip-combine .combinated-stakes-wrap input[name=stake]").val(); BetSlipSport.updateStakeCombine(stake), checkFreebetBalanceLimit("combine", !1); var totalGains = computeThenFormatWinningsCombine(); updateTotal($(this).parents("#betslip-combine").find(".totalStakeCombine"), totalGains); var stakeSystem = $("#betslip-systeme .combinated-stakes-wrap input[name=stake]").val(); BetSlipSport.updateStakeSystem(stakeSystem); var totalSystem = computeThenFormatWinningsSystem(stakeSystem, ","), totalStakeByCombi = computeTotalStakeSystem(stakeSystem); updateTotal($(this).parents("#betslip-systeme").find(".totalStakeSystem"), totalSystem), updateTotal($(this).parents("#betslip-systeme").find(".totalOddsSystem"), totalStakeByCombi), checkValidateButton(), BetSlipSport.setNbBets(); }), $(document).on("click", ".validateAmountSport", function() { updateBetSlipStake(); }), $(document).on("click", "#clavier-sport .pad", function() { updateBetSlipStake(); }), $(document).on("click", ".choiceItem .logo-basket", function() { var uid = $(this).data("unique-id"), event = $(this).data("event"); $(".choiceItem[data-unique-id=" + uid + "]").remove(), BetSlipSport.updateCurrentTab($("#betslip-sport .tab.selected").data("type")), BetSlipSport.removeChoice(uid, event); var totalGains = computeThenFormatWinningsSimple(), totalStake = computeThenFormatTotalStakes(); updateTotal($("#betslip-simple").find(".totalGainsSimple"), totalGains), updateTotal($("#betslip-simple").find(".totalStakeSimple"), totalStake); var totalOddsComb = computeThenFormatRawCombinedOdd(), totalGainsComb = computeThenFormatWinningsCombine(); updateTotal($("#betslip-combine").find(".totalStakeCombine"), totalGainsComb), $("#betslip-combine").find(".totalOddsCombine").text(totalOddsComb); var totalStakeByCombi = computeTotalStakeSystem(BetSlipSport.ticket.stakeSystem), totalGainsSystem = computeThenFormatWinningsSystem(BetSlipSport.ticket.stakeSystem, ","); updateTotal($("#betslip-systeme").find(".totalStakeSystem"), totalGainsSystem), updateTotal($("#betslip-systeme").find(".totalOddsSystem"), totalStakeByCombi), refreshRiskList(), $(this).parents(".card").slideUp(200, function() { $(this).remove(); }), "simple" === BetSlipSport.currentTab && showFreebetSwitcher(!0, !1) && (updateAllSimpleBets(), $(".totalGainsSimple").parent().after(generateFreebetSwithcerHtml())), checkValidateButton(); }), $(document).on("click", ".delete-all", function() { BetSlipSport.checkClearBetslip(!0); }), $(document).on("click", "#betslip-sport .close", function() { enableSwipe(), BetSlipSport.clearDomBetslip(); }), $(document).on("click touchstart", ".options.risk-opt li", function() { var risk = $(this).data("value"); BetSlipSport.initializeRisk(risk); var totalStakeByCombi = computeTotalStakeSystem(BetSlipSport.ticket.stakeSystem), totalGainsSystem = computeThenFormatWinningsSystem(BetSlipSport.ticket.stakeSystem, ","); updateTotal($("#betslip-systeme").find(".totalStakeSystem"), totalGainsSystem), updateTotal($("#betslip-systeme").find(".totalOddsSystem"), totalStakeByCombi), BetSlipSport.updateCookies(), checkValidateButton(); }), $(document).on("click touchstart", "#select-box-popup .options.accept-opt li", function() { var accept = $(this).data("value"); BetSlipSport.initializeAccept(accept), BetSlipSport.updateCookies(), BetSlipSport.saveAccept(accept); }), $(document).on("click", "#confirmation-sport-popup button", function() { BetSlipSport.checkClearBetslip(!0), $(document.body).children(".greyed-out").remove(), $("#betslip-sport").removeClass("shown"); }), $(document).on("click", ".tab-betslip .tab", function() { $(this).hasClass("disable") || (BetSlipSport.updateCurrentTab($(this).data("type")), BetSlipSport.updateCookies(), BetSlipSport.setNbBets()); }), $(document).on("change", ".use_free_bet", function() { BetSlipSport.ticket.enableFreeBetSwitcher || ($(this).parent().find(".selector").removeClass("on").css("transform", "translateX(2%)"), $(this).parent().find("input").attr("value", "0")); var useFreeBetValue = $(this).val(); if ($(".free_bet_switch").each(function() { "1" === useFreeBetValue ? ($(this).parent().find(".selector").addClass("on"), $(this).parent().find("input").attr("value", "1")) : ($(this).parent().find(".selector").removeClass("on"), $(this).parent().find("input").attr("value", "0")); }), BetSlipSport.ticket.useFreeBet = parseInt(useFreeBetValue), "combine" === BetSlipSport.currentTab) { checkFreebetBalanceLimit("combine", !0); var totalGainsCombine = computeThenFormatWinningsCombine(); updateTotal($("#betslip-combine").find(".totalStakeCombine"), totalGainsCombine), checkValidateButton(); } if ("simple" === BetSlipSport.currentTab) { checkFreebetBalanceLimit("simple", !0); var totalGainsSimple = computeThenFormatWinningsSimple(); updateTotal($("#betslip-simple").find(".totalGainsSimple"), totalGainsSimple); var totalStake = computeThenFormatTotalStakes(); updateTotal($("#betslip-simple").find(".totalStakeSimple"), totalStake), updateAllSimpleBets(); } }), $("#sport-betslip-amount .amount").on("click", function() { toggleAmountPopup(); }); }); var maxNbBases = { SIMPLE: 0, COUPLE: 1, DEUX_SUR_QUATRE: 1, MULTI: 3, TRIO: 2, TOP4: 3, TOP5: 4, ROYAL5: 4, EMPTY: 4 }, maxNbBasesMulti = { IN4: 3, IN5: 4, IN6: 5, IN7: 6 }, maxNbHorses = { SIMPLE: 1, COUPLE: 2, DEUX_SUR_QUATRE: 2, TRIO: 3, TOP4: 4, MULTI: 4, TOP5: 5, ROYAL5: 5, EMPTY: 5 }, maxNbHorsesFormulaRisk = { IN4: 4, IN5: 5, IN6: 6, IN7: 7 }, Betslip = { raceId: null, nbRunners: null, bet: "EMPTY", type: [], formula: "UNIT", risk: null, designationHistory: [], designation: { base: [], champ: [] }, nbBase: 0, nbChamp: 0, disable: null, allOrder: null, amount: 0, stake: {}, unitStake: 0, nbCombinaison: 0, isAuto: !1, json: {}, setRace: function(raceId, nbRunners) { this.raceId = raceId, this.nbRunners = nbRunners; }, reset: function() { this.bet = "EMPTY", this.type = [], this.formula = "UNIT", this.designationHistory = [], this.designation = { base: [], champ: [] }, this.disable = null, this.nbBase = 0, this.nbChamp = 0, this.allOrder = null, this.amount = 0, this.stake = [], this.nbCombinaison = 0, this.risk = null, this.isAuto = !1; }, setBet: function(betTypeSelected, betFormula, betslipType, isAuto) { console.warn("[setBet] BEGIN: betTypeSelected=" + betTypeSelected + ", betFormula=" + betFormula + ", betslipType=" + betslipType + ", isAuto=" + isAuto), this.bet = betTypeSelected, this.formula = betFormula, null != betslipType && this.setType(betslipType), "MULTI" == betTypeSelected && (this.risk = "IN4"), this.isAuto = isAuto, console.warn("[setBet] END: this.bet=" + this.bet + ", this.formula=" + this.formula + ", this.type=" + this.type); }, isOrder: function() { return console.warn("[isOrder] this.type = " + this.type), console.warn("[isOrder] (this.type == ORDRE) = " + ("ORDRE" == this.type)), console.warn("[isOrder] this.type.indexOf(ORDRE) = " + this.type.indexOf("ORDRE")), console.warn("[isOrder] this.type.indexOf(ROYAL) = " + this.type.indexOf("ROYAL")), "ORDRE" == this.type || -1 !== this.type.indexOf("ORDRE") || -1 !== this.type.indexOf("ROYAL"); }, setType: function(betslipType) { switch (console.warn("[setType] (should be rename input, or pertinent) betslipType=" + betslipType), console.warn("[setType] @start: this.type = " + this.type), betslipType) { case "ALL_ORDERS": this.allOrder = 1 != this.allOrder, console.warn("[setType-ALL_ORDERS] this.allOrder has been switched to " + this.allOrder); break; case "ORDRE": this.type = [ "ORDRE" ], console.warn("[setType-ORDRE] this.type has been set to " + this.type); break; default: var index = this.type.indexOf(String(betslipType)); console.warn("[setType-DEFAULT] index = " + index), -1 == index ? this.type.push(betslipType) : this.type.splice(index, 1), console.warn("[setType-DEFAULT] this.type has been changed to " + this.type); } }, resetType: function() { this.type = [], "COUPLE" === this.bet && (this.type = [ "GAGNANT" ]), console.warn("[resetType] this.type has been reset to " + this.type); }, resetBox: function() { this.allOrder = !1; }, resetBase: function() { this.designation.base = [], this.designationHistory = [], this.nbBase = 0; }, resetChamp: function() { this.designation.champ = [], this.nbChamp = 0; }, updateFormula: function(betFormula) { this.formula = betFormula; }, updateRisk: function(risk) { this.risk = risk; }, setCheckboxDisabled: function() { this.disable = "UNIT" != this.formula && "COMBINED" != this.formula && (this.nbBase == maxNbBases[this.bet] && "MULTI" != this.bet || "MULTI" == this.bet && this.nbBase == maxNbBasesMulti[this.risk]); }, addHorseBase: function(numHorse) { var nbTotalBase = maxNbBases[this.bet]; switch ("MULTI" == this.bet && (nbTotalBase = maxNbBasesMulti[this.risk]), this.formula) { case "UNIT": case "COMBINED": this.designation.base.push(numHorse), this.designationHistory.push(numHorse), this.nbBase = this.designation.base.length; break; default: this.nbBase < nbTotalBase && (this.designation.base.push(numHorse), this.designationHistory.push(numHorse)), this.nbBase = this.designation.base.length, this.setCheckboxDisabled(); } this.sortDesignation(), this.countNbHorse(); }, addHorseChamp: function(numHorse) { this.designation.champ.push(numHorse), this.nbChamp = this.designation.champ.length, this.sortDesignation(), this.countNbHorse(); }, removeHorseBase: function(numHorse) { var index = this.designation.base.indexOf(numHorse); index >= 0 && (this.designation.base.splice(index, 1), this.designationHistory.splice(index, 1)), this.nbBase = this.designation.base.length, this.setCheckboxDisabled(), this.sortDesignation(), this.countNbHorse(); }, removeHorseChamp: function(numHorse) { var index = this.designation.champ.indexOf(numHorse); index >= 0 && this.designation.champ.splice(index, 1), this.nbChamp = this.designation.champ.length, this.sortDesignation(), this.countNbHorse(); }, setDesignationFromDragEvent: function(list) { this.designation.base = list.slice(), this.designationHistory = list.slice(); }, updateDesignation: function(list) { this.designation.base = list.slice(), this.nbBase = this.designation.base.length; }, sortDesignation: function() {}, getNbMaxHorse: function() { return maxNbHorsesFormulaRisk[this.risk] ? maxNbHorsesFormulaRisk[this.risk] : maxNbHorses[this.bet]; }, showDesignation: function() { var returnDesignation = baseDesignation = champDesignation = "", separateur = "WHEEL" == this.formula || "PART_WHEEL" == this.formula ? "X" : "?"; if (this.nbBase > 0 || this.nbChamp > 0 || "EMPTY" == this.bet || this.isAuto) { baseDesignation = this.designation.base.join(" - "); var max = this.getNbMaxHorse(); if (this.isAuto) { baseDesignation = ""; var baseMissing = max; } else var baseMissing = max - this.nbBase; if (baseMissing > 0 && "EMPTY" != this.bet) for (i = 0; i < baseMissing; i++) baseDesignation += "" == baseDesignation ? " " + separateur + " " : " - " + separateur; switch (this.nbChamp = this.designation.champ.length, this.formula) { case "PART_WHEEL": champDesignation = this.nbChamp > 0 ? this.designation.champ.join(" - ") : " " + separateur + " ", returnDesignation = this.isAuto ? baseDesignation : baseDesignation + " / " + champDesignation; break; case "WHEEL": champDesignation = this.nbChamp > 0 ? this.designation.champ.join(" - ") : " " + separateur + " ", returnDesignation = this.isAuto ? baseDesignation : baseDesignation + " / Champ total"; break; default: returnDesignation = baseDesignation; } } return returnDesignation; }, reloadDesignation: function() { this.designation = { base: [], champ: [] }, this.nbBase = 0, this.nbChamp = 0; }, calculateAmount: function(amount) { if (this.unitStake = amount, "SIMPLE" != this.bet) { var maxHorse = maxNbHorsesFormulaRisk[Betslip.risk] ? maxNbHorsesFormulaRisk[Betslip.risk] : maxNbHorses[Betslip.bet]; "WHEEL" == this.formula && (this.nbChamp = this.nbRunners - this.nbBase), this.isAuto ? this.nbCombinaison = 1 : 0 == this.nbChamp ? this.nbCombinaison = this.calculateNbUnitCombination(maxHorse) : this.nbCombinaison = this.calculateNbFieldCombination(maxHorse); const nbType = this.type.length > 0 ? this.type.length : 1; this.amount = amount * this.nbCombinaison * nbType; } else this.amount = amount; return this.amount; }, calculateNbUnitCombination: function(maxHorse) { return 1 == this.allOrder ? this.nbBase < maxHorse ? 0 : calculateArrangement(this.nbBase, maxHorse) : this.nbBase < maxHorse ? 0 : this.nbBase == maxHorse ? 1 : calculateCombination(this.nbBase, maxHorse); }, calculateNbFieldCombination: function(maxHorse) { return console.warn("[calculateNbFieldCombination] this.isOrder()=" + this.isOrder()), this.nbChamp < maxHorse - this.nbBase ? res = 0 : !this.isOrder() || 0 != this.allOrder && null !== this.allOrder ? this.isOrder() && 1 == this.allOrder ? res = calculateCombination(this.nbChamp, maxHorse - this.nbBase) * calculateArrangement(maxHorse, maxHorse) : res = calculateCombination(this.nbChamp, maxHorse - this.nbBase) : res = calculateArrangement(this.nbChamp, maxHorse - this.nbBase), res; }, jsonSerialize: function() { return this.json = { idRace: this.raceId, bet: this.bet, type: this.type, formula: this.formula, risk: this.risk, stake: this.stake, unitStake: this.unitStake, bases: this.designation.base, associated: this.designation.champ, allOrders: this.allOrder, isAuto: this.isAuto, nbCombinaison: this.nbCombinaison, nbBase: this.nbBase, nbChamp: this.nbChamp, amount: this.amount, simpleStake: BetslipSimple.stake, position: BetslipOrder.position }, this.json; }, countNbHorse: function() { manageBasket(this.nbBase + this.nbChamp); } }; "function" != typeof Object.create && function() { var F = function() {}; Object.create = function(o) { if (arguments.length > 1) throw Error("Second argument not supported"); if (null === o) throw Error("Cannot set a null [[Prototype]]"); if ("object" != typeof o) throw TypeError("Argument must be an object"); return F.prototype = o, new F(); }; }(), $(document).ready(function() { $(".unit-bets").length > 0 && !isGiantGrid() && setTimeout(function() { initBetSlipFromTemp(); }, 500); }); var currentManager, coteMin = 1.1; BetSportManager.prototype.getCurrentMode = function() { return this.currentMode; }, BetSportManager.prototype.setCurrentMode = function(mode) { this.currentMode = mode; }, BetSportManager.prototype.isLocked = function() { return this.locked; }, BetSportManager.prototype.setLocked = function(lock) { this.locked = lock; }, BetSportManager.prototype.getSimpleTicket = function() { if (Object.keys(BetSlipSport.ticket.designation).length > 0) { var betlist = "{"; for (var designation in BetSlipSport.ticket.designation) for (var choice in BetSlipSport.ticket.designation[designation]) betlist += '"' + BetSlipSport.ticket.designation[designation][choice].choice + '" :' + BetSlipSport.ticket.designation[designation][choice].stake + ","; betlist = betlist.slice(0, -1) + "}"; var jsonObject = { mode: "single", accept: BetSlipSport.ticket.accept, useFreeBet: BetSlipSport.ticket.useFreeBet, bettingslip: JSON.parse(betlist) }; } return jsonObject; }, BetSportManager.prototype.getCombineTicket = function() { if (Object.keys(BetSlipSport.ticket.designation).length > 0) { var choiceList = []; for (var designation in BetSlipSport.ticket.designation) for (var choice in BetSlipSport.ticket.designation[designation]) choiceList.push(BetSlipSport.ticket.designation[designation][choice].choice); var jsonObject = { mode: "combination", useFreeBet: BetSlipSport.ticket.useFreeBet, totalStake: BetSlipSport.ticket.stake, accept: BetSlipSport.ticket.accept, bettingslip: choiceList }; } return jsonObject; }, BetSportManager.prototype.getSystemTicket = function() { if (Object.keys(BetSlipSport.ticket.designation).length > 0) { var choiceList = []; for (var designation in BetSlipSport.ticket.designation) for (var choice in BetSlipSport.ticket.designation[designation]) choiceList.push(BetSlipSport.ticket.designation[designation][choice].choice); var jsonObject = { mode: "system", useFreeBet: BetSlipSport.ticket.useFreeBet, totalStake: BetSlipSport.ticket.stakeSystem, accept: BetSlipSport.ticket.accept, bettingslip: choiceList, combination: BetSlipSport.getRiskCode() }; } return jsonObject; }, BetSportManager.prototype.trackSimple = function(ticket) { var amount = 0, transactionId = 0; $.each(ticket.bettingslip, function(key, value) { amount += value; }), transactionId = initTransaction(Date.now(), parseFloat(amount).toFixed(2)), $.each(ticket.bettingslip, function(key, value) { addItem(transactionId, "SIMPLE", key, "Enjeux_Sport", parseFloat(value).toFixed(2)); }), sendToAnalytics(); }, BetSportManager.prototype.trackCombination = function(ticket) { var transactionId, amount = ticket.totalStake, combinatedKey = ""; transactionId = initTransaction(Date.now(), parseFloat(amount).toFixed(2)), combinatedKey = ticket.bettingslip.join("-"), addItem(transactionId, "COMBINE", combinatedKey, "Enjeux_Sport", parseFloat(amount).toFixed(2)), sendToAnalytics(); }, BetSportManager.prototype.trackSystem = function(ticket) { var transactionId, amount = BetSlipSport.getTotalStakeSystem(), combinatedKey = ""; transactionId = initTransaction(Date.now(), parseFloat(amount).toFixed(2)), combinatedKey = ticket.bettingslip.join("-"), addItem(transactionId, "SYSTEME", combinatedKey, "Enjeux_Sport", parseFloat(amount).toFixed(2)), sendToAnalytics(); }, BetSportManager.prototype.trackTransaction = function() { var ticket = {}; "single" == this.getCurrentMode() ? this.trackSimple(this.getSimpleTicket()) : "combination" == this.getCurrentMode() ? (ticket = this.getCombineTicket(), this.trackCombination(this.getCombineTicket())) : "system" == this.getCurrentMode() && (ticket = this.getSystemTicket(), this.trackSystem(ticket)); }, BetSportManager.prototype.callFrancePari = function(ticket, cote) { this.setCurrentMode(ticket.mode), currentManager = this; var am = new AjaxManager(), params = { type: "POST", url: Routing.generate("genybet_bet_sport"), data: { ticket: ticket, cote: cote } }; showLoader(), am.update(params), am.flush(this.betSportCallBack, this.betSportErrorCallBack); }, BetSportManager.prototype.betSportCallBack = function() { refreshHeader(), confirmationPopup(), currentManager.trackTransaction(), currentManager.setLocked(!1); }, BetSportManager.prototype.betSportErrorCallBack = function() { currentManager.setLocked(!1); }, BetSportManager.prototype.manageEvol = function() { var checkLives = checkEvolLiveOdds().then(function(result) { return !(result.length > 0) || (result.forEach(function(bet) { warningCard(bet.uid, bet.oldOdd, bet.newOdd, null), BetSlipSport.updateChoice(bet.eventId, bet.uid, bet.choice, bet.newOdd), updateStakeDisplays(bet.uid); }), !1); }, function(error) { return warningCard(null, null, null, error.matchId), !1; }), callsFP = checkNonLiveBets(), checkNonLives = Promise.all(callsFP).then(function(updatedBets) { var checkBet = !0; return updatedBets.forEach(function(bet) { null != bet && (1 == BetSlipSport.ticket.accept ? bet.oldOdd > bet.newOdd && (warningCard(bet.uid, bet.oldOdd, bet.newOdd, null), BetSlipSport.updateChoice(bet.eventId, bet.uid, bet.choice, bet.newOdd), updateStakeDisplays(bet.uid), checkBet = !1) : 2 == BetSlipSport.ticket.accept && bet.oldOdd != bet.newOdd && (warningCard(bet.uid, bet.oldOdd, bet.newOdd, null), BetSlipSport.updateChoice(bet.eventId, bet.uid, bet.choice, bet.newOdd), updateStakeDisplays(bet.uid), checkBet = !1)); }), checkBet; }); return Promise.all([ checkLives, checkNonLives ]).then(function(checks) { return 1 == checks[0] && 1 == checks[1] && (removeWarnings(), !0); }).catch(function(error) { warningCard(error.uid, null, null, null); }); }, $(document).ready(function() { var betManager = new BetSportManager(), bValidCote = 1; $(document).on("click touchstart", "#betslip-simple .validate", function() { var eltParent = this.closest("div#betslip-simple"); if (!betManager.isLocked()) if (betManager.setLocked(!0), $(eltParent).find("span.odd-betslip").each(function(index) { var cote = parseFloat($(this).attr("data-odds")); bValidCote = cote < coteMin ? 0 * bValidCote : 1 * bValidCote; }), 0 != BetSlipSport.ticket.accept) betManager.manageEvol().then(function(result) { if (result) { var ticket = betManager.getSimpleTicket(); betManager.callFrancePari(ticket, bValidCote); } }); else { var ticket = betManager.getSimpleTicket(); betManager.callFrancePari(ticket, bValidCote); } }), $(document).on("click touchstart", "#betslip-combine .validate", function() { var eltParent = this.closest("div#betslip-combine"); if (!betManager.isLocked()) if (betManager.setLocked(!0), bValidCote = 1, $(eltParent).find("span.odd-betslip").each(function(index) { var cote = parseFloat($(this).attr("data-odds")); bValidCote *= cote; }), bValidCote = bValidCote < coteMin ? 0 : 1, 0 != BetSlipSport.ticket.accept) betManager.manageEvol().then(function(result) { if (result) { var ticket = betManager.getCombineTicket(); betManager.callFrancePari(ticket, bValidCote); } }); else { var ticket = betManager.getCombineTicket(); betManager.callFrancePari(ticket, bValidCote); } }), $(document).on("click touchstart", "#betslip-systeme .validate", function() { var eltParent = this.closest("div#betslip-combine"); if (!betManager.isLocked()) if (betManager.setLocked(!0), $(eltParent).find("span.odd-betslip").each(function(index) { var cote = parseFloat($(this).attr("data-odds")); bValidCote = cote < coteMin ? 0 * bValidCote : 1 * bValidCote; }), 0 != BetSlipSport.ticket.accept) betManager.manageEvol().then(function(result) { if (result) { var ticket = betManager.getSystemTicket(); betManager.callFrancePari(ticket, bValidCote); } }); else { var ticket = betManager.getSystemTicket(); betManager.callFrancePari(ticket, bValidCote); } }); }), $(document).ready(function() { $(document).on("focusin", ".pwd", function() { $(this).hasClass("error") && ($(this).removeClass("error"), $(this).parent().find("label.error").addClass("hidden")); }), $(document).on("click", "#exclusion-temp, #cloture, #exclusion-def", function() { var pageTitle = null, thisElmt = $(this); switch (thisElmt.attr("id")) { case "exclusion-temp": pageTitle = Translator.trans("autoexclusion.title_1"); break; case "cloture": pageTitle = Translator.trans("autoexclusion.title_2"); break; case "exclusion-def": pageTitle = Translator.trans("autoexclusion.title_3"); } $("#autoexclusion .item").each(function(e) { thisElmt.attr("id") != $(this).attr("id") && $(this).removeClass("active"); }), $(this).hasClass("active") ? ($(this).removeClass("active"), $(".page-rename").addClass("hidden"), $(".page-name").removeClass("hidden")) : ($(this).addClass("active"), $(".page-name").addClass("hidden"), $(".page-rename").removeClass("hidden").html(pageTitle)); }), $(document).on("click", ".closingBtnDef .action", function() { var parent = $(this).parents(".content"); if ("" == parent.find(".pwd").val()) parent.find(".pwd").addClass("error"), parent.find("label.error").removeClass("hidden"); else { var content = $("#pre-confirmation-exclusion-def-popup"); showPopup("pre-confirmation-exclusion-def-popup", content.html()); } }), $(document).on("click", ".closingBtnCloture .action", function() { var parent = $(this).parents(".content"); if ("" == parent.find(".pwd").val()) parent.find(".pwd").addClass("error"), parent.find("label.error").removeClass("hidden"); else { var content = $("#pre-confirmation-cloture-popup"); showPopup("pre-confirmation-cloture-popup", content.html()); } }), $(document).on("click", ".closingBtnTemp .action", function() { var parent = $(this).parents(".content"), duree = $("input[name=exclusionTemp]").val(), readyTosubmit = !0; if ("date-end-free" == duree && "" == $("#date-end").val() && ($("#date-end").addClass("error"), $("#exclusionTempDateEnd label.error").removeClass("hidden"), readyTosubmit = !1), "" == parent.find(".pwd").val()) $("#confirm-mdp1").addClass("error"), $("#exclusionTempMdp label.error").removeClass("hidden"); else if (readyTosubmit) { var content = $("#pre-confirmation-exclusion-temp-popup"); showPopup("pre-confirmation-exclusion-temp-popup", content.html()); } }), $(document).on("click", "#pre-confirmation-cloture-popup .action", function() { callClotureAjax($(".mdpCloture").val(), "cloture", ".mdpCloture"); }), $(document).on("click", "#pre-confirmation-exclusion-def-popup .action", function() { callExclusionAjax($(".mdpExclusionDef").val(), "exclusionDef", ".mdpExclusionDef"); }), $(document).on("click", "#pre-confirmation-exclusion-temp-popup .action", function() { callExclusionAjax($(".mdpExclusionTemp").val(), "exclusionTemp", ".mdpExclusionTemp", $("input[name=exclusionTemp]").val(), $("input[name=date-end]").val()); }), $(document).on("click", ".closeAccountBtn", function() { 1 != Cookies.get("isAppUser") && (showLoader(), window.location.href = Routing.generate("logout")); }), $(document).on("click", ".select-box .date-end-define", function() { $("#date-end").removeAttr("required"), document.getElementById("exclusionTempDateEnd").style.display = "none"; }), $(document).on("click", ".select-box #date-end-free", function() { document.getElementById("exclusionTempDateEnd").style.display = "block", $("#date-end").attr("required", "required"); }); }), $(document).ready(function() { $(document).on("click", ".horses-base .logo-delete, .horses-champ .logo-delete", function() { var numHorse = $(this).parent().data("numhorse"); $(this).parent().parent().hasClass("horses-base") ? (Betslip.removeHorseBase(numHorse), BetslipOrder.removePosition(numHorse), $('.checkbox-wrap .checkbox[data-numhorse="' + numHorse + '"]').removeClass("checked")) : (Betslip.removeHorseChamp(numHorse), $('.checkbox-wrap .checkbox.champ[data-numhorse="' + numHorse + '"]').removeClass("checked")), sortDesignation(), updateHorseTicket(), displayDesignation(), clearDaCheckbox(numHorse), isBaseDisable(), saveBetSlipTemp(Betslip); }), $(document).on("click", ".sel-formula-risk .sel-box", function() { Betslip.updateRisk($(this).data("formula-risk")), "UNIT" == Betslip.formula || "COMBINED" == Betslip.formula ? replaceChampToEmpty() : (replaceEmptyToChamp(), sliceDesignation(!1)), addEmpty(), displayDesignation(), displayAmountComplexe(), Betslip.setCheckboxDisabled(), isBaseDisable(), saveBetSlipTemp(Betslip); }), $("#betslip .sel-formula-key .sel-box").on("click", function() { if (Betslip.updateFormula($(this).data("formula-key")), "UNIT" == $(this).data("formula-key")) { replaceChampToEmpty(); var tmpBase = Betslip.designation.base.concat(Betslip.designation.champ); Betslip.designation.base = tmpBase, Betslip.nbBase = Betslip.designation.base.length, Betslip.designation.champ = [], Betslip.nbChamp = Betslip.designation.champ.length, displayDesignation(), updateHorseTicket(), sliceDesignation(!0); } else "WHEEL" == $(this).data("formula-key") && (Betslip.designation.champ = [], Betslip.nbChamp = 0), replaceEmptyToChamp(), sliceDesignation("UNIT" == Betslip1.formula || "COMBINED" == Betslip1.formula || 0 == Betslip.designation.champ.length ? !1 : !0); displayAmountComplexe(), Betslip.setCheckboxDisabled(), isBaseDisable(), saveBetSlipTemp(Betslip); }); }), $(document).ready(function() { saveHistory(), manageBackButton(), manageAppDisplay(); }); var PAYSAFECARD_MIN_COMMISSION = 0, PAYSAFECARD_TAUX_COMMISSION = .04, HipayCard = null, hipay = null, frictionlessStatuses = [ "PSP_CAPTURED", "PSP_AUTHORIZED" ], configCardHipay = { fields: { cardHolder: { selector: "hipay-gb-card-holder", helpButton: !1, placeholder: "Prénom Nom", defaultLastname: "", defaultFirstname: "" }, cardNumber: { selector: "hipay-gb-card-number", placeholder: "Numéro de carte", helpButton: !1, hideCardTypeLogo: !1 }, expiryDate: { selector: "hipay-gb-expiration-date", placeholder: "Expiration", helpButton: !1 }, cvc: { selector: "hipay-gb-cvc", placeholder: "CVC", helpButton: !0, helpSelector: "hipay-gb-cvc-help" } }, styles: { base: { color: "#000000", fontSize: "15px", fontWeight: "100", caretColor: "#000000", iconColor: "#bdbdbd" } } }; $(document).ready(function() { var paymentTypeSelector = $(".payment-wrap .select-box ul.options li"); "none" !== paymentTypeSelector.data("value") && $("#validate").attr("disabled", !0).addClass("green").removeClass("green-disabled"); var arrBonus = []; if ($(".bonus-list .bonus").each(function(index) { var amount = $(this).data("amount"), percent = $(this).find(".bonus-percent").data("percent"); void 0 !== amount && void 0 !== percent && (arrBonus[amount] || (arrBonus[amount] = null), arrBonus[amount] = percent); }), $("#confirmation-depot-popup").length > 0) { var content = $("#confirmation-depot-popup"); showPopup("#confirmation-depot-popup", content.html()), content.find("#triggerPremierDepotVirturalEvent").length > 0 && setTimeout(function() { dataLayer.push({ event: "premierDepotVirtualEvent" }); }, 1e3); } $(".bonus-list .bonus").on("click", function() { $(this).parents().find(".amount-wrap .autofeed").trigger("change"), calculateAndShowMentions($(this).data("amount"), $(this).find(".bonus-percent").data("percent")); }), $(".validateAmountDeposit").on("click", function() { var amount = $('form#depot input[name="amount"]').val(); calculateAndShowMentions(amount, getPercentByAmount(amount, arrBonus)); }), paymentTypeSelector.on("click", function() { var amount = $('form#depot input[name="amount"]').val(), percent = getPercentByAmount(amount, arrBonus), moyenPaiement = $(this).data("value"); calculateAndShowMentions(amount, percent, moyenPaiement), void 0 !== $(this).data("link") && (window.location.href = Routing.generate($(this).data("link"))), "cb-hipay" === moyenPaiement ? buildHipayForm() : deleteHipayForm(), "none" === moyenPaiement ? $("#validate").attr("disabled", !0).addClass("green-disabled").removeClass("green") : $("#validate").attr("disabled", !1).addClass("green").removeClass("green-disabled"); }), $(".deposit-validation").on("click", function() { var montant = $('form#depot input[name="amount"]').val(), moyenPaiment = $('form#depot input[name="payment"]').val(), limit = $(".depot-max .amount").data("deposit-limit"); if (validFormDeposit(montant, moyenPaiment, limit)) { showLoader(); var params = { type: "POST", url: Routing.generate("genybet_myaccount_valid_deposit"), data: { amount: montant, payment_method: moyenPaiment }, dataType: "HTML" }, am = new AjaxManager(); am.update(params), am.flush(function(data) { "cb" == moyenPaiment && ($("#formPayment").html(data), addTypePayment($("#formPayment form"), moyenPaiment), $("#formPayment form").submit()), "psc" == moyenPaiment && (document.location.href = data); }); } }), $(".depositKeyboard").on("click", function() { hideError(), hideMentions(); }), $(".validTransac").on("click", function() {}), $(document).on("click", ".validTransacApp", function() { "object" == typeof bridge && bridge.callHandler("error", null, null); }), $(document).on("click", ".btnBackHome", function() { 1 != Cookies.get("isAppUser") && (window.location.href = "/"); }), $("#form_promo_code").blur(function() { validatePromoCode(); }), $("#promo-code-submit").click(function() { validatePromoCode() && $("form").submit(); }); }), $(document).ready(function() { $(document).on("click", "#filter_valid", function() { var filters = $("#select-box-popup").find("input:checked"); if (filters.length > 0) { $(".bloc-filterable").hide(), $("#programme-sport .select-box input").attr("checked", !1); var label = []; filters.each(function() { var filter = $(this).val(); $("div[data-filter-name='" + filter + "']").show(), $("#programme-sport .select-box input[value='" + filter + "']").attr("checked", !0), label.push($(this).parent().text()); }), $("#programme-sport .select-box .text").text(label.join(", ")); } else $(".bloc-filterable").show(), $("#programme-sport .select-box .text").text("Tous les paris"), $("#programme-sport .select-box input").each(function() { $(this).removeAttr("checked"); }); hidePopup(); }); }); var Giant = { geantRaceBetRequests: [], miseUnitaire: 0, idGeant: "", formulaKey: "COMBINED", emetteur: "CLIENT_MOBILE", betOrigin: "GENY", json: {}, jsonSerialize: function() { return this.json = { geantRaceBetRequests: this.geantRaceBetRequests, miseUnitaire: this.miseUnitaire, idGeant: this.idGeant, formulaKey: this.formulaKey, emetteur: this.emetteur, stake: this.stake, betOrigin: this.betOrigin }, this.json; }, init: function() { this.miseUnitaire = 0, this.geantRaceBetRequests = []; }, addBetForRace: function(betForRace) { var findIn = !1, localRequest = this.geantRaceBetRequests; for (objectkey in localRequest) localRequest[objectkey].idCourse == betForRace.idCourse && (localRequest[objectkey] = betForRace, findIn = !0); 0 == findIn && localRequest.push(betForRace), this.geantRaceBetRequests = localRequest; }, setUnitAmount: function(mise) { this.miseUnitaire = mise; }, getBetForRaceFromId: function(idCourse) { var searchedRace = new BetForRace("", [], "", ""), localRequest = this.geantRaceBetRequests; for (objectkey in localRequest) localRequest[objectkey].idCourse == idCourse && (searchedRace = localRequest[objectkey]); return searchedRace; }, getBetForRaceFromNum: function(nomCourse) { var searchedRace = new BetForRace("", [], "", ""), localRequest = this.geantRaceBetRequests; for (objectkey in localRequest) localRequest[objectkey].numCourse == nomCourse && (searchedRace = localRequest[objectkey]); return searchedRace; }, setReplacementForRace: function(numRace, Replacement) { var localRequest = this.geantRaceBetRequests; for (objectkey in localRequest) localRequest[objectkey].numCourse == numRace && (localRequest[objectkey].complement = Replacement); this.geantRaceBetRequests = localRequest; } }; $(document).ready(function() { setCurrentMeeting(Giant), initReplacementForAllRaces(), $(".checkbox-wrap .checkbox").not(".champ").on("click", function() { if (isGiantGrid()) { var dataSelector = returnCurrentRaceIdAndNumRace(); giantVisibility($(this)), updateRacehorseSelected($(this), dataSelector.data("idrace"), dataSelector.data("numrace")), updateTotalAmount(), setSelectedCombination(dataSelector.data("numrace")), markRaceHasChecked(dataSelector.data("numrace")); } }), $(document).on("click", '#clavier[data-type="geant"] button, #clavier[data-type="geant"] .pad[data-value], .pad.correction, .stakes-wrap span.input', function() { Giant.setUnitAmount(getAmountStack()), updateTotalAmount(); }), $(document).on("change", "#geant .select-box input", function() { var dataSelector = returnCurrentRaceIdAndNumRace(), currentRaceNumber = $(".selector.active span").attr("data-numrace"), previousReplacementDesignation = $(".select-box input[data-numrace='" + parseInt(currentRaceNumber) + "']").next().html().trim(), previousReplacement = previousReplacementDesignation.substr(0, previousReplacementDesignation.indexOf(" ")), replacementSelector = $("#partants-list-" + dataSelector.data("numrace") + " .checkbox[data-numhorse='" + previousReplacement + "']").not(".champ"); replacementSelector.hasClass("disable") && replacementSelector.removeClass("disable"); }), $("[id^='replacement-choice-']").on("DOMSubtreeModified", function() { var dataSelector = $(this), subDomResult = dataSelector.text().trim(), replacementHorseNum = subDomResult.substr(0, subDomResult.indexOf(" ")); Giant.setReplacementForRace(dataSelector.data("numrace"), replacementHorseNum), setCombination(combinationCalculation()), setSelectedCombination(dataSelector.data("numrace")); }), $(document).on("click", ".auto-bet", function() { showLoader(), autoResetCombination(), 1 == $(this).hasClass("on") ? ($(".auto-bet").addClass("on"), autoCombination()) : $(".auto-bet").removeClass("on"), hideLoader(); }), $(document).on("click", "#perform-giant", function(e) { e.preventDefault(), performGiantBet(Giant); }), closedGiant(); }); var am = new AjaxManager(), GiantBetCallBack = function(data) { autoResetCombination(), $(".auto-bet").removeClass("on"), hideLoader(), confirmationGiantBet(); }; $(document).ready(function() { var parser = parseURL(window.location.href), currentUrl = parser.pathname, excludedPath = [ Routing.generate("genybet_inscription"), Routing.generate("genybet_jouer") ]; if (!$.inArray(currentUrl, excludedPath)) switch (currentUrl) { case Routing.generate("genybet_myaccount_historical"): showButtonTop("#historique-turf"), showButtonTop("#historique-sport"), showButtonTop("#historique-mouvements"); break; default: showButtonTop(); } }), $(document).ready(function() { -1 != window.location.pathname.search("/sport") && $("#header-sport-basket").removeClass("hidden"); }), $(document).ready(function() { function confirmCancelAction() { var content = $("#pre-confirmation-cancel-action-popup"); showPopup("pre-confirmation-cancel-action-popup", content.html()); } var idBetToCancel, am = new AjaxManager(), cancelCallback = function(data) { $("#turf-card-" + idBetToCancel).hide("slow"), hideLoader(); }; $(document).on("click", ".cancel-bet", function() { idBetToCancel = $(this).attr("id").replace("bet-num-", ""), confirmCancelAction(); }), $(document).on("click", ".btnCancelYes", function() { var params = { type: "POST", url: Routing.generate("genybet_myaccount_ajax_delete_bet", { idBet: idBetToCancel }) }; showLoader(), am.update(params), am.flush(cancelCallback); }); }), $(document).ready(function() { function checkDateField(DateSelector, mvtType) { return $(DateSelector).addClass("date-size"), $(".from-" + mvtType).hasClass("date-size") && $(".to-" + mvtType).hasClass("date-size"); } $(".date-mask").change(function() { var mvtType = $(this).parent().attr("data-move"), btnSelector = "#" + mvtType + ".green.swiper-button"; 10 === $(this).val().length ? checkDateField(this, mvtType) && $(btnSelector).click() : $(this).removeClass("date-size"); }), $(function() { $.datepicker.regional.fr = { clearText: "Effacer", clearStatus: "", closeText: "Fermer", closeStatus: "Fermer sans modifier", prevText: "Préc", prevStatus: "Voir le mois précédent", nextText: "Suiv", nextStatus: "Voir le mois suivant", currentText: "Courant", currentStatus: "Voir le mois courant", monthNames: [ "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" ], monthNamesShort: [ "Jan", "Fév", "Mar", "Avr", "Mai", "Jun", "Jul", "Aoû", "Sep", "Oct", "Nov", "Déc" ], monthStatus: "Voir un autre mois", yearStatus: "Voir unе autre année", weekHeader: "Sm", weekStatus: "", dayNames: [ "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi" ], dayNamesShort: [ "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam" ], dayNamesMin: [ "Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa" ], dayStatus: "Utiliser DD comme premier jour de la semaine", dateStatus: "Choisir le DD, MM d", dateFormat: "dd/mm/yy", firstDay: 0, initStatus: "Choisir la date", isRTL: !1 }, $.datepicker.setDefaults($.extend({ showButtonPanel: !0 }, $.datepicker.regional.fr)), $(".from-turf").datepicker().bind("click", function() { $("#ui-datepicker-div").appendTo("#from-turf").addClass("importantLeft").removeClass("importantRight"); }), $(".to-turf").datepicker().bind("click", function() { $("#ui-datepicker-div").appendTo("#to-turf").addClass("importantRight").removeClass("importantLeft"); }), $(".from-sport").datepicker().bind("click", function() { $("#ui-datepicker-div").appendTo("#from-sport").addClass("importantLeft").removeClass("importantRight"); }), $(".to-sport").datepicker().bind("click", function() { $("#ui-datepicker-div").appendTo("#to-sport").addClass("importantRight").removeClass("importantLeft"); }), $(".from-mouvements").datepicker().bind("click", function() { $("#ui-datepicker-div").appendTo("#from-mouvements").addClass("importantLeft").removeClass("importantRight"); }), $(".to-mouvements").datepicker().bind("click", function() { $("#ui-datepicker-div").appendTo("#to-mouvements").addClass("importantRight").removeClass("importantLeft"); }); }); }), $(document).ready(function() { function initFilter(btnType, dateTo, dateFrom) { dateTo.removeClass("date-size").val(""), dateFrom.removeClass("date-size").val(""), $("#" + btnType + ".green.swiper-button").fadeOut(200); } function scrollToCenter() { scrollTo(0, ($(document).height - $(window).height()) / 2); } function reformatDateFranceParis(date) { var formatedDate = date.slice(0, 10).split("-").join("/"), timeHhMn = date.slice(10, 16).replace(":", "H"), arrayDate = formatedDate.split("/"); return arrayDate[2] + "/" + arrayDate[1] + "/" + arrayDate[0] + " à " + timeHhMn; } function extractChoice(bet, selectedChoiceId) { var choiceTable = bet.choices, choice = null; return $.each(choiceTable, function(key, currentChoice) { if (currentChoice.choice_id == selectedChoiceId) return choice = currentChoice, !1; }), choice; } function getSubBetStatus(selectedChoiceId, winningChoice) { var subBetStatus = !1; return Array.isArray(selectedChoiceId) ? $.each(selectedChoiceId, function(key, currentChoice) { if (currentChoice == winningChoice) return subBetStatus = !0, !1; }) : subBetStatus = selectedChoiceId == winningChoice, subBetStatus; } function htmlCheckBetContent(myBoolValue, globalTicketState) { return "WINNER" == globalTicketState || "LOSER" == globalTicketState ? myBoolValue ? '' : '' : ''; } function getSubBetList(sportBetList, globalTicketState) { var htmlContent = " "; return $.each(sportBetList, function(key, bet) { if (void 0 !== bet.bet) { var choice = extractChoice(bet.bet, bet.selected_choice_id), actorHtml = null == choice ? "" : choice.choice_actor, actorOdds = null == choice ? "" : choice.choice_odds.toFixed(2); htmlContent = htmlContent + '
' + bet.event_label + '
' + bet.bet.question_label + '
' + actorHtml + '(' + actorOdds + ")" + htmlCheckBetContent(getSubBetStatus(bet.selected_choice_id, bet.winning_choice), globalTicketState) + '
' + reformatDateFranceParis(bet.event_date) + "
"; } }), htmlContent; } function MovementTemplate(mvt) { var htmlContent; return htmlContent = '
' + mvt.libelle.toLowerCase().split("_").join(" ").capitalize() + '
' + nullSafe(mvt.typePariLibelle) + '
' + mvt.date.date.ddMmYyyy() + "
", htmlContent = 1 == mvt.credit ? htmlContent + '
+ ' + mvt.montant + " €
" : htmlContent + '
- ' + mvt.montant + " €
", htmlContent += "
"; } function sportTemplate(mvt) { var betResult = mvt.globalStatus, typeGain = "", choice = extractChoice(mvt.bet, mvt.selectedChoiceId), hmlMultiOdd = " ", htmlCheckBet = htmlCheckBetContent(getSubBetStatus(mvt.selectedChoiceId, mvt.winningChoice), mvt.globalStatus); "PROGRESS" == betResult && (betResult = "", typeGain = "Potentiel"); var typePari = null != mvt.translatedBetType ? mvt.translatedBetType + " " + mvt.combinaisonSystem : " "; "Combiné" === typePari.trim() && (hmlMultiOdd = '' + mvt.multiOdd + ""); var actorHtml = null == choice ? "" : choice.choice_actor, actorOdds = null == choice ? "" : choice.choice_odds.toFixed(2), freeBet = mvt.bet.freebet ? " gratuit" : ""; return '
' + mvt.dateTransaction.ddMmYyyy() + " à " + mvt.dateTransaction.hhMm() + '' + nullSafe(mvt.betReference) + '
Mon pari' + freeBet + '' + typePari + '
' + mvt.eventLabel + '
' + nullSafe(mvt.bet.question_label) + '
' + actorHtml + '(' + actorOdds + ")" + htmlCheckBet + '
' + reformatDateFranceParis(mvt.eventDate) + "
" + getSubBetList(mvt.sportBetList, mvt.globalStatus) + '
"; } function turfTemplate(mvt) { var reunion, dateDebutCourse, bet = mvt.bet, betResult = ""; if ("REQUEST_HR_CANCEL_OK" != bet.betState) { betResult = null == bet.arrivee ? "" : 1 == mvt.gain ? "WINNER" : "LOSER", reunion = null != bet.reunion ? bet.reunion : "", dateDebutCourse = "", 0 != mvt.dateDebutEvent && null != mvt.dateDebutEvent && (dateDebutCourse = mvt.dateDebutEvent.date.ddMmYyyy(), "GEANT" != bet.typePari && (dateDebutCourse += " à " + mvt.dateDebutEvent.date.hhMm())); var basketContent = 1 == mvt.basketStillVisible && "" == betResult ? '
' : "", betSupport = "R" + bet.numeroReunion; "GEANT" != bet.typePari && (betSupport += "C" + bet.numeroCourse); var htmlContent = '
' + mvt.date.date.ddMmYyyy() + " à " + mvt.date.date.hhMm() + '
' + betSupport + ' | ' + reunion + "" + basketContent + '
' + dateDebutCourse + '
Mon pari
' + Translator.trans("bet_type." + bet.typePari) + ", " + bet.formule + '
' + bet.combinaison + "
"; return null != bet.arrivee ? htmlContent = htmlContent + 'Arrivée' + bet.arrivee + "
" : htmlContent += "
", htmlContent += '
"; } return ""; } function templateToRender(mvtType, movementObject) { var card = ""; switch (mvtType) { case "mouvements": card = MovementTemplate(movementObject.movement); break; case "turf": card = turfTemplate(movementObject.movement); break; case "sport": card = sportTemplate(movementObject.movement); break; default: card = null; } return card; } function addPaginationContainer(htmlcontent, mvtType, nextCellNumber, mvt) { var bet = mvt.bet, visibility = "Grid" != mvt.betType ? "" : "hidden", nextable = 1 == mvt.next ? " nextable" : ""; return "REQUEST_HR_CANCEL_OK" != bet.betState ? '
' + htmlcontent + "
" : ""; } function deleteReloadedValue(betRef) { $("#bet-ref-" + betRef).parent().parent().parent().remove(); } function contentInjector(mvtType, dataList, empty, LastCellNumber) { var nodeToInsert = $("#board-" + mvtType); 1 == empty && nodeToInsert.empty(), 0 == LastCellNumber && (LastCellNumber = 0), void 0 !== dataList && $.each(dataList, function(index, value) { nextCellNumber = parseInt(LastCellNumber) + parseInt(index) + 1, "sport" == mvtType && deleteReloadedValue(value.movement.betReference), nodeToInsert.append(addPaginationContainer(templateToRender(mvtType, value), mvtType, nextCellNumber, value.movement)); }); } function formatage(element, index, valeur) { Number.isInteger(element.movement.montant) || (element.movement.montant = (Math.round(100 * element.movement.montant) / 100).toFixed(2)), Number.isInteger(element.movement.montantGain) || (element.movement.montantGain = (Math.round(100 * element.movement.montantGain) / 100).toFixed(2)), valeur[index] = element; } function nullSafe(field) { return null != field && "undefined" != field ? field : " "; } function endOfPanelReached(win) { return win.scrollTop() + win.innerHeight() >= win[0].scrollHeight - 100; } function getLastCellId(mvtType) { return $("div[id^='cell-" + mvtType + "']").last().attr("id").split("-")[2]; } function hasNext(mvtType) { return $("div[id^='cell-" + mvtType + "']").last().hasClass("nextable"); } function getInfiniteScrollParams(currentPanelToSearchIn, mvtType) { var lastCellId = $("div[id^='cell-" + mvtType + "']").last().attr("id"), lastId = lastCellId.split("-")[2], dateFrom = $(".from-" + mvtType), dateTo = $(".to-" + mvtType), startingValue = null, endingValue = null; return 10 === dateFrom.val().length && 10 === dateTo.val().length && (startingValue = dateFrom.val().split("/").join("-"), endingValue = dateTo.val().split("/").join("-")), { startPagination: parseInt(lastId) + 1, endPagination: 40, mvtType: mvtType, desc: "true", startDate: startingValue, endDate: endingValue }; } String.prototype.capitalize = function() { return this.charAt(0).toUpperCase() + this.slice(1); }, String.prototype.ddMmYyyy = function() { var formatedDate = this.slice(0, 10).split("-").join("/"), arrayDate = formatedDate.split("/"); return arrayDate[2] + "/" + arrayDate[1] + "/" + arrayDate[0]; }, String.prototype.hhMm = function() { return this.slice(11, 16); }, $(".green.swiper-button").click(function() { var btnType = $(this).attr("id"), dateFrom = $(".from-" + btnType), dateTo = $(".to-" + btnType); if (10 === dateFrom.val().length && 10 === dateTo.val().length) { var startingValue = dateFrom.val().split("/").join("-"), endingValue = dateTo.val().split("/").join("-"); $.ajax({ type: "get", url: Routing.generate("genybet_myaccount_ajax_move_date", { mvtType: btnType, startDate: startingValue, endDate: endingValue }), beforeSend: function() { showLoader(); }, success: function(data) { hideLoader(), contentInjector(data.type, data.content.historical, !0, !1); }, statusCode: { 404: function() { hideLoader(); }, 500: function() { hideLoader(); } } }); } else initFilter(btnType, dateTo, dateFrom); }); var am = new AjaxManager(), infiniteScrollCallBack = function(data) { void 0 !== data.content.historical && (data.content.historical.forEach(formatage), contentInjector(data.type, data.content.historical, !1, getLastCellId(data.type))), hideLoader(), scrollToCenter(); const queryString = window.location.search, urlParams = new URLSearchParams(queryString), platform = urlParams.get("platform"); "CLIENT_ANDROID" != platform && "CLIENT_IOS" != platform || sendRefreshedToken(); }; $(".scrolling-panel").on("scroll", function() { if (endOfPanelReached($(this))) { var selected = $(".tab.selected").children().attr("data-href"), selectedHasArray = selected.split("-"), currentPannel = $("board-" + selectedHasArray[1]); if (1 == hasNext(selectedHasArray[1])) { var scrollParams = getInfiniteScrollParams(currentPannel, selectedHasArray[1]), params = { type: "POST", url: Routing.generate("genybet_myaccount_ajax_infinite_scroll_bet", { startPagination: scrollParams.startPagination, endPagination: scrollParams.endPagination, mvtType: scrollParams.mvtType, desc: scrollParams.desc, startDate: scrollParams.startDate, endDate: scrollParams.endDate }) }; showLoader(), am.update(params), am.flush(infiniteScrollCallBack); } } }); }), function($, window, undefined) { function loadNextStart(scroller) { $.ajax({ type: "get", url: Routing.generate("genybet_ajax_home_turf_next_start", { page: scroller.page + 1 }), beforeSend: function() { $(".next-races").append('
'), showLoader(".card.no-bg.no-shadow"); }, success: function(data) { if ($(".card.no-bg.no-shadow").fadeOut(200, function() { this.remove(); }), data.length > 0) { var nextStarts = removeTopDoublon(data); $(".next-races").append(nextStarts), scroller.pageUp(), scroller.unlock(); } }, statusCode: { 404: function() { hideLoader(); }, 500: function() { hideLoader(); } } }); } function removeTopDoublon(data) { for (var top5 = $(".next-races .card")[0], indTop5 = -1, i = 0; i < data.length; i++) { var card = data[i]; $(card).data("race") == $(top5).data("race") && (indTop5 = i); } return -1 != indTop5 && data.splice(indTop5), data; } var InfiniteScroll = function() { this.locked = !1, this.page = 1, this.initialize = function() { this.setupEvents(); }, this.setupEvents = function() { $(window).on("scroll", this.handleScroll.bind(this)); }, this.handleScroll = function() { var scrollTop = $(document).scrollTop(), windowHeight = $(window).height(); scrollTop / ($(document).height() - windowHeight) > .7 && !this.isLocked() && (this.lock(), this.manageScroll()); }, this.lock = function() { this.locked = !0; }, this.unlock = function() { this.locked = !1; }, this.isLocked = function() { return this.locked; }, this.pageUp = function() { this.page = this.page + 1; }, this.manageScroll = function() { loadNextStart(this); }, this.initialize(); }; $(document).ready(function() { parseURL(window.location.href).pathname == Routing.generate("genybet_home_turf") && new InfiniteScroll(); }); }(jQuery, window), $(document).ready(function() { var ficheCheval = $("#fiche-cheval"); if (ficheCheval) { var runnerNumber = $(ficheCheval).data("selected"), arHorseId = (new Swiper("#fiche-cheval .swiper-container", { observe: !0, initialSlide: runnerNumber - 1, loop: !0 }), []); ficheCheval.find(".content.horse-infos").each(function() { arHorseId.push($(this).data("horse-id")); }); } $("#fiche-cheval .btn-horse-history").on("click", function() { var horseId = $(this).data("horse-id"); $(".fiche-cheval .swiper-slide-active").find(".content.race-horse-history").length > 0 ? showRaceHistory() : loadHorseHistory(horseId); }), $(document).on("click", "#fiche-cheval .swiper-slide-active .race-detailed-link", function() { var raceId = $(this).data("race-id"), horseId = $(".fiche-cheval .swiper-slide-active .horse-infos").data("horse-id"), activeSlide = $(".fiche-cheval .swiper-slide-active"); activeSlide.find(".content.result-detailed").length > 0 && activeSlide.find("#performances-courses").remove(), loadRaceDetails(raceId, horseId, arHorseId); }), $(".backBtn.horsecard").on("click", function(event) { $(".fiche-cheval .swiper-slide-active").find(".horse-infos").hasClass("active") || (stepBack(), event.preventDefault()); }), $(document).on("click", ".fiche-cheval .swiper-slide-active .sortable .table .head .cell", function() { var head = $(".fiche-cheval .swiper-slide-active .race-horse-history .perf-table .table .head .cell"), perfs = $(".fiche-cheval .swiper-slide-active .race-horse-history .perf-table .body"), rows = perfs.find(".row"), colToSort = $(".fiche-cheval .swiper-slide-active .race-horse-history .perf-table .table .head .cell").index($(this)), perfTable = new SortableArray(rows); $(this).hasClass("active") ? $(this).hasClass("desc") ? (perfs.append(perfTable.sortAsc(colToSort)), $(this).removeClass("desc").addClass("asc")) : (perfs.append(perfTable.sortDesc(colToSort)), $(this).removeClass("asc").addClass("desc")) : (perfs.append(perfTable.sortAsc(colToSort)), head.removeClass("active desc asc"), $(this).addClass("active").addClass("asc")); }); }), $(document).ready(function() { $("#account-status-alert").length > 0 && NotifManager.getInstance("#account-status-alert").show(), $(".logout").on("click", function() { NotifManager.deleteCookies(); }); }); var NotifManager = function() { function createInstance(selector) { return new Notif(selector); } var instance; return { getInstance: function(selector) { return instance || (instance = createInstance(selector)), instance; }, deleteCookies: function() { void 0 !== instance && instance.deleteCookie(); } }; }(); $(document).ready(function() { if ($(document).on("click", "#btnLogin", function() { $("#sess_id").length > 0 && Cookies.set("PHPSESSID", $("#sess_id").val()); }), $(document).on("click", ".callbackApp", function() { "object" == typeof bridge && bridge.callHandler("success", null, null); }), $("#header .user-controls .amount").length > 0) { $(".connected").show(), $(".not-connected").hide(); var newSolde = $("#headerinfoss .amount").attr("data-solde"); if (void 0 !== newSolde) { var formattedSolde = parseFloat(newSolde.replace(".", "").replace(",", ".")); parseInt(formattedSolde) < 5 && NotifManager.getInstance("#amount-alert").show(); } } else $(".connected").hide(), $(".not-connected").show(); }), $.extend($.validator.messages, { required: "Ce champ est obligatoire.", remote: "Veuillez corriger ce champ.", email: "Veuillez fournir une adresse électronique valide.", url: "Veuillez fournir une adresse URL valide.", date: "Veuillez fournir une date valide.", dateISO: "Veuillez fournir une date valide (ISO).", number: "Veuillez fournir un numéro valide.", digits: "Veuillez fournir seulement des chiffres.", creditcard: "Veuillez fournir un numéro de carte de crédit valide.", equalTo: "Veuillez fournir encore la même valeur.", extension: "Veuillez fournir une valeur avec une extension valide.", maxlength: $.validator.format("Veuillez fournir au plus {0} caractères."), minlength: $.validator.format("Veuillez fournir au moins {0} caractères."), rangelength: $.validator.format("Veuillez fournir une valeur qui contient entre {0} et {1} caractères."), range: $.validator.format("Veuillez fournir une valeur entre {0} et {1}."), max: $.validator.format("Veuillez fournir une valeur inférieure ou égale à {0}."), min: $.validator.format("Veuillez fournir une valeur supérieure ou égale à {0}."), maxWords: $.validator.format("Veuillez fournir au plus {0} mots."), minWords: $.validator.format("Veuillez fournir au moins {0} mots."), rangeWords: $.validator.format("Veuillez fournir entre {0} et {1} mots."), letterswithbasicpunc: "Veuillez fournir seulement des lettres et des signes de ponctuation.", alphanumeric: "Veuillez fournir seulement des lettres, nombres, espaces et soulignages.", lettersonly: "Veuillez fournir seulement des lettres.", nowhitespace: "Veuillez ne pas inscrire d'espaces blancs.", ziprange: "Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.", integer: "Veuillez fournir un nombre non décimal qui est positif ou négatif.", vinUS: "Veuillez fournir un numéro d'identification du véhicule (VIN).", dateITA: "Veuillez fournir une date valide.", time: "Veuillez fournir une heure valide entre 00:00 et 23:59.", phoneUS: "Veuillez fournir un numéro de téléphone valide.", phoneUK: "Veuillez fournir un numéro de téléphone valide.", mobileUK: "Veuillez fournir un numéro de téléphone mobile valide.", strippedminlength: $.validator.format("Veuillez fournir au moins {0} caractères."), email2: "Veuillez fournir une adresse électronique valide.", url2: "Veuillez fournir une adresse URL valide.", creditcardtypes: "Veuillez fournir un numéro de carte de crédit valide.", ipv4: "Veuillez fournir une adresse IP v4 valide.", ipv6: "Veuillez fournir une adresse IP v6 valide.", require_from_group: "Veuillez fournir au moins {0} de ces champs.", nifES: "Veuillez fournir un numéro NIF valide.", nieES: "Veuillez fournir un numéro NIE valide.", cifES: "Veuillez fournir un numéro CIF valide.", postalCodeCA: "Veuillez fournir un code postal valide." }), $(document).ready(function() { $(".btn_participer").on("click", function() { showLoader(); var params = { type: "POST", url: Routing.generate("genybet_ajax_operation_event_participer", { eventId: $("#eventId").val(), eventUrl: $("#eventUrl").val() }), data: { amount: "montant", payment_method: "payment" }, dataType: "HTML" }, am = new AjaxManager(); am.update(params), am.flush(operationEventCallback); }); var operationEventCallback = function(data) { hideLoader(), window.location = Routing.generate("genybet_operation_event2", { eventId: $("#eventUrl").val() }); }; $("#scrollToSection3").click(function() { $("html, body").animate({ scrollTop: $("#section3").offset().top - 100 }, 1e3); }); }), BetslipOrder = Object.create(Betslip), BetslipOrder.init = function() { BetslipOrder.position = [], saveOrderStack(BetslipOrder); }, BetslipOrder.initPosition = function(numHorse, position) { BetslipOrder.position[position] || (BetslipOrder.position[position] = null), BetslipOrder.position[position] = numHorse, saveOrderStack(BetslipOrder); }, BetslipOrder.setPosition = function(numHorse, position) { BetslipOrder.position[position] = numHorse, saveOrderStack(BetslipOrder); }, BetslipOrder.getPosition = function(numHorse) { var res = null; return BetslipOrder.position.forEach(function(value, key) { value == numHorse && (res = key); }), saveOrderStack(BetslipOrder), res; }, BetslipOrder.removePosition = function(numHorse) { BetslipOrder.position.forEach(function(value, key) { value == numHorse && delete BetslipOrder.position[key]; }), saveOrderStack(BetslipOrder); }, BetslipOrder.clean = function() { BetslipOrder.position.forEach(function(numhorse, position) { -1 == BetslipOrder.designation.base.indexOf(numhorse) && (BetslipOrder.position[position] = null); }), saveOrderStack(BetslipOrder); }, BetslipOrder.showDesignation = function() { var returnDesignation = baseDesignation = champDesignation = "", separateur = "WHEEL" == Betslip.formula || "PART_WHEEL" == Betslip.formula ? " X " : " ? "; if (Betslip.nbBase > 0 || Betslip.nbChamp > 0) { var max = "UNIT" == Betslip.formula ? Betslip.nbBase : Betslip.getNbMaxHorse(); for (i = 1; i <= max; i++) { var elmt = null; BetslipOrder.position.forEach(function(numhorse, position) { position == i && position <= Betslip.nbBase && (elmt = numhorse); }), baseDesignation += ("" == baseDesignation ? "" : " - ") + (null == elmt ? separateur : elmt); } if (Betslip.isAuto) { baseDesignation = ""; var baseMissing = Betslip.getNbMaxHorse(); if (baseMissing > 0 && "EMPTY" != Betslip.bet) for (i = 0; i < baseMissing; i++) baseDesignation += "" == baseDesignation ? " " + separateur + " " : " - " + separateur; } switch (Betslip.nbChamp = Betslip.designation.champ.length, Betslip.formula) { case "PART_WHEEL": champDesignation = Betslip.nbChamp > 0 ? Betslip.designation.champ.join(" - ") : " " + separateur + " ", returnDesignation = Betslip.isAuto ? baseDesignation : baseDesignation + " / " + champDesignation; break; case "WHEEL": champDesignation = Betslip.nbChamp > 0 ? Betslip.designation.champ.join(" - ") : " " + separateur + " ", returnDesignation = Betslip.isAuto ? baseDesignation : baseDesignation + " / Champ total", BetslipOrder.nbChamp = BetslipOrder.nbRunners - BetslipOrder.nbBase; break; default: returnDesignation = baseDesignation; } } return saveOrderStack(BetslipOrder), returnDesignation; }, $(document).ready(function() { null == readStackOrder() && BetslipOrder.init(), $(document).on("click", '.sel-bet-type .sel-box[data-bet-type="ORDRE"], .sel-bet-type .sel-box[data-bet-type="ROYAL5"]', function() { if (console.warn("[OnClick] ORDRE : Betslip.bet=" + Betslip.bet), Betslip.resetType(), Betslip.resetBox(), 0 == $('.sel-formula-key .sel-box[data-bet-type="ALL_ORDERS"]').length) addBtnAllOrder(), Betslip.setType($(this).data("bet-type")), console.warn("[ordre.js] addBtnAllOrder => Betslip.type=" + Betslip.type), Betslip.designation.base = Betslip.designationHistory.slice(), orderOnHistory(); else { removeBtnAllOrder(), sortDesignation(); try { "COUPLE" === Betslip.bet ? (console.warn("[OnClick] ORDRE : COUPLE auto reselect button GAGNANT"), $(".sel-bet-type .sel-box[data-bet-type=GAGNANT]").click()) : (console.warn("[OnClick] ORDRE : auto reselect button " + Betslip.bet), $(".sel-bet-type .sel-box[data-bet-type=" + Betslip.bet + "]").click()); } catch (e) { console.error(e); } } updatePositionCheckboxes(), displayAmountComplexe(), displayDesignation(), updateHorseTicket(), "UNIT" != Betslip.formula && sliceDesignation(!1), isBaseDisable(), saveBetSlipTemp(Betslip), saveOrderStack(BetslipOrder); }), $(document).on("click", '.sel-bet-type .sel-box[data-bet-type!="ORDRE"]', function() { console.warn("[OnClick] NOT ORDRE"); var numSelected = $("#gagnant-sel-box.selected").length + $("#place-sel-box.selected").length + $("#ordre-sel-box.selected").length; console.warn("[OnClick] NOT ORDRE => numSelected = " + numSelected), $(this).hasClass("selected") && 1 == numSelected || (Betslip.setType($(this).data("bet-type")), console.warn("[OnClick] NOT ORDRE => Betslip.type=" + Betslip.type), removeBtnAllOrder(), updatePositionCheckboxes(), displayAmountComplexe(), Betslip.setCheckboxDisabled(), isBaseDisable(), saveBetSlipTemp(Betslip), saveOrderStack(BetslipOrder)); }), $(document).on("click", '.sel-formula-key .sel-box[data-bet-type="ALL_ORDERS"]', function() { Betslip.setType($(this).data("bet-type")), console.warn("[OnClick] ALL_ORDERS => Betslip.type=" + Betslip.type), displayAmountComplexe(), saveBetSlipTemp(Betslip), saveOrderStack(BetslipOrder); }); }), $(document).ready(function() { var hash = window.location.hash.substring(1); "" != hash && $("#" + hash).find(".content").show(); var am = new AjaxManager(), limitCallback = function(data) { for (var content = $("#confirmation-limits-popup"), currentTime = Date.now(), text = "", i = 0; i < data.data.length; i++) { if (data.data[i].date > currentTime) { var type = data.data[i].sousType ? data.data[i].type.toLowerCase() + " " + data.data[i].sousType.toLowerCase() : data.data[i].type.toLowerCase(); text = "

La limite " + Translator.trans(type.replace(" ", "-") + ".label") + " sera effective le " + dateFromTimestamp(data.data[i].date) + "."; } refreshLimitsData(data.data[i]); } hideLoader(), content.find(".limitContent").html(text), $("#form-limits").find(".select-box .text").removeClass("dirty"), $(".item-list .item").removeClass("edit disable"), showPopup("confirmation-limits-popup", content.html()); }; $(document).on("click", "#mon-compte button.validate", function() { if (validateLimitsForm()) { var form = $(this).parent().parent(), route = form.data("route"), data = {}; $(form).find("input.error").removeClass("error"), $(form).find("input.dirty").each(function() { data[$(this)[0].name] = $(this)[0].value; }); var params = { type: "POST", url: Routing.generate(route), data: data }; $(this).parent().slideUp(200), showLoader(), am.update(params), am.flush(limitCallback); } }), $(document).on("click", "#mon-compte button.cancel", function() { var form = $(this).parent().parent(); $(form).find("input.format-number").each(function() { $(this).val($(this).data("current")), $(this).removeClass("dirty"), removeErrorLimit(this); }); }), $(document).on("keyup", "#mon-compte #form-limits input", function() { limitsOK = !0, $("#mon-compte #form-limits input").each(function() { var value = number_format($(this).val(), 0, "", ""); !isNaN(value) && value >= 50 && value <= 1e5 ? removeErrorLimit(this) : (isNaN(value) && (limitsOK = !1, addErrorLimit(this, "Doit être numérique")), (value < 50 || value > 1e5) && (limitsOK = !1, addErrorLimit(this, "La valeur doit être comprise entre 50 € et 100 000 €"))); }), 0 == limitsOK ? $(".action").addClass("disable") : $(".action").removeClass("disable"); }); }), $(document).ready(function() { var userAgent = navigator.userAgent, parser = parseURL(window.location.href), search = parser.search, currentUrl = parser.pathname; if (-1 == search.indexOf("token=") && 1 != Cookies.get("isAppUser") && !currentUrl.match(Routing.generate("genybet_android_install")) && -1 !== userAgent.indexOf("Android") && userAgent[userAgent.indexOf("Android") + 8] >= 4) { var cookieContent = Cookies.get("redirectionpopup"), now = new Date().getTime(); "" !== cookieContent && void 0 !== cookieContent ? (cookieContent = JSON.parse(cookieContent), cookieContent.count < 3 && now - cookieContent.lastDisplayed >= 1728e5 && (showAppBanner(), cookieContent.count += 1, cookieContent.lastDisplayed = now, Cookies.set("redirectionpopup", JSON.stringify(cookieContent))), cookieContent.week !== getWeekNumber() && (cookieContent = { count: 1, lastDisplayed: now, week: getWeekNumber() }, Cookies.set("redirectionpopup", JSON.stringify(cookieContent)), showAppBanner())) : (cookieContent = { count: 1, lastDisplayed: now, week: getWeekNumber() }, Cookies.set("redirectionpopup", JSON.stringify(cookieContent)), showAppBanner()); } }), Prono.prototype.jsonSerialize = function() { return this.json = { idRace: this.raceId, bet: this.bet, formula: this.formula, unitStake: this.stake, bases: this.bases }, this.json; }, $(document).ready(function() { $("#mot-de-passe form").validate({ errorPlacement: function(error, element) { element.before(error); }, rules: { "forgotten_form[birthday]": { dateFR: !0 } } }); $("#confirmation-psw-popup").length > 0 && showPopup("confirmation-psw-popup", $("#confirmation-psw-popup").html()), jQuery.validator.addMethod("passwordComplexity", function(value, element) { var safe = !1; return safe = refreshPasswordStrength(value), this.optional(element) || 1 == safe; }, "Le mot de passe doit associer au moins deux des caractères suivants : majuscule, minuscule, chiffre et symbole. Il doit être compris entre 7 et 16 caractères"); $("#reset-psw-form").validate({ errorPlacement: function(error, element) { element.before(error); }, rules: { "reset_password_form[password]": { passwordComplexity: !0 } } }); $(document).on("keyup", "#reset-psw-form #reset_password_form_password", function() { refreshPasswordStrength($(this).val()); }); }), $(document).ready(function() { $(document).on("click", "#btnSign-up", function() { event.preventDefault(), "sport" === checkSportPage(window.location.href) ? location.href = window.new_subscription_url + "?u=sport" : window.location.href = window.new_subscription_url; }); }), BetslipSimple = Object.create(Betslip), BetslipSimple.init = function() { BetslipSimple.stake = {}, saveStackSimple(BetslipSimple); }, BetslipSimple.feedstack = function(tempBetsimpleStake) { BetslipSimple.stake = tempBetsimpleStake, saveStackSimple(BetslipSimple); }, BetslipSimple.initStake = function(numHorse) { BetslipSimple.stake[numHorse] || (BetslipSimple.stake[numHorse] = {}), BetslipSimple.stake[numHorse].gagnant || (BetslipSimple.stake[numHorse].gagnant = ""), BetslipSimple.stake[numHorse].place || (BetslipSimple.stake[numHorse].place = ""), saveStackSimple(BetslipSimple); }, BetslipSimple.setStake = function(numHorse, type, mise) { BetslipSimple.stake[numHorse][type] = mise, saveStackSimple(BetslipSimple); }, BetslipSimple.resetStake = function(numHorse) { delete BetslipSimple.stake[numHorse], saveStackSimple(BetslipSimple); }, $(document).ready(function() { null == readStackSimple() && BetslipSimple.init(), $(document).on("click", ".bets-horse .logo-delete", function() { var numHorse = $(this).data("numhorse"); $(this).parent().remove(), BetslipSimple.removeHorseBase(numHorse), BetslipSimple.resetStake(numHorse), sortDesignation(), clearDaCheckbox(numHorse), getStakeSimple(), saveBetSlipTemp(Betslip), saveStackSimple(BetslipSimple); }), $(".simple-only .amount-wrap button").on("click", function() { isValidFormSimple(); }), $("#betslip").on("click", ".horse:not(.empty) .label", function() { $(this).toggleClass("selected"), getStakeSimple(), $(this).hasClass("selected") || (removeSimpleError($(this).parent()), $(this).parent().find("input").val("")); }); }), $(document).ready(function() { var idList = [], divMatches = $("#paris-direct").find(".card"); if (addLoaderBettingWrap(), divMatches.length > 0) { $(divMatches).each(function() { idList.push($(this).attr("id")); }); var source = new EventSource(window.france_paris_ws_direct + "?id=" + idList.join("|") + "&mode=v2&partner=352"); source.addEventListener("match", function(event) { refreshMatchDatas(JSON.parse(event.data)); }), source.addEventListener("odds", function(event) { var data = JSON.parse(event.data), match = document.getElementById(data.match_id), discipline = $(match).data("disc"); refreshOdds(match, getWinnerOdd(data.odds, discipline), discipline, data.match_id); }); } }); var TYPE_BET_LABEL = { 1: "TYPE_PARI_1_N_2", 2: "TYPE_PARI_1_2", 3: "TYPE_PARI_HANDICAP_1_N_2", 4: "TYPE_PARI_HANDICAP_1_2", 5: "TYPE_PARI_SCORE_EXACT", 6: "TYPE_PARI_SCORE_EXACT_MI_TEMPS", 7: "TYPE_PARI_HT_FT_1_N_2", 8: "TYPE_PARI_HT_FT_1_2", 9: "TYPE_PARI_OVER_UNDER", 10: "TYPE_PARI_DOUBLE_CHANCE", 11: "TYPE_PARI_PREMIER_EQUIPE_A_MARQUER", 12: "TYPE_PARI_QUI_SE_QUALIFIE", 13: "TYPE_PARI_VAINQUEUR_FINAL", 14: "TYPE_PARI_HEAD_TO_HEAD", 15: "TYPE_PARI_OUI_NON", 16: "TYPE_PARI_PAIR_IMPAIR", 17: "TYPE_PARI_MT_AVEC_LE_PLUS_DE", 18: "TYPE_PARI_VAINQUEUR_MT", 19: "TYPE_PARI_VAINQUEUR_PREMIER_SET", 20: "TYPE_PARI_NOMBRE_SET", 21: "TYPE_PARI_PROCHAIN_BUT", 22: "TYPE_PARI_1_N_2_AUTOMATIQUE", 23: "TYPE_PARI_1_2_AUTOMATIQUE", 24: "TYPE_PARI_LES_2_EQUIPE_MARQUE", 25: "TYPE_PARI_EQUIPE_1_MARQUE", 26: "TYPE_PARI_EQUIPE_2_MARQUE", 27: "TYPE_PARI_NOMBRE_BUTS_EQUIPE_1", 28: "TYPE_PARI_NOMBRE_BUTS_EQUIPE_2", 29: "TYPE_PARI_NOMBRE_BUTS_TOTAL", 30: "TYPE_PARI_EQUIPE_1_GAGNE_SANS_PRENDRE_DE_BUT", 31: "TYPE_PARI_EQUIPE_2_GAGNE_SANS_PRENDRE_DE_BUT", 32: "TYPE_PARI_DERNIERE_EQUIPE_A_MARQUER", 33: "TYPE_PARI_NOMBRE_BUTS_EQUIPE_1_MT_1", 34: "TYPE_PARI_NOMBRE_BUTS_EQUIPE_2_MT_1", 35: "TYPE_PARI_PERIODE_PROCHAIN_BUT", 36: "TYPE_PARI_OVER_UNDER_MT_1", 37: "TYPE_PARI_OVER_UNDER_MT_2", 38: "TYPE_PARI_OVER_UNDER_EQ_1", 39: "TYPE_PARI_OVER_UNDER_EQ_2", 40: "TYPE_PARI_MARGE", 41: "TYPE_PARI_NB_BUTS_MT_1", 42: "TYPE_PARI_NB_BUTS_MT_2", 43: "TYPE_PARI_NB_BUTS_EQ_1_MT_2", 44: "TYPE_PARI_NB_BUTS_EQ_2_MT_2", 45: "TYPE_PARI_VAINQUEUR_2_MTS", 46: "TYPE_PARI_2_EQS_MARQUENT_MT_1", 47: "TYPE_PARI_EQ_1_MARQUE_2_MTS", 48: "TYPE_PARI_EQ_2_MARQUE_2_MTS", 49: "TYPE_PARI_PAIR_IMPAIR_MT_1", 50: "TYPE_PARI_PAIR_IMPAIR_MT_2", 51: "TYPE_PARI_MT_PLUS_DE_BUTS_EQ_1", 52: "TYPE_PARI_MT_PLUS_DE_BUTS_EQ_2", 53: "TYPE_PARI_ECART_DU_VAINQUEUR", 54: "TYPE_PARI_1_N_2_MT_2", 55: "TYPE_PARI_NB_JEUX_SET", 56: "TYPE_PARI_NB_SETS_TOTAL", 57: "TYPE_PARI_SET_RESULTAT", 58: "TYPE_PARI_OVER_UNDER_SET1", 59: "TYPE_PARI_OVER_UNDER_SET2", 60: "TYPE_PARI_OVER_UNDER_SET1_EQ1", 61: "TYPE_PARI_OVER_UNDER_SET1_EQ2", 62: "TYPE_PARI_OVER_UNDER_JEUX", 63: "TYPE_PARI_OVER_UNDER_JEUX_EQ1", 64: "TYPE_PARI_OVER_UNDER_JEUX_EQ2", 65: "TYPE_PARI_OVER_UNDER_SETS", 66: "TYPE_PARI_EQUIPE1_GAGNE_1SET", 67: "TYPE_PARI_EQUIPE2_GAGNE_1SET", 68: "TYPE_PARI_SCORE_EXACT_SET", 69: "TYPE_PARI_1_2_SPECIAL", 70: "TYPE_PARI_ASIAN_HANDICAP", 71: "TYPE_PARI_ASIAN_TOTAL", 72: "TYPE_PARI_PREMIER_BUTEUR", 73: "TYPE_PARI_COMBINAISON", 74: "TYPE_PARI_PROLONGATION", 75: "TYPE_PARI_MARGE_LISTE", 76: "TYPE_PARI_PARI_BUTEUR", 77: "TYPE_PARI_BOOKINGS_TOTALS", 78: "TYPE_PARI_BOOKING_HT_TOTALS", 79: "TYPE_PARI_RED_CARD", 80: "TYPE_PARI_BOOKING", 81: "TYPE_PARI_FIRST_BOOKING", 82: "TYPE_PARI_MATCH_BOOKING", 83: "TYPE_PARI_TYPE_QUALIFICATION", 84: "TYPE_PARI_EQUIPE_MARQUE", 85: "TYPE_PARI_CORNER", 86: "TYPE_PARI_MATCH_CORNER", 87: "TYPE_PARI_CORNER_ODD_EVEN", 88: "TYPE_PARI_FIRST_CORNER", 89: "TYPE_PARI_TOTAL_CORNER", 90: "TYPE_PARI_LAST_CORNER", 91: "TYPE_PARI_PARIS_SPECIAUX", 92: "TYPE_PARI_INTERVAL_10_MIN", 93: "TYPE_PARI_INTERVAL_15_MIN", 94: "TYPE_PARI_FIRST_10_MIN", 95: "TYPE_PARI_2_EQUIPE_MARQUE_MI_TEMPS_2", 96: "TYPE_PARI_MARGE_MI_TEMPS", 97: "TYPE_PARI_SCORE_EXACT_MI_TEMPS_2", 98: "TYPE_PARI_ECART_POINT", 99: "TYPE_PARI_MARGE_VAINQUEUR", 100: "TYPE_PARI_1_2_MI_TEMPS", 101: "TYPE_PARI_PERIODE_PLUS_POINTS", 102: "TYPE_PARI_NB_POINTS_MATCH", 103: "TYPE_PARI_1_N_2_PERIODE", 104: "TYPE_PARI_O_U_PERIODE", 105: "TYPE_PARI_ECART_PERIODE", 106: "TYPE_PARI_POINT_RACE", 107: "TYPE_PARI_VAINQUEUR_2_SET", 108: "TYPE_PARI_VAINQUEUR_SET", 109: "TYPE_PARI_ECART_SET", 110: "TYPE_PARI_RACE_POINT", 111: "TYPE_PARI_FRAME_WINNER", 112: "TYPE_PARI_LEG_WINNER", 113: "TYPE_PARI_COMBINAISON_1ER_MI_TEMPS", 114: "TYPE_PARI_COMBINAISON_2EM_MI_TEMPS", 115: "TYPE_PARI_PARIS_SPECIAUX_2EM_MI_TEMPS", 116: "TYPE_PARI_PARIS_SPECIAUX_1ER_MI_TEMPS", 117: "TYPE_PARI_HANDICAP", 118: "TYPE_PARI_HANDICAP_PERIODE", 121: "TYPE_PARI_DOUBLE_CHANCE_MI_TEMPS", 123: "TYPE_PARI_CLEAN_SHEET" }, SORT_CHOICE_TYPE_BET = [ "TYPE_PARI_SCORE_EXACT", "TYPE_PARI_SCORE_EXACT_MI_TEMPS", "TYPE_PARI_NOMBRE_BUTS_EQUIPE_1", "TYPE_PARI_NOMBRE_BUTS_EQUIPE_2", "TYPE_PARI_NOMBRE_BUTS_EQUIPE_1_MT_1", "TYPE_PARI_NOMBRE_BUTS_EQUIPE_2_MT_1", "TYPE_PARI_NOMBRE_BUTS_TOTAL", "TYPE_PARI_INTERVAL_10_MIN", "TYPE_PARI_INTERVAL_15_MIN" ], SHOW_MORE_TYPE_BET = [ "TYPE_PARI_SCORE_EXACT", "TYPE_PARI_SCORE_EXACT_MI_TEMPS" ], NO_SUBTITLES_TYPE_BET = [], REPLACE_ACTOR_TYPE_BET = [ "TYPE_PARI_VAINQUEUR_MT" ], LiveEvent = { listBets: [] }; LiveEvent.reinitialize = function() { this.listBets = []; }, LiveEvent.setBet = function(typeBetId) { this.listBets[typeBetId] || (this.listBets[typeBetId] = {}, this.listBets[typeBetId] = { question: [], questionId: [], label: null, col: null, choices: [], uChoice: [], more: null, subtitles: null, active: [] }), this.setLabel(typeBetId), this.setCol(typeBetId), this.setMore(typeBetId), this.setSubtitles(typeBetId); }, LiveEvent.setLabel = function(typeBetId) { this.listBets[typeBetId].label = TYPE_BET_LABEL[typeBetId]; }, LiveEvent.setMore = function(typeBetId) { this.listBets[typeBetId].more = -1 != $.inArray(this.listBets[typeBetId].label, SHOW_MORE_TYPE_BET); }, LiveEvent.setSubtitles = function(typeBetId) { this.listBets[typeBetId].subtitles = -1 == $.inArray(this.listBets[typeBetId].label, NO_SUBTITLES_TYPE_BET); }, LiveEvent.setActivity = function(typeBetId, betId, isActive) { this.listBets[typeBetId].active[betId] || (this.listBets[typeBetId].active[betId] = null), this.listBets[typeBetId].active[betId] = isActive; }, LiveEvent.setQuestion = function(typeBetId, betId, questionLabel, questionId) { this.listBets[typeBetId].question[betId] || (this.listBets[typeBetId].question[betId] = null), this.listBets[typeBetId].question[betId] = questionLabel, this.listBets[typeBetId].questionId[betId] = questionId; }, LiveEvent.setChoices = function(typeBetId, betId, objChoices) { this.listBets[typeBetId].choices[betId] || (this.listBets[typeBetId].choices[betId] = []); var arr = Object.keys(objChoices).map(function(key) { return objChoices[key]; }); -1 != $.inArray(this.listBets[typeBetId].label, SORT_CHOICE_TYPE_BET) && arr.sort(function(a, b) { return a.cid - b.cid; }); var choices = [], uChoices = [], loop = 0; for (var choice in arr) -1 != $.inArray(this.listBets[typeBetId].label, REPLACE_ACTOR_TYPE_BET) ? "Nul" == arr[choice].act ? arr[choice].actor = "N" : arr[choice].actor = 0 == loop ? "1" : "2" : arr[choice].actor = arr[choice].act, choices[choice] = arr[choice], loop++; !this.listBets[typeBetId].uChoice[betId] && Object.keys(uChoices).length > 0 && (this.listBets[typeBetId].uChoice[betId] = [], this.listBets[typeBetId].uChoice[betId] = uChoices), this.listBets[typeBetId].choices[betId].bid || (this.listBets[typeBetId].choices[betId].bid = betId), this.listBets[typeBetId].choices[betId].choices = choices; }, LiveEvent.typeBetActivity = function(typeBet) { if (Object.keys(this.listBets).length > 0) for (var betId in this.listBets[typeBet].active) if (1 == this.listBets[typeBet].active[betId]) return 1; return 0; }, LiveEvent.orderBets = function() { if (Object.keys(this.listBets).length > 0) for (var typeBet in this.listBets) { var list = this.listBets[typeBet].choices; list.sort(function(a, b) { return a.bid - b.bid; }); } }, LiveEvent.setCol = function(typeBetId) { var nbCol = 1; switch (this.listBets[typeBetId].label) { case "TYPE_PARI_SCORE_EXACT": case "TYPE_PARI_SCORE_EXACT_MI_TEMPS": case "TYPE_PARI_DOUBLE_CHANCE": case "TYPE_PARI_NB_BUTS_MT_1": case "TYPE_PARI_NB_BUTS_MT_2": case "TYPE_PARI_DOUBLE_CHANCE_MI_TEMPS": case "TYPE_PARI_VAINQUEUR_MT": nbCol = 3; break; case "TYPE_PARI_OUI_NON": case "TYPE_PARI_LES_2_EQUIPE_MARQUE": case "TYPE_PARI_OVER_UNDER_MT_1": case "TYPE_PARI_OVER_UNDER_MT_2": case "TYPE_PARI_OVER_UNDER_EQ_1": case "TYPE_PARI_OVER_UNDER_EQ_2": case "TYPE_PARI_OVER_UNDER": case "TYPE_PARI_NOMBRE_BUTS_EQUIPE_1": case "TYPE_PARI_NOMBRE_BUTS_EQUIPE_2": case "TYPE_PARI_NOMBRE_BUTS_TOTAL": case "TYPE_PARI_2_EQS_MARQUENT_MT_1": case "TYPE_PARI_2_EQUIPE_MARQUE_MI_TEMPS_2": case "TYPE_PARI_INTERVAL_10_MIN": case "TYPE_PARI_INTERVAL_15_MIN": case "TYPE_PARI_CLEAN_SHEET": case "TYPE_PARI_ECART_DU_VAINQUEUR": case "TYPE_PARI_O_U_PERIODE": case "TYPE_PARI_PAIR_IMPAIR": nbCol = 2; break; default: nbCol = 1; } this.listBets[typeBetId].col = nbCol; }; var timestamp = Date.now(), firstDisplay = 1; $(document).ready(function() { if ($("#match.liveEvent").length > 0) { var matchId = $("#match.liveEvent").data("match-id"), liveEvent = new EventSource(window.france_paris_ws_direct + "?id=" + matchId + "&partner=352&mode=v2"); liveEvent.addEventListener("odds", function(event) { var data = JSON.parse(event.data); data.odds.length > 0 && manageBets(data.odds); }), liveEvent.addEventListener("match", function(event) { refreshMatchDatasLive(JSON.parse(event.data)); }); } }), window.addEventListener("message", function(event) { event.data.height && (document.getElementById("lmt").style.height = "", document.getElementById("lmt").style.height = event.data.height + "px"); }), $(window).load(function() { $("div.bet[data-question='Score%20multiple']").each(function(index) { 0 == index && $(this).closest("div.bets-wrap").removeClass("col-3").addClass("col-1"), $(this).children().css({ height: "30px", "line-height": "" }); }); }), $(document).ready(function() { var stepValid = 0, swiperSub = new Swiper("#inscription .swiper-container", { spaceBetween: 30, noSwipingClass: "no-swipe", onSlideChangeStart: function() { $("#inscription .steps-bar .step-" + (swiperSub.activeIndex + 1)).addClass("green"), $(window).scrollTop(0), $("#inscription .swiper-slide-active").scrollTop(0); } }); if (stepValid = checkCaptchaError(swiperSub), $("#error-popup.sub-popup").length > 0) { var errorFields = $("input.error"); if (errorFields.length > 0) { for (var i = 0; i < errorFields.length; i++) { var index = $(errorFields[i]).parents(".swiper-slide").data("section"); $("#inscription .steps-bar .step-" + (index + 1)).addClass("error"); } index = $(errorFields[0]).parents(".swiper-slide").data("section"), swiperSub.slideTo(index); } enableAllSlides(), stepValid = 3; } $("#inscription #user_mdp").length > 0 && "" != $("#inscription #user_mdp").val() && refreshPasswordStrength($("#inscription #user_mdp").val()), $(document).on("click", ".mdp-wrap .icon", function() { $(".mdp-wrap").find("input").attr("type", "text"); }).on("blur", ".mdp-wrap .icon", function() { $(".mdp-wrap").find("input").attr("type", "password"); }), jQuery.validator.addMethod("passwordComplexity", function(value, element) { var safe = !1; return safe = refreshPasswordStrength(value), this.optional(element) || 1 == safe; }, "Le mot de passe doit associer au moins deux des caractères suivants : majuscule, minuscule, chiffre et symbole. Il doit être compris entre 7 et 16 caractères"), $.validator.addMethod("phoneCheck", function(value, element) { var re = new RegExp(/^((\+|00)33[ .-]?|0)[679]([ .-]?\d{2}){4}$/, "g"); return this.optional(element) || re.test(value); }, "Le format du numero de telephone est invalide"), $.validator.addMethod("departmentCheck", function(value, element) { var re = new RegExp(/^(0[1-9]|[1-8][0-9]|9[0-5]|2[AB]|97[1-9]?|98[1-9]?|99)$/, "g"); return this.optional(element) || re.test(value); }, "Le département est incorrecte"), $.validator.addMethod("alphaCheck", function(value, element) { var re = new RegExp(/^[A-zÀ-ú\s'-]*$/, "g"); return this.optional(element) || re.test(value); }, "Ce champ n'accepte que des lettres"); $("#inscriptionForm").validate({ errorPlacement: function(error, element) { element.before(error); }, rules: { "user[pseudo]": { maxlength: 16, minlength: 4 }, "user[mdp]": { passwordComplexity: !0 }, "user[lastname]": { alphaCheck: !0 }, "user[usualname]": { alphaCheck: !0 }, "user[firstname]": { alphaCheck: !0 }, "user[othersurname]": { alphaCheck: !0 }, "user[bday]": { dateFR: !0 }, "user[birth_dept]": { departmentCheck: !0 }, "user[birthtown]": { alphaCheck: !0, maxlength: 38 }, "user[address]": { maxlength: 38 }, "user[complement]": { maxlength: 38 }, "user[zipcode]": { digits: !0, minlength: 3, maxlength: 6 }, "user[town]": { alphaCheck: !0, maxlength: 38 }, "user[mobile]": { phoneCheck: !0 }, "user[phone]": { phoneCheck: !0 } } }); if ($(document).on("click touchstart", "#inscription .steps-bar div[class*='step-']", function() { var index = $(this).data("step"); index <= stepValid && swiperSub.slideTo(index); }), $(document).on("click", "#infos-connexion .swipper-button-next", function() { 0 == validateStep1() && (stepValid++, swiperSub.slideNext()); }), $(document).on("keyup", "#inscription #user_mdp", function() { refreshPasswordStrength($(this).val()); }), $(document).on("keyup", "#inscription #user_birth_dept", function() { $(this).val($(this).val().toUpperCase()); }), $(document).on("click", "#donnees-persos #user_maj, #jeu-responsable #user_cgu", function() { $(this).hasClass("error") && ($(this).removeClass("error"), $(this).prev().remove()); }), $(document).on("click", "#jeu-responsable #user_cgu .sp-link", function() { window.open($(this).data("link")); }), $(document).on("click", "#donnees-persos .swipper-button-next", function() { 0 == validateStep2() && (stepValid++, swiperSub.slideNext()); }), $(document).on("click touchstart", "#select-box-popup .options.country_list li, #select-box-popup .options.select_list li", function() { var popupInput = $(this).parent().parent().find("input"), formInput = $("#inscriptionForm").find("#" + $(popupInput).attr("id")); formInput.val($(this).data("value")), $(formInput).next().hasClass("error") && ($(formInput).next().removeClass("error"), $(formInput).parent().parent().prev().remove()), "user_birth_country" == $(popupInput).attr("id") && ("France" == $(this).data("value") ? ($(".birth-dept-wrap input").val(""), $(".birth-dept-wrap").removeClass("hidden")) : ($(".birth-dept-wrap").addClass("hidden"), $(".birth-dept-wrap input").val(99))); }), $(document).on("click", "#coordonnees .swipper-button-next", function() { 0 == validateStep3() && (stepValid++, swiperSub.slideNext()); }), $(document).on("click", "#jeu-responsable .validate", function() { var validator = $("#inscriptionForm").validate(), rslt = 0; $("#jeu-responsable .cgu input").is(":checked") || (addErrorMessage($("#jeu-responsable #user_cgu"), ""), rslt++), "" == $("#jeu-responsable #user_captcha").val() && ($("#jeu-responsable #captcha").before(''), rslt++), 0 == (rslt += validateAllStep(validator, "#jeu-responsable")) && $("#inscriptionForm").submit(); }), $(document).on("click", "#jeu-responsable .legend", function() { var id = $(this).parents(".limit-wrap").attr("id") + "-popup", content = $("#" + id); showPopup(id, content.html()); }), void 0 !== $("#captcha .captcha_reload").attr("href")) { var recaptcha_function = $("#captcha .captcha_reload").attr("href").replace("javascript:", "").replace("();", ""); window[recaptcha_function](); } }), $(document).ready(function() { var am = new AjaxManager(), withdrawalCallback = function(data) { var content = $("#confirmation-retrait-popup"); hideLoader(), showPopup("confirmation-retrait-popup", content.html()); }; $(document).on("click", "#retrait button.main", function() { var val = $("input[name=amount]").val(), solde = $("p.solde").data("solde"); "" != val && val >= 10 && solde >= val ? ($("#confirmation-mdp-popup .withdrawal-amount").text(val), showPopup("confirmation-mdp-popup", $("#confirmation-mdp-popup").html())) : (void 0 !== $("#retrait .error") && $("#retrait .error").remove(), solde < val ? $("#retrait input[name=amount]").parent().before('Votre solde est insuffisant pour ce retrait.') : $("#retrait input[name=amount]").parent().before('Le montant est de 10€ minimum')); }), $(document).on("click", "#confirmation-mdp-popup .sendWithdrawal", function() { hidePopup("confirmation-mdp-popup"); var amount = $("input[name=amount]").val(), password = $(this).parents(".popup").find("input[name=_password]").val(), birthday = $(this).parents(".popup").find("input[name=_birthday]").val(), data = { amount: amount, password: password, birthday: birthday }, params = { type: "POST", url: Routing.generate("genybet_myaccount_withdrawal_post"), data: data }; showLoader(), am.update(params), am.flush(withdrawalCallback); }), $(document).on("click touchstart", "#informations-retrait", function(e) { e.preventDefault(), showPopup("infos-general-popup", $("#infos-general-popup").html()); }), $(document).on("click", "#confirmation-retrait-popup .valideWithdrawal", function() { document.location.href = Routing.generate("genybet_myaccount_user_data"); }); });