<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=0">

    <title>Pioneer DJ - Brandbox 2020</title>

    <link rel="shortcut icon" href="https://www.pioneerdj.com/favicon.ico" type="image/ico">
    <link href="../../styles/2020.css" rel="stylesheet">

    <script type="text/javascript">
        function checkForSpecialCharacters(formData, toCheck) {
            var errors = {};
            toCheck.forEach(function(item) {
                if (formData != null && !formData[item].match(new RegExp('^((?![\<,\>,\&,\"]).)*$'))) {
                    errors[item] = 'This character can not be used.';
                }
            });
            return errors;
        }
        window.__gigyaConf = {
            validation: {
                'gigya-register-screen': function(formData, eventType, callback) {
                    return checkForSpecialCharacters(formData, ['profile.firstName', 'profile.lastName']);
                },
                'gigya-update-profile-screen': function(formData, eventType, callback) {
                    var errors = checkForSpecialCharacters(formData, ['profile.nickname', 'profile.firstName', 'profile.lastName', 'profile.city', 'profile.zip']);
                    if (formData != null && formData['profile.nickname'].length == 0 && !enableEmptyNickname)
                        errors['profile.nickname'] = "You can not leave this field blank.";
                    return errors;
                }
            },
            enableSSOToken: true,
            bypassCookiePolicy: 'always'
        };
        window.__functionsToExecute = [];
    </script>

    <script type="text/javascript" src="https://cdns.gigya.com/JS/socialize.js?apikey=3_uMFBTSRvPDal63Zq8JezwafdwGOEG0zCW442Ku4Xk2lEG1mxHXrUaGOGsaDLAoEF&lang=en">
        {
            enabledProviders: 'facebook,twitter,linkedin,yahoo'
        }
    </script>
    <link href="https://pioneerdj.com/Bundles/GigyaStyle/?v=KhjMIjdDaPAl8RkrAvfFxtOKzK7ZBvw_6qzzem-S6Oo1" rel="stylesheet" />
    <script type="text/javascript" src="https://cdn.gigya-ext.com/screenset-validation.min.js"></script>
    <script src="https://pioneerdj.com/Bundles/GigyaConnector/?v=det8w82lPoffB4JoTTPoe7G1G7MqeCKh8-PVuZ9qFeg1"></script>
</head>

<body>

    <script>
        dataLayer = [];
    </script>
    <!-- Google Tag Manager -->
    <noscript><iframe src="https://pioneerdj.com//www.googletagmanager.com/ns.html?id=GTM-PSC5SC" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>
        (function(w, d, s, l, i) {
            w[l] = w[l] || [];
            w[l].push({
                'gtm.start': new Date().getTime(),
                event: 'gtm.js'
            });
            var f = d.getElementsByTagName(s)[0],
                j = d.createElement(s),
                dl = l != 'dataLayer' ? '&l=' + l : '';
            j.async = true;
            j.src = '//www.googletagmanager.com/gtm.js?id=' + i + dl;
            f.parentNode.insertBefore(j, f);
        })(window, document, 'script', 'dataLayer', 'GTM-PSC5SC');
    </script>
    <!-- End Google Tag Manager -->

    <div style="position: relative; background-color: var(--color--neutrals-8); color: var(--color--neutrals-0); min-height: 100vh;">

    </div>

    </div>
    </div>

    <div style="display: none;">
        <div id="search__wrap">
            <div id="search-field">
                <div class="outer">
                    <div class="container">
                        <div class="input-wrap">
                            <input type="text" class="input__search" data-no-results="Oops nothing can be found" data-nothing-entered="Please enter a search query" />
                            <a href="#" class="trigger_clear-text btn__clear-text"><span class="ico-element icon-clear-cross"></span>Clear entry</a>
                        </div>
                        <div class="button-wrap">
                            <a href="#" class="btn__search trigger__close-overlayer">
                                <i class="icon-cross"><span class="sr-only">Close</span></i>
                            </a>
                        </div>
                    </div>
                </div>
            </div>
            <span class="loading-icon-search"></span>
            <div id="result-wrap">
                <div class="outer outer-search-content">
                    <div class="container">
                        <div class="boxed-content">
                            <h3>Top results</h3>
                            <ul>
                                <!-- POPULATED WITH JAVASCRIPT -->
                            </ul>
                            <p class="button-wrap">
                                <a href="#" id="view__all" class="btn btn-border trigger__searchpage disabled" data-search-page="https://pioneerdj.com/en/search-results/?q=">
                                    <span class="text">See all results</span>
                                </a>
                            </p>
                            <p>Didn’t find what you’re looking for? Maybe use fewer words or a more general search term.<br />If you
                                still have no luck you can contact our <a href="https://pioneerdj.com/en/support/contact">customer
                                    service</a>.</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script src="https://pioneerdj.com/Scripts/jquery-1.11.3.js?bundleVirtualPath=%7e%2fBundles%2fEcommerceJsFooter%2f"></script>
    <script src="https://pioneerdj.com/Scripts/uCommerce/uCommerce.jQuery.js?bundleVirtualPath=%7e%2fBundles%2fEcommerceJsFooter%2f"></script>
    <script src="https://pioneerdj.com/Scripts/uCommerce/uCommerce.ServiceStack.js?bundleVirtualPath=%7e%2fBundles%2fEcommerceJsFooter%2f"></script>
    <script src="https://pioneerdj.com/Scripts/uCommerce/pdj.uc.custom.js?bundleVirtualPath=%7e%2fBundles%2fEcommerceJsFooter%2f"></script>
    <script src="https://pioneerdj.com/Scripts/Custom/checkout.js?bundleVirtualPath=%7e%2fBundles%2fEcommerceJsFooter%2f"></script>
    <script src="https://pioneerdj.com/Scripts/Custom/theSticker.js?bundleVirtualPath=%7e%2fBundles%2fEcommerceJsFooter%2f"></script>

    <script src="../../scripts/main.js"></script>

    <script type="text/javascript">
        // polyfill for startsWith method
        if (!String.prototype.startsWith) {
            String.prototype.startsWith = function(searchString, position) {
                return this.substr(position || 0, searchString.length) === searchString;
            };
        }

        function getQueryStringValueByName(name, url) {
            if (!url) {
                url = window.location.href;
            }
            name = name.replace(/[\[\]]/g, "\\$&");
            var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
                results = regex.exec(url);
            if (!results) return null;
            if (!results[2]) return '';
            return decodeURIComponent(results[2].replace(/\+/g, " "));
        }
        //mark menu item as active
        jQuery(".gigyaMenu ul li a").bind('click', function() {
            jQuery(".gigyaMenu ul li a").removeClass("active");
            jQuery(this).addClass("active");
        });
        var jwtToken;

        function sendZendeskToken(data) {
            jQuery.ajax({
                type: "POST",
                url: "/ForumConnector/zenssologin.aspx",
                async: false,
                data: data.user,
                dataType: "jsonp",
                complete: function(res) {
                    jwtToken = JSON.parse(res.responseText);
                }
            });
        }

        function onLogout(response) {
            function loaded() {
                jQuery.ajax({
                    url: "/en/" + "api/Account/Logout",
                    async: false,
                    success: function(data) {
                        if (data.Success) {
                            var logoutContainer = jQuery("#LogoutContainer");
                            var loginRegister = jQuery("#LoginRegister");
                            if (logoutContainer != undefined) {
                                logoutContainer.hide();
                            }
                            if (loginRegister != undefined) {
                                loginRegister.show();
                            }
                            location.reload();
                        } else {
                            alert(data.Message); //TODO: other way to inform about the error
                        }
                    },
                    error: function() {
                        alert("Error during logout!"); //TODO: other way to inform about the error
                    }
                });
            }
            if (response.errorCode == 0) {
                var iframe = document.createElement("iframe");
                iframe.setAttribute("src", "https://forums.pioneerdj.com" + "/access/logout/");
                iframe.style.width = 0;
                iframe.style.height = 0;
                if (iframe.addEventListener) {
                    iframe.addEventListener("load", loaded, false);
                } else {
                    iframe.attachEvent("onload", loaded);
                }
                document.body.appendChild(iframe);
                setTimeout(loaded, 850); //neccessary for firefox - in case iframe throws an error, firefox won't fire onload event
            }
        }

        function onLoginSocialize(response) {
            sendZendeskToken(response);
        }

        function loginToZendesk() {
            function loaded() {
                gigya.setSSOToken({
                    redirectURL: typeof(returnTo) === 'undefined' ? window.location.href : returnTo
                });
                window.location.reload();
            }
            var iframe = document.createElement("iframe");
            iframe.setAttribute("src", "https://pioneerdj.zendesk.com" + "/access/jwt" + "?jwt=" + jwtToken.token);
            iframe.style.width = 0;
            iframe.style.height = 0;
            document.body.appendChild(iframe);
            iframe.onload = loaded;
            iframe.onerror = loaded;
        }

        function onLogin(response) {
            if (response != undefined && response.UID != undefined) {
                // 206005 - autologin finalization triggered with email verification link
                if (getQueryStringValueByName('errorCode') == '206005') {
                    gigya.accounts.getAccountInfo({
                        callback: onEmailVerified,
                        include: 'emails,data'
                    });
                }
                var queue = function() {
                    typeof jwtToken !== "undefined" ?
                        loginToZendesk() :
                        setTimeout(function() {
                            queue();
                        }, 100);
                };
                queue();
            }
        }

        function onEmailVerified(response) {
            if (response != undefined && response.errorCode == 0) {
                var verifiedEmails = response.emails.verified;
                if (verifiedEmails.length > 1) {
                    // deactivate all account emails except for the new one that just got verified
                    var previousEmails = verifiedEmails.slice(0, verifiedEmails.length - 1).join(", ");
                    var storedEmails = response.data.previousEmailAddresses;
                    if (storedEmails != undefined) {
                        storedEmails = storedEmails + ", " + previousEmails;
                    } else {
                        storedEmails = previousEmails;
                    }
                    gigya.accounts.setAccountInfo({
                        removeLoginEmails: previousEmails,
                        data: {
                            previousEmailAddresses: storedEmails
                        }
                    });
                }
            }
        }

        function onProfileUpdate(response) {
            if (response.response.errorCode === 0) {
                if (response != undefined && response.profile != undefined) {
                    if (response.profile.photoURL != undefined) {
                        jQuery(".visual-wrap .in").css("background-image", "url('" + response.profile.photoURL + "')");
                    }
                    jQuery(".item-profile a .content-wrap .name").text(response.profile.firstName);
                    jQuery(".profile-box .content-wrap").html(response.profile.firstName + '<br/>');
                }
                showMessage("Your changes have been saved.");
            }
        }

        function onPasswordChange(response) {
            if (response.response.errorCode === 0) {
                selectMenuItem();
                showMessage("Your password has been changed.");
                navigateEditMyProfile();
            }
        }

        function onProfileFieldChange(response) {
            if (response != undefined) {
                jQuery('input[name="profile.email"]').bind('change', function() {
                    showMessage("Click ‘Save changes’ to change your email address. You’ll receive an email to verify your new email address.");
                });
            }
        }

        function selectMenuItem() {
            jQuery(".errorSection").hide();
            jQuery(".gigyaMenu ul li a").removeClass("active");
            jQuery(".gigyaMenu ul li a").first().addClass("active");
        }

        function showMessage(message) {
            jQuery(".errorSection").html("").hide();
            document.getElementById("messageSection").style.display = "block";
            document.getElementById("messageSection").innerHTML = message;
            window.scrollTo(0, 0);
        }

        function showLicenses() {
            showLoadingScreen();
            redirectIfLoggedOut();
            gigya.socialize.getUserInfo({
                callback: generateUserLicences
            });
        }

        function generateUserLicences(response) {
            var gigyaPageTarget = jQuery("#gigya-page-target");
            if (response.errorCode == 0) {
                var user = response['user'];
                var uid = user['UID'];
                jQuery.get('/api/sitecore/PioneerDjAccount/GetLicences', {
                    userId: uid
                }, function(data) {
                    hideLoadingScreen();
                    if (isLicencesScreenDisplayed() === true) {
                        gigyaPageTarget.html(data);
                        var cell = jQuery(".licences-container .licence .item .key");
                        if (typeof cell !== 'undefined') {
                            cell.matchHeight();
                        }
                    }
                });
            } else {
                gigyaPageTarget.html('No licences could be found.');
            }
        }

        function isLicencesScreenDisplayed() {
            return jQuery("#license_btn").hasClass("active");
        }

        function navigateChangePassword() {
            parent.location.hash = 'password';
            gigya.accounts.showScreenSet({
                screenSet: 'pioneerdj.com-ProfileUpdate',
                containerID: 'gigya-page-target',
                startScreen: 'gigya-change-password-screen',
                lang: 'en',
                onAfterSubmit: changePasswordHandler,
                onBeforeScreenLoad: redirectIfLoggedOut,
                onError: errorEventHandler
            });
        }

        function navigateEditMyProfile() {
            parent.location.hash = 'editprofile';
            gigya.accounts.showScreenSet({
                screenSet: 'pioneerdj.com-ProfileUpdate',
                lang: 'en',
                containerID: 'gigya-page-target',
                onError: errorEventHandler,
                onAfterSubmit: updateProfileHandler,
                onBeforeScreenLoad: redirectIfLoggedOut,
                onAfterScreenLoad: changeProfileFieldHandler
            });
        }

        function redirectIfLoggedOut() {
            gigya.accounts.getAccountInfo({
                callback: function(response) {
                    if (response.errorCode != 0) {
                        window.location.href = '/';
                    }
                }
            });
        }

        function createOneNewsletterOption(response) {
            if (response != undefined) {
                var pdjCheckbox = jQuery("[name='data.PDJ_newsletter'][data-screenset-roles='instance']");
                var kuvoCheckbox = jQuery("[name='data.KUVO_newsletter'][data-screenset-roles='instance']");
                var mainCheckbox = '<div class="gigya-composite-control gigya-composite-control-checkbox"' +
                    ' style="display: block; margin-top:15px;"><input id="maincheckbox" type="checkbox">' +
                    '<label class="gigya-label" for="maincheckbox"><span class="gigya-label-text gigya-checkbox-text">' +
                    "Please keep me informed about Pioneer DJ products, services, features, including newsletters, promotions, events, tips and surveys." +
                    '</span></label></div>';
                kuvoCheckbox.parent().after(mainCheckbox);
                jQuery("#registerContainer").on('change', '#maincheckbox', function() {
                    pdjCheckbox.prop("checked", this.checked);
                    kuvoCheckbox.prop("checked", this.checked);
                });
                pdjCheckbox.parent().hide();
                kuvoCheckbox.parent().hide();
            }
        }
        // My Products functions
        function handleMyProductsError(data) {
            if (typeof data.responseJSON != 'undefined') {
                errorEventHandler({
                    errorMessage: data.responseJSON.error,
                    response: {
                        info: {
                            screen: "gigya-my-products-screen"
                        }
                    }
                });
            } else {
                errorEventHandler({
                    errorMessage: getErrorMessage(data),
                    response: {
                        info: {
                            screen: "gigya-my-products-screen"
                        }
                    }
                });
            }
        }

        function getErrorMessage(data) {
            if (data.status == 401 || data.status == 403) {
                return "Unauthorized user";
            }
            return "Unexpected error occurred";
        }

        function getAuthHeaders(response) {
            var authHeaders = {
                "PDJ-UID": response.user.UID,
                "PDJ-Timestamp": response.user.signatureTimestamp,
                "PDJ-UIDSignature": response.user.UIDSignature
            }
            return authHeaders;
        }

        function navigateMyProducts(msg) {
            showLoadingScreen();
            redirectIfLoggedOut();
            gigya.socialize.getUserInfo({
                callback: getMyProducts,
                context: msg
            });
        }

        function isMyProductsScreenDisplayed() {
            return jQuery("#my-products-tab").hasClass("active");
        }

        function getMyProducts(response) {
            var gigyaPageTarget = jQuery("#gigya-page-target");
            if (response.errorCode == 0) {
                jQuery.ajax({
                    type: 'GET',
                    url: '/api/sitecore/ProductRegistration/Get',
                    headers: getAuthHeaders(response),
                    cache: false,
                    success: function(data) {
                        if (isMyProductsScreenDisplayed() === true) {
                            gigyaPageTarget.html(data);
                            jQuery('a.btn-link[href="#"]').each(function(i, o) {
                                jQuery(o).addClass('hidden');
                            });
                            initCompleter();
                        }
                        if (response.context) {
                            var msg = response.context;
                            jQuery('#validation-success')
                                .removeClass('hidden');
                            jQuery('#validation-success')
                                .html(msg);
                        }
                        window.scrollTo(0, 0);
                        var $purchaseDateInput = jQuery("#input-purchase-date");
                        $purchaseDateInput.attr('readonly', 'readonly');
                        $purchaseDateInput.datepicker({
                            changeMonth: true,
                            changeYear: true,
                            constrainInput: true,
                            dateFormat: "dd/mm/yy",
                            maxDate: "31/07/2020"
                        });
                    },
                    error: function(data) {
                        errorEventHandler({
                            errorMessage: data.responseJSON.error
                        });
                    },
                    complete: function() {
                        hideLoadingScreen();
                    }
                });
            }
        }

        function showLoadingScreen() {
            jQuery("#gigya-page-target").children().hide();
            jQuery("#loading-message").show();
        }

        function hideLoadingScreen() {
            jQuery("#gigya-page-target").children().show();
            jQuery("#loading-message").hide();
        }
    </script>
    <script>
        for (var index = 0; index < window.__functionsToExecute.length; ++index) {
            window.__functionsToExecute[index]();
        }
        window.__functionsToExecute = [];
    </script>
</body>

</html>
{{render '@head-2020' }}

<div style="position: relative; background-color: var(--color--neutrals-8); color: var(--color--neutrals-0); min-height: 100vh;">

  {{{ yield }}}

</div>

{{render '@foot-2020' }}
/* No context defined. */

No notes defined.