").append(i.parseHTML(n)).find(u):n)}).complete(r&&function(n,t){f.each(r,o||[n.responseText,t,n])}),this},i.expr.filters.animated=function(n){return i.grep(i.timers,function(t){return n===t.elem}).length},tr=n.document.documentElement,i.offset={setOffset:function(n,t,r){var e,o,s,h,u,c,v,l=i.css(n,"position"),a=i(n),f={};"static"===l&&(n.style.position="relative");u=a.offset();s=i.css(n,"top");c=i.css(n,"left");v=("absolute"===l||"fixed"===l)&&i.inArray("auto",[s,c])>-1;v?(e=a.position(),h=e.top,o=e.left):(h=parseFloat(s)||0,o=parseFloat(c)||0);i.isFunction(t)&&(t=t.call(n,r,u));null!=t.top&&(f.top=t.top-u.top+h);null!=t.left&&(f.left=t.left-u.left+o);"using"in t?t.using.call(n,f):a.css(f)}},i.fn.extend({offset:function(n){if(arguments.length)return void 0===n?this:this.each(function(t){i.offset.setOffset(this,n,t)});var t,f,u={top:0,left:0},r=this[0],e=r&&r.ownerDocument;if(e)return t=e.documentElement,i.contains(t,r)?(typeof r.getBoundingClientRect!==o&&(u=r.getBoundingClientRect()),f=wf(e),{top:u.top+(f.pageYOffset||t.scrollTop)-(t.clientTop||0),left:u.left+(f.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):u},position:function(){if(this[0]){var n,r,t={top:0,left:0},u=this[0];return"fixed"===i.css(u,"position")?r=u.getBoundingClientRect():(n=this.offsetParent(),r=this.offset(),i.nodeName(n[0],"html")||(t=n.offset()),t.top+=i.css(n[0],"borderTopWidth",!0),t.left+=i.css(n[0],"borderLeftWidth",!0)),{top:r.top-t.top-i.css(u,"marginTop",!0),left:r.left-t.left-i.css(u,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var n=this.offsetParent||tr;n&&!i.nodeName(n,"html")&&"static"===i.css(n,"position");)n=n.offsetParent;return n||tr})}}),i.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(n,t){var r=/Y/.test(t);i.fn[n]=function(u){return b(this,function(n,u,f){var e=wf(n);return void 0===f?e?t in e?e[t]:e.document.documentElement[u]:n[u]:void(e?e.scrollTo(r?i(e).scrollLeft():f,r?f:i(e).scrollTop()):n[u]=f)},n,u,arguments.length,null)}}),i.each(["top","left"],function(n,t){i.cssHooks[t]=au(r.pixelPosition,function(n,r){if(r)return(r=d(n,t),pt.test(r)?i(n).position()[t]+"px":r)})}),i.each({Height:"height",Width:"width"},function(n,t){i.each({padding:"inner"+n,content:t,"":"outer"+n},function(r,u){i.fn[u]=function(u,f){var e=arguments.length&&(r||"boolean"!=typeof u),o=r||(u===!0||f===!0?"margin":"border");return b(this,function(t,r,u){var f;return i.isWindow(t)?t.document.documentElement["client"+n]:9===t.nodeType?(f=t.documentElement,Math.max(t.body["scroll"+n],f["scroll"+n],t.body["offset"+n],f["offset"+n],f["client"+n])):void 0===u?i.css(t,r,o):i.style(t,r,u,o)},t,e?u:void 0,e,null)}})}),i.fn.size=function(){return this.length},i.fn.andSelf=i.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return i}),bf=n.jQuery,kf=n.$,i.noConflict=function(t){return n.$===i&&(n.$=kf),t&&n.jQuery===i&&(n.jQuery=bf),i},typeof t===o&&(n.jQuery=n.$=i),i})
var clickEventType;
var emailValid = true ? '
' : '',
pref = 'ru' === 'ua' ? '+38' : '+7';
var qSettings = {
room: JSON.parse('{"discount":"59063d7c6f592c4d110d1674","style":"darkStyle","orderListYa":"subscribeag","orderListGa":"brongag","orderSingleYa":"brongag","orderSingleGa":"brongag","orderAllYa":"subscribeag","orderAllGa":"brongag","id":"59209639f781ea6b7b3ddecd","createdAt":1495307833066,"updatedAt":1741764623593,"title":"КРД.Агенты 008","description":"Детский квест Агенты 008 - шпионское расследование и спасение заложника. Злоумышленники захватили секретную лабораторию, связали научного сотрудника и заминировали все здание... Юным шпионам предстоит пробраться в лабораторию, спасти профессора и обезвредить бомбу! ","type":"Квесты в реальности","minTime":90,"img":"https://questadmin.s3.amazonaws.com/img/poster/d53885ee-44dc-4d7f-8ca1-676cefcd65cd.jpg","city":"Краснодар","isActive":true,"playersMin":2,"playersMax":8,"playersMaxi":12,"maxDays":60,"position":0,"isDiscount":false,"isAgregator":false,"rooms":["5906451c6f592c4d110d16b4","5c7e5693fec2133d935ad06f","5f59e321af54757bb101eda3"],"options":[{"title":"Воздушные шары от 10 шт. ","margin":"2000"},{"title":"Воздушные шары от 20 шт. ","margin":"4000","comment":null},{"title":"Комната именинника","margin":"3000"},{"title":"Фотограф 1 час в зал или квест","margin":"5000","comment":null}],"actors":true,"isIncrease":true,"increase":1500,"isNewMarker":false,"increaseType":"руб","maxAge":6,"telephone":"8 (928) 884-29-80","level":"Легкий","time":80,"isDelete":false,"isHiden":false,"profile":"5903336f6bdf593b3a7798aa","adress":{"id":"591f21f164e2d0bf6b59a16f","createdAt":1495212529833,"updatedAt":1522925503285,"city":"Краснодар","street":"ул Кубанская Набережная, 64","house":"64","isDelete":false,"comment":"вход с ул. Мира","profile":"5903336f6bdf593b3a7798aa"}}'),
host: 'https://api.questadmin.ru',
style: '#hider{opacity:0.7;background:rgb(255, 255, 255)}#gamers{color:#fff!important}.rel input{color:rgb(0, 0, 0)!important}.moreButton,#send{border-radius:5px!important;background:rgb(231, 64, 17)!important;color:rgb(0, 0, 0)!important;border:1px solid!important;border-color:rgba(255, 255, 255, 0)!important}#send.novalid{opacity:.2}#send{border:2px solid!important;border-color:rgba(255, 255, 255, 0)!important}.qaInfo span,.qaInfo input{border-radius:5px!important;border:1px solid!important;border-color:rgba(255, 255, 255, 0)!important}#qaScheduler{color:rgb(0, 0, 0)!important;}#qaFinal{background:rgb(255, 255, 255)!important;color:rgb(0, 0, 0)!important;}.moreButton{border-radius:5px!important;background:rgb(231, 64, 17)!important;color:rgb(0, 0, 0)!important;border:1px solid rgba(255, 255, 255, 0)!important}.shTime,.round_input input,.moreButton:hover,.round_input textarea{border-radius:5px!important}.shRow{text-align:center!important}.shDate{background:rgba(255, 255, 255, 0)!important;color:rgb(0, 0, 0)!important}.shDate.qad0,.shDate.qad6{color:rgb(255, 0, 0)!important}.shTime:hover,#gamersLeft:hover,#gamersRight:hover{background:rgb(255, 131, 96)!important;border-color:rgb(255, 131, 96)!important}.shSlots{text-align:center!important}.shTime,#gamersLeft,#gamersRight{background:rgb(231, 64, 17)!important;color:rgb(255, 255, 255)!important;border:1px solid!important;border-color:rgba(255, 255, 255, 0)!important}.shPrice{color:rgb(0, 0, 0)!important}.shTime.false{color:rgb(115, 115, 115)!important;background:rgb(177, 177, 177)!important;border-color:rgba(0, 0, 0, 0)!important}',
html : '
×
',
img: 'https://questadmin.s3.amazonaws.com/img/poster/d53885ee-44dc-4d7f-8ca1-676cefcd65cd.jpg',
adr: 'Краснодар, ул Кубанская Набережная, 64, 64',
telephone: '8 (928) 884-29-80',
title: 'КРД.Агенты 008',
currency: 'руб',
currentIntervals: 0,
profile: '5903336f6bdf593b3a7798aa',
keys: '19407',
price: 0,
yaCounter: '45263859',
description: '',
discount: {}, //скидка по акциям
certificate: {}, //скидка по промокодам
optionsList: {},
margin: 0,
sortIntervals: function(data) {
return data.sort(function(a, b) {
if (a.time > b.time) return 1;
if (a.time < b.time) return -1;
return 0;
});
},
isValidate: false,
validate: function(el) {
if (el) {
var text = el.value;
var funcName = el.getAttribute('id');
if (el.nextSibling) el.nextSibling.className = qSettings[funcName](text, el) + ' valid';
}
if (document.getElementById('documents').checked && document.getElementsByClassName('valid false').length == 0 && document.getElementsByClassName('valid none').length == 0) {
qSettings.isValidate = true;
document.getElementById('send').className = '';
document.getElementById('send').innerHTML = 'Записаться';
} else {
qSettings.isValidate = false;
document.getElementById('send').className = 'novalid';
document.getElementById('send').innerHTML = 'Укажите имя, телефон и почту';
}
},
validateclientName: function(text) {
return text ? true : false;
},
validateclientTelephone: function(text, el) {
var numbers = '' + text.replace(/[^0-9]/gim, '');
return numbers.length > 5 ? true : false;
},
emailQA: function(text) {
var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
return pattern.test(text);
},
showForm: function() {
document.getElementById('qaFinal').className = document.getElementById('qaScheduler').className;
},
closeForm: function() {
document.getElementById('qaFinal').className = document.getElementById('qaScheduler').className + ' none';
},
setTimeInterval: function(slot) {
qSettings.slot = slot;
qSettings.date = slot.getAttribute('data-date');
qSettings.interval = qSettings.intervals[slot.getAttribute('data-int')];
document.getElementById('setHumanDate').innerHTML = slot.getAttribute('data-day');
document.getElementById('setTime').innerHTML = slot.getAttribute('data-time');
document.getElementById('setQuestroomqaTitle').innerHTML = qSettings.title;
document.getElementById('setPrice').innerHTML = qSettings.price = slot.getAttribute('data-price');
qSettings.certificate = {};
qSettings.discount = {};
qSettings.margin = 0;
qSettings.players = document.getElementById('gamers').value = qSettings.room.playersMax;
qSettings.setPlayers();
qSettings.showForm();
$('#qaSertificates > div').addClass('none');
$($(this).attr('data-id') + ', #qaSetDiscount button').removeClass('none');
$('#qaResponse').html('');
var list = '';
for (var i = qSettings.room.options.length - 1; i >= 0; i--) {
list += '
' + qSettings.room.options[i].title + ' +' + qSettings.room.options[i].margin + qSettings.currency + ''
}
if (list) {
$('.qaoptionsBlock').removeClass('none');
$('#optionsList').html(list);
}
if (qSettings.room.discount) {
$('.qaHasDiscount').removeClass('none');
$('#qaDiscountTitle').html(qSettings.room.discount.title);
$('#qaDiscountText').html(qSettings.room.discount.description);
$('#qaDiscountPrice').html(qSettings.room.discount.discount + qSettings.room.discount.type);
} else {
$('#qaNotDiscount').removeClass('none');
}
qSettings.getFinalPrice();
},
getFinalPrice: function() {
var players = +qSettings.players || 0,
spPr = qSettings.interval.spPriceArr ? qSettings.interval.spPriceArr[players] : false,
defaultSum = +spPr || +qSettings.price,
discount = qSettings.discount,
certificate = qSettings.certificate,
max = +qSettings.room.playersMax,
increase = +qSettings.room.increase,
increaseType = qSettings.room.increaseType;
//вычисляем наценку за опции
var visitIncrease = +qSettings.margin;
//вычисляем наценку за игроков
if (players && increase && max && !spPr) {
if (players > max) {
visitIncrease += (increaseType && increaseType == '%') ? (players - max) * (defaultSum / 100 * increase) : (players - max) * increase;
}
}
var final = defaultSum + visitIncrease;
qSettings.finalPrice = final > 0 ? final : 0
if (!qSettings.players) {
document.getElementById('setText').innerHTML = '';
document.getElementById('setPrice').innerHTML = 'Заполните кол-во игроков';
$('#hider').removeClass('none')
}
if (qSettings.players) {
document.getElementById('setText').innerHTML = ' с команды';
document.getElementById('setPrice').innerHTML = qSettings.finalPrice;
$('#hider').addClass('none')
}
if ((certificate && +certificate.discount) || (discount && +discount.discount)) {
var applyDiscount = function(val, type, count) {
if (type === 1 || type !== '%') return val - count;
return val - val / 100 * count;
}
if ((certificate && +certificate.discount)) {
defaultSum = applyDiscount(defaultSum, certificate.type, +certificate.discount);
if (certificate.isIncrease && (certificate.type === 0 || certificate.type === '%')) visitIncrease = applyDiscount(visitIncrease, certificate.type, certificate.discount);
}
if ((discount && +discount.discount)) {
defaultSum = applyDiscount(defaultSum, discount.type, discount.discount);
if (discount.isIncrease && discount.type === '%') visitIncrease = applyDiscount(visitIncrease, discount.type, discount.discount);
}
$('#qaResponse').html('Цена с учетом предоставленной скидки составит ' + (defaultSum + visitIncrease) + qSettings.currency)
}
},
minPlayers: function() {
var that = document.getElementById('gamers');
if (qSettings.players < qSettings.room.playersMin) {
document.getElementById('setMax').innerHTML = 'Минимум ' + qSettings.room.playersMin + ' чел';
qSettings.players = that.value = qSettings.room.playersMin;
}
qSettings.getFinalPrice();
},
setPlayers: function(t) {
var that = document.getElementById('gamers');
that.value = qSettings.players = that.value ? +that.value.replace(/[^0-9]/gim, '') : '';
if (t === 1 || t === -1) that.value = qSettings.players = qSettings.players + t;
var max = qSettings.room.playersMaxi ? +qSettings.room.playersMaxi : +qSettings.room.playersMax;
if (max && qSettings.players > max) {
qSettings.players = that.value = max;
document.getElementById('setMax').innerHTML = 'Максимум ' + max + ' чел';
}
if (t === 1 || t === -1) qSettings.minPlayers();
qSettings.getFinalPrice();
},
renderIntervals: function(start, end, dates) {
qSettings.intervals = [];
var kk = -1;
for (var i = start; i < end; i++) {
var row = document.createElement('div');
row.className = 'shRow';
var date = document.createElement('div');
date.className = 'shDate ' + dates[i].day;
date.innerHTML = dates[i].date + ' ' + dates[i].dayOfWeek;
var times = document.createElement('div');
times.className = 'shSlots';
row.appendChild(date);
var ints = qSettings.sortIntervals(dates[i].intervals);
for (var b = 0; b < ints.length; b++) {
qSettings.intervals.push(ints[b]);
kk++;
var slotWrap = document.createElement('div');
slotWrap.className = 'shSlot';
var slot = document.createElement('div');
slot.className = 'shTime ' + ints[b].status;
slot.innerHTML = ints[b].time;
slot.setAttribute("data-int", kk);
slot.setAttribute("data-time", ints[b].time);
slot.setAttribute("data-day", dates[i].date);
slot.setAttribute("data-date", ints[b].dateUTC);
slot.setAttribute("data-price", ints[b].price);
slot.addEventListener('click', function(e) {
if (!this.classList.contains('false')) qSettings.setTimeInterval(this);
}, false);
slotWrap.appendChild(slot);
var priceWrap = document.createElement('div');
priceWrap.className = 'shPrice';
priceWrap.innerHTML = ints[b].price + qSettings.currency;
slotWrap.appendChild(priceWrap);
times.appendChild(slotWrap);
}
row.appendChild(times);
document.getElementById('qaScheduler').appendChild(row);
}
//$('#qaScheduler .loader').remove();
},
addIntervals: function() {
var xhr = new XMLHttpRequest();
xhr.open('GET', qSettings.host + "/integrations/getSchedule?id=" + qSettings.room.id + '&tz=' + qSettings.tz, false);
xhr.send();
if (xhr.status != 200) {
alert(xhr.status + ': ' + xhr.statusText); // пример вывода: 404: Not Found
} else {
var data = JSON.parse(xhr.responseText);
qSettings.dates = data.intervals;
qSettings.maxIntervals = qSettings.dates && qSettings.dates.length ? qSettings.dates.length : 0;
qSettings.currentIntervals = qSettings.dates && qSettings.dates.length > 6 ? 6 : qSettings.dates.length;
qSettings.renderIntervals(0, qSettings.currentIntervals, qSettings.dates);
}
},
addStyle: function() {
var style = document.createElement('link');
style.type = "text/css";
style.rel = "stylesheet";
style.href = "https://api.questadmin.ru/styles/main.css";
document.getElementsByTagName('head')[0].appendChild(style);
/* var my_awesome_script = document.createElement('script');
my_awesome_script.setAttribute('src','https://api.questadmin.ru/js/qaWidgets.js');
document.head.appendChild(my_awesome_script);*/
if (true) {
var sheet = document.createElement('style');
sheet.innerHTML = qSettings.style;
document.body.appendChild(sheet);
}
},
createLoader: function() {
var el = document.createElement('div');
el.className = 'qaLoading';
document.getElementById('qaScheduler').appendChild(el);
},
createMoteButton: function() {
var button = document.createElement('button');
button.className = 'moreButton';
button.innerHTML = 'Показать еще';
button.addEventListener('click', function(e) {
qSettings.renderIntervals(qSettings.currentIntervals, qSettings.maxIntervals, qSettings.dates);
document.getElementById('qaScheduler').removeChild(button);
}, false);
document.getElementById('qaScheduler').appendChild(button);
},
sendForm: function() {
if (qSettings.room.id && qSettings.date && qSettings.isValidate) {
var data = {
id: qSettings.room.id,
profile: qSettings.profile,
clientName: document.getElementById('validateclientName').value,
comment: document.getElementById('clientComment').value,
email: document.getElementById('emailQA').value,
clientTelephone: document.getElementById('validateclientTelephone').value,
boockingDate: qSettings.date,
price: qSettings.finalPrice,
user: qSettings.user || '',
optionsList: qSettings.optionsList,
discount: qSettings.discount,
certificate: qSettings.certificate,
players: qSettings.players,
other: qSettings.interval
};
if (window['yaCounter' + qSettings.yaCounter] && qSettings.room.orderSingleYa && qSettings.yaCounter) {
console.log('Ya orderSingleYa');
window['yaCounter' + qSettings.yaCounter].reachGoal(qSettings.room.orderSingleYa);
}
if (window['ga'] && qSettings.room.orderSingleGa) {
console.log('Ga orderSingleGa');
ga('send', 'event', qSettings.room.orderSingleGa);
}
var xhr = new XMLHttpRequest();
xhr.open('POST', qSettings.host + "/integrations/createVisit", false);
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
xhr.send(JSON.stringify(data));
var r = JSON.parse(xhr.response);
if (!r.success) {
alert(r.message); // пример вывода: 404: Not Found
} else {
document.getElementById('before').className = 'none';
document.getElementById('after').className = '';
qSettings.slot.className = 'shTime bussy';
}
}
},
init: function() {
qSettings.addStyle();
if (19407 < 1) return qSettings.renderBalance();
qSettings.createLoader();
qSettings.addIntervals();
var form = document.createElement('div');
form.className = document.getElementById('qaScheduler').className + ' none';
form.innerHTML = qSettings.html;
form.setAttribute('id', 'qaFinal');
document.getElementsByTagName('body')[0].appendChild(form);
document.getElementById('adr').innerHTML = qSettings.adr;
document.getElementById('tel').innerHTML = qSettings.telephone;
document.getElementById('qaPhoto').style.backgroundImage = 'url(' + qSettings.img + ')';
qSettings.createMoteButton();
document.getElementById('send').addEventListener('click', qSettings.sendForm, false);
document.getElementById('closeList').addEventListener('click', qSettings.closeForm, false);
document.getElementById('gamers').addEventListener('keyup', qSettings.setPlayers, false);
document.getElementById('gamers').addEventListener('focusout', qSettings.minPlayers, false);
document.getElementById('gamersLeft').addEventListener('click', function() { qSettings.setPlayers(-1)} , false);
document.getElementById('gamersRight').addEventListener('click', function() { qSettings.setPlayers(1)} , false);
var validations = document.getElementsByClassName('validation');
for (var i = 0; i < validations.length; i++) {
validations[i].addEventListener('keyup', function(e) {
qSettings.validate(this);
}, false);
}
if (true) {
document.getElementById('qaScheduler').className = 'customStyle';
}
},
renderBalance: function () {
document.getElementById('qaScheduler').innerHTML = 'В системе КвестАдмин закончилась подписка';
},
}
var addClassToList = function(selector, classNames) {
var s = document.getElementsByClassName(selector);
for (var i = 0; i < s.length; i++) {
s[i].className = classNames;
}
};
document.addEventListener('DOMContentLoaded', function() {
clickEventType = ((document.ontouchstart !== null) ? 'click' : 'touchend');
qSettings.init();
//клик применить акцию
$(document).on('click', '#qaDiscountApply', function() {
qSettings.discount = qSettings.room.discount || 0;
$('#qaSetDiscount button').addClass('none');
qSettings.getFinalPrice();
});
$(document).on('click', '.qaDocuments', function() {
qSettings.validate();
});
//клик по квесту
$(document).on('click', '#optionsList li', function() {
qSettings.optionsList.ids = [];
qSettings.optionsList.objects = [];
$(this).toggleClass('active');
qSettings.margin = 0;
$('#optionsList li.active').toArray().forEach(function(obj) {
var id = obj.getAttribute('data-id');
qSettings.margin += +obj.getAttribute('data-price');
qSettings.optionsList.ids.push(qSettings.room.options[id].id);
qSettings.optionsList.objects.push(qSettings.room.options[id]);
});
qSettings.getFinalPrice();
});
$(document).on('click', '.qaLightspan', function() {
$('#qaSertificates > div').addClass('none');
$($(this).attr('data-id') + ', #qaSetDiscount button').removeClass('none');
$('#qaResponse').html('');
qSettings.certificate = {};
qSettings.discount = {};
});
//поиск сертификата
$(document).on("click", '#qaFindCertificate', function() {
$.get(qSettings.host + "/questrooms/checkCertificate?code=" + $('#qaSertificateNimber').val() + '&room=' + qSettings.room.id + '&profile=' + qSettings.room.profile, function(data) {
if (!data.c && !data.p) alert(data.response);
qSettings.certificate = data.c || data.p || 0;
$('.qaHasDiscount').addClass('none');
qSettings.getFinalPrice();
});
});
//document.addEventListener('DOMContentLoaded', , false);
})