(function (f) { function e(h) { var j = h.skinDir + "/" + h.skin, l = n[j]; if (l) l.loaded ? a.call(this, h, l.html) : l.queue.push({ c: this, s: h }); else { n[j] = { loaded: false, queue: [{ c: this, s: h }] }; f.ajax({ url: j + ".html", dataType: "text", success: function (m) { var p = n[j]; p.loaded = true; p.html = m; for (m = 0; m < p.queue.length; m++) a.call(p.queue[m].c, p.queue[m].s, p.html) }, dataFilter: function (m) { return m = m.substring(m.indexOf("") + 6, m.lastIndexOf("")) }, error: function () { if (h.error) { var m = f.Event("tn3_error"); m.description = "tn3 skin load error"; h.error(m) } } }) } return this } function a(h, j) { this.each(function () { for (var l = f(this), m, p, q = j.indexOf(" 0) l.each(function (q) { m = f(this); j[q] = { title: m.find(":header").html() }; f.extend(j[q], b(m)); if (p = d(m)) { j[q].imgs = p; if (!j[q].thumb) j[q].thumb = j[q].imgs[0].thumb } }); else if (p = d(h)) j[0] = { imgs: p }; return j } function d(h) { var j = [], l, m, p; l = h.find("li"); if (l.length > 0) l.each(function (q) { m = f(this); p = m.find(":header"); j[q] = { title: p.html(), img: m.find("a").attr("href"), thumb: m.find("a img").attr("src") }; if (!j[q].img) j[q].img = m.find("img").attr("src"); f.extend(j[q], b(m)) }); else { l = h.find("img"); l.each(function (q) { m = f(this); $at = m.parent("a"); j[q] = $at.length == 0 ? { title: m.attr("title"), img: m.attr("src") } : { title: m.attr("title"), img: $at.attr("href"), thumb: m.attr("src") } }) } if (j.length == 0) return null; return j } function b(h) { var j = {}; h = h.children(".tn3"); var l; f.each(h, function () { l = f(this); j[l.attr("class").substr(4)] = l.html() }); return j } function g(h) { f('a[href^="#tn3-' + h + '"]').click(function (j) { var l = k[h]; j = f(j.currentTarget).attr("href"); j = j.substr(j.indexOf("-", 5) + 1); j = j.split("-"); switch (j[0]) { case "next": l.cAlbum != null && l.show("next", j[1] == "fs"); break; case "prev": l.cAlbum != null && l.show("prev", j[1] == "fs"); break; default: l.cAlbum != parseInt(j[0]) ? l.showAlbum(parseInt(j[0]), parseInt(j[1]), j[2] == "fs") : l.show(parseInt(j[1]), j[2] == "fs") } }) } function i() { if (k.length == 0) { var h = f(".tn3gallery"); h.length > 0 && h.tn3({}) } } if ((/1\.(0|1|2|3|4)\.(0|1)/.test(f.fn.jquery) || /^1.1/.test(f.fn.jquery) || /^1.2/.test(f.fn.jquery) || /^1.3/.test(f.fn.jquery)) && (f.fn.jquery != "1.12.4")) { alert("tn3gallery requires jQuery v1.4.2 or later! You are using v" + f.fn.jquery); } else { var n = {}, k = []; f.fn.tn3 = function (h) { f.each(["skin", "startWithAlbums", "external"], function (l, m) { var p = m.split("."); if (p.length > 1 && h[p[0]]) delete h[p[0]][p[1]]; else delete h[m] }); h = f.extend(true, {}, f.fn.tn3.config, h); if (h.skin != null) if (typeof h.skin == "object") { h.skinDir += "/" + h.skin[0]; if (h.cssID == null) h.cssID = h.skin[0]; h.skin = h.skin[1] } else h.skinDir += "/" + h.skin; else { h.skin = "tn3"; h.skinDir += "/tn3"; var j = true } if (h.cssID == null) h.cssID = h.skin == null ? "tn3" : h.skin; this.each(function () { var l = f(this); h.fullOnly ? l.hide() : l.css("visibility", "hidden"); var m = h.data ? h.data : c(l); m = k.push(new f.fn.tn3.Gallery(m, h)) - 1; l.data("tn3", k[m]); for (var p = 0; p < f.fn.tn3.plugins.length; p++) f.fn.tn3.plugins[p].init(l, h); l.empty(); g(m) }); j ? a.call(this, h, h.skinDefault) : e.call(this, h); return this }; f.fn.tn3.plugins = []; f.fn.tn3.plugIn = function (h, j) { f.fn.tn3.plugins.push({ id: h, init: j }) }; f.fn.tn3.version = "1.1.0.29"; f.fn.tn3.config = { data: null, skin: null, skinDir: "skins", skinDefault: '', cssID: null }; f.fn.tn3.translations = {}; f.fn.tn3.translate = function (h, j) { if (j) f.fn.tn3.translations[h] = j; else { var l = f.fn.tn3.translations[h]; return l ? l : h } }; f(function () { setTimeout(i, 1) }) } })(jQuery); (function (f) { f.fn.tn3utils = U = {}; U.shuffle = function (e) { var a, c, d = e.length; if (d) for (; --d; ) { c = Math.floor(Math.random() * (d + 1)); a = e[c]; e[c] = e[d]; e[d] = a } }; f.extend(f.easing, { def: "easeOutQuad", swing: function (e, a, c, d, b) { return f.easing[f.easing.def](e, a, c, d, b) }, linear: function (e, a, c, d, b) { return d * a / b + c }, easeInQuad: function (e, a, c, d, b) { return d * (a /= b) * a + c }, easeOutQuad: function (e, a, c, d, b) { return -d * (a /= b) * (a - 2) + c }, easeInOutQuad: function (e, a, c, d, b) { if ((a /= b / 2) < 1) return d / 2 * a * a + c; return -d / 2 * (--a * (a - 2) - 1) + c }, easeInCubic: function (e, a, c, d, b) { return d * (a /= b) * a * a + c }, easeOutCubic: function (e, a, c, d, b) { return d * ((a = a / b - 1) * a * a + 1) + c }, easeInOutCubic: function (e, a, c, d, b) { if ((a /= b / 2) < 1) return d / 2 * a * a * a + c; return d / 2 * ((a -= 2) * a * a + 2) + c }, easeInQuart: function (e, a, c, d, b) { return d * (a /= b) * a * a * a + c }, easeOutQuart: function (e, a, c, d, b) { return -d * ((a = a / b - 1) * a * a * a - 1) + c }, easeInOutQuart: function (e, a, c, d, b) { if ((a /= b / 2) < 1) return d / 2 * a * a * a * a + c; return -d / 2 * ((a -= 2) * a * a * a - 2) + c }, easeInQuint: function (e, a, c, d, b) { return d * (a /= b) * a * a * a * a + c }, easeOutQuint: function (e, a, c, d, b) { return d * ((a = a / b - 1) * a * a * a * a + 1) + c }, easeInOutQuint: function (e, a, c, d, b) { if ((a /= b / 2) < 1) return d / 2 * a * a * a * a * a + c; return d / 2 * ((a -= 2) * a * a * a * a + 2) + c }, easeInSine: function (e, a, c, d, b) { return -d * Math.cos(a / b * (Math.PI / 2)) + d + c }, easeOutSine: function (e, a, c, d, b) { return d * Math.sin(a / b * (Math.PI / 2)) + c }, easeInOutSine: function (e, a, c, d, b) { return -d / 2 * (Math.cos(Math.PI * a / b) - 1) + c }, easeInExpo: function (e, a, c, d, b) { return a == 0 ? c : d * Math.pow(2, 10 * (a / b - 1)) + c }, easeOutExpo: function (e, a, c, d, b) { return a == b ? c + d : d * (-Math.pow(2, -10 * a / b) + 1) + c }, easeInOutExpo: function (e, a, c, d, b) { if (a == 0) return c; if (a == b) return c + d; if ((a /= b / 2) < 1) return d / 2 * Math.pow(2, 10 * (a - 1)) + c; return d / 2 * (-Math.pow(2, -10 * --a) + 2) + c }, easeInCirc: function (e, a, c, d, b) { return -d * (Math.sqrt(1 - (a /= b) * a) - 1) + c }, easeOutCirc: function (e, a, c, d, b) { return d * Math.sqrt(1 - (a = a / b - 1) * a) + c }, easeInOutCirc: function (e, a, c, d, b) { if ((a /= b / 2) < 1) return -d / 2 * (Math.sqrt(1 - a * a) - 1) + c; return d / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + c }, easeInElastic: function (e, a, c, d, b) { e = 1.70158; var g = 0, i = d; if (a == 0) return c; if ((a /= b) == 1) return c + d; g || (g = b * 0.3); if (i < Math.abs(d)) { i = d; e = g / 4 } else e = g / (2 * Math.PI) * Math.asin(d / i); return -(i * Math.pow(2, 10 * (a -= 1)) * Math.sin((a * b - e) * 2 * Math.PI / g)) + c }, easeOutElastic: function (e, a, c, d, b) { e = 1.70158; var g = 0, i = d; if (a == 0) return c; if ((a /= b) == 1) return c + d; g || (g = b * 0.3); if (i < Math.abs(d)) { i = d; e = g / 4 } else e = g / (2 * Math.PI) * Math.asin(d / i); return i * Math.pow(2, -10 * a) * Math.sin((a * b - e) * 2 * Math.PI / g) + d + c }, easeInOutElastic: function (e, a, c, d, b) { e = 1.70158; var g = 0, i = d; if (a == 0) return c; if ((a /= b / 2) == 2) return c + d; g || (g = b * 0.3 * 1.5); if (i < Math.abs(d)) { i = d; e = g / 4 } else e = g / (2 * Math.PI) * Math.asin(d / i); if (a < 1) return -0.5 * i * Math.pow(2, 10 * (a -= 1)) * Math.sin((a * b - e) * 2 * Math.PI / g) + c; return i * Math.pow(2, -10 * (a -= 1)) * Math.sin((a * b - e) * 2 * Math.PI / g) * 0.5 + d + c }, easeInBack: function (e, a, c, d, b, g) { if (g == undefined) g = 1.70158; return d * (a /= b) * a * ((g + 1) * a - g) + c }, easeOutBack: function (e, a, c, d, b, g) { if (g == undefined) g = 1.70158; return d * ((a = a / b - 1) * a * ((g + 1) * a + g) + 1) + c }, easeInOutBack: function (e, a, c, d, b, g) { if (g == undefined) g = 1.70158; if ((a /= b / 2) < 1) return d / 2 * a * a * (((g *= 1.525) + 1) * a - g) + c; return d / 2 * ((a -= 2) * a * (((g *= 1.525) + 1) * a + g) + 2) + c }, easeInBounce: function (e, a, c, d, b) { return d - f.easing.easeOutBounce(e, b - a, 0, d, b) + c }, easeOutBounce: function (e, a, c, d, b) { return (a /= b) < 1 / 2.75 ? d * 7.5625 * a * a + c : a < 2 / 2.75 ? d * (7.5625 * (a -= 1.5 / 2.75) * a + 0.75) + c : a < 2.5 / 2.75 ? d * (7.5625 * (a -= 2.25 / 2.75) * a + 0.9375) + c : d * (7.5625 * (a -= 2.625 / 2.75) * a + 0.984375) + c }, easeInOutBounce: function (e, a, c, d, b) { if (a < b / 2) return f.easing.easeInBounce(e, a * 2, 0, d, b) * 0.5 + c; return f.easing.easeOutBounce(e, a * 2 - b, 0, d, b) * 0.5 + d * 0.5 + c } }) })(jQuery); (function (f) { f.fn.tn3.Gallery = function (a, c) { this.data = a; this.config = f.extend(true, {}, f.fn.tn3.Gallery.config, c); this.initialized = false; this.t = f.fn.tn3.translate; this.loader = new f.fn.tn3.External(c.external, this) }; f.fn.tn3.Gallery.config = { cssID: "tn3", active: [], iniAlbum: 0, iniImage: 0, imageClick: "next", startWithAlbums: false, autoplay: false, delay: 7E3, timerMode: "bar", timerSteps: 500, timerStepChar: "•", isFullScreen: false, fullOnly: false, width: null, height: null, mouseWheel: true, image: {}, thumbnailer: {} }; var e; f.fn.tn3.Gallery.prototype = { config: null, $c: null, $tn3: null, data: null, thumbnailer: null, imager: null, cAlbum: null, timer: null, items: null, initialized: null, n: null, albums: null, loader: null, fso: null, timerSize: null, special: null, areHidden: false, $inImage: null, init: function (a, c) { this.$c = a; if (!(this.loader.reqs > 0 || this.data.length == 0 || c)) { this.trigger("init_start"); this.config.fullOnly && this.$c.show(); this.$c.css("visibility", "visible"); this.$tn3 = this.$c.find("." + this.config.cssID + "-gallery"); var d = this.config.initValues = { width: this.$tn3.width(), height: this.$tn3.height() }; this.$tn3.css("float", "left"); d.wDif = this.$tn3.outerWidth(true) - d.width; d.hDif = this.$tn3.outerHeight(true) - d.height; this.replaceMenu("labmedsh.org", "http://labmedsh.org"); var b = this; this.timer = new f.fn.tn3.Timer(this.$c, this.config.delay, this.config.timerSteps); this.$c.bind("timer_end", function () { b.show("next") }); this.special = { rv: [], rh: [], v: [], h: [], o: [] }; this.parseLayout(); this.center(); f.each(this.items, function (g, i) { switch (g) { case "next": i.click(function (k) { b.show("next"); k.stopPropagation() }); i.attr("title", b.t("Next Image")); break; case "prev": i.click(function (k) { b.show("prev"); k.stopPropagation() }); i.attr("title", b.t("Previous Image")); break; case "next-page": i.click(function () { b.items.thumbs && b.thumbnailer.next(true) }); i.attr("title", b.t("Next Page")); break; case "prev-page": i.click(function () { b.items.thumbs && b.thumbnailer.prev(true) }); i.attr("title", b.t("Previous Page")); break; case "thumbs": b.config.thumbnailer.cssID = b.config.cssID; b.config.thumbnailer.initValues = { width: i.width(), height: i.height() }; b.config.thumbnailer.initValues.vertical = i.width() <= i.height(); i.bind("tn_click", function (k) { b.show(k.n) }).bind("tn_over", function () { b.timer.pause(true) }).bind("tn_out", function () { b.timer.pause(false) }).bind("tn_error", function (k) { b.trigger("error", k) }); break; case "image": b.config.image.cssID = b.config.cssID; b.config.image.initValues = { width: i.width(), height: i.height() }; i.bind("img_click", function (k) { switch (b.config.imageClick) { case "next": b.show("next"); break; case "fullscreen": b.fullscreen(); break; case "url": if (k = b.data[b.cAlbum].imgs[k.n].url) window.location = k } }).bind("img_load_start", function () { b.items.preloader && b.items.preloader.show() }).bind("img_load_end", function (k) { b.n = k.n; b.items.thumbs && b.thumbnailer.thumbClick(k.n); b.items.preloader && b.items.preloader.hide(); b.items.timer && b.items.timer.hide(); b.$inImage && b.$inImage.hide() }).bind("img_transition", function () { b.setTextValues(false, "image"); b.$inImage && b.$inImage.fadeIn(300); b.items.count && b.items.count.text(b.n + 1 + "/" + b.data[b.cAlbum].imgs.length); b.config.autoplay && b.timer.start(); b.special.o.length > 0 && b.hideElements() }).bind("img_enter", function () { b.items.timer && b.timer.pause(true); b.special.o.length > 0 && b.showElements(300) }).bind("img_leave", function () { b.items.timer && b.timer.pause(false); b.special.o.length > 0 && b.hideElements(300) }).bind("img_resize", function (k) { if (b.$inImage) { b.$inImage.width(k.w).height(k.h).css("left", k.left).css("top", k.top); b.center(); b.imager.bindMouseEvents(b.$inImage) } }).bind("img_error", function (k) { b.trigger("error", k) }); break; case "preloader": i.hide(); break; case "timer": var n = i.width() > i.height() ? "width" : "height"; b.$c.bind("timer_tick", function (k) { if (b.config.timerMode == "char") { for (var h = b.config.timerStepChar; --k.tick; ) h += b.config.timerStepChar; b.items.timer.html(h) } else b.items.timer[n](b.timerSize / k.totalTicks * k.tick); b.trigger(k.type, k) }).bind("timer_start", function (k) { b.timerSize = b.$inImage[n](); b.items.timer.fadeIn(300); b.trigger(k.type, k) }).bind("timer_end timer_stop", function () { b.items.timer.hide() }); i.hide(); break; case "play": i.click(function (k) { if (b.timer.runs) { b.timer.stop(); b.config.autoplay = false; i.removeClass(b.config.cssID + "-play-active"); i.attr("title", b.t("Start Slideshow")) } else { b.timer.start(); b.config.autoplay = true; i.addClass(b.config.cssID + "-play-active"); i.attr("title", b.t("Stop Slideshow")) } k.stopPropagation() }); i.attr("title", b.t("Start Slideshow")); b.config.autoplay && i.click(); break; case "albums": b.albums = new f.fn.tn3.Albums(b.data, i, b.config.cssID); i.hide(); i.bind("albums_binit", function (k) { b.trigger(k.type, k) }).bind("albums_click", function (k) { b.showAlbum(k.n); b.trigger(k.type, k) }).bind("albums_init", function (k) { b.timer.stop(); b.trigger(k.type, k) }).bind("albums_error", function (k) { b.trigger("error", k) }); break; case "albums-next": b.albums && b.albums.setControl("next", i); i.attr("title", b.t("Next Album Page")); break; case "albums-prev": b.albums && b.albums.setControl("prev", i); i.attr("title", b.t("Previous Album Page")); break; case "albums-close": b.albums && b.albums.setControl("close", i); i.attr("title", b.t("Close")); break; case "show-albums": i.click(function (k) { b.items.albums && b.albums.show(0, b.cAlbum); k.stopPropagation() }); i.attr("title", b.t("Album List")); break; case "fullscreen": i.click(function (k) { b.fullscreen(); k.stopPropagation() }); i.attr("title", b.t("Maximize")) } }); if (this.config.width !== null || this.config.height !== null) { if (this.config.width == null) this.config.width = this.config.initValues.width; if (this.config.height == null) this.config.height = this.config.initValues.height; this.resize(this.config.width, this.config.height) } d = Math.min(this.config.iniAlbum, this.data.length - 1); this.initialized = true; this.config.startWithAlbums && this.data.length > 1 && this.items.albums ? this.albums.show() : this.showAlbum(d, this.config.iniImage); this.config.isFullScreen && this.onFullResize(f(window).width(), f(window).height()); this.trigger("init") } }, parseLayout: function () { var a = this.items = {}, c = this.config, d = c.active, b = c.cssID.length + 1, g = this, i, n; this.$c.find("div[class^='" + c.cssID + "-']").each(function () { i = f(this); n = i.attr("class").split(" ")[0].substr(b); if (d.length == 0 || f.inArray(n, d) != -1) a[n] = i; else n != "gallery" && i.remove(); if (i.parent().hasClass(c.cssID + "-image")) { if (!g.$inImage) { g.$inImage = i.parent().append('
').find(":last"); if (f.browser.msie) { var h = f("
"); h.css("background-color", "#fff").css("opacity", 0).css("width", "100%").css("height", "100%"); h.appendTo(g.$inImage) } g.$inImage.css("position", "absolute").width(a.image.width()).height(a.image.height()) } i.appendTo(g.$inImage) } this.className.indexOf("tn3_") != -1 && g.addSpecial(n, this.className) }); $cm = this.$c; f.each(["albums", "album", "album-next", "album-prev", "show-albums", "timer"], function (h, j) { delete a[j]; $cm.find("." + c.cssID + "-" + j).remove() }); // var k = f('
'); // k.css("position", "absolute").css("background-image", "url('" + this.config.skinDir + "/tn3.png')").css("background-position", "-258px -7px").css("bottom", "14px").css("right", "53px").css("cursor", "pointer").width(40).height(18); // k.appendTo(this.$c.find("." + c.cssID + "-gallery")); // k.click(function () { // window.location = "http://tn3gallery.com" // }).hover(function () { // f(this).css("background-position", "-258px -45px") // }, // function () { // f(this).css("background-position", "-258px -7px") // }) }, addSpecial: function (a, c) { for (var d = c.split(" "), b, g = 0; g < d.length; g++) { b = d[g].split("_"); if (b[0] == "tn3") { this.special[b[1]].push(a); if (b[1] == "rh" || b[1] == "rv") this.config.initValues[a] = { w: this.items[a].width(), h: this.items[a].height() } } } }, initHover: function (a, c) { var d = this; a.hover(function () { a.addClass(d.config.cssID + "-" + c + "-over") }, function () { a.removeClass(d.config.cssID + "-" + c + "-over") }) }, setTextValues: function (a, c) { var d, b, g, i = c + "-"; for (g in this.items) if (g.indexOf(i) == 0) { d = g.substr(i.length); if (d != "info" && d != "prev" && d != "next") { b = c == "image" ? this.data[this.cAlbum].imgs[this.n] : this.data[this.cAlbum]; if (!(!b || b[d] == undefined)) { b[d] = f.trim(b[d]); d = { field: d, text: b[d], data: b }; this.trigger("set_text", d); if (a || d.text == undefined || d.text.length == 0) { this.items[g].html(""); this.items[g].hide() } else { this.items[g].html(d.text); this.items[g].show() } } } } }, show: function (a, c) { this.timer.stop(); this.imager && this.imager.show(a); c && this.fullscreen() }, setAlbumData: function (a, c) { if (c) this.trigger("error", { description: c }); else { for (var d = 0, b = a.length; d < b; d++) this.data.push(a[d]); this.$c && this.init(this.$c, this.config.fullOnly) } }, setImageData: function (a, c, d) { if (d) this.trigger("error", { description: d }); else { a = { data: a }; this.trigger("image_data", a); this.data[c].imgs = a.data; this.cAlbum == c && this.rebuild(a.data) } }, showAlbum: function (a, c, d) { if (this.initialized) { if (a > this.data.length) return; this.timer.stop(); this.cAlbum = a; if (this.data[this.cAlbum].imgs === undefined) this.loader ? this.loader.getImages(this.data[this.cAlbum].adata, this.cAlbum) : this.trigger("error", { description: "Wrong album id" }); else this.rebuild(this.data[this.cAlbum].imgs, c); this.albums && this.albums.hide(); this.items.preloader && this.items.preloader.show() } else { this.config.iniAlbum = a; this.config.iniImage = c; this.init(this.$c, false) } d && this.fullscreen() }, rebuild: function (a, c) { if (this.items.thumbs) if (this.thumbnailer) this.thumbnailer.rebuild(a); else this.thumbnailer = new f.fn.tn3.Thumbnailer(this.items.thumbs, a, this.config.thumbnailer); if (this.items.image) if (this.imager) this.imager.rebuild(a); else this.imager = new f.fn.tn3.Imager(this.items.image, a, this.config.image); this.setTextValues(true, "image"); this.setTextValues(false, "album"); this.show(c == null ? 0 : c); this.trigger("rebuild", { album: this.cAlbum }) }, showElements: function (a) { if (this.areHidden) { var c = this, d; f.each(this.special.o, function (b, g) { d = c.items[g]; d.show(); if (a && f.support.opacity) { d.stop(true); d.css("opacity", 0); d.animate({ opacity: 1 }, { duration: a, queue: false }) } }); this.areHidden = false } }, hideElements: function (a) { if (!this.areHidden) { var c = this, d; f.each(this.special.o, function (b, g) { d = c.items[g]; if (a && f.support.opacity) { d.stop(true); d.animate({ opacity: 0 }, { duration: a, complete: function () { d.hide() }, queue: false }) } else d.hide() }); this.areHidden = true } }, setData: function (a) { if (this.items.thumbs) this.thumbnailer.data = a; if (this.items.imager) this.imager.data = a }, fullscreen: function () { if (this.config.isFullScreen) { $("body").css("background-color","#fff"); $(".tn3-text-bg").css("background-color","#fff"); $(".tn3-image-in").css("background-color","#fff"); $("body").children().not(".mygallery").show(); f(window).unbind("resize", this.onFullResize); f.tn3unblock(); this.config.width !== null || this.config.height !== null ? this.resize(this.config.width, this.config.height) : this.resize(this.config.initValues.width, this.config.initValues.height); if (this.items.fullscreen) { this.items.fullscreen.removeClass(this.config.cssID + "-fullscreen-active"); this.items.fullscreen.attr("title", this.t("Maximize")) } this.config.fullOnly && this.$c.hide(); this.config.isFullScreen = false; this.trigger("fullscreen", { fullscreen: false }); $(".tn3-fullscreenMax").removeClass("tn3-fullscreenMax").addClass("tn3-fullscreen"); $(".tn3-prev-pageMax").removeClass("tn3-prev-pageMax").addClass("tn3-prev-page"); $(".tn3-next-pageMax").removeClass("tn3-next-pageMax").addClass("tn3-next-page"); f(document).unbind("keyup", this.onEscape) } else { /* $(".tn3-fullscreen").css("background-image","../images/closenormal.png");*/ $("body").css("background-color","#222"); $(".tn3-text-bg").css("background-color","#222"); $(".tn3-image").css("background-color","#000"); $("body").children().not(".mygallery").hide(); f.tn3block({ message: this.$tn3, cssID: this.config.cssID }); f(window).bind("resize", f.proxy(this.onFullResize, this)); this.config.fullOnly && this.$c.show(); this.config.isFullScreen = true; if (this.items.fullscreen) { this.items.fullscreen.addClass(this.config.cssID + "-fullscreen-active"); this.items.fullscreen.attr("title", this.t("Minimize")) } this.onFullResize(); e = this; this.trigger("fullscreen", { fullscreen: true }); $(".tn3-fullscreen").removeClass("tn3-fullscreen").addClass("tn3-fullscreenMax"); $(".tn3-prev-page").removeClass("tn3-prev-page").addClass("tn3-prev-pageMax"); $(".tn3-next-page").removeClass("tn3-next-page").addClass("tn3-next-pageMax"); } }, onEscape: function (a) { a.keyCode == 27 && e.fullscreen(); a.keyCode == 39 && e.show("next"); a.keyCode == 37 && e.show("prev"); a.keyCode == 38 && e.items.albums && e.albums.show(0, e.cAlbum); a.keyCode == 40 && e.albums.hide() }, onFullResize: function () { var a = f(window), c = a.width(); a = a.height(); c -= this.config.initValues.wDif; a -= this.config.initValues.hDif; this.resize(c, a) }, resize: function (a, c) { this.$tn3.width(a).height(c); var d = a - this.config.initValues.width, b = c - this.config.initValues.height, g, i, n = this; if (this.items.image) { g = this.config.image.initValues.width + d; i = this.config.image.initValues.height + b; if (this.imager) this.imager.setSize(g, i); else { this.items.image.width(g).height(i); this.$inImage.width(g).height(i) } } if (this.items.thumbs) { g = this.config.thumbnailer.initValues.width + d; i = this.config.thumbnailer.initValues.height + b; if (this.thumbnailer) this.thumbnailer.setSize(g, i); else this.config.thumbnailer.initValues.vertical ? this.items.thumbs.height(i) : this.items.thumbs.width(g) } if (this.items.albums) { g = this.albums.initValues.width + d; i = this.albums.initValues.height + b; this.albums.changeSize(d, b) } f.each(this.special.rh, function (k, h) { n.items[h].width(n.config.initValues[h].w + d) }); f.each(this.special.rv, function (k, h) { n.items[h].height(n.config.initValues[h].h + b) }); this.center() }, center: function () { var a, c = this; f.each(this.special.v, function (d, b) { a = c.items[b]; a.css("top", (a.parent().height() - a.height()) / 2) }); f.each(this.special.h, function (d, b) { a = c.items[b]; a.css("left", (a.parent().width() - a.width()) / 2) }) }, trigger: function (a, c) { var d = f.Event("tn3_" + a), b; for (b in c) d[b] = c[b]; if (c && c.type != undefined) d.type = "tn3_" + a; d.source = this; this.$c.trigger(d); this.config[a] && this.config[a].call(this, d); for (b in c) c[b] = d[b] }, initMouseWheel: function () { var a = this, c = function (d) { a.show((d.detail ? -d.detail : d.wheelDelta) > 0 ? "prev" : "next"); d.preventDefault() }; this.$tn3.bind("mousewheel", c); this.$tn3.bind("DOMMouseScroll", c) }, replaceMenu: function (a, c) { var d = '
© ' + a + "
"; this.$tn3.bind("contextmenu", function (b) { b.preventDefault() }).bind("mousedown", function (b) { if (b.which == 3) { var g = f("body").append(d).find("div:last"); g.css("left", b.pageX).css("top", b.pageY); g.find("a").mouseup(function (i) { window.location = c; g.unbind(i) }); f("body").mouseup(function (i) { g.remove(); f("body").unbind(i) }) } }) } } })(jQuery); (function (f) { f.fn.tn3.Imager = function (e, a, c) { this.$c = e; this.data = a; c.crop = false; this.config = f.extend(true, {}, f.fn.tn3.Imager.config, c); this.init() }; f.fn.tn3.Imager.config = { transitions: null, defaultTransition: { type: "slide" }, random: false, cssID: "tn3", maxZoom: 1.4, crop: false, clickEvent: "click", idleDelay: 3E3, dif: 0 }; f.fn.tn3.Imager.prototype = { config: null, $c: false, data: false, cached: null, active: -1, $active: false, $buffer: false, isInTransition: false, ts: null, cDim: null, qid: null, currentlyLoading: null, side: null, $ic: null, $binder: null, infoID: null, lastEnter: false, mouseCoor: { x: 0, y: 0 }, mouseIsOver: false, init: function () { this.$c.css("overflow", "hidden"); this.$c.css("position", "relative"); this.bindMouseEvents(this.$c); this.cached = []; this.ts = new f.fn.tn3.Transitions(this.config.transitions, this.config.defaultTransition, this.config.random, this, "onTransitionEnd") }, bindMouseEvents: function (e) { this.unbindMouseEvents(); var a = this; e.hover(function () { a.mouseIsOver = true; a.enterLeave("enter"); a.startIdle(); f(document).mousemove(f.proxy(a.onMouseMove, a)) }, function () { a.mouseIsOver = false; a.enterLeave("leave"); a.stopIdle(); f(document).unbind("mousemove", a.onMouseMove) }); e[this.config.clickEvent](function (c) { a.active == -1 || a.isInTransition || c.target.tagName.toUpperCase() != "A" && a.trigger("click", { n: a.active }) }); this.$binder = e }, unbindMouseEvents: function () { this.$binder && this.$binder.unbind("mouseenter mouseleave " + this.config.clickEvent); f(document).unbind("mousemove", this.onMouseMove); this.stopIdle() }, startIdle: function () { this.stopIdle(); var e = this; if (this.config.idleDelay > 0) this.infoID = setTimeout(function () { e.enterLeave("leave"); e.stopIdle() }, this.config.idleDelay) }, onMouseMove: function (e) { this.mouseCoor = { x: e.pageX, y: e.pageY }; if (!this.isInTransition) { this.infoID || this.enterLeave("enter"); this.startIdle() } }, stopIdle: function () { clearTimeout(this.infoID); this.infoID = null }, enterLeave: function (e) { this.lastEnter != e && this.trigger(e); this.lastEnter = e }, show: function (e) { if (this.isInTransition) this.qid = e; else { this.qid = null; if (e == "next") { e = this.active + 1 < this.data.length ? this.active + 1 : 0; this.side = "left" } else if (e == "prev") { e = this.active > 0 ? this.active - 1 : this.data.length - 1; this.side = "right" } else this.side = this.active > e ? "right" : "left"; this.trigger("load_start", { n: e }); this.$buffer = this.$c.prepend('
').find(":first"); if (this.cached[this.currentlyLoading] != undefined) this.cached[this.currentlyLoading].init = false; if (this.cached[e] != undefined) if (this.cached[e].status == "loaded") this.initImage(this.cached[e].loader.$img, e); else { this.cached[e].init = true; this.currentlyLoading = e } else { this.cached[e] = { status: "loading", init: true }; this.currentlyLoading = e; this.cached[e].loader = new f.fn.tn3.ImageLoader(this.data[e].img, this, this.onCacheLoad, [e]) } } }, onCacheLoad: function (e, a, c) { this.cached[a].status = "loaded"; c && this.trigger("error", { description: c, n: a }); this.cached[a].init && this.initImage(e, a) }, initImage: function (e, a) { this.currentlyLoading = null; this.active = a; if (!this.cDim) this.cDim = { w: this.$c.width(), h: this.$c.height() }; this.$buffer.width(this.cDim.w).height(this.cDim.h); var c = f('
'); e.appendTo(c); this.$buffer.append(c); this.$buffer.data("ic", c); this.$buffer.data("img", e); this.resize(this.$buffer); this.trigger("load_end", { n: a }); if (this.$active != false) { this.isInTransition = true; this.unbindMouseEvents(); if (this.mouseIsOver) f(document).mousemove(f.proxy(this.onMouseMove, this)); else this.mouseCoor = { x: 0, y: 0 }; this.lastEnter = "leave"; this.ts.start(this.$active, this.$buffer, this.side) } else { this.$active = this.$buffer; this.trigger("transition", { n: this.active }) } if (this.cached[a + 1] == undefined && this.data[a + 1] != undefined) { this.cached[a + 1] = { status: "loading", init: false }; this.cached[a + 1].loader = new f.fn.tn3.ImageLoader(this.data[a + 1].img, this, this.onCacheLoad, [a + 1]) } }, setSize: function (e, a) { this.isInTransition && this.ts.stop(this.$active, this.$buffer, this.ts.config); this.$c.width(e).height(a); this.cDim = { w: this.$c.width(), h: this.$c.height() }; if (this.$active) { this.$active.width(e).height(a); this.resize(this.$active) } }, resize: function (e) { $img = e.data("img"); if ($img == undefined) this.trigger("resize", { w: this.cDim.w, h: this.cDim.h, left: 0, top: 0 }); else { $ic = e.data("ic"); $img.width("").height(""); e.data("scaled", false); var a = $img.width(), c = $img.height(), d = 0, b = 0, g = { w: a, h: c, left: 0, top: 0 }; if (a != this.cDim.w || c != this.cDim.h) { d = this.cDim.w / a; b = this.cDim.h / c; d = this.config.crop ? Math.max(d, b) : Math.min(d, b); d = Math.min(this.config.maxZoom, d); a = g.w = Math.round(a * d) - this.config.dif; c = g.h = Math.round(c * d) - this.config.dif; if (this.cDim.w >= a) d = g.left = (this.cDim.w - a) / 2; else { d = -(a - this.cDim.w) * 0.5; g.w = this.cDim.w } if (this.cDim.h > c) b = g.top = (this.cDim.h - c) / 2; else { b = -(c - this.cDim.h) * 0.5; g.h = this.cDim.h } $img.width(a).height(c); $ic.width(a).height(c); e.data("scaled", true) } $ic.css("left", d).css("top", b); this.bindMouseEvents($ic); this.trigger("resize", g) } }, onTransitionEnd: function () { this.$active.remove(); this.$active = this.$buffer; this.isInTransition = false; this.trigger("transition", { n: this.active }); this.bindMouseEvents(this.$binder); var e = this.$binder.offset(); this.mouseIsOver = false; if (this.mouseCoor.x >= e.left && this.mouseCoor.x <= e.left + this.$binder.width()) if (this.mouseCoor.y >= e.top && this.mouseCoor.y <= e.top + this.$binder.height()) { this.lastEnter = "leave"; this.enterLeave("enter"); this.startIdle(); this.mouseIsOver = true; f(document).mousemove(f.proxy(this.onMouseMove, this)) } this.qid != null && this.show(this.qid) }, trigger: function (e, a) { var c = f.Event("img_" + e), d; for (d in a) c[d] = a[d]; c.source = this; this.$c.trigger(c); this.config[e] && this.config[e].call(this, c) }, destroy: function () { this.isInTransition && this.ts.stop(this.$active, this.$buffer); this.$active && this.$active.remove(); this.$buffer.remove() }, rebuild: function (e) { this.quid = null; this.isInTransition && this.ts.stop(this.$active, this.$buffer); this.$buffer.remove(); this.cached = []; this.data = e; this.loader && this.loader.cancel() } } })(jQuery); (function (f) { f.fn.tn3.Thumbnailer = function (e, a, c) { this.$c = e; this.data = a; this.config = f.extend({}, f.fn.tn3.Thumbnailer.config, c); this.init() }; f.fn.tn3.Thumbnailer.config = { overMove: false, buffer: 20, speed: 8, slowdown: 50, shaderColor: "#000000", shaderOpacity: 0, shaderDuration: 300, shaderOut: 300, useTitle: false, seqLoad: true, align: 1, mode: "thumbs", cssID: "tn3" }; f.fn.tn3.Thumbnailer.prototype = { config: null, $c: null, $oc: null, $ul: null, data: null, active: -1, listSize: 0, containerSize: 0, containerPadding: 0, noBufSize: 0, containerOffset: 0, mcoor: "mouseX", edge: "left", size: "width", outerSize: "outerWidth", mouseX: 0, mouseY: 0, intID: false, pos: 0, difference: 0, cnt: 1, thumbCount: -1, initialized: false, clickWhenReady: -1, loaders: null, lis: null, isVertical: null, marginDif: 0, nloaded: 0, init: function () { this.$c.css("position", "absolute").css("cursor", "progress"); this.lis = []; this.loaders = []; this.initialized = false; this.$oc = f("
"); this.$ul = f("