Your IP : 18.222.117.94
(function() {
"use strict";
BX.namespace("BX.Landing");
/**
* Landing utils.
* @returns {void}
*/
BX.Landing.Utils = function()
{
//
};
BX.Landing.Utils.Show = function(element)
{
var promise = new BX.Promise();
if (!!element && !BX.Landing.Utils.isShown(element))
{
var handler = function(event) {
promise.fulfill(event);
element.removeEventListener("animationend", handler);
element.removeEventListener("oAnimationEnd", handler);
element.removeEventListener("webkitAnimationEnd", handler);
};
element.addEventListener("animationend", handler);
element.addEventListener("oAnimationEnd", handler);
element.addEventListener("webkitAnimationEnd", handler);
BX.DOM.write(function() {
element.dataset.isShown = true;
element.hidden = false;
element.classList.remove("landing-ui-hide");
element.classList.add("landing-ui-show");
});
}
else
{
promise.fulfill();
}
return promise;
};
BX.Landing.Utils.isShown = function(element)
{
return element.dataset.isShown === "true";
};
BX.Landing.Utils.Hide = function(element)
{
var promise = new BX.Promise();
if (!!element && BX.Landing.Utils.isShown(element))
{
var handler = function(event) {
element.hidden = true;
element.removeEventListener("animationend", handler);
element.removeEventListener("oAnimationEnd", handler);
element.removeEventListener("webkitAnimationEnd", handler);
promise.fulfill(event);
};
element.addEventListener("animationend", handler);
element.addEventListener("oAnimationEnd", handler);
element.addEventListener("webkitAnimationEnd", handler);
requestAnimationFrame(function() {
element.dataset.isShown = false;
element.classList.remove("landing-ui-show");
element.classList.add("landing-ui-hide");
});
}
else
{
promise.fulfill();
}
return promise;
};
BX.Landing.Utils.appendHTML = function(element, html)
{
element.innerHTML = element.innerHTML + html;
};
//noinspection JSUnusedGlobalSymbols
BX.Landing.Utils.prototype = {
/**
* Find all nodes by selector rule.
* @param {HTMLElement|HTMLDocument} node Start node.
* @param {String} selector
* @returns {?NodeList}
*/
findBySelector: function(node, selector)
{
return node.querySelectorAll(selector);
},
/**
* Find all nodes by selector rule and remove them.
* @param {HTMLElement} node Start node.
* @param {String} selector
* @return {void}
*/
removeBySelector: function(node, selector)
{
var remove = this.findBySelector(node, selector);
for (var i = 0, c = remove.length; i < c; i++)
{
BX.remove(remove[i]);
}
},
/**
* Return Class by class name.
* @param {string} fullClassName
* @returns {?function}
*/
getClass: function(fullClassName)
{
if (!BX.type.isNotEmptyString(fullClassName))
{
return null;
}
var classFn = null;
var currentNamespace = window;
var namespaces = fullClassName.split(".");
for (var i = 0; i < namespaces.length; i++)
{
var namespace = namespaces[i];
if (!currentNamespace[namespace])
{
return null;
}
currentNamespace = currentNamespace[namespace];
classFn = currentNamespace;
}
return classFn;
},
/**
* Error alert.
* @param {?{[error_description]: ?string}[]|string} message
* @returns {void}
*/
errorAlert: function(message)
{
var output = "";
if (BX.type.isArray(message))
{
for (var i = 0, c = message.length; i < c; i++)
{
if (message.hasOwnProperty(i))
{
if (typeof message[i].error_description !== "undefined")
{
output += message[i].error_description + "<br/>";
}
}
}
}
else
{
output = message;
}
alert(output);
},
/**
* Refresh page.
* @returns {void}
*/
refresh: function()
{
window.location.reload();
},
/**
* Add or remove class for element.
* @param {HTMLElement} el DOMNode.
* @param {String} className Which class switch.
* @param {Boolean} mode Add or remove.
* @returns {void}
*/
switchClass: function(el, className, mode)
{
if (mode)
{
BX.addClass(el, className);
}
else
{
BX.removeClass(el, className);
}
},
/**
* Get options-array for select node from array.
* @params {Object} items Items of select.
* @params {String} current Current selected.
* @returns {HTMLElement[]}
*/
getSelectFromArray: function(items, current)
{
var options = [];
for (var id in items)
{
if (items.hasOwnProperty(id))
{
options.push(BX.create("option", {
attrs: {
value: id
},
props: {
selected: current === id
},
text: items[id]
}));
}
}
return options;
}
};
})();