Файл: CloudBox-main/doc/js/nimble.js
Строк: 878
<?php
/**
* Isotope v1.5.21
* An exquisite jQuery plugin for magical layouts
* http://isotope.metafizzy.co
*
* Commercial use requires one-time license fee
* http://metafizzy.co/#licenses
*
* Copyright 2012 David DeSandro / Metafizzy
*/
(function (a, b, c) {
"use strict";
var d = a.document,
e = a.Modernizr,
f = function (a) {
return a.charAt(0).toUpperCase() + a.slice(1)
}, g = "Moz Webkit O Ms".split(" "),
h = function (a) {
var b = d.documentElement.style,
c;
if (typeof b[a] == "string") return a;
a = f(a);
for (var e = 0, h = g.length; e < h; e++) {
c = g[e] + a;
if (typeof b[c] == "string") return c
}
}, i = h("transform"),
j = h("transitionProperty"),
k = {
csstransforms: function () {
return !!i
},
csstransforms3d: function () {
var a = !! h("perspective");
if (a) {
var c = " -o- -moz- -ms- -webkit- -khtml- ".split(" "),
d = "@media (" + c.join("transform-3d),(") + "modernizr)",
e = b("<style>" + d + "{#modernizr{height:3px}}" + "</style>").appendTo("head"),
f = b('<div id="modernizr" />').appendTo("html");
a = f.height() === 3, f.remove(), e.remove()
}
return a
},
csstransitions: function () {
return !!j
}
}, l;
if (e)
for (l in k) e.hasOwnProperty(l) || e.addTest(l, k[l]);
else {
e = a.Modernizr = {
_version: "1.6ish: miniModernizr for Isotope"
};
var m = " ",
n;
for (l in k) n = k[l](), e[l] = n, m += " " + (n ? "" : "no-") + l;
b("html").addClass(m)
} if (e.csstransforms) {
var o = e.csstransforms3d ? {
translate: function (a) {
return "translate3d(" + a[0] + "px, " + a[1] + "px, 0) "
},
scale: function (a) {
return "scale3d(" + a + ", " + a + ", 1) "
}
} : {
translate: function (a) {
return "translate(" + a[0] + "px, " + a[1] + "px) "
},
scale: function (a) {
return "scale(" + a + ") "
}
}, p = function (a, c, d) {
var e = b.data(a, "isoTransform") || {}, f = {}, g, h = {}, j;
f[c] = d, b.extend(e, f);
for (g in e) j = e[g], h[g] = o[g](j);
var k = h.translate || "",
l = h.scale || "",
m = k + l;
b.data(a, "isoTransform", e), a.style[i] = m
};
b.cssNumber.scale = !0, b.cssHooks.scale = {
set: function (a, b) {
p(a, "scale", b)
},
get: function (a, c) {
var d = b.data(a, "isoTransform");
return d && d.scale ? d.scale : 1
}
}, b.fx.step.scale = function (a) {
b.cssHooks.scale.set(a.elem, a.now + a.unit)
}, b.cssNumber.translate = !0, b.cssHooks.translate = {
set: function (a, b) {
p(a, "translate", b)
},
get: function (a, c) {
var d = b.data(a, "isoTransform");
return d && d.translate ? d.translate : [0, 0]
}
}
}
var q, r;
e.csstransitions && (q = {
WebkitTransitionProperty: "webkitTransitionEnd",
MozTransitionProperty: "transitionend",
OTransitionProperty: "oTransitionEnd otransitionend",
transitionProperty: "transitionend"
}[j], r = h("transitionDuration"));
var s = b.event,
t;
s.special.smartresize = {
setup: function () {
b(this).bind("resize", s.special.smartresize.handler)
},
teardown: function () {
b(this).unbind("resize", s.special.smartresize.handler)
},
handler: function (a, b) {}
}, b.fn.smartresize = function (a) {
return a ? this.bind("smartresize", a) : this.trigger("smartresize", ["execAsap"])
}, b.Isotope = function (a, c, d) {
this.element = b(c), this._create(a), this._init(d)
};
var u = ["width", "height"],
v = b(a);
b.Isotope.settings = {
resizable: !0,
layoutMode: "masonry",
containerClass: "isotope",
itemClass: "isotope-item",
hiddenClass: "isotope-hidden",
hiddenStyle: {
opacity: 0,
scale: .001
},
visibleStyle: {
opacity: 1,
scale: 1
},
containerStyle: {
position: "relative",
overflow: "hidden"
},
animationEngine: "best-available",
animationOptions: {
queue: !1,
duration: 800
},
sortBy: "original-order",
sortAscending: !0,
resizesContainer: !0,
transformsEnabled: !0,
itemPositionDataEnabled: !1
}, b.Isotope.prototype = {
_create: function (a) {
this.options = b.extend({}, b.Isotope.settings, a), this.styleQueue = [], this.elemCount = 0;
var c = this.element[0].style;
this.originalStyle = {};
var d = u.slice(0);
for (var e in this.options.containerStyle) d.push(e);
for (var f = 0, g = d.length; f < g; f++) e = d[f], this.originalStyle[e] = c[e] || "";
this.element.css(this.options.containerStyle), this._updateAnimationEngine(), this._updateUsingTransforms();
var h = {
"original-order": function (a, b) {
return b.elemCount++, b.elemCount
},
random: function () {
return Math.random()
}
};
this.options.getSortData = b.extend(this.options.getSortData, h), this.reloadItems(), this.offset = {
left: parseInt(this.element.css("padding-left") || 0, 10),
top: parseInt(this.element.css("padding-top") || 0, 10)
};
var i = this;
setTimeout(function () {
i.element.addClass(i.options.containerClass)
}, 0), this.options.resizable && v.bind("smartresize.isotope", function () {
i.resize()
}), this.element.delegate("." + this.options.hiddenClass, "click", function () {
return !1
})
},
_getAtoms: function (a) {
var b = this.options.itemSelector,
c = b ? a.filter(b).add(a.find(b)) : a,
d = {
position: "absolute"
};
return this.usingTransforms && (d.left = 0, d.top = 0), c.css(d).addClass(this.options.itemClass), this.updateSortData(c, !0), c
},
_init: function (a) {
this.$filteredAtoms = this._filter(this.$allAtoms), this._sort(), this.reLayout(a)
},
option: function (a) {
if (b.isPlainObject(a)) {
this.options = b.extend(!0, this.options, a);
var c;
for (var d in a) c = "_update" + f(d), this[c] && this[c]()
}
},
_updateAnimationEngine: function () {
var a = this.options.animationEngine.toLowerCase().replace(/[ _-]/g, ""),
b;
switch (a) {
case "css":
case "none":
b = !1;
break;
case "jquery":
b = !0;
break;
default:
b = !e.csstransitions
}
this.isUsingJQueryAnimation = b, this._updateUsingTransforms()
},
_updateTransformsEnabled: function () {
this._updateUsingTransforms()
},
_updateUsingTransforms: function () {
var a = this.usingTransforms = this.options.transformsEnabled && e.csstransforms && e.csstransitions && !this.isUsingJQueryAnimation;
a || (delete this.options.hiddenStyle.scale, delete this.options.visibleStyle.scale), this.getPositionStyles = a ? this._translate : this._positionAbs
},
_filter: function (a) {
var b = this.options.filter === "" ? "*" : this.options.filter;
if (!b) return a;
var c = this.options.hiddenClass,
d = "." + c,
e = a.filter(d),
f = e;
if (b !== "*") {
f = e.filter(b);
var g = a.not(d).not(b).addClass(c);
this.styleQueue.push({
$el: g,
style: this.options.hiddenStyle
})
}
return this.styleQueue.push({
$el: f,
style: this.options.visibleStyle
}), f.removeClass(c), a.filter(b)
},
updateSortData: function (a, c) {
var d = this,
e = this.options.getSortData,
f, g;
a.each(function () {
f = b(this), g = {};
for (var a in e)!c && a === "original-order" ? g[a] = b.data(this, "isotope-sort-data")[a] : g[a] = e[a](f, d);
b.data(this, "isotope-sort-data", g)
})
},
_sort: function () {
var a = this.options.sortBy,
b = this._getSorter,
c = this.options.sortAscending ? 1 : -1,
d = function (d, e) {
var f = b(d, a),
g = b(e, a);
return f === g && a !== "original-order" && (f = b(d, "original-order"), g = b(e, "original-order")), (f > g ? 1 : f < g ? -1 : 0) * c
};
this.$filteredAtoms.sort(d)
},
_getSorter: function (a, c) {
return b.data(a, "isotope-sort-data")[c]
},
_translate: function (a, b) {
return {
translate: [a, b]
}
},
_positionAbs: function (a, b) {
return {
left: a,
top: b
}
},
_pushPosition: function (a, b, c) {
b = Math.round(b + this.offset.left), c = Math.round(c + this.offset.top);
var d = this.getPositionStyles(b, c);
this.styleQueue.push({
$el: a,
style: d
}), this.options.itemPositionDataEnabled && a.data("isotope-item-position", {
x: b,
y: c
})
},
layout: function (a, b) {
var c = this.options.layoutMode;
this["_" + c + "Layout"](a);
if (this.options.resizesContainer) {
var d = this["_" + c + "GetContainerSize"]();
this.styleQueue.push({
$el: this.element,
style: d
})
}
this._processStyleQueue(a, b), this.isLaidOut = !0
},
_processStyleQueue: function (a, c) {
var d = this.isLaidOut ? this.isUsingJQueryAnimation ? "animate" : "css" : "css",
f = this.options.animationOptions,
g = this.options.onLayout,
h, i, j, k;
i = function (a, b) {
b.$el[d](b.style, f)
};
if (this._isInserting && this.isUsingJQueryAnimation) i = function (a, b) {
h = b.$el.hasClass("no-transition") ? "css" : d, b.$el[h](b.style, f)
};
else if (c || g || f.complete) {
var l = !1,
m = [c, g, f.complete],
n = this;
j = !0, k = function () {
if (l) return;
var b;
for (var c = 0, d = m.length; c < d; c++) b = m[c], typeof b == "function" && b.call(n.element, a, n);
l = !0
};
if (this.isUsingJQueryAnimation && d === "animate") f.complete = k, j = !1;
else if (e.csstransitions) {
var o = 0,
p = this.styleQueue[0],
s = p && p.$el,
t;
while (!s || !s.length) {
t = this.styleQueue[o++];
if (!t) return;
s = t.$el
}
var u = parseFloat(getComputedStyle(s[0])[r]);
u > 0 && (i = function (a, b) {
b.$el[d](b.style, f).one(q, k)
}, j = !1)
}
}
b.each(this.styleQueue, i), j && k(), this.styleQueue = []
},
resize: function () {
this["_" + this.options.layoutMode + "ResizeChanged"]() && this.reLayout()
},
reLayout: function (a) {
this["_" + this.options.layoutMode + "Reset"](), this.layout(this.$filteredAtoms, a)
},
addItems: function (a, b) {
var c = this._getAtoms(a);
this.$allAtoms = this.$allAtoms.add(c), b && b(c)
},
insert: function (a, b) {
this.element.append(a);
var c = this;
this.addItems(a, function (a) {
var d = c._filter(a);
c._addHideAppended(d), c._sort(), c.reLayout(), c._revealAppended(d, b)
})
},
appended: function (a, b) {
var c = this;
this.addItems(a, function (a) {
c._addHideAppended(a), c.layout(a), c._revealAppended(a, b)
})
},
_addHideAppended: function (a) {
this.$filteredAtoms = this.$filteredAtoms.add(a), a.addClass("no-transition"), this._isInserting = !0, this.styleQueue.push({
$el: a,
style: this.options.hiddenStyle
})
},
_revealAppended: function (a, b) {
var c = this;
setTimeout(function () {
a.removeClass("no-transition"), c.styleQueue.push({
$el: a,
style: c.options.visibleStyle
}), c._isInserting = !1, c._processStyleQueue(a, b)
}, 10)
},
reloadItems: function () {
this.$allAtoms = this._getAtoms(this.element.children())
},
remove: function (a, b) {
this.$allAtoms = this.$allAtoms.not(a), this.$filteredAtoms = this.$filteredAtoms.not(a);
var c = this,
d = function () {
a.remove(), b && b.call(c.element)
};
a.filter(":not(." + this.options.hiddenClass + ")").length ? (this.styleQueue.push({
$el: a,
style: this.options.hiddenStyle
}), this._sort(), this.reLayout(d)) : d()
},
shuffle: function (a) {
this.updateSortData(this.$allAtoms), this.options.sortBy = "random", this._sort(), this.reLayout(a)
},
destroy: function () {
var a = this.usingTransforms,
b = this.options;
this.$allAtoms.removeClass(b.hiddenClass + " " + b.itemClass).each(function () {
var b = this.style;
b.position = "", b.top = "", b.left = "", b.opacity = "", a && (b[i] = "")
});
var c = this.element[0].style;
for (var d in this.originalStyle) c[d] = this.originalStyle[d];
this.element.unbind(".isotope").undelegate("." + b.hiddenClass, "click").removeClass(b.containerClass).removeData("isotope"), v.unbind(".isotope")
},
_getSegments: function (a) {
var b = this.options.layoutMode,
c = a ? "rowHeight" : "columnWidth",
d = a ? "height" : "width",
e = a ? "rows" : "cols",
g = this.element[d](),
h, i = this.options[b] && this.options[b][c] || this.$filteredAtoms["outer" + f(d)](!0) || g;
h = Math.floor(g / i), h = Math.max(h, 1), this[b][e] = h, this[b][c] = i
},
_checkIfSegmentsChanged: function (a) {
var b = this.options.layoutMode,
c = a ? "rows" : "cols",
d = this[b][c];
return this._getSegments(a), this[b][c] !== d
},
_masonryReset: function () {
this.masonry = {}, this._getSegments();
var a = this.masonry.cols;
this.masonry.colYs = [];
while (a--) this.masonry.colYs.push(0)
},
_masonryLayout: function (a) {
var c = this,
d = c.masonry;
a.each(function () {
var a = b(this),
e = Math.ceil(a.outerWidth(!0) / d.columnWidth);
e = Math.min(e, d.cols);
if (e === 1) c._masonryPlaceBrick(a, d.colYs);
else {
var f = d.cols + 1 - e,
g = [],
h, i;
for (i = 0; i < f; i++) h = d.colYs.slice(i, i + e), g[i] = Math.max.apply(Math, h);
c._masonryPlaceBrick(a, g)
}
})
},
_masonryPlaceBrick: function (a, b) {
var c = Math.min.apply(Math, b),
d = 0;
for (var e = 0, f = b.length; e < f; e++)
if (b[e] === c) {
d = e;
break
}
var g = this.masonry.columnWidth * d,
h = c;
this._pushPosition(a, g, h);
var i = c + a.outerHeight(!0),
j = this.masonry.cols + 1 - f;
for (e = 0; e < j; e++) this.masonry.colYs[d + e] = i
},
_masonryGetContainerSize: function () {
var a = Math.max.apply(Math, this.masonry.colYs);
return {
height: a
}
},
_masonryResizeChanged: function () {
return this._checkIfSegmentsChanged()
},
_fitRowsReset: function () {
this.fitRows = {
x: 0,
y: 0,
height: 0
}
},
_fitRowsLayout: function (a) {
var c = this,
d = this.element.width(),
e = this.fitRows;
a.each(function () {
var a = b(this),
f = a.outerWidth(!0),
g = a.outerHeight(!0);
e.x !== 0 && f + e.x > d && (e.x = 0, e.y = e.height), c._pushPosition(a, e.x, e.y), e.height = Math.max(e.y + g, e.height), e.x += f
})
},
_fitRowsGetContainerSize: function () {
return {
height: this.fitRows.height
}
},
_fitRowsResizeChanged: function () {
return !0
},
_cellsByRowReset: function () {
this.cellsByRow = {
index: 0
}, this._getSegments(), this._getSegments(!0)
},
_cellsByRowLayout: function (a) {
var c = this,
d = this.cellsByRow;
a.each(function () {
var a = b(this),
e = d.index % d.cols,
f = Math.floor(d.index / d.cols),
g = (e + .5) * d.columnWidth - a.outerWidth(!0) / 2,
h = (f + .5) * d.rowHeight - a.outerHeight(!0) / 2;
c._pushPosition(a, g, h), d.index++
})
},
_cellsByRowGetContainerSize: function () {
return {
height: Math.ceil(this.$filteredAtoms.length / this.cellsByRow.cols) * this.cellsByRow.rowHeight + this.offset.top
}
},
_cellsByRowResizeChanged: function () {
return this._checkIfSegmentsChanged()
},
_straightDownReset: function () {
this.straightDown = {
y: 0
}
},
_straightDownLayout: function (a) {
var c = this;
a.each(function (a) {
var d = b(this);
c._pushPosition(d, 0, c.straightDown.y), c.straightDown.y += d.outerHeight(!0)
})
},
_straightDownGetContainerSize: function () {
return {
height: this.straightDown.y
}
},
_straightDownResizeChanged: function () {
return !0
},
_masonryHorizontalReset: function () {
this.masonryHorizontal = {}, this._getSegments(!0);
var a = this.masonryHorizontal.rows;
this.masonryHorizontal.rowXs = [];
while (a--) this.masonryHorizontal.rowXs.push(0)
},
_masonryHorizontalLayout: function (a) {
var c = this,
d = c.masonryHorizontal;
a.each(function () {
var a = b(this),
e = Math.ceil(a.outerHeight(!0) / d.rowHeight);
e = Math.min(e, d.rows);
if (e === 1) c._masonryHorizontalPlaceBrick(a, d.rowXs);
else {
var f = d.rows + 1 - e,
g = [],
h, i;
for (i = 0; i < f; i++) h = d.rowXs.slice(i, i + e), g[i] = Math.max.apply(Math, h);
c._masonryHorizontalPlaceBrick(a, g)
}
})
},
_masonryHorizontalPlaceBrick: function (a, b) {
var c = Math.min.apply(Math, b),
d = 0;
for (var e = 0, f = b.length; e < f; e++)
if (b[e] === c) {
d = e;
break
}
var g = c,
h = this.masonryHorizontal.rowHeight * d;
this._pushPosition(a, g, h);
var i = c + a.outerWidth(!0),
j = this.masonryHorizontal.rows + 1 - f;
for (e = 0; e < j; e++) this.masonryHorizontal.rowXs[d + e] = i
},
_masonryHorizontalGetContainerSize: function () {
var a = Math.max.apply(Math, this.masonryHorizontal.rowXs);
return {
width: a
}
},
_masonryHorizontalResizeChanged: function () {
return this._checkIfSegmentsChanged(!0)
},
_fitColumnsReset: function () {
this.fitColumns = {
x: 0,
y: 0,
width: 0
}
},
_fitColumnsLayout: function (a) {
var c = this,
d = this.element.height(),
e = this.fitColumns;
a.each(function () {
var a = b(this),
f = a.outerWidth(!0),
g = a.outerHeight(!0);
e.y !== 0 && g + e.y > d && (e.x = e.width, e.y = 0), c._pushPosition(a, e.x, e.y), e.width = Math.max(e.x + f, e.width), e.y += g
})
},
_fitColumnsGetContainerSize: function () {
return {
width: this.fitColumns.width
}
},
_fitColumnsResizeChanged: function () {
return !0
},
_cellsByColumnReset: function () {
this.cellsByColumn = {
index: 0
}, this._getSegments(), this._getSegments(!0)
},
_cellsByColumnLayout: function (a) {
var c = this,
d = this.cellsByColumn;
a.each(function () {
var a = b(this),
e = Math.floor(d.index / d.rows),
f = d.index % d.rows,
g = (e + .5) * d.columnWidth - a.outerWidth(!0) / 2,
h = (f + .5) * d.rowHeight - a.outerHeight(!0) / 2;
c._pushPosition(a, g, h), d.index++
})
},
_cellsByColumnGetContainerSize: function () {
return {
width: Math.ceil(this.$filteredAtoms.length / this.cellsByColumn.rows) * this.cellsByColumn.columnWidth
}
},
_cellsByColumnResizeChanged: function () {
return this._checkIfSegmentsChanged(!0)
},
_straightAcrossReset: function () {
this.straightAcross = {
x: 0
}
},
_straightAcrossLayout: function (a) {
var c = this;
a.each(function (a) {
var d = b(this);
c._pushPosition(d, c.straightAcross.x, 0), c.straightAcross.x += d.outerWidth(!0)
})
},
_straightAcrossGetContainerSize: function () {
return {
width: this.straightAcross.x
}
},
_straightAcrossResizeChanged: function () {
return !0
}
}, b.fn.imagesLoaded = function (a) {
function h() {
a.call(c, d)
}
function i(a) {
var c = a.target;
c.src !== f && b.inArray(c, g) === -1 && (g.push(c), --e <= 0 && (setTimeout(h), d.unbind(".imagesLoaded", i)))
}
var c = this,
d = c.find("img").add(c.filter("img")),
e = d.length,
f = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",
g = [];
return e || h(), d.bind("load.imagesLoaded error.imagesLoaded", i).each(function () {
var a = this.src;
this.src = f, this.src = a
}), c
};
var w = function (b) {
a.console && a.console.error(b)
};
b.fn.isotope = function (a, c) {
if (typeof a == "string") {
var d = Array.prototype.slice.call(arguments, 1);
this.each(function () {
var c = b.data(this, "isotope");
if (!c) {
w("cannot call methods on isotope prior to initialization; attempted to call method '" + a + "'");
return
}
if (!b.isFunction(c[a]) || a.charAt(0) === "_") {
w("no such method '" + a + "' for isotope instance");
return
}
c[a].apply(c, d)
})
} else this.each(function () {
var d = b.data(this, "isotope");
d ? (d.option(a), d._init(c)) : b.data(this, "isotope", new b.Isotope(a, this, c))
});
return this
}
})(window, jQuery);
/*control tabs width from here*/
jQuery(window).load(function () {
jQuery(document).ready(function ($) {
// cache container
var container = $('#portfolio-items-wrap');
container.isotope({
animationEngine: 'best-available',
animationOptions: {
duration: 200,
queue: false
},
layoutMode: 'fitRows'
});
$('#filters a').click(function () {
$('#filters a').removeClass('active');
$(this).addClass('active');
var selector = $(this).attr('data-filter');
container.isotope({
filter: selector
});
setProjects();
return false;
});
function columnsWidth() {
var winWidth = $(window).width(),
columns = 1;
if (winWidth > 1200) {
columns = 4;
} else if (winWidth > 900) {
columns = 4;
} else if (winWidth > 600) {
columns = 3;
} else if (winWidth > 300) {
columns = 1;
}
return columns;
}
function setColumns() {
var winWidth = $(window).width(),
columns = columnsWidth(),
postWidth = Math.floor(winWidth / columns);
container.find('.portfolio-item').each(function () {
$(this).css({
width: postWidth + 'px'
});
});
}
function setProjects() {
setColumns();
container.isotope('reLayout');
}
container.imagesLoaded(function () {
setColumns();
});
$(window).bind('resize', function () {
setProjects();
});
});
});
?>