File: /var/www/vhost/disk-apps/magento.bikenow.co/lib/web/mage/adminhtml/accordion.js
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
/* global varienAccordion, varienLoader, Cookie */
/* eslint-disable strict */
define([
'prototype'
], function () {
window.varienAccordion = new Class.create(); //eslint-disable-line
varienAccordion.prototype = {
/**
* @param {*} containerId
* @param {*} activeOnlyOne
*/
initialize: function (containerId, activeOnlyOne) {
var links, i;
this.containerId = containerId;
this.activeOnlyOne = activeOnlyOne || false;
this.container = $(this.containerId);
this.items = $$('#' + this.containerId + ' dt');
this.loader = new varienLoader(true); //jscs:ignore requireCapitalizedConstructors
links = $$('#' + this.containerId + ' dt a');
for (i in links) {
if (links[i].href) {
Event.observe(links[i], 'click', this.clickItem.bind(this));
this.items[i].dd = this.items[i].next('dd');
this.items[i].link = links[i];
}
}
this.initFromCookie();
},
/**
* Init from cookie.
*/
initFromCookie: function () {
var activeItemId, visibility;
if (this.activeOnlyOne &&
(activeItemId = Cookie.read(this.cookiePrefix() + 'active-item')) !== null) {
this.hideAllItems();
this.showItem(this.getItemById(activeItemId));
} else if (!this.activeOnlyOne) {
this.items.each(function (item) {
if ((visibility = Cookie.read(this.cookiePrefix() + item.id)) !== null) {
if (visibility == 0) { //eslint-disable-line eqeqeq
this.hideItem(item);
} else {
this.showItem(item);
}
}
}.bind(this));
}
},
/**
* @return {String}
*/
cookiePrefix: function () {
return 'accordion-' + this.containerId + '-';
},
/**
* @param {*} itemId
* @return {*}
*/
getItemById: function (itemId) {
var result = null;
this.items.each(function (item) {
if (item.id == itemId) { //eslint-disable-line
result = item;
throw $break;
}
});
return result;
},
/**
* @param {*} event
*/
clickItem: function (event) {
var item = Event.findElement(event, 'dt');
if (this.activeOnlyOne) {
this.hideAllItems();
this.showItem(item);
Cookie.write(this.cookiePrefix() + 'active-item', item.id, 30 * 24 * 60 * 60);
} else {
if (this.isItemVisible(item)) { //eslint-disable-line no-lonely-if
this.hideItem(item);
Cookie.write(this.cookiePrefix() + item.id, 0, 30 * 24 * 60 * 60);
} else {
this.showItem(item);
Cookie.write(this.cookiePrefix() + item.id, 1, 30 * 24 * 60 * 60);
}
}
Event.stop(event);
},
/**
* @param {Object} item
*/
showItem: function (item) {
if (item && item.link) {
if (item.link.href) {
this.loadContent(item);
}
Element.addClassName(item, 'open');
Element.addClassName(item.dd, 'open');
}
},
/**
* @param {Object} item
*/
hideItem: function (item) {
Element.removeClassName(item, 'open');
Element.removeClassName(item.dd, 'open');
},
/**
* @param {*} item
* @return {*}
*/
isItemVisible: function (item) {
return Element.hasClassName(item, 'open');
},
/**
* @param {*} item
*/
loadContent: function (item) {
if (item.link.href.indexOf('#') == item.link.href.length - 1) { //eslint-disable-line eqeqeq
return;
}
if (Element.hasClassName(item.link, 'ajax')) {
this.loadingItem = item;
this.loader.load(item.link.href, {
updaterId: this.loadingItem.dd.id
}, this.setItemContent.bind(this));
return;
}
location.href = item.link.href;
},
/**
* @param {Object} content
*/
setItemContent: function (content) {
if (content.isJSON) {
return;
}
this.loadingItem.dd.innerHTML = content;
},
/**
* Hide all items
*/
hideAllItems: function () {
var i;
for (i in this.items) {
if (this.items[i].id) {
Element.removeClassName(this.items[i], 'open');
Element.removeClassName(this.items[i].dd, 'open');
}
}
}
};
});