var HTTP = (function(){ var contentTypes = { URLEncoded: 'application/x-www-form-urlencoded', FormData: 'multipart/form-data', PlainText: 'text/plain', JSON: 'application/json', HTML: 'text/html', XML: 'text/xml' }; var getHeaders = function(xmlhttp) { var headers = {}; var headersArray = xmlhttp.getAllResponseHeaders().split('\n'); for (var i = 0; i !== headersArray.length; i++) { var match = headersArray[i].match(/^([^\:]+)\:([\s\S]+)$/); if (match) { headers[match[1].trim()] = match[2].trim(); } } return headers; }; var CMSHeaders = { Status: 'cms-status', SuccessCode: 'cms-success-code', SuccessMessage: 'cms-success-message', ErrorCode: 'cms-error-code', ErrorMessage: 'cms-error-message' }; var createEvent = function(xmlhttp) { var e = { ResponseText: xmlhttp.responseText, ResponseURL: xmlhttp.responseURL, ResponseStatus: xmlhttp.status, ResponseStatusText: xmlhttp.statusText, Headers: getHeaders(xmlhttp) }; if ('content-type' in e.Headers) { var match = e.Headers['content-type'].match(/^([^\;]+)/); if (match) { e.ContentType = match[1]; } else { e.ContentType = e.Headers['content-type']; } } else { e.ContentType = contentTypes.PlainText; } if (e.ContentType === contentTypes.JSON) { try { e.ResponseJSON = JSON.parse(xmlhttp.responseText); } catch(e) { console.error('[HTTP] Response JSON is not valid'); e.ResponseJSON = null; } } else { e.ResponseJSON = null; } for (var name in CMSHeaders) { if (CMSHeaders[name] in e.Headers) { e[name] = e.Headers[CMSHeaders[name]]; } else { e[name] = null; } } return e; }; var createCallbackFunctions = function() { var successCallback = undefined; var errorCallback = undefined; var finishCallback = undefined; var functions = { Success: function(fun){ successCallback = fun; return functions; }, Error: function(fun){ errorCallback = fun; return functions; }, Finish: function(fun){ finishCallback = fun; return functions; } }; return { Functions: functions, CallSuccess: function(e) { if (typeof successCallback === 'function') { successCallback(e); } }, CallError: function(e) { if (typeof errorCallback === 'function') { errorCallback(e); } }, CallFinish: function(e) { if (typeof finishCallback === 'function') { finishCallback(e); } } }; }; var send = function(method, url, data, config) { if (typeof config !== 'object') { config = {}; } var callbackFunctions = createCallbackFunctions(); var xmlhttp = new XMLHttpRequest(); xmlhttp.open(method, url, true); xmlhttp.withCredentials = true;  if ('Headers' in config) { for (var name in config.Headers) { if (name === 'Content-Type') { config.ContentType = config.Headers[name]; } else { xmlhttp.setRequestHeader(name, config.Headers[name]); } } }  if (!('ContentType' in config)) { if (data instanceof FormData) { config.ContentType = null; } else if (typeof data === 'object' && data !== null) { config.ContentType = contentTypes.JSON; data = JSON.stringify(data); } else { config.ContentType = contentTypes.URLEncoded; if (typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean') { data = data.toString(); } else { data = null; } } } if (config.ContentType) { xmlhttp.setRequestHeader('Content-Type', config.ContentType); }  if (data === null) { xmlhttp.send(); } else { xmlhttp.send(data); } xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState === 4) { var e = createEvent(xmlhttp); if (xmlhttp.status >= 200 && xmlhttp.status < 300) { callbackFunctions.CallSuccess(e); } else { callbackFunctions.CallError(e); } callbackFunctions.CallFinish(e); } }; return callbackFunctions.Functions; }; var joinAJAXData = function(controller, action, data) { if (typeof data !== 'object') { data = {}; } if (data instanceof FormData) { data.append('controller', controller); data.append('action', action); } else { data.controller = controller; data.action = action; } return data; }; var defaultErrorFunction = function(e) { if ('Core' in window && 'Notification' in Core) { Core.Notification.Create({ Title: 'Error', Info: e.ErrorMessage, Type: Core.Notification.Types.Error }); } else { console.error(e.ErrorMessage); } }; return {  ContentTypes: contentTypes, Get: function(url, config){ return send('get', url, undefined, config); }, Post: function(url, data, config){ return send('post', url, data, config); }, AJAX: function(controller, action, data, config) { var callbackFunctions = createCallbackFunctions(); send('post', location.href, joinAJAXData(controller, action, data), config) .Success(function(e){ if (!e.Status) { return console.error('[AJAX] Not found \'cms-status\''); } if (e.Status === 'Success') { callbackFunctions.CallSuccess(e); } else { callbackFunctions.CallError(e); } callbackFunctions.CallFinish(e); }) .Error(function(e){ console.error('[AJAX] Error', e); }); callbackFunctions.Functions.Error(defaultErrorFunction); return callbackFunctions.Functions; } }; })();var CubicBezier = (function(){  var NEWTON_ITERATIONS = 4; var NEWTON_MIN_SLOPE = 0.001; var SUBDIVISION_PRECISION = 0.0000001; var SUBDIVISION_MAX_ITERATIONS = 10; var kSplineTableSize = 11; var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0); var float32ArraySupported = typeof Float32Array === 'function';  var A = function(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }; var B = function(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }; var C = function(aA1) { return 3.0 * aA1; }; var calcBezier = function(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }; var getSlope = function(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }; var binarySubdivide = function(aX, aA, aB, mX1, mX2) { var currentX, currentT, i = 0; do { currentT = aA + (aB - aA) / 2.0; currentX = calcBezier(currentT, mX1, mX2) - aX; if (currentX > 0.0) { aB = currentT; } else { aA = currentT; } } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); return currentT; }; var newtonRaphsonIterate = function(aX, aGuessT, mX1, mX2) { for (var i = 0; i < NEWTON_ITERATIONS; ++i) { var currentSlope = getSlope(aGuessT, mX1, mX2); if (currentSlope === 0.0) { return aGuessT; } var currentX = calcBezier(aGuessT, mX1, mX2) - aX; aGuessT -= currentX / currentSlope; } return aGuessT; }; var getTForX = function(aX, x1, x2, sampleValues) { var intervalStart = 0.0; var currentSample = 1; var lastSample = kSplineTableSize - 1; for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) { intervalStart += kSampleStepSize; } currentSample--; var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]); var guessForT = intervalStart + dist * kSampleStepSize; var initialSlope = getSlope(guessForT, x1, x2); if (initialSlope >= NEWTON_MIN_SLOPE) { return newtonRaphsonIterate(aX, guessForT, x1, x2); } else if (initialSlope === 0.0) { return guessForT; } else { return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, x1, x2); } };  var CubicBezierObject = function(x1, y1, x2, y2) { if (!(0 <= x1 && x1 <= 1 && 0 <= x2 && x2 <= 1)) { throw new Error('bezier x values must be in [0, 1] range'); } this.sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); for (var i = 0; i < kSplineTableSize; ++i) { this.sampleValues[i] = calcBezier(i * kSampleStepSize, x1, x2); } this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; }; CubicBezierObject.prototype.x1; CubicBezierObject.prototype.y1; CubicBezierObject.prototype.x2; CubicBezierObject.prototype.y2; CubicBezierObject.prototype.sampleValues; CubicBezierObject.prototype.GetProgression = function(time) { if (this.x1 == this.y1 && this.x2 == this.y2) { return time; } if (time === 0 || time === 1) { return time; } return calcBezier(getTForX(time, this.x1, this.x2, this.sampleValues), this.y1, this.y2); }; return { Ease: new CubicBezierObject(.25, .1, .25, 1), EaseIn: new CubicBezierObject(.42, 0, 1, 1), EaseOut: new CubicBezierObject(0, 0, .58, 1), EaseInOut: new CubicBezierObject(.42, 0, .58, 1), Linear: new CubicBezierObject(.5, .5, .5, .5), Create: function(x1, y1, x2, y2){ return new CubicBezierObject(x1, y1, x2, y2); } }; })();var BuildHTML = function(content, parent) { if (!Array.isArray(content)) { content = [ content ]; } var el = undefined; var elements = []; var variables = {}; for (var i = 0; i !== content.length; i++) { if (!('tag' in content[i])) { content[i].tag = 'div'; } if (content[i].tag == 'text') { el = document.createTextNode(content[i].text); } else { el = document.createElement(content[i].tag); if ('classes' in content[i]) { if (Array.isArray(content[i].classes)) { el.className = content[i].classes.join(' '); } else { el.className = content[i].classes; } } if ('styles' in content[i]) { for (var st in content[i].styles) { el.style[st] = content[i].styles[st]; } } if ('attributes' in content[i]) { for (var a in content[i].attributes) { el.setAttribute(a, content[i].attributes[a]); } } if ('text' in content[i]) { el.innerText = content[i].text; } if ('html' in content[i]) { el.innerHTML = content[i].html; } if ('value' in content[i]) { el.value = content[i].value; } if ('another' in content[i]) { for (var v in content[i].another) { el[v] = content[i].another[v]; } } if ('data' in content[i]) { for (var v in content[i].data) { el.dataset[v] = content[i].data[v]; } } if ('content' in content[i]) { if (content[i].content instanceof HTMLElement) { el.appendChild(content[i].content); } else { var childs = BuildHTML(content[i].content, el); for (var v in childs.Variables) { variables[v] = childs.Variables[v]; } } } if ('event' in content[i]) { for (var t in content[i].event) { el.addEventListener(t, content[i].event[t]); } } } if (typeof parent === 'object' && typeof parent.appendChild === 'function') { parent.appendChild(el); } if ('variable' in content[i]) { variables[content[i].variable] = el; } elements.push(el); } return { Element: elements.length ? elements[0] : null, Elements: elements, Variables: variables }; };var Transition = (function(){  var tick = function(transitionObject) { if (typeof transitionObject.TickEvent === 'function') { transitionObject.TickEvent(); } }; var start = function(transitionObject) { var timeStart = Date.now(); return setInterval(function(){ var timeNow = Date.now(); var deltaTime = timeNow - timeStart; timeStart = timeNow; transitionObject.Time += deltaTime; if (transitionObject.Time >= transitionObject.Duration) { transitionObject.Time = transitionObject.Duration; transitionObject.Value = 1; tick(transitionObject); transitionObject.Stop(); } else { transitionObject.Value = transitionObject.CubicBezier.GetProgression(transitionObject.Time / transitionObject.Duration); tick(transitionObject); } }, 16); };  var TransitionObject = function() { }; TransitionObject.prototype.CubicBezier = CubicBezier.EaseInOut; TransitionObject.prototype.Duration = 1000; TransitionObject.prototype.Time = 0; TransitionObject.prototype.Value = 0; TransitionObject.prototype.TickEvent = undefined; TransitionObject.prototype.EndEvent = undefined; TransitionObject.prototype.IntervalID = undefined; TransitionObject.prototype.SetCubicBezier = function(cubicBezier) { this.CubicBezier = cubicBezier; }; TransitionObject.prototype.SetDuration = function(duration) { this.Duration = duration; }; TransitionObject.prototype.SetTickEvent = function(tickEvent) { this.TickEvent = tickEvent.bind(this); }; TransitionObject.prototype.SetEndEvent = function(endEvent) { this.EndEvent = endEvent.bind(this); }; TransitionObject.prototype.Start = function() { this.IntervalID = start(this); }; TransitionObject.prototype.Pause = function() { if (this.IntervalID) { clearInterval(this.IntervalID); this.IntervalID = undefined; } }; TransitionObject.prototype.Stop = function() { if (this.IntervalID) { clearInterval(this.IntervalID); this.IntervalID = undefined; } if (typeof this.EndEvent === 'function') { this.EndEvent(); } this.Time = 0; this.Value = 0; }; return {  Create: function(settings){ var transitionObject = new TransitionObject(); if ('Duration' in settings) { transitionObject.SetDuration(settings.Duration); } if ('CubicBezier' in settings) { transitionObject.SetCubicBezier(settings.CubicBezier); } if ('TickEvent' in settings) { transitionObject.SetTickEvent(settings.TickEvent); } if ('EndEvent' in settings) { transitionObject.SetEndEvent(settings.EndEvent); } return transitionObject; } }; })();(function(){ var setPrototype = function(ob, name, fun) { if (!ob) { return; } if (name in ob.prototype) { return; } Object.defineProperty(ob.prototype, name, { configurable: false, enumerable: false, writable: false, value: fun }); };  setPrototype(Element, 'addClass', function(className){ if (typeof this.classList === 'object' && 'add' in this.classList) { return this.classList.add(className); } if (!this.containsClass(className)) { var classNames = ' ' + this.className + ' '; this.className = (classNames + className).trim(); } }); setPrototype(Element, 'removeClass', function(className){ if (typeof this.classList === 'object' && 'remove' in this.classList) { return this.classList.remove(className); } var cl = ' ' + this.className + ' '; this.className = cl.replace(' ' + className + ' ', ' ').trim(); if (this.containsClass(className)) { this.removeClass(className); } }); setPrototype(Element, 'containsClass', function(className){ if (typeof this.classList === 'object' && 'contains' in this.classList) { return this.classList.contains(className); } var cl = ' ' + this.className + ' '; return cl.search(' ' + className + ' ') !== -1; });  var nodeForEach = function (callback, thisArg) { thisArg = thisArg || window; for (var i = 0; i !== this.length; i++) { callback.call(thisArg, this[i], i, this); } }; setPrototype(NodeList, 'forEach', nodeForEach); setPrototype(HTMLCollection, 'forEach', nodeForEach); var nodeIndexOf = function(item) { for (var i = 0; i !== this.length; i++) { if (this[i] === item) { return i; } } return -1; }; setPrototype(NodeList, 'indexOf', nodeIndexOf); setPrototype(HTMLCollection, 'indexOf', nodeIndexOf); var removeArrayIndex = function(index) { this.splice(index, 1); }; setPrototype(Array, 'removeIndex', removeArrayIndex); setPrototype(NodeList, 'removeIndex', removeArrayIndex); setPrototype(HTMLCollection, 'removeIndex', removeArrayIndex); var removeArrayValue = function(value) { var index = this.indexOf(value); if (index === -1) { return false; } this.removeIndex(index); return true; }; setPrototype(Array, 'remove', removeArrayValue); setPrototype(NodeList, 'remove', removeArrayValue); setPrototype(HTMLCollection, 'remove', removeArrayValue); setPrototype(Element, 'getIndex', function(){ return this.parentNode.children.indexOf(this); });  setPrototype(Node, 'insertAfter', function(newElement, referenceElement){ var index = referenceElement.getIndex(); if (index === this.children.length - 1) { this.appendChild(newElement); } else { this.insertBefore(newElement, this.children[index + 1]); } return newElement; }); setPrototype(Node, 'removeElement', function(){ if (this.parentNode) { return this.parentNode.removeChild(this); } else { return null; } });  setPrototype(HTMLFormElement, 'getData', function(){ var data = {}; var item = undefined; var match = undefined; for (var i = 0; i !== this.elements.length; i++) { item = this.elements.item(i); if (typeof item.name === 'string' && item.name.length > 0) { if ((item.type === 'checkbox' || item.type === 'radio') && !item.checked) { continue; } if (match = item.name.match(/^([\s\S]+)\[\]$/)) { if (!(match[1] in data) || !Array.isArray(data[match[1]])) { data[match[1]] = []; } data[match[1]].push(item.value); } else { data[item.name] = item.value; } } } return data; });  var isNaNNumber = function(value) { if (typeof value === 'object' && value.toString() === 'NaN') { return true; } if ('isNaN' in Number) { return Number.isNaN(value); } if (typeof value === 'number' && isNaN(value)) { return true; } return false; }; setPrototype(Number, 'isNaN', function(){ return isNaNNumber(this); }); setPrototype(Number, 'getFormat', function(len){ var num = this; if (isNaNNumber(num)) { num = 0; } num = num.toString(); while (num.length < len) { num = '0' + num; } return num; }); setPrototype(Number, 'getPrice', function(){ var num = this; if (isNaNNumber(num)) { num = 0; } var isMinus = num < 0; var price = Math.abs(num).toString(); var match = price.match(/^([0-9]+)\.?([0-9]+)?$/); if (!match[2]) { match[2] = '00'; } else if (match[2].length === 1) { match[2] += '0'; } else if (match[2].length !== 2) { match[2] = match[2].substr(0, 2); } return (isMinus ? '-' : '') + match[1] + '.' + match[2]; });  var polishToLatin = (function(){ var fromArray = [ 'Ą', 'Ć', 'Ę', 'Ł', 'Ń', 'Ó', 'Ś', 'Ź', 'Ż', 'ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż' ]; var toArray = [ 'A', 'C', 'E', 'L', 'N', 'O', 'S', 'Z', 'Z', 'a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z' ]; for (var i = 0; i !== fromArray.length; i++) { fromArray[i] = new RegExp(fromArray[i], 'g'); } return function() { var str = this.toString(); for (var i = 0; i !== fromArray.length; i++) { str = str.replace(fromArray[i], toArray[i]); } return str; }; })(); setPrototype(String, 'polishToLatin', polishToLatin); setPrototype(String, 'toCamelCase', function(){ return this .toString() .toLowerCase() .split(/[^a-z]+/) .map(function(str){ return str[0].toUpperCase() + str.substr(1); }) .join(''); }); })();(function(){ window.WindowWidth = 0; window.WindowHeight = 0; var resizeWindowSize = function() { WindowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; WindowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; }; window.addEventListener('load', resizeWindowSize); window.addEventListener('resize', resizeWindowSize); })(); var RunAnimation = function(settings) { if (!('curve' in settings)) { settings.curve = CubicBezier.EaseInOut; } var start = Date.now(); var intervalID = setInterval(function(){ var pr = Math.min(1, (Date.now() - start) / settings.duration); settings.callback(settings.begin + (settings.end - settings.begin) * (settings.curve.GetProgression(pr))); if (pr === 1) { if ('callbackEnd' in settings && typeof settings.callbackEnd === 'function') { settings.callbackEnd(); } clearInterval(intervalID); } }, 16); return intervalID; }; var ParseJSON = function(str, fl) { var obj = null; if (typeof str === 'string') { try { obj = JSON.parse(str); if (typeof obj !== 'object') { obj = null; } } catch(e) { obj = null; } } else { obj = str; } if (fl && obj === null) { return str; } else { return obj; } }; (function(){ var htmlElement = undefined; var getSingleRem = function() { if (!htmlElement) { htmlElement = document.querySelector('html'); } var fontSize = parseFloat(window.getComputedStyle(htmlElement).getPropertyValue('font-size')); if (fontSize.isNaN()) { return 16;  } else { return fontSize; } }; window.RemToPx = function(rem) { return rem * getSingleRem(); }; window.PxToRem = function(px) { return px / getSingleRem(); }; })();var Core = (function(){  var elementTypes = {}; var elementObjects = [];  var checkCMSParameter = function(cmsElement) { while (cmsElement !== document) { if (cmsElement.tagName.toLowerCase() === 'cmsparameter') { return false; } cmsElement = cmsElement.parentNode; } return true; }; var removeCMSNode = function(element) { var parentNode = element.parentNode; var childNode = undefined; while (element.childNodes.length) { childNode = element.childNodes[0]; element.removeChild(childNode); parentNode.insertBefore(childNode, element); } element.removeElement(); }; var getChildNodes = function(element) { var childNodes = []; var tagName = undefined; for (var i = 0; i !== element.childNodes.length; i++) { tagName = element.childNodes[i].tagName; if (typeof tagName === 'string' && (tagName.toLowerCase() === 'cms' || tagName.toLowerCase() === 'cmsparameter')) { continue; } childNodes.push(element.childNodes[i]); } return childNodes; }; var getParentNode = function(element) { while (true) { element = element.parentNode; if (element === null) { return null; } if (element.tagName.toLowerCase() !== 'cms' && element.tagName.toLowerCase() !== 'cmsparameter') { return element; } } }; var getCMSParent = function(parentNode) { while (parentNode) { if ('CMSElement' in parentNode) { return parentNode.CMSElement; } parentNode = parentNode.parentNode; } return null; }; var getAttributes = function(element) { var attributes = {}; for (var i = 0; i !== element.attributes.length; i++) { attributes[element.attributes[i].name.toCamelCase()] = element.attributes[i].value; } return attributes; }; var CMSElement = function(element, attributes, parent) { this.Parameters = {}; if (typeof attributes === 'object' && attributes !== null) { this.Attributes = attributes; } else { this.Attributes = getAttributes(element); } for (var i = 0; i !== element.children.length; i++) { if (element.children[i].tagName.toLowerCase() !== 'cmsparameter') { continue; } var attributes = getAttributes(element.children[i]); if (!('Name' in attributes)) { continue; } this.Parameters[attributes.Name.toCamelCase()] = { Attributes: attributes, HTML: element.children[i].innerHTML, Text: element.children[i].innerText }; } if ('Type' in this.Attributes) { this.Type = this.Attributes.Type; } this.ChildNodes = getChildNodes(element); this.ParentNode = getParentNode(element); this.Childs = []; this.Parent = getCMSParent(element); if (this.Parent === null && parent) { this.Parent = parent; } if (this.Parent) { this.Parent.Childs.push(this); } element.CMSElement = this; }; CMSElement.prototype.Type = 'unknown'; CMSElement.prototype.Attributes = null; CMSElement.prototype.Parameters = null; CMSElement.prototype.Childs = null; CMSElement.prototype.Parent = null; CMSElement.prototype.ChildNodes = null; CMSElement.prototype.ParentNode = null; CMSElement.prototype.GetElement = function() { for (var i = 0; i !== this.ChildNodes.length; i++) { if (this.ChildNodes[i].nodeType === 1) { return this.ChildNodes[i]; } } return null; }; CMSElement.prototype.GetElements = function() { var elements = []; for (var i = 0; i !== this.ChildNodes.length; i++) { if (this.ChildNodes[i].nodeType === 1) { elements.push(this.ChildNodes[i]); } } return elements; }; CMSElement.prototype.GetInnerHTML = function() { var html = ''; for (var i = 0; i !== this.ChildNodes.length; i++) { if (this.ChildNodes[i].nodeType === 1) { html += this.ChildNodes[i].innerHTML; } else { html += this.ChildNodes[i].nodeValue; } } return html; }; CMSElement.prototype.QuerySelector = function(selector) { var elements = this.GetElements(); var element = undefined; for (var i = 0; i !== elements.length; i++) { element = elements[i].querySelector(selector); if (element) { return element; } } return null; }; CMSElement.prototype.QuerySelectorAll = function(selector) { var elements = this.GetElements(); var elementAll = []; var elementArray = undefined; for (var i = 0; i !== elements.length; i++) { elementArray = elements[i].querySelectorAll(selector); for (var j = 0; j !== elementArray.length; j++) { elementAll.push(elementArray[j]); } } return elementAll; }; CMSElement.prototype.RemoveElements = function() { for (var i = 0; i !== this.Childs.length; i++) { this.Childs[i].RemoveElements(); } for (var i = 0; i !== this.ChildNodes.length; i++) { this.ChildNodes[i].removeElement(); } }; window.addEventListener('load', function(){ Core.ReloadElements();  }); return { AddElementType: function(typeName, callback) { if (typeof callback !== 'function') { return; } if (!(typeName in elementTypes)) { elementTypes[typeName] = []; } elementTypes[typeName].push(callback); for (var i = 0; i !== elementObjects.length; i++) { if (elementObjects[i].Type === typeName) { callback(elementObjects[i]); } } },  CreateElement: function(element, attributes, parent) { var cmsElement = new CMSElement(element, attributes, parent); elementObjects.push(cmsElement); return cmsElement; }, ReloadElements: function(parent, parentCMSElement) { if (!parent) { parent = document; } var cmsElementsQS = parent.querySelectorAll('cms'); var cmsElements = []; for (var i = 0; i !== cmsElementsQS.length; i++) { if (checkCMSParameter(cmsElementsQS[i])) { cmsElements.push(cmsElementsQS[i]); } } var cmsElement = undefined; var elementsBuffer = []; for (var i = 0; i !== cmsElements.length; i++) { cmsElement = new CMSElement(cmsElements[i], null, parentCMSElement); elementObjects.push(cmsElement); elementsBuffer.push(cmsElement); } for (var i = 0; i !== cmsElements.length; i++) { removeCMSNode(cmsElements[i]); } for (var i = 0; i !== elementsBuffer.length; i++) { if (elementsBuffer[i].Type in elementTypes) { for (var j = 0; j !== elementTypes[elementsBuffer[i].Type].length; j++) { elementTypes[elementsBuffer[i].Type][j]( elementsBuffer[i] ); } } }  var cmsParameters = document.querySelectorAll('cmsparameter'); for (var i = 0; i !== cmsParameters.length; i++) { cmsParameters[i].removeElement(); } },  JoinSettings: function(settings, settingsDefault){ var settingsReturn = {}; if (typeof settings !== 'object') { settings = {}; } for (var name in settingsDefault) { if (name in settings) { settingsReturn[name] = settings[name]; } else { settingsReturn[name] = settingsDefault[name]; } } return settingsReturn; } }; })();Core.Events = (function(){ var events = {}; var getEventArray = function(type) { if (!(type in events)) { events[type] = []; } return events[type]; }; var eventTypes = {}; var getEventTypeArray = function(type) { if (!(type in eventTypes)) { eventTypes[type] = []; } return eventTypes[type]; }; var addEvent = function(type, callback) { getEventArray(type).push(callback); var eventTypeArray = getEventTypeArray(type); for (var i = 0; i !== eventTypeArray.length; i++) { if ('AddCallBack' in eventTypeArray[i]) { eventTypeArray[i].AddCallBack(callback); } } }; var removeEvent = function(type, callback) { var eventArray = getEventArray(type); var index = eventArray.indexOf(callback); if (index === -1) { return; } eventArray.removeIndex(index); }; var callEvent = function(type, eventObject) { var eventArray = getEventArray(type); for (var i = 0; i !== eventArray.length; i++) { eventArray[i].call(window, eventObject); } }; var getCount = function(type) { return getEventArray(type).length; }; Core.AddEvent = addEvent; Core.RemoveEvent = removeEvent; return { AddEvent: addEvent, RemoveEvent: removeEvent, AddEventType: function(type, settings){  if (typeof settings !== 'object') { settings = {}; } var eventTypeArray = getEventTypeArray(type); eventTypeArray.push(settings); return { CallEvent: callEvent.bind(window, type), GetCount: getCount.bind(window, type) }; } }; })(); (function(){  var awakeIsCall = false; var awakeEventCount = 0; var awakeCallBackEnd = function() { awakeEventCount--; if (awakeEventCount === 0) { callStartEvents(); } }; var awakeEventObject = Core.Events.AddEventType('Awake', { AddCallBack: function(callback){ if (awakeIsCall) { awakeEventCount++; callback({ CallBackEnd: awakeCallBackEnd }); } } }); var startIsCall = false; var startEventObject = Core.Events.AddEventType('Start', { AddCallBack: function(callback){ if (startIsCall) { callback(); } } }); var callStartEvents = function() { startIsCall = true; startEventObject.CallEvent(); }; window.addEventListener('load', function(){ awakeIsCall = true; awakeEventCount = awakeEventObject.GetCount(); if (awakeEventCount) { awakeEventObject.CallEvent({ CallBackEnd: awakeCallBackEnd }); } else { callStartEvents(); } }); })();Core.Scroll = (function(){  var bodyNode = undefined; var htmlNode = undefined;  Core.AddEvent('Awake', function(e){ bodyNode = document.body; htmlNode = document.documentElement; Core.Scroll.Create(window); e.CallBackEnd(); });  var ScrollObject = function(element) { this.Element = element; }; ScrollObject.prototype.Element = undefined; ScrollObject.prototype.GetWidth = function() { var scrollWidth = undefined; if (this.Element === window) { scrollWidth = Math.max(htmlNode.scrollWidth, bodyNode.scrollWidth) - WindowWidth; } else { scrollWidth = this.Element.scrollWidth - this.Element.offsetWidth; } return Math.max(scrollWidth, 0); }; ScrollObject.prototype.GetHeight = function() { var scrollHeight = undefined; if (this.Element === window) { scrollHeight = Math.max(htmlNode.scrollHeight, bodyNode.scrollHeight) - WindowHeight; } else { scrollHeight = this.Element.scrollHeight - this.Element.offsetHeight; } return Math.max(scrollHeight, 0); }; ScrollObject.prototype.GetScrollLeft = function(value) { if (this.Element === window) { return htmlNode.scrollLeft || bodyNode.scrollLeft; } else { return this.Element.scrollLeft; } }; ScrollObject.prototype.SetScrollLeft = function(value) { if (this.Element === window) { htmlNode.scrollLeft = bodyNode.scrollLeft = value; } else { this.Element.scrollLeft = value; } }; ScrollObject.prototype.GetScrollTop = function(value) { if (this.Element === window) { return htmlNode.scrollTop || bodyNode.scrollTop; } else { return this.Element.scrollTop; } }; ScrollObject.prototype.SetScrollTop = function(value) { if (this.Element === window) { htmlNode.scrollTop = bodyNode.scrollTop = value; } else { this.Element.scrollTop = value; } }; return { Create: function(element) { return element.Scroll = new ScrollObject(element); } }; })();Core.Data = (function(){ var data = {}; return { AddData: function(ob) { if (typeof ob !== 'object' || Array.isArray(ob)) { return; } for (var name in ob) { data[name] = ob[name]; } }, GetData: function(name) { if (name in data) { return data[name]; } else { return null; } } }; })();Core.Profile = (function(){ var role = null; var profile = null; var privileges = null; var privilegesObject = {}; Core.AddEvent('Awake', function(e){ role = Core.Data.GetData('role'); profile = Core.Data.GetData('profile'); privileges = Core.Data.GetData('privileges'); if (!Array.isArray(privileges)) { privileges = []; } for (var i = 0; i !== privileges.length; i++) { privilegesObject[privileges[i]] = true; } e.CallBackEnd(); }); return { GetRole: function() { return role; }, GetRoleLevel: function() { if (typeof role === 'object' && 'level' in role) { return role.level; } else { return -1; } }, GetProfile: function() { return profile; }, GetPrivileges: function() { return privileges || []; }, CheckPrivilege: function(name) { if (name in privilegesObject && privilegesObject[name]) { return true; } else { return false; } }, IsAuth: function() { return !!profile; } }; })();Core.Expression = (function() { var types = { undefined: 0, number: 1, string: 2, variable: 3, group: 4, index: 5, other: 6 }; var filters = { length: function(variable) { if (typeof variable === 'undefined' || variable === null) { return 0; } return variable.length || 0; } }; var operators = [ [ { direction: '>', operator: '#', check: '11', fun: function(expression) { var index = expression.pop(); var array = expression.pop(); if (typeof array === 'undefined' || array === null || typeof array[index] === 'undefined') { expression.push(''); } else { expression.push(array[index]); } } }, { direction: '>', operator: '|', check: '11', type: 'filter', fun: function(expression) { var filter = expression.pop(); if (!(filter in filters)) { console.error('Filtr not found (' + filter + ')'); return; } expression.push(filters[filter](expression.pop())); } } ], [ { direction: '<', operator: '!' , check: '01', type: 'single', fun: function(expression) { expression.push(!expression.pop()); } }, { direction: '<', operator: '-' , check: '01', type: 'single', fun: function(expression) { expression.push(-expression.pop()); } } ], [ { direction: '>', operator: '..', check: '11', fun: function(expression) { var b = parseInt(expression.pop()); var a = parseInt(expression.pop()); var arr = []; if (!isNaN(a) && !isNaN(b)) { if (a === b) { arr.push(a); } else { var step = b > a ? 1 : -1; b += step; for (var i = a; i !== b; i += step) { arr.push(i); } } } expression.push(arr); } }, ], [ { direction: '>', operator: '*', check: '11', fun: function(expression) { var a = expression.pop(); expression.push(expression.pop() * a); } }, { direction: '>', operator: '/', check: '11', fun: function(expression) { var a = expression.pop(); expression.push(expression.pop() / a); } }, { direction: '>', operator: '%', check: '11', fun: function(expression) { var a = expression.pop(); expression.push(expression.pop() % a); } } ], [ { direction: '>', operator: '+', check: '11', fun: function(expression) { var a = expression.pop(); expression.push(expression.pop() + a); } }, { direction: '>', operator: '-', check: '11', fun: function(expression) { var a = expression.pop(); expression.push(expression.pop() - a); } } ], [ { direction: '>', operator: '<', check: '11', fun: function(expression) { var a = expression.pop(); expression.push(expression.pop() < a); } }, { direction: '>', operator: '>', check: '11', fun: function(expression) { var a = expression.pop(); expression.push(expression.pop() > a); } }, { direction: '>', operator: '<=', check: '11', fun: function(expression) { var a = expression.pop(); expression.push(expression.pop() <= a); } }, { direction: '>', operator: '>=', check: '11', fun: function(expression) { var a = expression.pop(); expression.push(expression.pop() >= a); } } ], [ { direction: '>', operator: '==', check: '11', fun: function(expression) { expression.push(expression.pop() == expression.pop()); } }, { direction: '>', operator: '!=', check: '11', fun: function(expression) { expression.push(expression.pop() != expression.pop()); } } ], [ { direction: '>', operator: '&&', check: '11', fun: function(expression) { var a = expression.pop(); var b = expression.pop(); expression.push(b && a); } } ], [ { direction: '>', operator: '||', check: '11', fun: function(expression) { var a = expression.pop(); var b = expression.pop(); expression.push(b || a); } } ] ]; var levelsSplit = function(line) { var levels = [ '' ]; var lastReg = { index: 0, type: 'main' }; var reg = [ lastReg ]; var stringBegin = false; for (var i = 0; i !== line.length; i++) { if (line[i] === '"' || line[i] === "'") { if (stringBegin === false) { stringBegin = line[i]; } else if (stringBegin === line[i]) { stringBegin = false; } } if (line[i] === '(' && !stringBegin) { lastReg = { index: levels.push('') - 1, type: '@' }; reg.push(lastReg); } else if (line[i] === '[' && !stringBegin) { lastReg = { index: levels.push('') - 1, type: '#' }; reg.push(lastReg); } else if (line[i] === ')' && !stringBegin) { if (lastReg.type !== '@') { console.error('Unexpected symbol ")"'); return undefined; } else { levels[reg[reg.length - 2].index] += ' @' + lastReg.index.toString() + ' '; lastReg = reg[reg.length - 2]; reg.pop(); } } else if (line[i] === ']' && !stringBegin) { if (lastReg.type !== '#') { console.error('Unexpected symbol "]"'); return undefined; } else { levels[reg[reg.length - 2].index] += ' # @' + lastReg.index.toString() + ' '; lastReg = reg[reg.length - 2]; reg.pop(); } } else { levels[lastReg.index] += line[i]; } } if (reg.length !== 1) { console.error('Unexpected end of line'); return undefined; } return levels; }; var getBeginType = function(letter) { if (letter >= '0' && letter <= '9') { return types.number; } else if (letter === '"' || letter === "'") { return types.string; } else if ((letter >= 'a' && letter <= 'z') || (letter >= 'A' && letter <= 'Z') || letter === '$' || letter === '_') { return types.variable; } else if (letter === '@') { return types.group; } else if (letter === '#') { return types.index; } else { return types.other; } }; var parseLevel = function(level) { var expression = []; var map = []; var buf = ''; var saveType = types.undefined; var stringBegin = undefined; for (var i = 0; i !== level.length; i++) { if (saveType === types.number) { if ((level[i] < '0' || level[i] > '9') && level[i] !== '.') { saveType = types.undefined; } } if (saveType === types.string) { if (stringBegin === level[i]) { saveType = types.undefined; buf += level[i]; continue; } } if (saveType === types.variable) { if (!((level[i] >= 'a' && level[i] <= 'z') || (level[i] >= 'A' && level[i] <= 'Z') || (level[i] >= '0' && level[i] <= '9') || level[i] === '$' || level[i] === '_' || level[i] === '.')) { saveType = types.undefined; } } if (saveType === types.group || saveType === types.index) { if (level[i] < '0' || level[i] > '9') { saveType = types.undefined; } } if (saveType === types.other) { if (getBeginType(level[i]) !== types.other) { saveType = types.undefined; } else if (level[i - 1] === ' ' && level[i] !== ' ') { expression.push(buf.trim()); buf = ''; map.push(types.other); } } if (saveType === types.undefined) { expression.push(buf.trim()); buf = ''; if (level[i] === ' ') { continue; } saveType = getBeginType(level[i]); if (saveType === types.index) { map.push(types.other); } else { map.push(saveType); } if (saveType === types.string) { stringBegin = level[i]; } } buf += level[i]; } expression.push(buf.trim()); return { map: map, expression: expression.filter(function(v){ return v !== ''; }) }; }; var genCheck = function(map, index) { var check = ''; if (index === 0 || map[index - 1] === types.other) { check += '0'; } else { check += '1'; } if (index === map.length - 1 || map[index + 1] === types.other) { check += '0'; } else { check += '1'; } return check; }; var buildingExpressionOperator = function(operator, map, expression, index, levels) { if (map[index] === types.other && expression[index] === operator.operator) { if (operator.check !== genCheck(map, index)) { return false; } if (operator.type === 'single') { expression[index] = levels.push([ expression[index + 1], operator.fun ]) - 1; map[index] = types.variable; expression.splice(index + 1, 1); map.splice(index + 1, 1); } else { if (operator.type === 'filter') { expression[index + 1] = '"' + expression[index + 1] + '"'; } expression[index - 1] = levels.push([ expression[index - 1], expression[index + 1], operator.fun ]) - 1; map[index - 1] = types.variable; expression.splice(index, 2); map.splice(index, 2); } return true; } return false; }; var buildingExpressionTree = function(exp, levels, index) { for (var i = 0; i !== levels[index].length; i++) { if (typeof levels[index][i] === 'number') { buildingExpressionTree(exp, levels, levels[index][i]); } else { exp.push(levels[index][i]); } } }; var buildingExpression = function(obj) { var levels = []; for (var i = 0; i !== operators.length; i++) { for (var j = 0; j !== operators[i].length; j++) { if (operators[i][j].direction === '>') { for (var o = 0; o !== obj.map.length; o++) { if (buildingExpressionOperator(operators[i][j], obj.map, obj.expression, o, levels)) { o = 0; } } } else { for (var o = obj.map.length; o !== 0; o--) { if (buildingExpressionOperator(operators[i][j], obj.map, obj.expression, o - 1, levels)) { o = obj.map.length; } } } } } var exp = []; if (levels.length === 0) { exp.push(obj.expression[0]); } else { buildingExpressionTree(exp, levels, levels.length - 1); } return exp; }; var buildLevelsTree = function(variables, exp, levels, index) { for (var i = 0; i !== levels[index].length; i++) { if (typeof levels[index][i] === 'string') { if (levels[index][i][0] === '@') { buildLevelsTree(variables, exp, levels, parseInt(levels[index][i].substr(1))); } else if (levels[index][i][0] >= '0' && levels[index][i][0] <= '9') { exp.push(parseFloat(levels[index][i])); } else if (levels[index][i][0] === '"' || levels[index][i][0] === "'") { exp.push(levels[index][i].substr(1, levels[index][i].length - 2)); } else { variables[exp.push(levels[index][i]) - 1] = levels[index][i]; } } else { exp.push(levels[index][i]); } } }; var getValueByVariable = function(name, scope) { name = name.split('.'); var value = scope.GetVariable(name[0]); if (name.length > 1) { for (var i = 1; i !== name.length; i++) { if (typeof value !== 'object' || !(name[i] in value) || value[name[i]] === undefined) { return ''; } value = value[name[i]]; } } return value; }; var executeExpression = function(scope, exp, variables) { var reg = []; for (var i = 0; i !== exp.length; i++) { if (typeof exp[i] === 'function') { exp[i](reg); } else { if (typeof variables[i] === 'undefined') { reg.push(exp[i]); } else { reg.push(getValueByVariable(exp[i], scope)); } } } return reg[0]; };  var ExpressionObject = function(line) { this.Scope = Core.Scope.GetScope(); this.Variables = []; }; ExpressionObject.prototype.Scope = null; ExpressionObject.prototype.Variables = null; ExpressionObject.prototype.RPNotation = null; ExpressionObject.prototype.SetScope = function(scope) { this.Scope = scope; }; ExpressionObject.prototype.Execute = function() { return executeExpression( this.Scope || {}, this.RPNotation, this.Variables ); }; ExpressionObject.prototype.ExecuteInt = function() { return parseInt(this.Execute()); }; ExpressionObject.prototype.ExecuteBool = function() { return !!this.Execute(); }; ExpressionObject.prototype.ExecuteFloat = function() { return parseFloat(this.Execute()); }; ExpressionObject.prototype.ExecuteString = function() { var res = this.Execute(); if (!res && res !== 0) { return ''; } else { return res.toString(); } }; var buffer = {}; return { Execute: function(line, scope) { return this.Create(line, scope).Execute(); }, ExecuteInt: function(line, scope) { return this.Create(line, scope).ExecuteInt(); }, ExecuteBool: function(line, scope) { return this.Create(line, scope).ExecuteBool(); }, ExecuteFloat: function(line, scope) { return this.Create(line, scope).ExecuteFloat(); }, ExecuteString: function(line, scope) { return this.Create(line, scope).ExecuteString(); }, Create: function(line, scope) { line = line.trim(); var expressionObject = new ExpressionObject(); if (!(line in buffer)) { var exp = []; var variables = []; var levels = levelsSplit(line); for (var i = 0; i !== levels.length; i++) { levels[i] = buildingExpression( parseLevel(levels[i]) ); } buildLevelsTree(variables, exp, levels, 0); buffer[line] = { RPNotation: exp, Variables: variables.filter(function(variable){ return (typeof variable === 'string'); }) }; } expressionObject.RPNotation = buffer[line].RPNotation; expressionObject.Variables = buffer[line].Variables; if (scope) { expressionObject.SetScope(scope); } return expressionObject; } }; })();Core.Scope = (function() {  var ScopeObject = function(ob, ps) { if (!ob) { ob = {}; } this.Variables = ob.variables || {}; this.WatchVariable = {}; this.Scopes = {}; this.ParentScope = ps; if ('scopes' in ob) { for (var prop in ob.scopes) { this.Scopes[prop] = new ScopeObject(ob.scopes[prop], this); } } }; ScopeObject.prototype.Variables = null; ScopeObject.prototype.WatchVariable = null; ScopeObject.prototype.Scopes = null; ScopeObject.prototype.ParentScope = null; ScopeObject.prototype.GetScope = function(name) { if (name in this.Scopes) { return this.Scopes[name]; } else { return null; } }; ScopeObject.prototype.RemoveScope = function(scope) { for (var name in this.Scopes) { if (this.Scopes[name] === scope) { delete this.Scopes[name]; return true; } } return false; }; ScopeObject.prototype.CheckVariable = function(name, flag) { if (flag) { if (name in this.Variables) { return; } } if (name in this.WatchVariable) { for (var i = 0; i !== this.WatchVariable[name].length; i++) { this.WatchVariable[name][i](); } } for (var p in this.Scopes) { this.Scopes[p].CheckVariable(name, true); } }; ScopeObject.prototype.SetVariable = function(name, value, flag) { this.Variables[name] = value; if (!flag) { this.CheckVariable(name, false); } }; ScopeObject.prototype.RemoveVariable = function(name) { delete this.Variables[name]; this.CheckVariable(name, false); }; ScopeObject.prototype.GetVariable = function(name) { if (name in this.Variables) { return this.Variables[name]; } else if (this.ParentScope) { return this.ParentScope.GetVariable(name); } else { return ''; } }; ScopeObject.prototype.GetArray = function(name) { var value = this.GetVariable(name); if (Array.isArray(value)) { return value; } else { return []; } }; ScopeObject.prototype.GetNumber = function(name) { var value = parseInt(this.GetVariable(name)); if (isNaNNumber(value)) { return 0; } else { return value; } }; ScopeObject.prototype.CallFunction = function(name, args) { var value = this.GetVariable(name); if (typeof value !== 'function') { return null; } return value.apply(this, args); }; ScopeObject.prototype.WatchVariable = function(name, fun) { if (typeof fun !== 'function') { return false; } name = getVariablesArray(name); if (name) { for (var i = 0; i !== name.length; i++) { var n = name[i].match(/^([^\.]+)/)[0]; if (n in this.WatchVariable) { this.WatchVariable[n].push(fun); } else { this.WatchVariable[n] = [ fun ]; } } } }; ScopeObject.prototype.RemoveWatchVariable = function(name, fun) { var index; if (typeof fun !== 'function') { return false; } name = getVariablesArray(name); if (name) { for (var i = 0; i !== name.length; i++) { if (name[i] in this.WatchVariable) { index = this.WatchVariable[name[i]].indexOf(fun); if (index === -1) { continue; } this.WatchVariable[name[i]].splice(index, 1); } } } }; ScopeObject.prototype.CreateScope = function(name, variables) { if (!name) { do { name = 'element-' + Math.round(Math.random() * 100000000).toString(); } while(name in this.Scopes); } this.Scopes[name] = new ScopeObject({ variables: variables || {} }, this); return this.Scopes[name]; }; ScopeObject.prototype.Destroy = function() { if (this.ParentScope) { this.ParentScope.RemoveScope(this); } this.WatchVariable = {}; for (var name in this.Scopes) { this.Scopes[name].destroy(); } };  var mainScope = undefined; Core.AddEvent('Awake', function(e){ document.body.Scope = mainScope = new ScopeObject();  e.CallBackEnd(); }); return { GetScopeDOM: function(el) { while (el) { if ('Scope' in el && el.Scope instanceof Scope) { return el.Scope; } el = el.parentNode; } return mainScope; }, GetScope: function(name) { if (name === undefined) { return mainScope; } else { return mainScope.GetScope(name); } }, SetVariable: function(name, value, flag) { return mainScope.SetVariable(name, value, flag); }, RemoveVariable: function(name) { return mainScope.RemoveVariable(name); }, GetVariable: function(name) { return mainScope.GetVariable(name); }, GetArray: function(name) { return mainScope.getArray(name); }, GetNumber: function(name) { return mainScope.getNumber(name); }, CallFunction: function(name, args) { return mainScope.callFunction(name, args); }, WatchVariable: function(name, fun) { return mainScope.watchVariable(name, fun); }, RemoveWatchVariable: function(name, fun) { mainScope.removeWatchVariable(name, fun); }, CreateScope: function(name, variables) { return mainScope.CreateScope(name, variables); } }; })();Core.AddEvent('Start', function(){ if (!('translateValues' in window)) { window.translateValues = {}; } var createSwipe = function(el, callbackLeft, callbackRight) { var beginTouchX = undefined; var lastTouchX = undefined; el.addEventListener('touchstart', function(e) { beginTouchX = e.touches[0].clientX; lastTouchX = e.touches[0].clientX; }); el.addEventListener('touchmove', function(e) { lastTouchX = e.touches[0].clientX; }); el.addEventListener('touchend', function(e) { var dif = beginTouchX - lastTouchX; if (Math.abs(dif) < 100) { return; } if (dif < 0) { callbackLeft(); } else { callbackRight(); } }); }; var goToElement = function(el) { var rect = el.getBoundingClientRect(); var scrollTop = Scroll.GetScrollTop(); var scrollto = rect.top + scrollTop - RemToPx(10.5); RunAnimation({ begin: scrollTop, end: scrollto, duration: 400, callback: function(value){ Scroll.SetScrollTop(value); } }); }; var CreateTick = function(tickEvent) { var mode = 'fast'; var startTime = Math.ceil(Math.random() * 5) * 500 + 2000; var intervalTimeFast = 5000; var intervalTimeSlow = 10000; var tickFun = function() { if ('Content' in Core) { return; } tickEvent(); clearTimeout(timeoutID); timeoutID = setTimeout(tickFun, mode == 'fast' ? intervalTimeFast : intervalTimeSlow); }; var timeoutID = setTimeout(tickFun, startTime); return { Reset: function() { clearTimeout(timeoutID); timeoutID = setTimeout(tickFun, mode == 'fast' ? intervalTimeFast : intervalTimeSlow); }, SetSlowMode: function() { if (mode != 'slow') { mode = 'slow'; this.Reset(); } }, SetFastMode: function() { if (mode != 'fast') { mode = 'fast'; this.Reset(); } } }; }; (function(){ var checkInput = function(target) { if (target.value === '') { target.removeClass('no-empty'); } else if (!target.containsClass('no-empty')) { target.addClass('no-empty'); } }; window.addInputsNoEmpty = function(element) { var inputs = element.querySelectorAll('input, textarea'); for (var i = 0; i !== inputs.length; i++) { inputs[i].addEventListener('blur', function(e){ var target = e.currentTarget || e.target; checkInput(target); }); checkInput(inputs[i]); } }; addInputsNoEmpty(document); })(); (function(){ var createHistory = function(el) { var activeIndex = 0; var lastIntervalID = 0; var headerElement = el.querySelector('[history-header]'); var headerCenterElement = el.querySelector('[history-header-center]'); var headerYears = headerElement.querySelectorAll('[history-header-year]'); var titlesElement = el.querySelector('[history-titles]'); var infoElement = el.querySelector('[history-info]'); Core.Scroll.Create(headerElement); Core.Scroll.Create(headerCenterElement); var leftElements = el.querySelectorAll('[history-left]'); var rightElements = el.querySelectorAll('[history-right]'); var checkActiveYear = function(val) { var index = Math.floor((val + (headerElement.children[1].offsetWidth / 2)) / headerElement.children[1].offsetWidth); if (headerYears[index].containsClass('active')) { return; } headerElement.querySelector('.active').removeClass('active'); headerYears[index].addClass('active'); }; var setSlide = function(index) { if (activeIndex === index || index < 0 || index >= headerYears.length) { return; } clearInterval(lastIntervalID); var scroll1Begin = headerElement.Scroll.GetScrollLeft(); var scroll1End = Math.min(headerElement.children[1].offsetWidth * index, headerElement.Scroll.GetWidth()); var scroll2Begin = headerCenterElement.Scroll.GetScrollLeft(); var scroll2End = Math.min(headerCenterElement.children[0].offsetWidth * index, headerCenterElement.Scroll.GetWidth()); lastIntervalID = RunAnimation({ begin: 0, end: 1, duration: Math.min(Math.abs(activeIndex - index) * 500, 1000), callback: function(val){ var scroll1 = (scroll1End - scroll1Begin) * val + scroll1Begin; var scroll2 = (scroll2End - scroll2Begin) * val + scroll2Begin; checkActiveYear(scroll1); headerElement.Scroll.SetScrollLeft(scroll1); headerCenterElement.Scroll.SetScrollLeft(scroll2); } }); titlesElement.children[index].style.transition = 'none'; if (activeIndex > index) { titlesElement.children[activeIndex].style.left = '100%'; titlesElement.children[index].style.left = '-' + titlesElement.children[index].offsetWidth + 'px'; } else { titlesElement.children[activeIndex].style.left = '-' + titlesElement.children[activeIndex].offsetWidth + 'px'; titlesElement.children[index].style.left = '100%'; } setTimeout(function(){ titlesElement.children[index].style.transition = ''; titlesElement.children[index].style.left = '0'; }, 16); titlesElement.style.width = titlesElement.children[index].offsetWidth + 'px'; titlesElement.style.height = titlesElement.children[index].offsetHeight + 'px'; infoElement.children[activeIndex].removeClass('active'); infoElement.children[index].addClass('active'); infoElement.style.height = infoElement.children[index].offsetHeight + 'px'; activeIndex = index; tickObject.Reset(); }; for (var i = 0; i !== leftElements.length; i++) { leftElements[i].addEventListener('click', function(){ setSlide(activeIndex - 1); }); } for (var i = 0; i !== rightElements.length; i++) { rightElements[i].addEventListener('click', function(){ setSlide(activeIndex + 1); }); } for (var i = 0; i !== headerYears.length; i++) { headerYears[i].addEventListener('click', setSlide.bind(window, i)); } titlesElement.style.width = titlesElement.offsetWidth + 'px'; titlesElement.style.height = titlesElement.offsetHeight + 'px'; infoElement.style.height = infoElement.offsetHeight + 'px'; titlesElement.children[0].style.left = '0'; titlesElement.children[0].removeClass('active'); window.addEventListener('resize', function(){ titlesElement.style.width = titlesElement.children[activeIndex].offsetWidth + 'px'; titlesElement.style.height = titlesElement.children[activeIndex].offsetHeight + 'px'; infoElement.style.height = infoElement.children[activeIndex].offsetHeight + 'px'; }); createSwipe(el, function(){ var index = activeIndex - 1; if (index < 0) { index = headerYears.length - 1; } setSlide(index); }, function(){ var index = activeIndex + 1; if (index > headerYears.length - 1) { index = 0; } setSlide(index); }); var tickObject = CreateTick(function(){ if (activeIndex == headerYears.length - 1) { setSlide(0); } else { setSlide(activeIndex + 1); } }); }; var els = document.querySelectorAll('[data-history]'); for (var i = 0; i !== els.length; i++) { createHistory(els[i]); } })(); (function(){ var createSlider = function(el) { var activeIndex = 0; var sliderElement = el.querySelector('[slider-mini-slider]'); var counterElement = el.querySelector('[slider-mini-counter]'); var navElement = el.querySelector('[slider-mini-nav]'); var leftElement = el.querySelector('[slider-mini-left]'); var rightElement = el.querySelector('[slider-mini-right]'); var setSlide = function(index) { if (activeIndex == index || index < 0 || index >= sliderElement.children.length) { return; } if (counterElement) { counterElement.innerText = index + 1; } sliderElement.children[activeIndex].removeClass('active'); sliderElement.children[index].addClass('active'); if (activeIndex < index) { sliderElement.children[activeIndex].querySelector('.slider_mini-image-block').style.top = '0%'; } else { sliderElement.children[activeIndex].querySelector('.slider_mini-image-block').style.top = '100%'; } sliderElement.children[index].querySelector('.slider_mini-image-block').style.transition = 'none'; if (activeIndex < index) { sliderElement.children[index].querySelector('.slider_mini-image-block').style.top = '100%'; } else { sliderElement.children[index].querySelector('.slider_mini-image-block').style.top = '0%'; } setTimeout(function(){ sliderElement.children[index].querySelector('.slider_mini-image-block').style.transition = ''; setTimeout(function(){ sliderElement.children[index].querySelector('.slider_mini-image-block').style.top = ''; }, 16); }, 16); navElement.children[activeIndex].removeClass('active'); navElement.children[index].addClass('active'); activeIndex = index; tickObject.Reset(); }; navElement.addEventListener('click', function(e){ if (e.target.tagName !== 'LI') { return; } setSlide(navElement.children.indexOf(e.target)); }); leftElement.addEventListener('click', function(){ setSlide(activeIndex - 1); }); rightElement.addEventListener('click', function(){ setSlide(activeIndex + 1); }); var tickObject = CreateTick(function(){ if (activeIndex == sliderElement.children.length - 1) { setSlide(0); } else { setSlide(activeIndex + 1); } }); createSwipe(el, function(){ var index = activeIndex - 1; if (index < 0) { index = sliderElement.children.length - 1; } setSlide(index); }, function(){ var index = activeIndex + 1; if (index > sliderElement.children.length - 1) { index = 0; } setSlide(index); }); }; var els = document.querySelectorAll('[data-slider-mini]'); for (var i = 0; i !== els.length; i++) { createSlider(els[i]); } })(); (function(){ var createGallery = function(el) { var activeIndex = 0; var lastIntervalID = 0; var slidesElement = el.querySelector('[gallery-slides]'); var slidesElements = slidesElement.querySelectorAll('[gallery-slide]'); var counterElement = el.querySelector('[gallery-counter]'); var navElement = el.querySelector('[gallery-nav]'); var leftElement = el.querySelector('[gallery-left]'); var rightElement = el.querySelector('[gallery-right]'); Core.Scroll.Create(slidesElement); var sliders = []; var indexBegin = 0; var indexEnd = slidesElements.length - 1; for (var i = 0; i !== slidesElements.length; i++) { sliders.push(slidesElements[i]); } if (sliders.length == 0) { return; } var addSlideBegin = function() { if ('Content' in Core) { return; } indexBegin--; var index = indexBegin % slidesElements.length; if (index < 0) { index += slidesElements.length; } var nodeChild = slidesElements[index].cloneNode(true); slidesElement.insertBefore(nodeChild, slidesElement.children[0]); slidesElement.Scroll.SetScrollLeft(slidesElement.Scroll.GetScrollLeft() + nodeChild.offsetWidth); }; var addSlideEnd = function() { if ('Content' in Core) { return; } indexEnd++; var nodeChild = slidesElements[indexEnd % slidesElements.length].cloneNode(true); slidesElement.appendChild(nodeChild); }; addSlideBegin(); addSlideBegin(); var setSlide = function(index) { clearInterval(lastIntervalID); if ('Content' in Core) { if (index < 0) { index = 0; } else if (index > slidesElements.length - 1) { index = slidesElements.length - 1; } } else { if (index <= indexBegin + 1) { while (index <= indexBegin + 1) { addSlideBegin(); } } else if (index >= indexEnd - 1) { while (index >= indexEnd - 1) { addSlideEnd(); } } } lastIntervalID = RunAnimation({ begin: slidesElement.Scroll.GetScrollLeft(), end: slidesElements[0].offsetWidth * (index - indexBegin), duration: 500, callback: function(val){ slidesElement.Scroll.SetScrollLeft(val); } }); activeIndex = index; index %= slidesElements.length; if (index < 0) { index = slidesElements.length + index; } if (counterElement) { counterElement.innerText = index + 1; } navElement.querySelector('.active').removeClass('active'); navElement.children[index].addClass('active'); if (slidesElement.querySelector('.active')) { slidesElement.querySelector('.active').removeClass('active'); } slidesElement.children[activeIndex - indexBegin].addClass('active'); tickObject.Reset(); }; navElement.addEventListener('click', function(e){ if (e.target.tagName !== 'LI') { return; } var index = navElement.children.indexOf(e.target); var startIndex = activeIndex - activeIndex % slidesElements.length; if (activeIndex < 0 && (activeIndex % slidesElements.length) !== 0) { startIndex -= slidesElements.length; } setSlide(startIndex + index); }); leftElement.addEventListener('click', function(){ setSlide(activeIndex - 1); }); rightElement.addEventListener('click', function(){ setSlide(activeIndex + 1); }); var tickObject = CreateTick(function(){ setSlide(activeIndex + 1); }); createSwipe(el, function(){ setSlide(activeIndex - 1); }, function(){ setSlide(activeIndex + 1); }); }; var els = document.querySelectorAll('[data-gallery]'); for (var i = 0; i !== els.length; i++) { createGallery(els[i]); } })(); (function(){ var createSlider = function(el) { var activeIndex = 0; var slidesElement = el.querySelector('[slider-slides]'); var navElement = el.querySelector('[slider-nav]'); var leftElement = el.querySelector('[slider-left]'); var rightElement = el.querySelector('[slider-right]'); var setSlide = function(index) { if (activeIndex == index || index < 0 || index >= slidesElement.children.length) { return; } slidesElement.children[activeIndex].removeClass('active'); slidesElement.children[index].addClass('active'); navElement.children[activeIndex].removeClass('active'); navElement.children[index].addClass('active'); activeIndex = index; tickObject.Reset(); }; navElement.addEventListener('click', function(e){ if (e.target.tagName !== 'LI') { return; } setSlide(navElement.children.indexOf(e.target)); }); if (leftElement) { leftElement.addEventListener('click', function(){ setSlide(activeIndex - 1); }); } if (rightElement) { rightElement.addEventListener('click', function(){ setSlide(activeIndex + 1); }); } var tickObject = CreateTick(function(){ if (activeIndex == slidesElement.children.length - 1) { setSlide(0); } else { setSlide(activeIndex + 1); } }); createSwipe(el, function(){ var index = activeIndex - 1; if (index < 0) { index = slidesElement.children.length - 1; } setSlide(index); }, function(){ var index = activeIndex + 1; if (index > slidesElement.children.length - 1) { index = 0; } setSlide(index); }); window.addEventListener('mousemove', function(e){ var rect = el.getBoundingClientRect(); if ( e.clientX >= rect.left && e.clientX <= rect.left + rect.width && e.clientY >= rect.top && e.clientY <= rect.top + rect.height ) { tickObject.SetSlowMode(); } else { tickObject.SetFastMode(); } }); }; var els = document.querySelectorAll('[data-slider]'); for (var i = 0; i !== els.length; i++) { createSlider(els[i]); } })(); var windowModal = (function(){ return function(config){ var buildObject = BuildHTML({ classes: 'window-block', content: { classes: 'window', content: [ { classes: 'window-close', variable: 'Close' }, { classes: 'window-content', variable: 'Content' } ] } }, document.body); buildObject.Element.style.display = 'block'; if ('Size' in config) { buildObject.Element.addClass(config.Size); } if (typeof config.Content === 'string') { buildObject.Variables.Content.innerHTML = '<div class="window-text">' + config.Content + '</div>'; } else { buildObject.Variables.Content.appendChild(config.Content); } setTimeout(function(){ buildObject.Element.addClass('open'); }, 16); buildObject.Variables.Close.addEventListener('click', function(){ buildObject.Element.removeClass('open'); if ('callback' in config) { config.callback(); } setTimeout(function(){ buildObject.Element.removeElement(); }, 500); }); }; })(); (function(){ var createNewsletterForm = function(el) { var form1Element = el.querySelector('[newsletter-form-1]'); var form2Element = el.querySelector('[newsletter-form-2]'); var form3Element = el.querySelector('[newsletter-form-3]'); if (el.dataset.newsletterForm == '1') { form1Element.removeElement(); var openFormButton = el.querySelector('[open-form]'); openFormButton.addEventListener('click', function(){ windowModal({ Content: form1Element }); }); } form2Element.removeElement(); form3Element.removeElement(); var selectElement = form1Element.querySelector('[newsletter-select]'); var selectTitle = form1Element.querySelector('[newsletter-select-title]'); var selectOptions = form1Element.querySelector('[newsletter-select-options]'); var selectIsOpened = false; selectElement.addEventListener('click', function(e){ var target = e.target; while (target) { if (target === selectElement) { break; } else if (target === selectOptions) { return; } target = target.parentNode; } if (selectIsOpened) { selectElement.removeClass('open'); } else { selectElement.addClass('open'); } selectIsOpened = !selectIsOpened; }); document.addEventListener('click', function(e){ var target = e.target; while (target) { if (target === selectElement) { return; } target = target.parentNode; } if (selectIsOpened) { selectElement.removeClass('open'); selectIsOpened = false; } }); var selectAll = form1Element.querySelector('[newsletter-select-all]'); var selectOptions = form1Element.querySelectorAll('[newsletter-select-option]'); var selectLabels = form1Element.querySelectorAll('[newsletter-select-label]'); var reloadSelectTitle = function() { var labels = []; for (var i = 0; i !== selectOptions.length; i++) { if (selectOptions[i].checked) { labels.push(selectLabels[i].innerText); } } if (labels.length === selectOptions.length) { selectAll.checked = true; } else { selectAll.checked = false; } if (labels.length === 0) { selectTitle.innerText = translateValues['translate_106'] + ' *'; } else { selectTitle.innerText = labels.join(', '); } }; for (var i = 0; i !== selectOptions.length; i++) { selectOptions[i].addEventListener('change', function(e){ reloadSelectTitle(); }); } selectAll.addEventListener('change', function(){ for (var i = 0; i !== selectOptions.length; i++) { selectOptions[i].checked = selectAll.checked; } reloadSelectTitle(); }); var acceptInputs = form1Element.querySelectorAll('[newsletter-accept]'); var acceptAll = form1Element.querySelector('[newsletter-accept-all]'); if (acceptAll) { for (var i = 0; i !== acceptInputs.length; i++) { acceptInputs[i].addEventListener('click', function(){ for (var i = 0; i !== acceptInputs.length; i++) { if (!acceptInputs[i].checked) { return acceptAll.checked = false; } } acceptAll.checked = true; }); } acceptAll.addEventListener('click', function(){ for (var i = 0; i !== acceptInputs.length; i++) { acceptInputs[i].checked = acceptAll.checked; } }); } var isSendCode = false; var isSendPrepare = false; form1Element.addEventListener('submit', function(e){ e.preventDefault(); if (isSendPrepare) { return false; } var data = form1Element.getData(); if (!('stations' in data) || !Array.isArray(data.stations) || data.stations.length === 0) { selectElement.addClass('error'); setTimeout(function(){ selectElement.removeClass('error'); }, 2000); return; } isSendPrepare = true; form1Element.querySelector('[type="submit"]').disabled = true; HTTP.AJAX('Newsletter', 'PrepareSubscribe', { phone: data.phone, email: data.email }).Success(function(e){ windowModal({ Size: 'small', Content: form2Element }); }).Error(function(e){ windowModal({ Size: 'small', Content: e.ErrorMessage }); isSendPrepare = false; form1Element.querySelector('[type="submit"]').disabled = false; }); }); form2Element.addEventListener('submit', function(e){ e.preventDefault(); if (isSendCode) { return false; } var data = form1Element.getData(); var dataCode = form2Element.getData(); data.code = dataCode.code; isSendCode = true; form2Element.querySelector('[type="submit"]').disabled = true; HTTP.AJAX('Newsletter', 'Subscribe', data) .Success(function(e){ windowModal({ Size: 'small', Content: form3Element, callback: function(){ location.reload(); } }); }).Error(function(e){ windowModal({ Size: 'small', Content: e.ErrorMessage }); isSendCode = false; form2Element.querySelector('[type="submit"]').disabled = false; }); }); }; var els = document.querySelectorAll('[data-newsletter-form]'); for (var i = 0; i !== els.length; i++) { createNewsletterForm(els[i]); } var val = location.hash.match(/^\#newsletter=([0-9a-zA-Z]{128})$/); if (val) { HTTP .AJAX('Newsletter', 'ActiveSubscribe', { code: val[1] }) .Finish(function(e){ location.hash = ''; if (e.ResponseText != 0) { var axel = Math.random() + ""; var a = Math.round(axel * 10000000000000); var iframe = document.createElement('iframe'); iframe.width = '1'; iframe.height = '1'; iframe.frameborder = '0'; iframe.style.display = 'none'; iframe.src = 'https://12392749.fls.doubleclick.net/activityi;src=12392749;type=form;cat=formnews;u1=[pageURL];u2=ms' + e.ResponseText + ';dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;npa=;gdpr=${GDPR};gdpr_consent=${GDPR_CONSENT_755};ord=' + a + '?'; document.body.appendChild(iframe); } windowModal({ Size: 'small', Content: translateValues['translate_107'] }); }); } if (location.hash == '#newsletter=2') { location.hash = ''; windowModal({ Size: 'small', Content: translateValues['translate_108'] }); } })(); (function(){ var headerRems = 10.5; var goToAnchor = function(anchor) { var el = document.querySelector('[data-anchor="' + anchor + '"]'); if (!el) { return; } var rect = el.getBoundingClientRect(); var scrollTop = Scroll.GetScrollTop(); var scrollto = rect.top + scrollTop - RemToPx(headerRems); RunAnimation({ begin: scrollTop, end: scrollto, duration: 400, callback: function(value){ Scroll.SetScrollTop(value); } }); }; var createAnchorLink = function(link, anchor) { link.addEventListener('click', function(){ goToAnchor(anchor); }); }; var match = location.hash.match(/^\#([\d\D]+)$/); if (match && match[1].trim()) { goToAnchor(match[1].trim()); } var links = document.links || document.querySelectorAll('a'); for (var i = 0; i !== links.length; i++) { var href = links[i].href.replace(location.origin, '').replace(location.pathname, ''); if (href[0] === '#') { createAnchorLink(links[i], href.substr(1)); } } })(); (function(){ var headerMenu = document.getElementById('headerMenu'); var headerMenuBlock = document.getElementById('headerMenuBlock'); var headerHamburgerBlock = document.getElementById('headerHamburgerBlock'); if (!headerMenu || !headerMenuBlock || !headerHamburgerBlock) { return; } var isOpen = false; var isMobile = function() { if (!isOpen || headerHamburgerBlock.offsetWidth == 0) { return false; } else { return true; } }; var closeMenu = function() { headerMenuBlock.removeClass('open'); headerHamburgerBlock.removeClass('active'); document.body.style.overflow = ''; isOpen = false; }; var createMenuLink = function(listElement) { var linkElement = listElement.children[0]; var childsElement = listElement.querySelector('.header-submenu-block'); var buttonElement = listElement.querySelector('.header-submenu-button'); if (linkElement.tagName.toLowerCase() == 'a') { linkElement.addEventListener('click', closeMenu); } if (!childsElement || !buttonElement) { return; } var clickEvent = function(e) { if (childsElement.containsClass('open')) { childsElement.removeClass('open'); buttonElement.removeClass('open'); } else { var activeOpen = headerMenu.querySelector('.header-submenu-block.open'); if (activeOpen) { headerMenu.querySelector('.header-submenu-button.open').removeClass('open'); activeOpen.removeClass('open'); } childsElement.addClass('open'); buttonElement.addClass('open'); } }; buttonElement.addEventListener('click', clickEvent); if (linkElement.tagName.toLowerCase() == 'span') { linkElement.addEventListener('click', clickEvent); } if (childsElement) { var links = childsElement.querySelectorAll('a'); for (var i = 0; i !== links.length; i++) { links[i].addEventListener('click', function(){ closeMenu(); }); } } }; for (var i = 0; i !== headerMenu.children.length; i++) { createMenuLink(headerMenu.children[i]); } headerHamburgerBlock.addEventListener('click', function(){ if (isOpen) { if (searchWindowOpened()) { return closeSerachWindow(); } headerMenuBlock.removeClass('open'); headerHamburgerBlock.removeClass('active'); document.body.style.overflow = ''; } else { headerMenuBlock.addClass('open'); headerHamburgerBlock.addClass('active'); document.body.style.overflow = 'hidden'; } isOpen = !isOpen; }); })(); (function(){ var publicKey = '6LfGK8IeAAAAAAeo95u11R5PM5BaUj04ZBfeTFj-'; var els = document.querySelectorAll('[data-recaptcha]'); if (els.length === 0) { return; } var createRecaptcha = function(el) { var buildObject = BuildHTML({ classes: 'recaptcha-block', content: [{ classes: 'recaptcha', variable: 'Box' }, { tag: 'input', classes: 'recaptcha-input', another: { name: 'recaptcha', required: true }, variable: 'Input' }] }, el); var verifyCallback = function(response) { buildObject.Variables.Input.value = response; }; grecaptcha.render(buildObject.Variables.Box, { sitekey: publicKey, callback: verifyCallback }); }; window.onLoadCallbackRecaptcha = function() { for (var i = 0; i !== els.length; i++) { createRecaptcha(els[i]); } }; var scriptElement = document.createElement('script'); scriptElement.src = 'https://www.google.com/recaptcha/api.js?onload=onLoadCallbackRecaptcha&render=explicit'; scriptElement.async = true; scriptElement.defer = true; document.body.appendChild(scriptElement); })(); (function(){ var createMap = function(el) { var mapElement = el.querySelector('[map-map]'); var map2Element = el.querySelector('[map-map-2]'); var boxesElement = el.querySelector('[map-boxes]'); var pointsElement = el.querySelector('[map-points]'); var selectElement = el.querySelector('[map-select]'); var selectTitleElement = el.querySelector('[map-select-title]'); var selectOptionsElement = el.querySelector('[map-select-options]'); var selectIsOpened = false; var clickDocument = function() { selectElement.removeClass('open'); document.removeEventListener('click', clickDocument); selectIsOpened = false; }; selectTitleElement.addEventListener('click', function(){ if (selectIsOpened) { selectElement.removeClass('open'); document.removeEventListener('click', clickDocument); } else { selectElement.addClass('open'); setTimeout(function(){ document.addEventListener('click', clickDocument); }, 16); } selectIsOpened = !selectIsOpened; }); var setRegion = function(index) { selectTitleElement.innerText = selectOptionsElement.querySelector('[data-value="' + index + '"]').innerText; var activeMap = mapElement.querySelector('.active'); if (activeMap) { activeMap.removeClass('active'); } var mapActive = mapElement.querySelector('[data-id="' + index + '"]'); if (mapActive) { mapActive.addClass('active'); } var activeBox = boxesElement.querySelector('.active'); if (activeBox) { activeBox.removeClass('active'); } var boxActive = boxesElement.querySelector('[data-id="' + index + '"]'); if (boxActive) { boxActive.addClass('active'); } var activePoint = pointsElement.querySelector('.active'); if (activePoint) { activePoint.removeClass('active'); } var pointActive = pointsElement.querySelector('[data-id="' + index + '"]'); if (pointActive) { pointActive.addClass('active'); } }; for (var i = 0; i !== selectOptionsElement.children.length; i++) { selectOptionsElement.children[i].addEventListener('click', function(e){ setRegion(parseInt(e.currentTarget.dataset.value)); }); } for (var i = 0; i !== map2Element.children.length; i++) { map2Element.children[i].addEventListener('click', function(e){ setRegion(parseInt(e.currentTarget.dataset.id)); }); map2Element.children[i].addEventListener('mouseenter', function(e){ mapElement.querySelector('[data-id="' + e.currentTarget.dataset.id + '"]').addClass('hover'); var hoverMarket = pointsElement.querySelector('[data-id="' + e.currentTarget.dataset.id + '"]'); if (hoverMarket) { hoverMarket.addClass('hover'); } }); map2Element.children[i].addEventListener('mouseleave', function(e){ mapElement.querySelector('[data-id="' + e.currentTarget.dataset.id + '"]').removeClass('hover'); var hoverMarket = pointsElement.querySelector('[data-id="' + e.currentTarget.dataset.id + '"]'); if (hoverMarket) { hoverMarket.removeClass('hover'); } }); } }; var els = document.querySelectorAll('[data-map-mini]'); for (var i = 0; i !== els.length; i++) { createMap(els[i]); } })(); (function(){ var headerSearch = document.getElementById('headerSearch'); var headerSearchButton = document.getElementById('headerSearchButton'); if (!headerSearchButton) { return; } var isOpened = false; window.closeSerachWindow = function() { if (isOpened) { headerSearch.removeClass('open'); headerSearchButton.removeClass('active'); } else { headerSearch.addClass('open'); headerSearchButton.addClass('active'); } isOpened = !isOpened; }; window.searchWindowOpened = function() { return isOpened; }; headerSearchButton.addEventListener('click', window.closeSerachWindow); })(); (function(){ var createSearch = function(el) { var isSend = false; var inputElement = el.querySelector('[name="value"]'); el.addEventListener('submit', function(e){ e.preventDefault(); if (isSend) { return false; } if (inputElement.value.trim() == '') { return false; } var submitElement = el.querySelector('[type="submit"]'); isSend = true; submitElement.disabled = true; HTTP.AJAX('Main', 'Search', { value: inputElement.value.trim() }).Success(function(e){ location.href = e.ResponseJSON.link; }); return false; }); }; var els = document.querySelectorAll('[data-search]'); for (var i = 0; i !== els.length; i++) { createSearch(els[i]); } })(); (function(){ var monthNames = [ translateValues['translate_109'], translateValues['translate_110'], translateValues['translate_111'], translateValues['translate_112'], translateValues['translate_113'], translateValues['translate_114'], translateValues['translate_115'], translateValues['translate_116'], translateValues['translate_117'], translateValues['translate_118'], translateValues['translate_119'], translateValues['translate_120'] ]; var getDayCount = function(year, month) { var date = new Date(year, month + 1, 0); return date.getDate(); }; var getFirstWeekday = function(year, month) { var date = new Date(year, month, 1); var weekday = date.getDay(); if (weekday === 0) { weekday = 7; } return weekday; }; var buildHeader = function(pickerObject) { pickerObject.month.innerText = monthNames[pickerObject.currentMonth] + ' ' + pickerObject.currentYear; }; var selectDay = function(pickerObject) { var activeElement = pickerObject.days.querySelector('.active'); if (activeElement) { activeElement.removeClass('active'); } if (pickerObject.currentYear !== pickerObject.selectedYear || pickerObject.currentMonth !== pickerObject.selectedMonth) { return; } activeElement = pickerObject.days.querySelector('[data-number="' + pickerObject.selectedDay + '"]'); if (activeElement) { activeElement.addClass('active'); } }; var selectDayEvent = function(day) { this.selectedYear = this.currentYear; this.selectedMonth = this.currentMonth; this.selectedDay = parseInt(day); selectDay(this); this.callback(); }; var buildDays = function(pickerObject) { var days = []; var lastCount = getDayCount(pickerObject.currentYear, pickerObject.currentMonth - 1); var firstSpace = getFirstWeekday(pickerObject.currentYear, pickerObject.currentMonth) - 1; var thisCount = getDayCount(pickerObject.currentYear, pickerObject.currentMonth); var lastSpace = 42 - thisCount - firstSpace; if (firstSpace !== 0) { for (var i = 0; i !== firstSpace; i++) { days.push({ tag: 'li', classes: 'disabled', text: (lastCount - (firstSpace - i) + 1).toString() }); } } var day = undefined; for (var i = 0; i !== thisCount; i++) { day = (i + 1).toString(); days.push({ tag: 'li', data: { number: day }, text: day, event: { click: selectDayEvent.bind(pickerObject, day) } }); } if (lastSpace !== 0) { for (var i = 0; i !== lastSpace; i++) { days.push({ tag: 'li', classes: 'disabled', text: (i + 1).toString() }); } } pickerObject.days.innerHTML = ''; BuildHTML(days, pickerObject.days); buildHeader(pickerObject); selectDay(pickerObject); }; var createPicker = function(el) { var currentDate = new Date(); var isOpened = false; var pickerObject = { days: el.querySelector('[picker-days]'), input: el.querySelector('[picker-input]'), block: el.querySelector('[picker-block]'), left: el.querySelector('[picker-left]'), right: el.querySelector('[picker-right]'), month: el.querySelector('[picker-month]'), callback: function(){ pickerObject.input.value = pickerObject.selectedDay.getFormat(2) + '.' + (pickerObject.selectedMonth + 1).getFormat(2) + '.' + pickerObject.selectedYear; if ('setValue' in pickerObject.input) { pickerObject.input.setValue(pickerObject.input.value); } } }; pickerObject.selectedYear = pickerObject.currentYear = currentDate.getFullYear(); pickerObject.selectedMonth = pickerObject.currentMonth = currentDate.getMonth(); pickerObject.selectedDay = pickerObject.currentDay = currentDate.getDate(); buildDays(pickerObject); pickerObject.left.addEventListener('click', function(){ pickerObject.currentMonth--; if (pickerObject.currentMonth === -1) { pickerObject.currentMonth = 11; pickerObject.currentYear--; } buildDays(pickerObject); }); pickerObject.right.addEventListener('click', function(){ pickerObject.currentMonth++; if (pickerObject.currentMonth === 12) { pickerObject.currentMonth = 0; pickerObject.currentYear++; } buildDays(pickerObject); }); var closeEvent = function(e) { var target = e.target; while (target) { if (target === el) { return; } target = target.parentNode; } pickerObject.block.removeClass('open'); pickerObject.block.parentNode.removeClass('open'); isOpened = false; document.removeEventListener('click', closeEvent); }; pickerObject.input.addEventListener('focus', function(){ if (!isOpened) { pickerObject.block.addClass('open'); pickerObject.block.parentNode.addClass('open'); isOpened = true; document.addEventListener('click', closeEvent); } }); }; var els = document.querySelectorAll('[data-picker]'); for (var i = 0; i !== els.length; i++) { createPicker(els[i]); } })(); (function(){ var createForm = function(formElement) { var isSend = false; var submitButton = formElement.querySelector('[type="submit"]'); formElement.addEventListener('submit', function(e){ e.preventDefault(); if (isSend) { return; } submitButton.disabled = isSend = true; var data = formElement.getData(); data.id = formElement.dataset.form; HTTP.AJAX('Main', 'SendForm', data) .Success(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_121'], callback: function(){ location.reload(); } }); }) .Error(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_122'] }); }) .Finish(function(){ submitButton.disabled = isSend = false; }); return false; }); }; var els = document.querySelectorAll('[data-form]'); for (var i = 0; i !== els.length; i++) { createForm(els[i]); } })(); (function(){ var createForm = function(formElement) { var isSend = false; var submitButton = formElement.querySelector('[type="submit"]'); formElement.addEventListener('submit', function(e){ e.preventDefault(); if (isSend) { return; } submitButton.disabled = isSend = true; var data = formElement.getData(); data.id = formElement.dataset['form-3']; HTTP.AJAX('Main', 'SendForm3', data) .Success(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_121'], callback: function(){ location.reload(); } }); }) .Error(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_122'] }); }) .Finish(function(){ submitButton.disabled = isSend = false; }); return false; }); }; var els = document.querySelectorAll('[data-form-3]'); for (var i = 0; i !== els.length; i++) { createForm(els[i]); } })(); (function(){ var createForm = function(formElement) { var isSend = false; var submitButton = formElement.querySelector('[type="submit"]'); formElement.addEventListener('submit', function(e){ e.preventDefault(); if (isSend) { return; } submitButton.disabled = isSend = true; var data = formElement.getData(); data.id = formElement.dataset['services']; HTTP.AJAX('Main', 'SendServices', data) .Success(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_121'], callback: function(){ location.reload(); } }); }) .Error(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_122'] }); }) .Finish(function(){ submitButton.disabled = isSend = false; }); return false; }); }; var els = document.querySelectorAll('[data-services]'); for (var i = 0; i !== els.length; i++) { createForm(els[i]); } })(); (function(){ var createForm = function(formElement) { var isSend = false; var submitButton = formElement.querySelector('[type="submit"]'); formElement.addEventListener('submit', function(e){ e.preventDefault(); if (isSend) { return; } submitButton.disabled = isSend = true; var data = formElement.getData(); data.id = formElement.dataset['partnerships']; HTTP.AJAX('Main', 'SendPartnerships', data) .Success(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_121'], callback: function(){ location.reload(); } }); }) .Error(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_122'] }); }) .Finish(function(){ submitButton.disabled = isSend = false; }); return false; }); }; var els = document.querySelectorAll('[data-partnerships]'); for (var i = 0; i !== els.length; i++) { createForm(els[i]); } })(); (function(){ var createForm = function(formElement) { var isSend = false; var submitButton = formElement.querySelector('[type="submit"]'); formElement.addEventListener('submit', function(e){ e.preventDefault(); if (isSend) { return; } submitButton.disabled = isSend = true; var data = formElement.getData(); data.id = formElement.dataset['contact']; HTTP.AJAX('Main', 'SendContact', data) .Success(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_121'], callback: function(){ location.reload(); } }); }) .Error(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_122'] }); }) .Finish(function(){ submitButton.disabled = isSend = false; }); return false; }); }; var els = document.querySelectorAll('[data-contact]'); for (var i = 0; i !== els.length; i++) { createForm(els[i]); } })(); (function(){ var createForm = function(formElement) { var isSend = false; var submitButton = formElement.querySelector('[type="submit"]'); formElement.addEventListener('submit', function(e){ e.preventDefault(); if (isSend) { return; } submitButton.disabled = isSend = true; var data = formElement.getData(); data.id = formElement.dataset.journalist; HTTP.AJAX('Main', 'SendJournalist', data) .Success(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_123'], callback: function(){ location.reload(); } }); }) .Error(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_122'] }); }) .Finish(function(){ submitButton.disabled = isSend = false; }); return false; }); }; var els = document.querySelectorAll('[data-journalist]'); for (var i = 0; i !== els.length; i++) { createForm(els[i]); } var val = location.hash.match(/^\#dziennikarzy=([0-9a-zA-Z]{128})$/); if (val) { HTTP .AJAX('Main', 'ActiveJournalist', { code: val[1] }) .Finish(function(){ location.hash = ''; windowModal({ Size: 'small', Content: translateValues['translate_124'] }); }); } })(); (function(){ var createForm = function(el) { var firmElement = el.querySelectorAll('[form-firm] input'); var nameiElement = el.querySelector('[form-namei]'); var firmiElement = el.querySelector('[form-firmi]'); var typeElement = el.querySelector('[form-type]'); var typeCheckboxesElement = el.querySelectorAll('[form-type-checkboxes] input'); var firmVal = 0; var changeFirmInput = function(e) { if (e.currentTarget.value == 0) { if (firmVal != 0) { nameiElement.querySelector('input').required = true; firmiElement.querySelector('input').required = false; firmiElement.addClass('close'); firmVal = 0; } } else { if (firmVal != 1) { nameiElement.querySelector('input').required = false; firmiElement.querySelector('input').required = true; firmiElement.removeClass('close'); firmVal = 1; } } }; for (var i = 0; i !== firmElement.length; i++) { firmElement[i].addEventListener('change', changeFirmInput); } typeElement.addEventListener('change', function(){console.log(typeCheckboxesElement); for (var i = 0; i !== typeCheckboxesElement.length; i++) { if (typeCheckboxesElement[i].name === 'rodzaj_transakcji_a[]') { if (typeElement.value == 'STACJ') {  typeCheckboxesElement[i].parentNode.parentNode.removeClass('close'); } else if (!typeCheckboxesElement[i].parentNode.parentNode.containsClass('close')) {  typeCheckboxesElement[i].parentNode.parentNode.addClass('close'); } } else if (typeCheckboxesElement[i].name === 'rodzaj_transakcji_bc[]') { if (typeElement.value == 'DZIAL') {  typeCheckboxesElement[i].parentNode.parentNode.removeClass('close'); } else if (!typeCheckboxesElement[i].parentNode.parentNode.containsClass('close')) {  typeCheckboxesElement[i].parentNode.parentNode.addClass('close'); } } } }); var isSend = false; var submitButton = el.querySelector('[type="submit"]'); el.addEventListener('submit', function(e){ e.preventDefault(); if (isSend) { return; } submitButton.disabled = isSend = true; var data = el.getData(); data.id = el.dataset['form-2']; HTTP.AJAX('Main', 'SendForm2', data) .Success(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_121'], callback: function(){ location.reload(); } }); }) .Error(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_122'] }); }) .Finish(function(){ submitButton.disabled = isSend = false; }); return false; }); }; var els = document.querySelectorAll('[data-form-2]'); for (var i = 0; i !== els.length; i++) { createForm(els[i]); } })();  (function(){ var headerRems = 7.2; var scrollDown = document.getElementById('scrollDown'); if (!scrollDown) { return; } var isScroll = false; scrollDown.addEventListener('click', function(){ if (isScroll) { return; } isScroll = true; var scrollTop = Scroll.GetScrollTop(); RunAnimation({ begin: scrollTop, end: scrollTop + WindowHeight - RemToPx(headerRems), duration: 400, callback: function(value){ Scroll.SetScrollTop(value); }, callbackEnd: function(){ isScroll = false; } }); }); })(); (function(){ var searchButton = document.getElementById('mobile-search-button'); var searchElement = document.getElementById('mobile-search'); var searchClose = document.getElementById('search-close'); if (!searchElement) { return; } var isOpened = false; searchButton.addEventListener('click', function(){ if (isOpened) { return; } isOpened = true; searchElement.addClass('open'); }); searchClose.addEventListener('click', function(){ if (!isOpened) { return; } isOpened = false; searchElement.removeClass('open'); }); })(); (function(){ var element = document.getElementById('search-element'); var open = document.getElementById('search-open'); var close = document.getElementById('search-close'); if (!open || !close) { return; } var isOpened = false; open.addEventListener('click', function(){ if (isOpened) { return; } isOpened = true; element.addClass('open'); }); close.addEventListener('click', function(){ if (!isOpened) { return; } isOpened = false; element.removeClass('open'); }); })(); (function(){ var createTabs = function(el) { var boxes = el.querySelectorAll('[tabs-box]'); for (var i = 0; i !== boxes.length; i++) { (function(box){ var openElement = box.querySelector('[tabs-open]'); var closeElement = box.querySelector('[tabs-close]'); var isOpened = false; openElement.addEventListener('click', function(){ if (isOpened) { return; } box.addClass('open'); isOpened = true; }); closeElement.addEventListener('click', function(){ if (!isOpened) { return; } box.removeClass('open'); isOpened = false; }); })(boxes[i]); } }; var tabsElements = document.querySelectorAll('[data-tabs]'); for (var i = 0; i !== tabsElements.length; i++) { createTabs(tabsElements[i]); } })(); (function(){ var createSelect = function(el) { var isOpened = false; var labelBlockElement = el.querySelector('[select-label-block]'); var labelElement = el.querySelector('[select-label]'); var listElement = el.querySelector('[select-list]'); var value = '0'; var changeFunction = undefined; labelBlockElement.addEventListener('click', function(){ if (isOpened) { el.removeClass('open'); } else { el.addClass('open'); } isOpened = !isOpened; }); if (listElement) { for (var i = 0; i !== listElement.children.length; i++) { (function(child){ child.addEventListener('click', function(){ labelElement.innerHTML = child.innerHTML; var activeElement = listElement.querySelector('.active'); if (activeElement) { activeElement.removeClass('active'); } child.addClass('active'); value = child.dataset.value; if (typeof changeFunction === 'function') { changeFunction({ name: el.dataset.select, value: value }); } el.close(); }); })(listElement.children[i]); } } el.close = function() { if (isOpened) { el.removeClass('open'); isOpened = false; } }; el.setValue = function(v) { value = v; var child = null; for (var i = 0; i !== listElement.children.length; i++) { if (listElement.children[i].dataset.value == v) { child = listElement.children[i]; break; } } if (child === null) { return; } labelElement.innerHTML = child.innerHTML; var activeElement = listElement.querySelector('.active'); if (activeElement) { activeElement.removeClass('active'); } child.addClass('active'); }; el.setValue2 = function(ob) { value = ob.value; labelElement.innerHTML = ob.label; if (typeof changeFunction === 'function') { changeFunction({ name: el.dataset.select, value: value }); } }; el.getValue = function() { return value; }; el.changeEvent = function(fun) { changeFunction = fun; }; }; var els = document.querySelectorAll('[data-select]'); for (var i = 0; i !== els.length; i++) { createSelect(els[i]); } })(); (function(){ var createLink = function(el) { var img = el.querySelector('[data-image]') || el; el.addEventListener('mouseenter', function(){ if (WindowWidth < 991) { return; } img.style.backgroundImage = 'url(' + el.dataset.hover + ')'; }); el.addEventListener('mouseleave', function(){ if (WindowWidth < 991) { return; } img.style.backgroundImage = 'url(' + el.dataset.imageLink + ')'; }); }; var els = document.querySelectorAll('[data-image-link]'); for (var i = 0; i !== els.length; i++) { createLink(els[i]); } })(); (function(){ var createAbout = function(el) { var yearsElement = el.querySelector('[about-years]'); var boxElement = el.querySelector('[about-box]'); yearsElement.addEventListener('click', function(e){ var target = e.target; while (true) { if (!('parentNode' in target) || !target.parentNode) { return; } if (target.parentNode === yearsElement) { break; } target = target.parentNode; } var index = yearsElement.children.indexOf(target); var activeElement1 = yearsElement.querySelector('.active'); var activeElement2 = boxElement.querySelector('.active'); if (activeElement1) { activeElement1.removeClass('active'); } if (activeElement2) { activeElement2.removeClass('active'); } yearsElement.children[index].addClass('active'); boxElement.children[index].addClass('active'); }); }; var els = document.querySelectorAll('[data-about]'); for (var i = 0; i !== els.length; i++) { createAbout(els[i]); } })(); (function(){ var createMap = function(el) { var selectElement = el.querySelector('[map-select]'); var mapElement = el.querySelector('[map-map]'); var infoElement = el.querySelector('[map-info]'); var setRegion = function(value) { for (var i = 0; i !== mapElement.children.length; i++) { if (mapElement.children[i].dataset.value == value) { if (!mapElement.children[i].containsClass('active')) { mapElement.children[i].addClass('active'); } } else { if (mapElement.children[i].containsClass('active')) { mapElement.children[i].removeClass('active'); } } } for (var i = 0; i !== infoElement.children.length; i++) { if (infoElement.children[i].dataset.value == value) { if (!infoElement.children[i].containsClass('active')) { infoElement.children[i].addClass('active'); } } else { if (infoElement.children[i].containsClass('active')) { infoElement.children[i].removeClass('active'); } } } }; selectElement.changeEvent(function(e){ setRegion(e.value); }); for (var i = 0; i !== mapElement.children.length; i++) { (function(child){ child.addEventListener('click', function(e){ setRegion(child.dataset.value); selectElement.setValue(child.dataset.value); }); })(mapElement.children[i]); } }; var els = document.querySelectorAll('[data-map]'); for (var i = 0; i !== els.length; i++) { createMap(els[i]); } })(); (function(){ var createReport = function(el) { var filters = {}; var selects = el.querySelectorAll('[data-select]'); var clearButton = el.querySelector('[report-clear]'); var rowsElement = el.querySelector('[report-rows]'); var rows = []; for (var i = 0; i !== rowsElement.children.length; i++) { var fils = {}; rowsElement .children[i] .dataset .filters .split(',') .map(function(item){ var items = item.split(':'); fils[items[0]] = items[1]; }); rows.push({ element: rowsElement.children[i], filters: fils }); } var reloadFilters = function() { for (var i = 0; i !== rows.length; i++) { if (rows[i].element.containsClass('hidden')) { rows[i].element.removeClass('hidden'); } for (var name in filters) { if (rows[i].filters[name] != filters[name]) { rows[i].element.addClass('hidden'); break; } } } }; clearButton.addEventListener('click', function(){ for (var i = 0; i !== selects.length; i++) { selects[i].setValue('0'); } for (var name in filters) { delete filters[name]; } reloadFilters(); }); for (var i = 0; i !== selects.length; i++) { selects[i].changeEvent(function(e){ if (e.value == '0') { delete filters[e.name]; } else { filters[e.name] = e.value; } reloadFilters(); }); } }; var els = document.querySelectorAll('[data-report]'); for (var i = 0; i !== els.length; i++) { createReport(els[i]); } })(); (function(){ var openClass = 'open'; var errorClass = 'error'; var htmlObject = { classes: 'window-block', content: { classes: 'window', content: [{ classes: 'window-header', content: [{ classes: 'window-title', variable: 'Title' }, { classes: 'window-close', variable: 'Close' }] }, { classes: 'window-body', content: { classes: 'window-box', content: [{ classes: 'window-subtitle', variable: 'SubTitle' }, { classes: 'window-info', variable: 'Info' }, { classes: 'window-link-block', content: { tag: 'button', classes: 'window-link', variable: 'Button' } }] } }] } };  window.createWindow = function(config) { var buildObject = BuildHTML(htmlObject, document.body); if ('title' in config) { buildObject.Variables.Title.innerText = config.title; } if ('info' in config) { buildObject.Variables.Info.innerHTML = config.info; } if ('error' in config && config.error) { buildObject.Element.addClass(errorClass); } if ('subtitle' in config) { buildObject.Variables.SubTitle.innerText = config.subtitle; } else { buildObject.Variables.SubTitle.style.display = 'none'; } if ('button' in config) { buildObject.Variables.Button.innerText = config.button; } else { buildObject.Variables.Button.parentNode.style.display = 'none'; } var closeWindow = function() { buildObject.Element.removeClass(openClass); if ('callback' in config && typeof config.callback === 'function') { config.callback(); } setTimeout(function(){ buildObject.Element.removeElement(); }, 2000); }; buildObject.Variables.Close.addEventListener('click', closeWindow); buildObject.Variables.Button.addEventListener('click', closeWindow); setTimeout(function(){ buildObject.Element.addClass(openClass); }, 16); }; })(); (function(){ var createArchive = function(el) { var data = { date: '0', type: '0' }; var selects = el.querySelectorAll('[data-select]'); var valueElement = el.querySelector('[archive-value]'); var valueBlockElement = el.querySelector('[archive-value-block]'); for (var i = 0; i !== selects.length; i++) { selects[i].changeEvent(function(e){ data[e.name] = e.value; if (data.date == '0' || data.type == '0') { return; } HTTP.AJAX('Main', 'Archive', data) .Success(function(e){ if (!valueBlockElement.containsClass('open')) { valueBlockElement.addClass('open'); } valueElement.innerText = e.ResponseJSON.value; }); }); } }; var els = document.querySelectorAll('[data-archive]'); for (var i = 0; i !== els.length; i++) { createArchive(els[i]); } })(); (function(){ var createAccepts = function(el) { var accepts = el.querySelectorAll('[accept-input]'); var acceptAll = el.querySelector('[accept-all]'); if (!acceptAll) { return; } acceptAll.addEventListener('change', function(){ for (var i = 0; i !== accepts.length; i++) { accepts[i].checked = acceptAll.checked; } }); var getAccept = function() { for (var i = 0; i !== accepts.length; i++) { if (!accepts[i].checked) { return false; } } return true; }; for (var i = 0; i !== accepts.length; i++) { accepts[i].addEventListener('change', function(e){ acceptAll.checked = getAccept(); }); } }; var els = document.querySelectorAll('[data-accept]'); for (var i = 0; i !== els.length; i++) { createAccepts(els[i]); } })(); var Cookies = (function(){ return { set: function(name, value, time) { var expires = ""; if (time) { var date = new Date(); date.setTime(date.getTime() + time); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + (value || "") + expires + "; path=/"; }, get: function(name) { var match = document.cookie.match(new RegExp(name + '=([^;]+)')); if (!match) { return null; } else { return match[1]; } } }; })(); (function(){ var cookiesAccept = document.getElementById('cookiesAccept'); var cookiesAcceptClick = document.getElementById('cookiesAcceptClick'); if (cookiesAcceptClick) { cookiesAcceptClick.addEventListener('click', function(){ Cookies.set('cookies_accept', 1); cookiesAccept.removeElement(); }); } })();  (function(){ var createStation = function(el) { var buttons = el.querySelectorAll('[mstations-button]'); var slides = el.querySelectorAll('[mstations-slide]'); var lastIntervalID = undefined; window.addEventListener('onwheel', function(){ clearInterval(lastIntervalID); }); for (var i = 0; i !== buttons.length; i++) { (function(button, slide){ button.addEventListener('click', function(){ clearInterval(lastIntervalID); for (var i = 0; i !== slides.length; i++) { buttons[i].removeClass('active'); slides[i].removeClass('active'); } button.addClass('active'); slide.addClass('active'); var rect = el.getBoundingClientRect(); var scrollTop = Scroll.GetScrollTop(); var scrollto = rect.top + scrollTop - RemToPx(10.5); lastIntervalID = RunAnimation({ begin: scrollTop, end: scrollto, duration: 400, callback: function(value){ Scroll.SetScrollTop(value); } }); }); })(buttons[i], slides[i]); } }; var els = document.querySelectorAll('[data-mstations]'); for (var i = 0; i !== els.length; i++) { createStation(els[i]); } })(); (function(){ var createFilter = function(el) { var titleElement = el.querySelector('[map-filter-title]'); titleElement.addEventListener('click', function(){ if (el.containsClass('open')) { el.removeClass('open'); } else { el.addClass('open'); } }); }; var els = document.querySelectorAll('[data-map-filter]'); for (var i = 0; i !== els.length; i++) { createFilter(els[i]); } })(); (function(){ var mapBlock = document.getElementById('map'); if (!mapBlock) { return; } var mapElement = undefined; var mapMarkers = []; var paginationCount = 5; var paginationPage = 0; var paginationElements = []; var paginationStatus = 'idle';  var paginationDelay = 200; var paginationDuration = 500; var typeOn = []; var attributesOn = []; var markersOn = []; var mapLeftElement = mapBlock.querySelector('[map-left]'); var mapRightElement = mapBlock.querySelector('[map-right]'); var isMobileOpened = false; var mapBoxHamburger = mapBlock.querySelector('[map-box-hamburger]'); var mapBoxSubmit = mapBlock.querySelector('[map-box-submit]'); var mapSearchInput = mapBlock.querySelector('[map-search]'); var mapSearchButton = mapBlock.querySelector('[map-search-button]'); var mapNearElement = mapBlock.querySelector('[map-near]'); var containerElement = mapBlock.querySelector('[map-container]'); var clearElement = mapBlock.querySelector('[map-clear]'); var filtersCountElement = mapBlock.querySelector('[map-filters-count]'); var listBlockElement = mapBlock.querySelector('[map-list]'); var listCountElement = mapBlock.querySelector('[map-list-count]'); var listElement = mapBlock.querySelector('[map-list-element]'); var navBlockElement = mapBlock.querySelector('[map-nav-block]'); var navElement = mapBlock.querySelector('[map-nav]'); var navLeftElement = mapBlock.querySelector('[map-nav-left]'); var navRightElement = mapBlock.querySelector('[map-nav-right]'); var typeCheckboxes = mapBlock.querySelectorAll('[name="type"]'); var attributeCheckboxes = mapBlock.querySelectorAll('[name="attribute"]'); var wstationBlock = document.getElementById('wstation'); var wstationClose = wstationBlock.querySelector('[wstation-close]'); var wstationTitle = wstationBlock.querySelector('[wstation-title]'); var wstationSubtitle = wstationBlock.querySelector('[wstation-subtitle]'); var wstationLink = wstationBlock.querySelector('[wstation-link]'); var wstationLinks = wstationBlock.querySelector('[wstation-links]'); var wstationInfos = wstationBlock.querySelector('[wstation-infos]'); var wstationAttributes = wstationBlock.querySelector('[wstation-attributes]'); var center = { lat: 52.0688122, lng: 19.479744400000072, zoom: 7 }; listElement.removeElement(); var searchAccuracyDiff = 1500; var searchPoint = { lat: center.lat, lng: center.lng, accuracy: 999999999 }; var getPointDistance = function(mp1, mp2) { var R = 3958.8; var rlat1 = mp1.lat * (Math.PI / 180); var rlat2 = mp2.lat * (Math.PI / 180); var difflat = rlat2 - rlat1; var difflon = (mp2.lng - mp1.lng) * (Math.PI / 180); var d = 2 * R * Math.asin(Math.sqrt(Math.sin(difflat / 2) * Math.sin(difflat / 2) + Math.cos(rlat1) * Math.cos(rlat2) * Math.sin(difflon / 2) * Math.sin(difflon / 2))); return d * 1000; }; var setSearchPosition = function(lat, lng, accuracy) { searchPoint.lat = lat; searchPoint.lng = lng; searchPoint.accuracy = accuracy; reloadMarkers(); var bounds = new google.maps.LatLngBounds(); for (var i = 0; i !== markersOn.length; i++) { bounds.extend(markersOn[i].getPosition()); } mapElement.fitBounds(bounds); mapElement.setZoom(Math.min(mapElement.getZoom() - 1, 16)); }; if ('geolocation' in navigator && 'permissions' in navigator) { navigator.permissions.query({ name: 'geolocation' }).then(function(permission){ if (permission.state === 'granted' || permission.state === 'prompt') { mapNearElement.parentNode.addClass('open'); } }); } var checkScroll = function() { var rect = mapLeftElement.getBoundingClientRect(); var top = Math.max(-(rect.top - RemToPx(10.5)), 0); var paddingTop = parseFloat(mapRightElement.style.paddingTop); if (paddingTop.isNaN()) { paddingTop = 0; } mapRightElement.style.paddingTop = Math.min(top, mapLeftElement.offsetHeight - (mapRightElement.offsetHeight - paddingTop)) + 'px'; }; checkScroll(); window.addEventListener('scroll', checkScroll); var paginationElementShowing = []; var showElementEvent = function(e) { if (e.target !== e.currentTarget || e.propertyName !== 'opacity') { return; } e.currentTarget.removeEventListener('transitionend', showElementEvent); paginationElementShowing.splice(paginationElementShowing.indexOf(e.currentTarget), 1); if (paginationElementShowing.length === 0) { paginationStatus = 'idle'; } }; var startShowElement = function(paginationElement, delayIndex) { paginationElementShowing.push(paginationElement); paginationElement.style.opacity = '0'; paginationElement.style.display = ''; paginationElement.style.transition = (paginationDuration / 1000) + 's opacity ease-in-out ' + ((delayIndex * paginationDelay) / 1000) + 's'; paginationElement.addEventListener('transitionend', showElementEvent); setTimeout(function(){ paginationElement.style.opacity = '1'; }, 16); }; var showPaginationPage = function() { var delayIndex = 0; var startIndex = paginationPage * paginationCount; var stationCount = Math.min(paginationElements.length - startIndex, paginationCount); if (stationCount === 0) { paginationStatus = 'idle'; } else { for (var i = 0; i !== stationCount; i++) { startShowElement(paginationElements[i + startIndex], delayIndex++); } paginationStatus = 'show'; } }; var stopPaginationPage = function() { for (var i = 0; i !== paginationElementShowing.length; i++) { paginationElementShowing[i].removeEventListener('transitionend', showElementEvent); } paginationElementShowing.length = 0; }; var paginationElementHiding = []; var paginationElementHidingCheck = []; var hideElementEvent = function(e) { if (e.target !== e.currentTarget || e.propertyName !== 'opacity') { return; } e.currentTarget.removeEventListener('transitionend', hideElementEvent); paginationElementHiding.splice(paginationElementHiding.indexOf(e.currentTarget), 1); paginationElementHidingCheck.push(e.currentTarget); if (paginationElementHiding.length === 0) { while (paginationElementHidingCheck.length) { paginationElementHidingCheck.pop().style.display = 'none'; } showPaginationPage(); } }; var startHideElement = function(paginationElement, delayIndex) { if (getComputedStyle(paginationElement).opacity == 0) { paginationElementHidingCheck.push(paginationElement); } else { paginationElementHiding.push(paginationElement); paginationElement.style.transition = (paginationDuration / 1000) + 's opacity ease-in-out ' + ((delayIndex * paginationDelay) / 1000) + 's'; paginationElement.addEventListener('transitionend', hideElementEvent); setTimeout(function(){ paginationElement.style.opacity = '0'; }, 16); } }; var hidePaginationPage = function() { var delayIndex = 0; for (var i = 0; i !== mapMarkers.length; i++) { if (mapMarkers[i].listElement.style.display !== 'none' && paginationElementHiding.indexOf(mapMarkers[i].listElement) === -1) { startHideElement(mapMarkers[i].listElement, delayIndex++); } } if (paginationElementHiding.length === 0) { while (paginationElementHidingCheck.length) { paginationElementHidingCheck.pop().style.display = 'none'; } showPaginationPage(); } else { paginationStatus = 'hide'; } }; var setPaginationPage = function(page) { paginationPage = page; if (paginationStatus === 'idle') { hidePaginationPage(); } else if (paginationStatus === 'show') { stopPaginationPage(); hidePaginationPage(); } }; var createNavElement = function(classes, text, clickEvent) { var buildObject = { classes: classes, text: text }; if (typeof clickEvent === 'function') { buildObject.event = { click: clickEvent }; } BuildHTML(buildObject, navElement); }; var getNavEvent = function(index) { return function() { setPaginationPage(index); reloadNavigation(); }; }; var reloadNavigation = function() { var pageCount = Math.ceil(paginationElements.length / paginationCount); if (pageCount < 2) { return navBlockElement.style.display = 'none'; } else { navBlockElement.style.display = ''; } navElement.innerHTML = ''; if (paginationPage > 1) { createNavElement('map-list-nav-page', '1', getNavEvent(0)); } if (paginationPage > 2) { createNavElement('map-list-nav-dots', '...'); } if (paginationPage !== 0) { createNavElement('map-list-nav-page', paginationPage, getNavEvent(paginationPage - 1)); } createNavElement('map-list-nav-page active', paginationPage + 1, getNavEvent(paginationPage)); if (paginationPage !== pageCount - 1) { createNavElement('map-list-nav-page', paginationPage + 2, getNavEvent(paginationPage + 1)); } if (paginationPage < pageCount - 3) { createNavElement('map-list-nav-dots', '...'); } if (paginationPage < pageCount - 2) { createNavElement('map-list-nav-page', pageCount, getNavEvent(pageCount - 1)); } }; navLeftElement.addEventListener('click', function(){ if (paginationPage > 0) { setPaginationPage(paginationPage - 1); reloadNavigation(); } }); navRightElement.addEventListener('click', function(){ if (paginationPage < Math.ceil(paginationElements.length / paginationCount) - 1) { setPaginationPage(paginationPage + 1); reloadNavigation(); } }); var reloadPagination = function() { setPaginationPage(0); reloadNavigation(); }; var checkMarker = function(data) { var typeValid = false; for (var i = 0; i !== typeOn.length; i++) { if (data.types.indexOf(typeOn[i].toString()) !== -1 || data.types.indexOf(parseInt(typeOn[i])) !== -1) { typeValid = true; } } if (!typeValid) { return false; } if (attributesOn.length) { for (var i = 0; i !== attributesOn.length; i++) { if (data.attributes.indexOf(attributesOn[i]) === -1) { return false; } } } return true; }; var reloadMarkers = function() { paginationElements.length = 0; markersOn.length = 0; var lastMarkers = []; for (var i = 0; i !== mapMarkers.length; i++) { if (checkMarker(mapMarkers[i].data)) { var distance = getPointDistance(searchPoint, { lat: parseFloat(mapMarkers[i].data.lat), lng: parseFloat(mapMarkers[i].data.lng) }); if (distance <= searchPoint.accuracy) { mapMarkers[i].setMap(mapElement); paginationElements.push(mapMarkers[i].listElement); markersOn.push(mapMarkers[i]); } else { mapMarkers[i].distance = distance; mapMarkers[i].setMap(mapElement);  lastMarkers.push(mapMarkers[i]); } } else { mapMarkers[i].setMap(null); } } if (paginationElements.length === 0 && lastMarkers.length !== 0) { var minDistance = 0; var minMarker = null; for (var i = 0; i !== lastMarkers.length; i++) { if (i === 0 || lastMarkers[i].distance < minDistance) { minDistance = lastMarkers[i].distance; minMarker = lastMarkers[i]; } } minMarker.setMap(mapElement); paginationElements.push(minMarker.listElement); markersOn.push(minMarker); for (var i = 0; i !== lastMarkers.length; i++) { if (minMarker === lastMarkers[i]) { continue; } if (lastMarkers[i].distance - minDistance < searchAccuracyDiff) { lastMarkers[i].setMap(mapElement); paginationElements.push(lastMarkers[i].listElement); markersOn.push(lastMarkers[i]); } } } reloadPagination(); filtersCountElement.innerText = typeOn.length + attributesOn.length; listCountElement.innerText = paginationElements.length; }; var changeTypeEvent = function() { var index = typeOn.indexOf(this.value); if (this.checked) { if (index === -1) { typeOn.push(this.value); } } else { if (index !== -1) { typeOn.splice(index, 1); } } reloadMarkers(); }; var changeAttributeEvent = function() { var value = parseInt(this.value); var index = attributesOn.indexOf(value); if (this.checked) { if (index === -1) { attributesOn.push(value); } } else { if (index !== -1) { attributesOn.splice(index, 1); } } reloadMarkers(); }; var clearFilters = function(fl) { typeOn.length = 0; attributesOn.length = 0; for (var i = 0; i !== typeCheckboxes.length; i++) { if (!fl) { typeCheckboxes[i].checked = true; } if (typeCheckboxes[i].checked) { typeOn.push(typeCheckboxes[i].value); } typeCheckboxes[i].onchange = changeTypeEvent.bind(typeCheckboxes[i]); } for (var i = 0; i !== attributeCheckboxes.length; i++) { attributeCheckboxes[i].checked = false; attributeCheckboxes[i].onchange = changeAttributeEvent.bind(attributeCheckboxes[i]); } filtersCountElement.innerText = typeOn.length; }; clearFilters(true); clearElement.addEventListener('click', function(){ clearFilters(); reloadMarkers(); }); var appendListAttributes = function(data, attributes, parentNode) { var attributeEls = {}; var attributeObject = []; for (var i = 0; i !== attributes.length; i++) { if (data.attributes.indexOf(attributes[i].id) !== -1) { if (!(attributes[i].id_group in attributeEls)) { attributeEls[attributes[i].id_group] = BuildHTML({ classes: 'map-station-attributes', content: [{ tag: 'h4', classes: 'map-station-attributes-title', text: attributes[i].group_label }, { classes: 'map-station-attributes-box', variable: 'Childs' }] }, parentNode); attributeObject.push(attributeEls[attributes[i].id_group].attributeObject = { label: attributes[i].group_label, childs: [] }); } var h5Element = document.createElement('h5'); h5Element.className = 'map-station-attribute'; h5Element.innerText = attributes[i].label; attributeEls[attributes[i].id_group].attributeObject.childs.push(attributes[i]); attributeEls[attributes[i].id_group].Variables.Childs.appendChild(h5Element); } } data.attributeObject = attributeObject; }; wstationClose.addEventListener('click', function(){ wstationBlock.style.opacity = '0'; document.body.style.overflow = ''; setTimeout(function(){ wstationBlock.style.display = 'none'; }, 500); }); var openMoreWindow = function() { wstationTitle.innerText = this.title; wstationSubtitle.innerText = this.address + ', ' + this.zipcode + ' ' + this.city; wstationLink.href = 'https://www.google.com/maps/dir/Current+Location/' + this.lat + ',' + this.lng; var email = this.email.trim(); var phone = this.phone.trim(); if (!email && !phone) { wstationLinks.style.display = 'none'; } else { wstationLinks.innerHTML = ''; wstationLinks.style.display = ''; } if (email) { BuildHTML({ classes: 'wstation-link-block', content: { tag: 'a', another: { href: 'mailto:' + email }, classes: 'wstation-link wstation-link-email', text: email } }, wstationLinks); } if (phone) { BuildHTML({ classes: 'wstation-link-block', content: { tag: 'a', another: { href: 'tel:' + phone.replace(/[^0-9\+]/g, '') }, classes: 'wstation-link wstation-link-phone', text: phone } }, wstationLinks); } if (this.time) { wstationInfos.innerHTML = ''; wstationInfos.style.display = ''; BuildHTML({ classes: 'wstation-info-block', content: [{ classes: 'wstation-info-title', text: 'Godziny otwarcia' }, { classes: 'wstation-info', html: this.time }] }, wstationInfos); } else { wstationInfos.style.display = 'none'; } wstationAttributes.innerHTML = ''; for (var i = 0; i !== this.attributeObject.length; i++) { var attributesContent = []; for (var j = 0; j !== this.attributeObject[i].childs.length; j++) { attributesContent.push({ classes: 'wstation-attribute', content: [{ classes: 'wstation-attribute-icon-block', content: { tag: 'img', classes: 'wstation-attribute-icon', another: { src: this.attributeObject[i].childs[j].icon_path } } }, { classes: 'wstation-attribute-label', text: this.attributeObject[i].childs[j].label }] }); } BuildHTML({ classes: 'wstation-attributes', content: [{ classes: 'wstation-attributes-title', text: this.attributeObject[i].label }, { classes: 'wstation-attributes-list', content: attributesContent }] }, wstationAttributes); } document.body.style.overflow = 'hidden'; wstationBlock.style.display = 'block'; setTimeout(function(){ wstationBlock.style.opacity = '1'; }, 16); }; var createListElement = function(data, attributes) { var cloneListElement = listElement.cloneNode(true); appendListAttributes(data, attributes, cloneListElement.querySelector('[map-element-attributes]')); cloneListElement.querySelector('[map-element-title]').innerText = data.title; cloneListElement.querySelector('[map-element-address]').innerText = data.address + ', ' + data.zipcode + ' ' + data.city; cloneListElement.querySelector('[map-element-link]').href = 'https://www.google.com/maps/dir/Current+Location/' + data.lat + ',' + data.lng; cloneListElement.querySelector('[map-element-more]').addEventListener('click', openMoreWindow.bind(data)); listBlockElement.appendChild(cloneListElement); return cloneListElement; }; var lastListWindowOpened = null; var createListWindow = function(data, marker) { var buildObject = BuildHTML({ classes: 'map-window', content: [ { classes: 'map-window-title', text: data.title }, { classes: 'map-window-subtitle', text: data.address + ', ' + data.zipcode + ' ' + data.city }, { classes: 'map-window-link-block', content: { tag: 'a', another: { href: 'https://www.google.com/maps/dir/Current+Location/' + data.lat + ',' + data.lng, target: '_blank' }, classes: 'map-window-link', text: translateValues['translate_11'] } }, { classes: 'map-window-button-block', content: { tag: 'button', classes: 'map-window-button', text: translateValues['translate_12'], event: { click: openMoreWindow.bind(data) } } } ] }); var infowindow = new google.maps.InfoWindow({ content: buildObject.Element }); marker.addListener("click", function() { if (lastListWindowOpened) { lastListWindowOpened.close(); } lastListWindowOpened = infowindow; infowindow.open({ anchor: marker, map: mapElement, shouldFocus: false, }); }); }; var searchEvent = function() { if (!mapElement) { return; } var searchValue = mapSearchInput.value.trim(); if (searchValue === '') { searchPoint.lat = center.lat; searchPoint.lng = center.lng; searchPoint.accuracy = 999999999; reloadMarkers(); mapElement.setCenter(center); mapElement.setZoom(center.zoom); } else if (searchValue.toLocaleLowerCase() === 'konin') { setSearchPosition(52.2376104, 18.2688172, 0); } else { if (searchValue.toLocaleLowerCase() === 'góra') { searchValue = searchValue + ' Zamostna'; } var service = new google.maps.places.PlacesService(mapElement); mapSearchButton.disabled = true; service.findPlaceFromQuery({ query: searchValue, fields: [ 'name', 'geometry' ], }, function(results, status) { if (!Array.isArray(results) || results.length === 0) { mapSearchInput.addClass('error'); setTimeout(function(){ mapSearchInput.removeClass('error'); }, 1000); } else { setSearchPosition(results[0].geometry.location.lat(), results[0].geometry.location.lng(), 0); } mapSearchButton.disabled = false; }); } if (isMobileOpened) { isMobileOpened = false; mapLeftElement.removeClass('open'); } }; mapSearchButton.addEventListener('click', searchEvent); mapSearchInput.addEventListener('keydown', function(e){ if (e.keyCode == 13) { searchEvent(); } }); mapNearElement.addEventListener('click', function(){ mapNearElement.disabled = true; navigator.geolocation.getCurrentPosition(function(pos){  setSearchPosition(pos.coords.latitude, pos.coords.longitude, pos.coords.accuracy); mapNearElement.disabled = false; }, function(){ mapNearElement.parentNode.removeClass('open'); }); if (isMobileOpened) { isMobileOpened = false; mapLeftElement.removeClass('open'); } }); mapBoxHamburger.addEventListener('click', function(){ isMobileOpened = true; mapLeftElement.addClass('open'); }); mapBoxSubmit.addEventListener('click', function(){ isMobileOpened = false; mapLeftElement.removeClass('open'); goToElement(mapBlock); }); HTTP .AJAX('Main', 'GetMap') .Success(function(e){ mapElement = new google.maps.Map(containerElement, { zoom: center.zoom, center: center, scrollwheel: false }); for (var i = 0; i !== e.ResponseJSON.Elements.length; i++) { var marker = new google.maps.Marker({ position: { lat: parseFloat(e.ResponseJSON.Elements[i].lat), lng: parseFloat(e.ResponseJSON.Elements[i].lng) }, title: e.ResponseJSON.Elements[i].title, icon: e.ResponseJSON.Types[e.ResponseJSON.Elements[i].type].marker_path }); if (e.ResponseJSON.Elements[i].location_id !== null) { e.ResponseJSON.Elements[i].types = [5]; } marker.listElement = createListElement( marker.data = e.ResponseJSON.Elements[i], e.ResponseJSON.Attributes ); createListWindow(marker.data, marker); mapMarkers.push(marker); } reloadMarkers(); mapSearchInput.disabled = false; mapSearchButton.disabled = false; mapNearElement.disabled = false; }); })(); (function(){ var isShow = false; var headerBlock = document.getElementById('header-block'); if (!headerBlock) { return; } var checkScroll = function() { if (Scroll.GetScrollTop() == 0) { if (isShow) { headerBlock.removeClass('header-show'); isShow = false; } } else { if (!isShow) { headerBlock.addClass('header-show'); isShow = true; } } }; checkScroll(); window.addEventListener('scroll', checkScroll); })(); (function(){ var newsListBox = document.getElementById('news-list-box'); var newsListMore = document.getElementById('news-list-more'); var fromInput = document.getElementById('news-list-from'); var toInput = document.getElementById('news-list-to'); if (!newsListBox || !newsListMore) { return; } var page = 2; var isSend = false; var ids = newsListBox.dataset.ids.trim(); if (ids === '') { ids = []; } else { ids = ids.split(','); } fromInput.setValue = toInput.setValue = function() { page = 1; newsListBox.innerHTML = ''; newsListMore.parentNode.style.display = ''; newsListMore.click(); }; fromInput.addEventListener('input', fromInput.setValue); toInput.addEventListener('input', toInput.setValue); newsListMore.addEventListener('click', function(){ if (isSend) { return; } isSend = true; newsListMore.disabled = true; HTTP .AJAX('Main', 'GetNews', { page: page++, from: fromInput.value, to: toInput.value, groupIDs: ids }) .Success(function(e){ isSend = false; newsListMore.disabled = false; if (e.ResponseText) { newsListBox.insertAdjacentHTML('beforeend', e.ResponseText); coreAnimationReload(); } else { newsListMore.parentNode.style.display = 'none'; } }); }); })(); (function(){ var createFAQ = function(el) { var els = el.querySelectorAll('[faq-single]'); var lastActive = undefined; var moreClick = function() { if (this.isOpened) { this.removeClass('open'); this.bodyElement.style.height = ''; lastActive = undefined; } else { if (lastActive && lastActive.isOpened) { lastActive.removeClass('open'); lastActive.isOpened = false; lastActive.bodyElement.style.height = ''; } this.addClass('open'); this.bodyElement.style.height = this.bodyElement.children[0].offsetHeight + 'px'; lastActive = this; } this.isOpened = !this.isOpened; }; for (var i = 0; i !== els.length; i++) { els[i].isOpened = false; els[i].moreElement = els[i].querySelector('[faq-more]'); els[i].bodyElement = els[i].querySelector('[faq-body]'); els[i].moreElement.addEventListener('click', moreClick.bind(els[i])); } }; var els = document.querySelectorAll('[data-faq]'); for (var i = 0; i !== els.length; i++) { createFAQ(els[i]); } })(); (function(){ var createCounter = function(el) { var checkScroll = function() { var rect = el.getBoundingClientRect(); if (rect.top > 0 && rect.bottom < WindowHeight) { RunAnimation({ begin: 0, end: parseInt(el.dataset.counter), duration: 500, callback: function(val){ el.innerText = Math.round(val); } }); window.removeEventListener('scroll', checkScroll); } }; window.addEventListener('scroll', checkScroll); checkScroll(); }; var els = document.querySelectorAll('[data-counter]'); for (var i = 0; i !== els.length; i++) { createCounter(els[i]); } })(); (function(){ var getSub = function(id) { for (var i = 0; i !== representativesSubs.length; i++) { if (representativesSubs[i].id == id) { return representativesSubs[i]; } } return null; }; var getGroup = function(id) { for (var i = 0; i !== representativesGroups.length; i++) { if (representativesGroups[i].id == id) { return representativesGroups[i]; } } return null; }; var createMap = function(el) { var clickElements = el.querySelectorAll('[data-click-id]'); var clickGElements = el.querySelectorAll('[data-click-gid]'); var modalElement = el.querySelector('[mrm-modal]'); var modalClose = el.querySelector('[mrm-close]'); var modalFooter = el.querySelector('[mrm-modal-footer]'); var modalSubTitle = el.querySelector('[mrm-sub-title]'); var modalSubSubtitle = el.querySelector('[mrm-sub-subtitle]'); var modalSubPhone = el.querySelector('[mrm-sub-phone]'); var modalSubEMail = el.querySelector('[mrm-sub-email]'); var modalGroupTitle = el.querySelector('[mrm-group-title]'); var modalGroupSubtitle = el.querySelector('[mrm-group-subtitle]'); var modalGroupPhone = el.querySelector('[mrm-group-phone]'); var modalGroupEMail = el.querySelector('[mrm-group-email]'); modalClose.addEventListener('click', function(){ document.body.style.overflow = ''; modalElement.removeClass('open'); }); var clickEvent = function() { var sub = getSub(this.dataset.clickId); var group = getGroup(sub.id_group); modalSubTitle.innerHTML = sub.title; modalSubSubtitle.innerHTML = sub.subtitle; modalSubPhone.href = 'tel:' + sub.phone.replace(/[^\+0-9]/g, ''); modalSubPhone.innerHTML = '<span>' + sub.phone + '</span>'; modalSubEMail.href = 'mailto:' + sub.email; var mailMatch = sub.email.match(/^([\s\S]+)(\@[\s\S]+)$/); if (mailMatch) { modalSubEMail.innerHTML = '<span>' + mailMatch[1] + '</span> <span>' + mailMatch[2] + '</span>'; } else { modalSubEMail.innerHTML = '<span>' + sub.email + '</span>'; } modalGroupTitle.innerHTML = group.title; modalGroupSubtitle.innerHTML = group.subtitle; modalGroupPhone.href = 'tel:' + group.phone.replace(/[^\+0-9]/g, ''); modalGroupPhone.innerHTML = '<b>' + group.phone + '</b>'; modalGroupEMail.href = 'mailto:' + group.email; modalGroupEMail.innerHTML = group.email; modalFooter.style.display = ''; document.body.style.overflow = 'hidden'; modalElement.addClass('open'); }; var clickGEvent = function() { var group = getGroup(this.dataset.clickGid); modalSubTitle.innerHTML = group.title; modalSubSubtitle.innerHTML = group.subtitle; modalSubPhone.href = 'tel:' + group.phone.replace(/[^\+0-9]/g, ''); modalSubPhone.innerHTML = '<span>' + group.phone + '</span>'; modalSubEMail.href = 'mailto:' + group.email; modalSubEMail.innerHTML = '<span>' + group.email + '</span>'; modalFooter.style.display = 'none'; document.body.style.overflow = 'hidden'; modalElement.addClass('open'); }; for (var i = 0; i !== clickElements.length; i++) { clickElements[i].addEventListener('click', clickEvent.bind(clickElements[i])); } for (var i = 0; i !== clickGElements.length; i++) { clickGElements[i].addEventListener('click', clickGEvent.bind(clickGElements[i])); } }; var mapElements = document.querySelectorAll('[data-mrm]'); for (var i = 0; i !== mapElements.length; i++) { createMap(mapElements[i]); } })(); (function() { var els = document.querySelectorAll("[data-animation]"); var elsToWait = []; setInterval(function(){ for (var i = 0; i !== elsToWait.length; i++) { var rect = elsToWait[i].getBoundingClientRect(); if (rect.bottom < 0 || rect.top > WindowHeight) { continue; } elsToWait[i].addClass('go-animation'); elsToWait.removeIndex(i--); return; } }, 200); var checkAnimation = function() { if (els.length == 0) { return; } var s = false; for (var i = 0; i != els.length; i++) { var rect = els[i].getBoundingClientRect(); if ((rect.top + 50 < WindowHeight && rect.bottom > 0) || (rect.bottom > 50 && rect.top < 0)) { s = true; elsToWait.push(els[i]); delete els[i].dataset.animation; } } if (s) { els = document.querySelectorAll("[data-animation]"); } }; window.addEventListener("scroll", checkAnimation); checkAnimation(); window.coreAnimationReload = function() { setTimeout(function(){ els = document.querySelectorAll("[data-animation]"); checkAnimation(); }, 16); }; if ('Content' in Core) { var variable = Core.Content.GetVariable('modules'); if (variable) { variable.AddChangeEvent(coreAnimationReload); } var variableInvestment = Core.Content.GetVariable('investment'); if (variableInvestment) { variableInvestment.Childs.modules.AddChangeEvent(coreAnimationReload); } } })(); (function(){ var createVideo = function(video) { var player = video.querySelector('video'); var openVideo = function() { video.removeEventListener('click', openVideo); video.addClass('open'); player.play(); }; video.addEventListener('click', openVideo); }; var videos = document.querySelectorAll('[data-video]'); for (var i = 0; i !== videos.length; i++) { createVideo(videos[i]); } })(); var createHarm = (function(){ var createHarm = function(el) { if ('isCreated' in el && el.isCreated) { return; } el.isCreated = true; var isShowed = el.offsetHeight != 0; var timeoutIDs = []; el.Hide = function() { if (!isShowed) { return; } while (timeoutIDs.length) { clearTimeout(timeoutIDs.pop()); } el.style.height = (el.offsetHeight - parseInt(getComputedStyle(el).paddingTop) - parseInt(getComputedStyle(el).paddingBottom)) + 'px'; el.style.overflow = 'hidden'; el.style.transition = '.4s height ease-in-out, .4s margin ease-in-out, .4s padding ease-in-out'; timeoutIDs.push(setTimeout(function(){ el.style.height = '0'; el.style.marginTop = '0'; el.style.marginBottom = '0'; el.style.paddingTop = '0'; el.style.paddingBottom = '0'; }, 16)); timeoutIDs.push(setTimeout(function(){ el.style.transition = ''; el.style.display = 'none'; }, 400)); isShowed = false; }; el.Show = function() { if (isShowed) { return; } while (timeoutIDs.length) { clearTimeout(timeoutIDs.pop()); } el.style.display = ''; setTimeout(function(){ var top = 0; var bottom = 0; for (var i = 0; i !== el.children.length; i++) { var rect = el.children[i].getBoundingClientRect(); if (i == 0 || top > rect.top) { top = rect.top; } if (i == 0 || bottom < rect.bottom) { bottom = rect.bottom; } } el.style.height = (bottom - top) + 'px'; el.style.transition = '.4s height ease-in-out, .4s margin ease-in-out, .4s padding ease-in-out'; el.style.marginTop = ''; el.style.marginBottom = ''; el.style.paddingTop = ''; el.style.paddingBottom = ''; timeoutIDs.push(setTimeout(function(){ el.style.height = ''; el.style.overflow = ''; el.style.transition = ''; }, 400)); isShowed = true; }, 16); }; }; var els = document.querySelectorAll('[data-harm]'); for (var i = 0; i !== els.length; i++) { createHarm(els[i]); } return createHarm; })(); (function(){ var createFile = function(el) { var inputElement = el.querySelector('[file-input]'); var labelElement = el.querySelector('[file-label]'); inputElement.addEventListener('change', function(e){ if (inputElement.files.length === 0) { labelElement.innerText = 'Dodaj plik'; } else { labelElement.innerText = inputElement.files[0].name; } }); }; var els = document.querySelectorAll('[data-form-file]'); for (var i = 0; i !== els.length; i++) { createFile(els[i]); } })(); (function(){ var createSelect = function(el) { var inputElement = el.querySelector('[select-input]'); var labelElement = el.querySelector('[select-label]'); var optionsElement = el.querySelector('[select-options]'); var searchElement = el.querySelector('[select-search]'); var isOpened = false; var checkCloseEvent = function(e) { var target = e.target; while (target) { if (target === el) { return; } target = target.parentNode; } isOpened = false; el.removeClass('open'); document.removeEventListener('click', checkCloseEvent); }; labelElement.addEventListener('click', function(e){ if (isOpened) { document.removeEventListener('click', checkCloseEvent); el.removeClass('open'); } else { document.addEventListener('click', checkCloseEvent); el.addClass('open'); } isOpened = !isOpened; }); optionsElement.addEventListener('click', function(e){ if (e.target.parentNode !== optionsElement) { return; } inputElement.value = e.target.dataset.value; labelElement.innerText = e.target.innerText; var activeElement = optionsElement.querySelector('.active'); if (activeElement) { activeElement.removeClass('active'); } e.target.addClass('active'); isOpened = false; el.removeClass('open'); document.removeEventListener('click', checkCloseEvent); if ('changeEvent' in el && typeof el.changeEvent === 'function') { el.changeEvent(); } }); if (searchElement) { searchElement.addEventListener('input', function(){ var searchValue = searchElement.value.trim().polishToLatin().toLocaleLowerCase(); for (var i = 0; i !== optionsElement.children.length; i++) { if (optionsElement.children[i].innerText.trim().polishToLatin().toLocaleLowerCase().includes(searchValue)) { optionsElement.children[i].style.display = ''; } else { optionsElement.children[i].style.display = 'none'; } } }); } }; var els = document.querySelectorAll('[data-form-select]'); for (var i = 0; i !== els.length; i++) { createSelect(els[i]); } })(); (function(){ var createComplaint = function(el) { var formElement = el.querySelector('form'); var fleetCard1Box = formElement.querySelector('[complaint-fleet-card-1]'); var fleetCard2Box = formElement.querySelector('[complaint-fleet-card-2]'); var fleetNIPBox = formElement.querySelector('[complaint-fleet-nip]'); var registration11Box = formElement.querySelector('[registration-1-1]'); var registration12Box = formElement.querySelector('[registration-1-2]'); var registration2Box = formElement.querySelector('[registration-2]'); var answerBox = formElement.querySelector('[answer]'); var stationBox = formElement.querySelector('[station]'); var stationKindBox = formElement.querySelector('[stationKind]'); var citySelect = formElement.querySelector('[data-form-select="city"]'); var stationSelect = formElement.querySelector('[data-form-select="station"]'); var chargerSelect = formElement.querySelector('[data-form-select="charger"]'); var chargerSelectDiv = document.getElementById('charger'); var stationSelectDiv = document.getElementById('station'); var stationRadio = formElement.querySelectorAll('[name="is_station_kind"]'); var stationHidden = formElement.querySelector('[name="station"]'); var stationRegular = formElement.querySelector('[name="station_1"]'); var stationCharger = formElement.querySelector('[name="station_2"]'); var whatAboutBox = formElement.querySelector('[what-about]'); var whatAbout3Box = formElement.querySelector('[what-about-3]'); var whatAbout7Box = formElement.querySelector('[what-about-7]'); var whatAboutSelect = formElement.querySelector('[data-form-select="what_about"]'); var submitElement = formElement.querySelector('input[type="submit"]'); whatAboutSelect.changeEvent = function() { var value = whatAboutSelect.querySelector('input').value; if (value == 3) { whatAbout3Box.Show(); whatAbout7Box.Hide(); } else if (value == 7) { whatAbout3Box.Hide(); whatAbout7Box.Show(); } else { whatAbout3Box.Hide(); whatAbout7Box.Hide(); } setTimeout(function(){ for (var i = 0; i !== requiredElements.length; i++) { var rect = requiredElements[i].getBoundingClientRect(); if (rect.width === 0 && rect.height === 0) { requiredElements[i].required = false; } else { requiredElements[i].required = true; } } }, 500); }; var formData = formElement.getData(); if (formData.is_station_kind == 1) { stationHidden.value = stationRegular.value; } else { stationHidden.value = stationCharger.value; } stationRadio.forEach(radio => { radio.addEventListener('change', (event) => { var value = citySelect.querySelector('input').value; var data = formElement.getData(); var options = updateFormSelectOptions(data, value, chargerSelectDiv, stationSelectDiv, stationSelect, chargerSelect); }); }); citySelect.changeEvent = function() { var value = citySelect.querySelector('input').value; var data = formElement.getData(); var options = updateFormSelectOptions(data, value, chargerSelectDiv, stationSelectDiv, stationSelect, chargerSelect); }; stationSelect.changeEvent = function () { var data = formElement.getData(); stationHidden.value = data.station_1; }; chargerSelect.changeEvent = function () { var data = formElement.getData(); stationHidden.value = data.station_2; }; var requiredElements = formElement.querySelectorAll('input:required, textarea:required'); var checkForm = function() { var data = formElement.getData(); if (data.is_station == 1) { stationBox.Show(); stationKindBox.Show(); } else { stationBox.Hide(); stationKindBox.Hide(); } if (data.type == 1) { fleetCard1Box.Show(); if (data.is_fleet_card == 1) { fleetCard2Box.Show(); if (data.fleet_card_type == 1 || data.fleet_card_type == 2) { fleetNIPBox.Show(); } else { fleetNIPBox.Hide(); } } else { fleetCard2Box.Hide(); } answerBox.Show(); if (data.answer == 1) { registration11Box.Show(); registration12Box.Hide(); } else { registration11Box.Hide(); registration12Box.Show(); } whatAboutBox.Show(); var whatAboutValue = whatAboutSelect.querySelector('input').value; if (whatAboutValue == 3) { whatAbout3Box.Show(); whatAbout7Box.Hide(); } else if (whatAboutValue == 7) { whatAbout3Box.Hide(); whatAbout7Box.Show(); } else { whatAbout3Box.Hide(); whatAbout7Box.Hide(); } registration2Box.Hide(); } else if (data.type == 2) { fleetCard1Box.Hide(); fleetCard2Box.Hide(); answerBox.Hide(); whatAboutBox.Hide(); whatAbout3Box.Hide(); whatAbout7Box.Hide(); registration11Box.Hide(); registration12Box.Hide(); registration2Box.Show(); } setTimeout(function(){ for (var i = 0; i !== requiredElements.length; i++) { var rect = requiredElements[i].getBoundingClientRect(); if (rect.width === 0 && rect.height === 0) { requiredElements[i].required = false; } else { requiredElements[i].required = true; } } }, 500); }; checkForm(); formElement.querySelector('[data-form-select="fleet_card_type"]').changeEvent = checkForm; var isSend = false; formElement.addEventListener('submit', function(e){ e.preventDefault(); if (isSend) { return false; } isSend = true; submitElement.disabled = true; HTTP .AJAX('Main', 'ComplaintForm', new FormData(formElement)) .Success(function(e){ console.error('[ComplaintForm] ' + e.ErrorMessage + ' (' + e.ErrorCode + ')'); windowModal({ Size: 'small', Content: translateValues['translate_121'], callback: function(){ location.reload(); } }); }) .Error(function(e){ windowModal({ Size: 'small', Content: translateValues['translate_122'] }); }) .Finish(function(){ submitElement.disabled = isSend = false; }); return false; }); var els = formElement.querySelectorAll('[type="radio"]'); for (var i = 0; i !== els.length; i++) { els[i].addEventListener('change', checkForm); } }; var els = document.querySelectorAll('[data-complaint]'); for (var i = 0; i !== els.length; i++) { createComplaint(els[i]); } })(); }); function detectZoom() { const ratio = window.devicePixelRatio || 1; return Math.round(ratio * 100); } function updateFormSelectOptions(data, value, chargerSelectDiv, stationSelectDiv, stationSelect, chargerSelect) { if (data.is_station_kind == 0) { chargerSelectDiv.style.display = 'block'; stationSelectDiv.style.display = 'none'; var options = chargerSelect.querySelectorAll('[data-city]'); toggleComplaintOptions('hide'); } else { chargerSelectDiv.style.display = 'none'; stationSelectDiv.style.display = 'block'; var options = stationSelect.querySelectorAll('[data-city]'); toggleComplaintOptions('show'); } for (var i = 0; i !== options.length; i++) { if (value == 0 || value == options[i].dataset.city) { options[i].style.display = ''; } else { options[i].style.display = 'none'; } } return options; } function toggleComplaintOptions(showOrHide) { const valuesToHide = [1, 2, 3, 5, 8, 9, 11, 12, 13, 15]; const listItems = document.querySelectorAll('#complaint-options li'); listItems.forEach(item => { const dataValue = parseInt(item.getAttribute('data-value')); if (valuesToHide.includes(dataValue)) { if (showOrHide === 'hide') { item.style.display = 'none'; } else { item.style.display = ''; } } }); }!function(t,e){!function t(e,a,n,r){var o=!!(e.Worker&&e.Blob&&e.Promise&&e.OffscreenCanvas&&e.OffscreenCanvasRenderingContext2D&&e.HTMLCanvasElement&&e.HTMLCanvasElement.prototype.transferControlToOffscreen&&e.URL&&e.URL.createObjectURL),i="function"==typeof Path2D&&"function"==typeof DOMMatrix,l=function(){if(!e.OffscreenCanvas)return!1;var t=new OffscreenCanvas(1,1),a=t.getContext("2d");a.fillRect(0,0,1,1);var n=t.transferToImageBitmap();try{a.createPattern(n,"no-repeat")}catch(t){return!1}return!0}();function s(){}function c(t){var n=a.exports.Promise,r=void 0!==n?n:e.Promise;return"function"==typeof r?new r(t):(t(s,s),null)}var h,f,u,d,m,g,p,b,M,v,y,w=(h=l,f=new Map,{transform:function(t){if(h)return t;if(f.has(t))return f.get(t);var e=new OffscreenCanvas(t.width,t.height);return e.getContext("2d").drawImage(t,0,0),f.set(t,e),e},clear:function(){f.clear()}}),x=(m=Math.floor(1e3/60),g={},p=0,"function"==typeof requestAnimationFrame&&"function"==typeof cancelAnimationFrame?(u=function(t){var e=Math.random();return g[e]=requestAnimationFrame((function a(n){p===n||p+m-1<n?(p=n,delete g[e],t()):g[e]=requestAnimationFrame(a)})),e},d=function(t){g[t]&&cancelAnimationFrame(g[t])}):(u=function(t){return setTimeout(t,m)},d=function(t){return clearTimeout(t)}),{frame:u,cancel:d}),C=(v={},function(){if(b)return b;if(!n&&o){var e=["var CONFETTI, SIZE = {}, module = {};","("+t.toString()+")(this, module, true, SIZE);","onmessage = function(msg) {","  if (msg.data.options) {","    CONFETTI(msg.data.options).then(function () {","      if (msg.data.callback) {","        postMessage({ callback: msg.data.callback });","      }","    });","  } else if (msg.data.reset) {","    CONFETTI && CONFETTI.reset();","  } else if (msg.data.resize) {","    SIZE.width = msg.data.resize.width;","    SIZE.height = msg.data.resize.height;","  } else if (msg.data.canvas) {","    SIZE.width = msg.data.canvas.width;","    SIZE.height = msg.data.canvas.height;","    CONFETTI = module.exports.create(msg.data.canvas);","  }","}"].join("\n");try{b=new Worker(URL.createObjectURL(new Blob([e])))}catch(t){return void 0!==typeof console&&"function"==typeof console.warn&&console.warn("🎊 Could not load worker",t),null}!function(t){function e(e,a){t.postMessage({options:e||{},callback:a})}t.init=function(e){var a=e.transferControlToOffscreen();t.postMessage({canvas:a},[a])},t.fire=function(a,n,r){if(M)return e(a,null),M;var o=Math.random().toString(36).slice(2);return M=c((function(n){function i(e){e.data.callback===o&&(delete v[o],t.removeEventListener("message",i),M=null,w.clear(),r(),n())}t.addEventListener("message",i),e(a,o),v[o]=i.bind(null,{data:{callback:o}})}))},t.reset=function(){for(var e in t.postMessage({reset:!0}),v)v[e](),delete v[e]}}(b)}return b}),I={particleCount:50,angle:90,spread:45,startVelocity:45,decay:.9,gravity:1,drift:0,ticks:200,x:.5,y:.5,shapes:["square","circle"],zIndex:100,colors:["#26ccff","#a25afd","#ff5e7e","#88ff5a","#fcff42","#ffa62d","#ff36ff"],disableForReducedMotion:!1,scalar:1};function T(t,e,a){return function(t,e){return e?e(t):t}(t&&null!=t[e]?t[e]:I[e],a)}function E(t){return t<0?0:Math.floor(t)}function P(t){return parseInt(t,16)}function S(t){return t.map(O)}function O(t){var e=String(t).replace(/[^0-9a-f]/gi,"");return e.length<6&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),{r:P(e.substring(0,2)),g:P(e.substring(2,4)),b:P(e.substring(4,6))}}function k(t){t.width=document.documentElement.clientWidth,t.height=document.documentElement.clientHeight}function B(t){var e=t.getBoundingClientRect();t.width=e.width,t.height=e.height}function F(t,e){e.x+=Math.cos(e.angle2D)*e.velocity+e.drift,e.y+=Math.sin(e.angle2D)*e.velocity+e.gravity,e.velocity*=e.decay,e.flat?(e.wobble=0,e.wobbleX=e.x+10*e.scalar,e.wobbleY=e.y+10*e.scalar,e.tiltSin=0,e.tiltCos=0,e.random=1):(e.wobble+=e.wobbleSpeed,e.wobbleX=e.x+10*e.scalar*Math.cos(e.wobble),e.wobbleY=e.y+10*e.scalar*Math.sin(e.wobble),e.tiltAngle+=.1,e.tiltSin=Math.sin(e.tiltAngle),e.tiltCos=Math.cos(e.tiltAngle),e.random=Math.random()+2);var a=e.tick++/e.totalTicks,n=e.x+e.random*e.tiltCos,r=e.y+e.random*e.tiltSin,o=e.wobbleX+e.random*e.tiltCos,l=e.wobbleY+e.random*e.tiltSin;if(t.fillStyle="rgba("+e.color.r+", "+e.color.g+", "+e.color.b+", "+(1-a)+")",t.beginPath(),i&&"path"===e.shape.type&&"string"==typeof e.shape.path&&Array.isArray(e.shape.matrix))t.fill(function(t,e,a,n,r,o,i){var l=new Path2D(t),s=new Path2D;s.addPath(l,new DOMMatrix(e));var c=new Path2D;return c.addPath(s,new DOMMatrix([Math.cos(i)*r,Math.sin(i)*r,-Math.sin(i)*o,Math.cos(i)*o,a,n])),c}(e.shape.path,e.shape.matrix,e.x,e.y,.1*Math.abs(o-n),.1*Math.abs(l-r),Math.PI/10*e.wobble));else if("bitmap"===e.shape.type){var s=Math.PI/10*e.wobble,c=.1*Math.abs(o-n),h=.1*Math.abs(l-r),f=e.shape.bitmap.width*e.scalar,u=e.shape.bitmap.height*e.scalar,d=new DOMMatrix([Math.cos(s)*c,Math.sin(s)*c,-Math.sin(s)*h,Math.cos(s)*h,e.x,e.y]);d.multiplySelf(new DOMMatrix(e.shape.matrix));var m=t.createPattern(w.transform(e.shape.bitmap),"no-repeat");m.setTransform(d),t.globalAlpha=1-a,t.fillStyle=m,t.fillRect(e.x-f/2,e.y-u/2,f,u),t.globalAlpha=1}else if("circle"===e.shape)t.ellipse?t.ellipse(e.x,e.y,Math.abs(o-n)*e.ovalScalar,Math.abs(l-r)*e.ovalScalar,Math.PI/10*e.wobble,0,2*Math.PI):function(t,e,a,n,r,o,i,l,s){t.save(),t.translate(e,a),t.rotate(o),t.scale(n,r),t.arc(0,0,1,i,l,s),t.restore()}(t,e.x,e.y,Math.abs(o-n)*e.ovalScalar,Math.abs(l-r)*e.ovalScalar,Math.PI/10*e.wobble,0,2*Math.PI);else if("star"===e.shape)for(var g=Math.PI/2*3,p=4*e.scalar,b=8*e.scalar,M=e.x,v=e.y,y=5,x=Math.PI/y;y--;)M=e.x+Math.cos(g)*b,v=e.y+Math.sin(g)*b,t.lineTo(M,v),g+=x,M=e.x+Math.cos(g)*p,v=e.y+Math.sin(g)*p,t.lineTo(M,v),g+=x;else t.moveTo(Math.floor(e.x),Math.floor(e.y)),t.lineTo(Math.floor(e.wobbleX),Math.floor(r)),t.lineTo(Math.floor(o),Math.floor(l)),t.lineTo(Math.floor(n),Math.floor(e.wobbleY));return t.closePath(),t.fill(),e.tick<e.totalTicks}function A(t,a){var i,l=!t,s=!!T(a||{},"resize"),h=!1,f=T(a,"disableForReducedMotion",Boolean),u=o&&!!T(a||{},"useWorker")?C():null,d=l?k:B,m=!(!t||!u)&&!!t.__confetti_initialized,g="function"==typeof matchMedia&&matchMedia("(prefers-reduced-motion)").matches;function p(e,a,o){for(var l,s,h,f,u,m=T(e,"particleCount",E),g=T(e,"angle",Number),p=T(e,"spread",Number),b=T(e,"startVelocity",Number),M=T(e,"decay",Number),v=T(e,"gravity",Number),y=T(e,"drift",Number),C=T(e,"colors",S),I=T(e,"ticks",Number),P=T(e,"shapes"),O=T(e,"scalar"),k=!!T(e,"flat"),B=function(t){var e=T(t,"origin",Object);return e.x=T(e,"x",Number),e.y=T(e,"y",Number),e}(e),A=m,R=[],N=t.width*B.x,z=t.height*B.y;A--;)R.push((l={x:N,y:z,angle:g,spread:p,startVelocity:b,color:C[A%C.length],shape:P[(f=0,u=P.length,Math.floor(Math.random()*(u-f))+f)],ticks:I,decay:M,gravity:v,drift:y,scalar:O,flat:k},s=void 0,h=void 0,s=l.angle*(Math.PI/180),h=l.spread*(Math.PI/180),{x:l.x,y:l.y,wobble:10*Math.random(),wobbleSpeed:Math.min(.11,.1*Math.random()+.05),velocity:.5*l.startVelocity+Math.random()*l.startVelocity,angle2D:-s+(.5*h-Math.random()*h),tiltAngle:(.5*Math.random()+.25)*Math.PI,color:l.color,shape:l.shape,tick:0,totalTicks:l.ticks,decay:l.decay,drift:l.drift,random:Math.random()+2,tiltSin:0,tiltCos:0,wobbleX:0,wobbleY:0,gravity:3*l.gravity,ovalScalar:.6,scalar:l.scalar,flat:l.flat}));return i?i.addFettis(R):(i=function(t,e,a,o,i){var l,s,h=e.slice(),f=t.getContext("2d"),u=c((function(e){function c(){l=s=null,f.clearRect(0,0,o.width,o.height),w.clear(),i(),e()}l=x.frame((function e(){!n||o.width===r.width&&o.height===r.height||(o.width=t.width=r.width,o.height=t.height=r.height),o.width||o.height||(a(t),o.width=t.width,o.height=t.height),f.clearRect(0,0,o.width,o.height),(h=h.filter((function(t){return F(f,t)}))).length?l=x.frame(e):c()})),s=c}));return{addFettis:function(t){return h=h.concat(t),u},canvas:t,promise:u,reset:function(){l&&x.cancel(l),s&&s()}}}(t,R,d,a,o),i.promise)}function b(a){var n=f||T(a,"disableForReducedMotion",Boolean),r=T(a,"zIndex",Number);if(n&&g)return c((function(t){t()}));l&&i?t=i.canvas:l&&!t&&(t=function(t){var e=document.createElement("canvas");return e.style.position="fixed",e.style.top="0px",e.style.left="0px",e.style.pointerEvents="none",e.style.zIndex=t,e}(r),document.body.appendChild(t)),s&&!m&&d(t);var o={width:t.width,height:t.height};function b(){if(u){var e={getBoundingClientRect:function(){if(!l)return t.getBoundingClientRect()}};return d(e),void u.postMessage({resize:{width:e.width,height:e.height}})}o.width=o.height=null}function M(){i=null,s&&(h=!1,e.removeEventListener("resize",b)),l&&t&&(document.body.removeChild(t),t=null,m=!1)}return u&&!m&&u.init(t),m=!0,u&&(t.__confetti_initialized=!0),s&&!h&&(h=!0,e.addEventListener("resize",b,!1)),u?u.fire(a,o,M):p(a,o,M)}return b.reset=function(){u&&u.reset(),i&&i.reset()},b}function R(){return y||(y=A(null,{useWorker:!0,resize:!0})),y}a.exports=function(){return R().apply(this,arguments)},a.exports.reset=function(){R().reset()},a.exports.create=A,a.exports.shapeFromPath=function(t){if(!i)throw new Error("path confetti are not supported in this browser");var e,a;"string"==typeof t?e=t:(e=t.path,a=t.matrix);var n=new Path2D(e),r=document.createElement("canvas").getContext("2d");if(!a){for(var o,l,s=1e3,c=s,h=s,f=0,u=0,d=0;d<s;d+=2)for(var m=0;m<s;m+=2)r.isPointInPath(n,d,m,"nonzero")&&(c=Math.min(c,d),h=Math.min(h,m),f=Math.max(f,d),u=Math.max(u,m));o=f-c,l=u-h;var g=Math.min(10/o,10/l);a=[g,0,0,g,-Math.round(o/2+c)*g,-Math.round(l/2+h)*g]}return{type:"path",path:e,matrix:a}},a.exports.shapeFromText=function(t){var e,a=1,n="#000000",r='"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", "EmojiOne Color", "Android Emoji", "Twemoji Mozilla", "system emoji", sans-serif';"string"==typeof t?e=t:(e=t.text,a="scalar"in t?t.scalar:a,r="fontFamily"in t?t.fontFamily:r,n="color"in t?t.color:n);var o=10*a,i=o+"px "+r,l=new OffscreenCanvas(o,o),s=l.getContext("2d");s.font=i;var c=s.measureText(e),h=Math.ceil(c.actualBoundingBoxRight+c.actualBoundingBoxLeft),f=Math.ceil(c.actualBoundingBoxAscent+c.actualBoundingBoxDescent),u=c.actualBoundingBoxLeft+2,d=c.actualBoundingBoxAscent+2;h+=4,f+=4,(s=(l=new OffscreenCanvas(h,f)).getContext("2d")).font=i,s.fillStyle=n,s.fillText(e,u,d);var m=1/a;return{type:"bitmap",bitmap:l.transferToImageBitmap(),matrix:[m,0,0,m,-h*m/2,-f*m/2]}}}(function(){return void 0!==t?t:"undefined"!=typeof self?self:this||{}}(),e,!1),t.confetti=e.exports}(window,{}); 