</div>
</div>
<div style="display: none;">
<div id="zoom-tool-01" class="zoomtool">
<div class="zoomtool__topbar">
<div class="outer">
<div class="container">
<div class="zoomtool__scale clearfix">
<a href="#" class="scale-trigger zoom-out"><i class="ico icon-min"></i></a>
<div class="slider-wrap">
<div class="slider"></div>
</div>
<a href="#" class="scale-trigger zoom-in"><i class="ico icon-plus"></i></a>
</div>
<div class="zoomtool__actions">
<a href="#" class="btn__action download-image"><i class="ico icon-download"></i></a>
</div>
<a href="#" class="btn__action close trigger__close-overlayer"><i class="ico icon-cross"></i></a>
</div>
</div>
</div>
<div class="zoomtool__canvas">
<div class="zoomtool__holder">
<div class="zoomtool__element">
<img src="" />
</div>
</div>
</div>
<div class="zoomtool_more-images">
<div class="in clearfix">
<div class="image-gallery-thumbs folder__container zoomtool">
<span class="folder__trigger"></span>
<div class="wrap">
<div class="folder__content">
<div class="list">
<div class="items target">
</div>
</div>
</div>
</div>
</div>
</div>
</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/Bundles/JsFooter/?v=3OMY7t0qGsE6COxYS5oyg338jgLOwyjR8LAmsGHWjAU1"></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>
</div>
</div>
{{render '@zoom-tool' }}
{{render '@search-overlay' }}
<script src="https://pioneerdj.com/Bundles/JsFooter/?v=3OMY7t0qGsE6COxYS5oyg338jgLOwyjR8LAmsGHWjAU1"></script>
<script src="{{path '/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>
/* No context defined. */
No notes defined.