/*___________________________________________________________________________________________________________________________________________________
_ jquery.mb.components _
_ _
_ file: jquery.mb.thumbGallery.src.js _
_ last modified: 24/05/15 21.53 _
_ _
_ Open Lab s.r.l., Florence - Italy _
_ _
_ email: matteo@open-lab.com _
_ site: http://pupunzi.com _
_ http://open-lab.com _
_ blog: http://pupunzi.open-lab.com _
_ Q&A: http://jquery.pupunzi.com _
_ _
_ Licences: MIT, GPL _
_ http://www.opensource.org/licenses/mit-license.php _
_ http://www.gnu.org/licenses/gpl.html _
_ _
_ Copyright (c) 2001-2015. Matteo Bicocchi (Pupunzi); _
___________________________________________________________________________________________________________________________________________________*/
/**
*
* @type {{name: string, version: string, build: string, author: string, defaults: {nav_effect: string, nav_delay: number, nav_timing: number, nav_pagination: number, display_nav: boolean, gallery_effectnext: string, gallery_effectprev: string, gallery_timing: number, gallery_cover: boolean, gallery_fullscreenw: string, gallery_fullscreenh: string, showIndexinFullscreen: boolean, ease: string, onSlide: onSlide, onFullScreen: onFullScreen, onExitFullScreen: onExitFullScreen, onFullscreenChange: onFullscreenChange}, transitions: {fade: {in: {opacity: number}, out: {opacity: number}}, slideUp: {in: {opacity: number}, out: {y: number, opacity: number}}, slideDown: {in: {opacity: number}, out: {y: number, opacity: number}}, slideLeft: {in: {opacity: number}, out: {x: number, opacity: number}, ease: string}, slideRight: {in: {opacity: number}, out: {x: number, opacity: number}, ease: string}, slideInverse: {in: {y: number, opacity: number}, out: {y: number, opacity: number}}, zoomIn: {in: {scale: number, opacity: number}, out: {scale: number, opacity: number}}, zoomOut: {in: {scale: number, opacity: number}, out: {scale: number, opacity: number}}, rotate: {in: {opacity: number}, out: {rotate: number, opacity: number}}, mobSlideLeft: {in: {opacity: number}, out: {x: number, opacity: number}, ease: string}, mobSlideRight: {in: {opacity: number}, out: {x: number, opacity: number}, ease: string}}, events: {start: string, move: string, end: string}, init: init, drawPage: drawPage, nextPage: nextPage, prevPage: prevPage, buildIndex: buildIndex, drawSlideShow: drawSlideShow, closeSlideShow: closeSlideShow}}
*/
jQuery.thumbGrid = {
name : "jquery.mb.thumbGrid",
version: "1.3.1",
build : "555",
author : "Matteo Bicocchi",
defaults: {
nav_effect : "slideLeft",
nav_delay : 60,
nav_timing : 800,
nav_pagination : 6,
display_nav : true,
gallery_effectnext : "slideRight",
gallery_effectprev : "slideLeft",
gallery_timing : 500,
gallery_cover : false,
gallery_fullscreenw : "100%",
gallery_fullscreenh : "100%",
showIndexinFullscreen: false,
ease : "cubic-bezier(0.19, 1, 0.22, 1)",
aspectRatio : 1.5,
onSlide : function (grid) {},
onFullScreen : function (grid) {},
onExitFullScreen : function (grid) {},
onFullscreenChange: function (grid) {}
},
transitions: {
fade : {in: {opacity: 0}, out: {opacity: 0}},
slideUp : {in: {opacity: 0}, out: {y: -200, opacity: 0}},
slideDown : {in: {opacity: 0}, out: {y: 200, opacity: 0}},
slideLeft : {in: {opacity: 0}, out: {x: -200, opacity: 0}, ease: "cubic-bezier(0,.01,1,1)"},
slideRight : {in: {opacity: 0}, out: {x: 200, opacity: 0}, ease: "cubic-bezier(0,.01,1,1)"},
slideInverse: {in: {y: 200, opacity: 0}, out: {y: 200, opacity: 0}},
zoomIn : {in: {scale: .5, opacity: 0}, out: {scale: 2, opacity: 0}},
zoomOut : {in: {scale: 2, opacity: 0}, out: {scale: .1, opacity: 0}},
rotate : {in: { opacity: 0}, out: {rotate: 179, opacity: 0}},
mobSlideLeft : {in: {opacity: 0}, out: {x: -200, opacity: 0}, ease: "cubic-bezier(0,.01,1,1)"},
mobSlideRight: {in: {opacity: 0}, out: {x: 200, opacity: 0}, ease: "cubic-bezier(0,.01,1,1)"}
},
events: {
start: jQuery.isMobile ? "touchstart" : "mousedown",
move : jQuery.isMobile ? "touchmove" : "mousemove",
end : jQuery.isMobile ? "click" : "click"
},
/**
*
* @param options
* @returns {*}
*/
init: function (options) {
var opt = {};
jQuery.extend(opt, jQuery.thumbGrid.defaults, options);
return this.each(function () {
var grid = this;
var $grid = jQuery(grid);
$grid.addClass("tg-container");
$grid.hide();
grid.isAnimating = false;
grid.pageIndex = 0;
grid.nav_effect = $grid.data("nav_effect") || opt.nav_effect;
grid.nav_delay = $grid.data("nav_delay") || opt.nav_delay;
grid.nav_timing = $grid.data("nav_timing") || opt.nav_timing;
grid.nav_pagination = typeof $grid.data("nav_pagination") != "undefined" ? $grid.data("nav_pagination") : opt.nav_pagination;
grid.nav_pagination = jQuery.isMobile && !jQuery.isTablet ? 1 : grid.nav_pagination;
grid.gallery_fullscreenw = $grid.data("gallery_fullscreenw") || opt.gallery_fullscreenw;
grid.gallery_fullscreenh = $grid.data("gallery_fullscreenh") || opt.gallery_fullscreenh;
grid.gallery_cover = $grid.data("gallery_cover") || opt.gallery_cover;
grid.gallery_effectnext = $grid.data("gallery_effectnext") || grid.nav_effect;
grid.gallery_effectprev = $grid.data("gallery_effectprev") || grid.nav_effect;
grid.gallery_timing = $grid.data("gallery_timing") || 1000;
grid.display_nav = typeof $grid.data("display_nav") != "undefined" ? $grid.data("display_nav") : opt.display_nav;
jQuery.extend(opt, $grid.data());
grid.opt = opt;
grid.elements = $grid.children().clone(true);
$grid.children().hide();
if (grid.nav_pagination == 0)
grid.nav_pagination = grid.elements.length;
grid.elements.each(function (i) {
jQuery(this).attr("data-globalindex", i);
});
grid.pages = [];
grid.totPages = Math.ceil(grid.elements.size() / grid.nav_pagination);
var thumbIdx = 0;
for (var p = 0; p < grid.totPages; p++) {
var page = [];
for (var x = 0; x < grid.nav_pagination; x++) {
if (!grid.elements[thumbIdx])
break;
var thumb = grid.elements[thumbIdx];
page.push(thumb);
thumbIdx++;
}
grid.pages.push(page);
}
jQuery.thumbGrid.drawPage(grid, grid.pageIndex, false);
jQuery(window).resize();
})
},
/**
*
* @param el
* @param pageIdx
* @param applyEffect
*/
drawPage: function (el, pageIdx, applyEffect) {
if (typeof applyEffect === "undefined")
applyEffect = true;
var grid = el;
var $grid = jQuery(grid);
if (!jQuery.isMobile)
grid.nav_effect = $grid.data("nav_effect") || "fade";
grid.nav_delay = $grid.data("nav_delay") || 100;
grid.nav_timing = $grid.data("nav_timing") || 1000;
grid.isAnimating = true;
var pageElements = grid.pages[pageIdx];
var $page = jQuery("<ul/>").addClass("thumb-grid");
grid.setThumbsize = function (el) {
if (!$grid.is(":visible")) {
$grid.css({opacity: 0}).show();
grid.width = $grid.outerWidth();
$grid.hide().css({opacity: 1});
} else {
grid.width = $grid.outerWidth();
}
var w = (grid.width / grid.nav_pagination) - (grid.nav_pagination == 1 ? 0 : 10);
if (grid.nav_pagination > 4)
w = ((grid.width * 2) / grid.nav_pagination ) - 10;
if (grid.nav_pagination > 8)
w = ((grid.width * 2.5) / grid.nav_pagination ) - 10;
if (grid.width < 600 && grid.nav_pagination > 3)
w = (grid.width / 2) - 10;
var h = w / grid.opt.aspectRatio;
el.each(function () {
jQuery(this).css({width: w, height: h});
});
return {w: w, h: h};
};
for (var x = 0; x < grid.nav_pagination; x++) {
var thumb = jQuery(pageElements[x]);
var thumb_box = jQuery("<div/>").addClass("thumb_box");
var thumb_src = jQuery(pageElements[x]).attr("src");
thumb_box.css({backgroundImage: "url(" + thumb_src + ")", backgroundSize: "cover", backgroundRepeat: "no-repeat", backgroundPosition: "center center"});
thumb_box.attr({
"data-type" : thumb.data("type") || "image",
"data-highres" : thumb.data("highres"),
"data-globalindex": thumb.data("globalindex")
});
thumb_box.css({width: "100%", height: "100%"});
if (thumb.length) {
var thumbWrapper = jQuery("<li/>").addClass("thumbWrapper").append(thumb_box);
thumbWrapper.data("idx", x);
thumbWrapper.on(jQuery.thumbGrid.events.end, function () {
var idx = jQuery(".thumb_box", this).data("globalindex");
jQuery.thumbGrid.drawSlideShow(grid, idx);
});
if (applyEffect) {
thumbWrapper.css({opacity: 0});
var transitionIn = jQuery.normalizeCss(jQuery.thumbGrid.transitions[grid.nav_effect].in);
thumbWrapper.css(transitionIn);
} else {
var displayProperties = jQuery.normalizeCss({top: 0, left: 0, opacity: 1, x: 0, y: 0, scale: 1, rotate: 0, skew: 0, filter: " blur(0)"});
thumbWrapper.css(displayProperties).show();
}
$page.append(thumbWrapper);
$page.addClass("active");
} else {
break;
}
}
grid.setThumbsize(jQuery(".thumbWrapper", $page));
jQuery(window).off("resize.thumbgallery").on("resize.thumbgallery", function () {
grid.setThumbsize(jQuery(".thumbWrapper", $page));
});
if (applyEffect)
$page.addClass("in");
$grid.find(".thumb-grid").addClass("out").removeClass("in");
$grid.prepend($page);
if (jQuery.isMobile) {
$page.swipe({
allowPageScroll : "auto",
threshold : 75,
triggerOnTouchEnd: false,
swipeStatus: function (event, phase, direction, distance) {
if (grid.isAnimating)
return;
if (phase == "end") {
event.preventDefault();
event.stopPropagation();
if (direction == "left") {
grid.nav_effect = "mobSlideLeft";
jQuery.thumbGrid.nextPage(grid);
} else if (direction == "right") {
grid.nav_effect = "mobSlideRight";
jQuery.thumbGrid.prevPage(grid);
}
return false;
}
}
});
}
var ease = jQuery.thumbGrid.transitions[grid.nav_effect].ease || grid.opt.ease;
setTimeout(function () {
var displayProperties = {top: 0, left: 0, opacity: 1, x: 0, y: 0, scale: 1, rotate: 0, skew: 0, filter: " blur(0)"};
var delayIn = grid.nav_delay;
for (var i = 0; i < jQuery(".in .thumbWrapper", $grid).length; i++) {
var elIn = jQuery(".in .thumbWrapper", $grid).eq(i);
elIn.CSSAnimate(displayProperties, grid.nav_timing, delayIn, ease, function () {});
delayIn += grid.nav_delay;
}
var delayOut = grid.nav_delay;
for (var ii = 0; ii < jQuery(".out .thumbWrapper", $grid).length; ii++) {
var elOut = jQuery(".out .thumbWrapper", $grid).eq(ii);
var transitionOut = jQuery.thumbGrid.transitions[grid.nav_effect].out;
grid.nav.addClass("waiting");
elOut.CSSAnimate(transitionOut, grid.nav_timing, delayOut, ease, function () {
if (jQuery(this).index() == jQuery(".out .thumbWrapper", $grid).length - 1) {
jQuery(".out", $grid).remove();
grid.isAnimating = false;
grid.nav.removeClass("waiting");
}
});
delayOut += grid.nav_delay;
}
$grid.fadeIn();
if (!applyEffect) {
grid.height = $page.height();
$grid.height(grid.height);
jQuery.thumbGrid.buildIndex(grid);
grid.isAnimating = false;
if (typeof grid.nav != "undefined" && grid.display_nav)
grid.nav.show();
}
}, 50);
jQuery(window).on("resize.thumbGrid", function () {
grid.height = $page.height();
$grid.height(grid.height);
});
if (typeof grid.opt.onSlide == "function") {
grid.opt.onSlide(grid)
}
},
/**
*
* @param grid
*/
nextPage: function (grid) {
++grid.pageIndex;
if (grid.pageIndex > grid.totPages - 1)
grid.pageIndex = 0;
jQuery.thumbGrid.drawPage(grid, grid.pageIndex, true);
if (!grid.nav.length)
return;
jQuery(".indexEl", grid.nav).removeClass("sel");
jQuery(".indexEl", grid.nav).eq(grid.pageIndex).addClass("sel");
},
/**
*
* @param grid
*/
prevPage: function (grid) {
--grid.pageIndex;
if (grid.pageIndex < 0)
grid.pageIndex = grid.totPages - 1;
jQuery.thumbGrid.drawPage(grid, grid.pageIndex, true);
if (!grid.nav.length)
return;
jQuery(".indexEl", grid.nav).removeClass("sel");
jQuery(".indexEl", grid.nav).eq(grid.pageIndex).addClass("sel");
},
/**
*
* @param grid
*/
buildIndex: function (grid) {
var grid = grid;
var $grid = jQuery(grid);
var nav = jQuery("<nav/>").addClass("thumbGridNav");
if (grid.totPages <= 1)
return;
for (var x = 1; x <= grid.totPages; x++) {
var idxPlaceHolder = jQuery("<a/>").html(x).attr({idx: (x - 1)});
idxPlaceHolder.addClass("indexEl");
idxPlaceHolder.on(jQuery.thumbGrid.events.end, function () {
var pageIndex = jQuery(this).attr("idx");
if (grid.isAnimating || grid.pageIndex == pageIndex)
return;
if (jQuery.isMobile) {
if (pageIndex < grid.pageIndex)
grid.nav_effect = "mobSlideLeft";
else
grid.nav_effect = "mobSlideRight";
}
grid.pageIndex = pageIndex;
jQuery.thumbGrid.drawPage(grid, grid.pageIndex);
jQuery(".indexEl", nav).removeClass("sel");
jQuery(".indexEl", nav).eq(grid.pageIndex).addClass("sel");
});
nav.append(idxPlaceHolder);
jQuery(".indexEl", nav).eq(grid.pageIndex).addClass("sel");
}
nav.hide();
grid.nav = nav;
$grid.after(nav);
},
/**
*
* @param el
* @param idx
*/
drawSlideShow: function (el, idx) {
jQuery("body").css({overflow: "hidden"}).trigger("drawSlideShow");
var grid = el,
$grid = jQuery(grid),
overlay = jQuery("<div/>").addClass("tg-overlay").css({opacity: 0}),
placeHolder = jQuery("<div/>").addClass("tg-placeHolder"),
slideShowClose = jQuery("<div/>").addClass("tg-close tg-icon").on(jQuery.thumbGrid.events.end, function () {jQuery.thumbGrid.closeSlideShow(el, idx)}),
slideShowNext = jQuery("<div/>").addClass("tg-next tg-icon").on(jQuery.thumbGrid.events.end, function () {slideShow.next()}),
slideShowPrev = jQuery("<div/>").addClass("tg-prev tg-icon").on(jQuery.thumbGrid.events.end, function () {slideShow.prev()}),
spinnerPh = jQuery("<div/>").addClass("tg-spinner"),
$origin = $grid.find("[data-globalindex=" + idx + "]").parent("li"),
pHleft = $origin.offset().left - jQuery(window).scrollLeft(),
pHtop = $origin.offset().top - jQuery(window).scrollTop(),
pHwidth = $origin.outerWidth(),
pHheight = $origin.outerHeight();
grid.nav_effect = $grid.data("nav_effect") || "fade";
grid.nav_delay = $grid.data("nav_delay") || 500;
grid.nav_timing = $grid.data("nav_timing") || 1000;
grid.slideShowIdx = idx;
placeHolder.css({position: "fixed", left: pHleft, top: pHtop, width: pHwidth, height: pHheight});
overlay.append(placeHolder).append(slideShowClose).append(spinnerPh).append(slideShowNext).append(slideShowPrev);
jQuery(".tg-icon", overlay).css({opacity: 0});
var spinnerOpts = {
lines : 11, // The number of lines to draw
length : 6, // The length of each line
width : 6, // The line thickness
radius : 16, // The radius of the inner circle
corners : 1, // Corner roundness (0..1)
rotate : 16, // The rotation offset
direction: 1, // 1: clockwise, -1: counterclockwise
color : '#fff', // #rgb or #rrggbb or array of colors
speed : 1.3, // Rounds per second
trail : 52, // Afterglow percentage
shadow : false, // Whether to render a shadow
hwaccel : false, // Whether to use hardware acceleration
className: 'spinner', // The CSS class to assign to the spinner
zIndex : 2e9, // The z-index (defaults to 2000000000)
top : '50%', // Top position relative to parent
left : '50%' // Left position relative to parent
};
var target = spinnerPh.get(0),
spinner;
spinner = new Spinner(spinnerOpts).spin(target);
spinnerPh.hide();
//spinnerPh.delay(800).fadeIn(1000);
var slideShow = {
effect : grid.nav_effect,
effectNext: grid.gallery_effectnext || grid.nav_effect,
effectPrev: grid.gallery_effectprev || grid.nav_effect,
init: function () {
slideShow.goTo(false);
slideShow.keyboard(true);
grid.isAnimating = false;
if (typeof grid.opt.onFullScreen == "function") {
grid.opt.onFullScreen(grid);
}
},
/**
*
* @param on
*/
keyboard: function (on) {
if (on) {
jQuery(document).on("keydown.thumbGallery", function (e) {
switch (e.keyCode) {
case 27: //Esc
jQuery.thumbGrid.closeSlideShow(el, idx);
e.preventDefault();
break;
case 32: //space
e.preventDefault();
break;
case 39: //arrow right
slideShow.next();
e.preventDefault();
break;
case 37: //arrow left
slideShow.prev();
e.preventDefault();
break;
}
});
jQuery("body").on("closeSlideShow", function () {slideShow.keyboard(false);});
} else {
jQuery(document).off("keydown.thumbGallery");
}
},
/**
*
* @param animate
*/
goTo: function (animate) {
var oldImgWrapper = jQuery(".tg-img-wrapper", placeHolder).eq(0);
var idx = grid.slideShowIdx,
contentType = jQuery(grid.elements[idx]).data("type") || "image",
imagesList = grid.elements,
image = jQuery(imagesList[idx]),
imgWrapper = jQuery("<div/>").addClass("tg-img-wrapper"),
imageToShowURL = image.data("highres"),
videoToShowURL = image.data("videourl"),
contentToShowID = image.data("contentid"),
imageCaption = jQuery("<span/>").addClass("tg-img-caption").html(image.data("caption")),
imgContainer = jQuery("<div/>").addClass("tg-img-container"),
content;
imgContainer.css({position: "absolute", top: 0, left: 0, bottom: 0, right: 0, width: grid.gallery_fullscreenw, height: grid.gallery_fullscreenh, margin: "auto"});
imgWrapper.append(imgContainer);
placeHolder.prepend(imgWrapper);
imgWrapper.addClass("in");
var img = jQuery("<img/>");
var displayProperties = {top: 0, left: 0, opacity: 1, x: 0, y: 0, scale: 1, rotate: 0, skew: 0, filter: "blur(0)"};
if (animate) {
imgWrapper.css(jQuery.normalizeCss(jQuery.thumbGrid.transitions[slideShow.effect].in));
slideShow.spinner = setTimeout(function () {
spinner = new Spinner(spinnerOpts).spin(target);
spinnerPh.fadeIn(300);
}, 1000)
} else {
displayProperties = jQuery.normalizeCss(displayProperties);
imgWrapper.css(displayProperties);
imgWrapper.css({opacity: 0});
}
function showContent() {
if (animate) {
imgWrapper.css(jQuery.normalizeCss(jQuery.thumbGrid.transitions[slideShow.effect].in));
} else {
displayProperties = jQuery.normalizeCss(displayProperties);
imgWrapper.css(displayProperties);
imgWrapper.css({opacity: 0});
}
clearTimeout(slideShow.spinner);
spinnerPh.fadeOut(300, function () {spinnerPh.empty();});
var imageIndex = grid.opt.showIndexinFullscreen ? jQuery("<span/>").addClass("tg-image-index").html((idx + 1) + "/" + imagesList.length + " ") : "";
var captionLabel = jQuery("<label/>").html(imageCaption).prepend(imageIndex);
if (image.data("caption"))
imgContainer.append(captionLabel);
if (animate)
grid.isAnimating = true;
setTimeout(function () {
imgWrapper.CSSAnimate(displayProperties, grid.opt.gallery_timing, 50, grid.opt.ease, function () {});
oldImgWrapper.CSSAnimate(jQuery.thumbGrid.transitions[slideShow.effect].out, grid.opt.gallery_timing, 80, grid.opt.ease, function () {
grid.isAnimating = false;
oldImgWrapper.removeClass("in");
jQuery(".tg-img-wrapper", placeHolder).not(".in").remove();
});
}, 100);
}
if (contentType == "image") {
img.one("load", function () {
if (this.loaded)
return;
this.loaded = true;
showContent();
imgContainer.css({
backgroundImage : "url(" + imageToShowURL + ")",
backgroundSize : grid.gallery_cover && !jQuery.isMobile ? "cover" : "contain",
backgroundPosition: "center center",
backgroundRepeat : "no-repeat"
});
}).attr({src: imageToShowURL});
} else if (contentType == "video") {
showContent();
content = jQuery("<iframe/>").attr("src", videoToShowURL);
content.css({width: "100%", height: 300, marginTop: 50, border: "none"});
imgContainer.html(content);
} else {
showContent();
content = jQuery("#" + contentToShowID).clone(true);
content.css({width: "100%", height: "100%"});
imgContainer.html(content);
}
},
/**
*
*
*/
next: function () {
slideShow.effect = slideShow.effectNext;
if (grid.isAnimating && jQuery.browser.msie)
return;
var imagesList = grid.elements;
++grid.slideShowIdx;
if (grid.slideShowIdx == jQuery(imagesList).length) {
grid.slideShowIdx = 0;
}
slideShow.goTo(true);
},
/**
*
*/
prev: function () {
slideShow.effect = slideShow.effectPrev;
if (grid.isAnimating && jQuery.browser.msie)
return;
var imagesList = grid.elements;
--grid.slideShowIdx;
if (grid.slideShowIdx == -1) {
grid.slideShowIdx = jQuery(imagesList).length - 1;
}
slideShow.goTo(true);
}
};
if (jQuery.isMobile) {
slideShow.effectNext = "mobSlideLeft";
slideShow.effectPrev = "mobSlideRight";
overlay.swipe({
allowPageScroll : "auto",
threshold : 75,
triggerOnTouchEnd: false,
swipeStatus: function (event, phase, direction, distance) {
if (grid.isAnimating)
return;
if (phase == "end") {
if (direction == "left") {
slideShow.next();
} else {
slideShow.prev();
}
if (typeof grid.opt.onFullscreenChange == "function")
grid.opt.onFullscreenChange(grid)
}
},
swipe : function (event, direction, distance, duration, fingerCount, fingerData) {}
});
}
jQuery("body").append(overlay);
overlay.CSSAnimate({opacity: 1}, 600, 300, function () {
placeHolder.CSSAnimate({width: "100%", height: "100%", left: 0, top: 0, opacity: 1}, 400, 0, grid.opt.ease, function () {
slideShow.init(grid);
jQuery(".tg-icon", overlay).fadeTo(200, 1);
})
});
},
/**
*
* @param el
* @param idx
*/
closeSlideShow: function (el, idx) {
jQuery("body").trigger("closeSlideShow");
var grid = el,
$grid = jQuery(grid),
origin = $grid.find("[data-globalindex=" + idx + "]").parents("li"),
pHleft = origin.offset().left - jQuery(window).scrollLeft(),
pHtop = origin.offset().top - jQuery(window).scrollTop(),
pHwidth = origin.outerWidth(),
pHheight = origin.outerHeight();
jQuery(".tg-icon").fadeTo(200, 0);
jQuery(".tg-placeHolder > div").fadeOut(500);
jQuery(".tg-placeHolder").CSSAnimate({width: pHwidth, height: pHheight, left: pHleft, top: pHtop, opacity: 1}, 800, 400, grid.opt.ease, function () {
jQuery(".tg-overlay").CSSAnimate({opacity: 0}, 600, function () {
jQuery(this).remove();
jQuery("body").css({overflow: "auto"});
});
});
if (typeof grid.opt.onExitFullScreen == "function") {
grid.opt.onExitFullScreen(grid);
}
}
};
jQuery.fn.thumbGrid = jQuery.thumbGrid.init;
;
/*
* ******************************************************************************
* jquery.mb.components
* file: jquery.mb.CSSAnimate.min.js
*
* Copyright (c) 2001-2014. Matteo Bicocchi (Pupunzi);
* Open lab srl, Firenze - Italy
* email: matteo@open-lab.com
* site: http://pupunzi.com
* blog: http://pupunzi.open-lab.com
* http://open-lab.com
*
* Licences: MIT, GPL
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* last modified: 26/03/14 21.40
* *****************************************************************************
*/
function uncamel(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}function setUnit(a,b){return"string"!=typeof a||a.match(/^[\-0-9\.]+jQuery/)?""+a+b:a}function setFilter(a,b,c){var d=uncamel(b),e=jQuery.browser.mozilla?"":jQuery.CSS.sfx;a[e+"filter"]=a[e+"filter"]||"",c=setUnit(c>jQuery.CSS.filters[b].max?jQuery.CSS.filters[b].max:c,jQuery.CSS.filters[b].unit),a[e+"filter"]+=d+"("+c+") ",delete a[b]}jQuery.support.CSStransition=function(){var a=document.body||document.documentElement,b=a.style;return void 0!==b.transition||void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.MsTransition||void 0!==b.OTransition}(),jQuery.CSS={name:"mb.CSSAnimate",author:"Matteo Bicocchi",version:"2.0.0",transitionEnd:"transitionEnd",sfx:"",filters:{blur:{min:0,max:100,unit:"px"},brightness:{min:0,max:400,unit:"%"},contrast:{min:0,max:400,unit:"%"},grayscale:{min:0,max:100,unit:"%"},hueRotate:{min:0,max:360,unit:"deg"},invert:{min:0,max:100,unit:"%"},saturate:{min:0,max:400,unit:"%"},sepia:{min:0,max:100,unit:"%"}},normalizeCss:function(a){var b=jQuery.extend(!0,{},a);jQuery.browser.webkit||jQuery.browser.opera?jQuery.CSS.sfx="-webkit-":jQuery.browser.mozilla?jQuery.CSS.sfx="-moz-":jQuery.browser.msie&&(jQuery.CSS.sfx="-ms-");for(var c in b){"transform"===c&&(b[jQuery.CSS.sfx+"transform"]=b[c],delete b[c]),"transform-origin"===c&&(b[jQuery.CSS.sfx+"transform-origin"]=a[c],delete b[c]),"filter"!==c||jQuery.browser.mozilla||(b[jQuery.CSS.sfx+"filter"]=a[c],delete b[c]),"blur"===c&&setFilter(b,"blur",a[c]),"brightness"===c&&setFilter(b,"brightness",a[c]),"contrast"===c&&setFilter(b,"contrast",a[c]),"grayscale"===c&&setFilter(b,"grayscale",a[c]),"hueRotate"===c&&setFilter(b,"hueRotate",a[c]),"invert"===c&&setFilter(b,"invert",a[c]),"saturate"===c&&setFilter(b,"saturate",a[c]),"sepia"===c&&setFilter(b,"sepia",a[c]);var d="";"x"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" translateX("+setUnit(a[c],"px")+")",delete b[c]),"y"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" translateY("+setUnit(a[c],"px")+")",delete b[c]),"z"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" translateZ("+setUnit(a[c],"px")+")",delete b[c]),"rotate"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" rotate("+setUnit(a[c],"deg")+")",delete b[c]),"rotateX"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" rotateX("+setUnit(a[c],"deg")+")",delete b[c]),"rotateY"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" rotateY("+setUnit(a[c],"deg")+")",delete b[c]),"rotateZ"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" rotateZ("+setUnit(a[c],"deg")+")",delete b[c]),"scale"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" scale("+setUnit(a[c],"")+")",delete b[c]),"scaleX"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" scaleX("+setUnit(a[c],"")+")",delete b[c]),"scaleY"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" scaleY("+setUnit(a[c],"")+")",delete b[c]),"scaleZ"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" scaleZ("+setUnit(a[c],"")+")",delete b[c]),"skew"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" skew("+setUnit(a[c],"deg")+")",delete b[c]),"skewX"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" skewX("+setUnit(a[c],"deg")+")",delete b[c]),"skewY"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" skewY("+setUnit(a[c],"deg")+")",delete b[c]),"perspective"===c&&(d=jQuery.CSS.sfx+"transform",b[d]=b[d]||"",b[d]+=" perspective("+setUnit(a[c],"px")+")",delete b[c])}return b},getProp:function(a){var b=[];for(var c in a)b.indexOf(c)<0&&b.push(uncamel(c));return b.join(",")},animate:function(a,b,c,d,e){return this.each(function(){function o(){f.called=!0,f.CSSAIsRunning=!1,g.off(jQuery.CSS.transitionEnd+"."+f.id),clearTimeout(f.timeout),g.css(jQuery.CSS.sfx+"transition",""),"function"==typeof e&&e.apply(f),"function"==typeof f.CSSqueue&&(f.CSSqueue(),f.CSSqueue=null)}var f=this,g=jQuery(this);f.id=f.id||"CSSA_"+(new Date).getTime();var h=h||{type:"noEvent"};if(f.CSSAIsRunning&&f.eventType==h.type&&!jQuery.browser.msie&&jQuery.browser.version<=9)return f.CSSqueue=function(){g.CSSAnimate(a,b,c,d,e)},void 0;if(f.CSSqueue=null,f.eventType=h.type,0!==g.length&&a){if(a=jQuery.normalizeCss(a),f.CSSAIsRunning=!0,"function"==typeof b&&(e=b,b=jQuery.fx.speeds._default),"function"==typeof c&&(d=c,c=0),"string"==typeof c&&(e=c,c=0),"function"==typeof d&&(e=d,d="cubic-bezier(0.65,0.03,0.36,0.72)"),"string"==typeof b)for(var i in jQuery.fx.speeds){if(b==i){b=jQuery.fx.speeds[i];break}b=jQuery.fx.speeds._default}if(b||(b=jQuery.fx.speeds._default),"string"==typeof e&&(d=e,e=null),!jQuery.support.CSStransition){for(var j in a){if("transform"===j&&delete a[j],"filter"===j&&delete a[j],"transform-origin"===j&&delete a[j],"auto"===a[j]&&delete a[j],"x"===j){var k=a[j],l="left";a[l]=k,delete a[j]}if("y"===j){var k=a[j],l="top";a[l]=k,delete a[j]}("-ms-transform"===j||"-ms-filter"===j)&&delete a[j]}return g.delay(c).animate(a,b,e),void 0}var m={"default":"ease","in":"ease-in",out:"ease-out","in-out":"ease-in-out",snap:"cubic-bezier(0,1,.5,1)",easeOutCubic:"cubic-bezier(.215,.61,.355,1)",easeInOutCubic:"cubic-bezier(.645,.045,.355,1)",easeInCirc:"cubic-bezier(.6,.04,.98,.335)",easeOutCirc:"cubic-bezier(.075,.82,.165,1)",easeInOutCirc:"cubic-bezier(.785,.135,.15,.86)",easeInExpo:"cubic-bezier(.95,.05,.795,.035)",easeOutExpo:"cubic-bezier(.19,1,.22,1)",easeInOutExpo:"cubic-bezier(1,0,0,1)",easeInQuad:"cubic-bezier(.55,.085,.68,.53)",easeOutQuad:"cubic-bezier(.25,.46,.45,.94)",easeInOutQuad:"cubic-bezier(.455,.03,.515,.955)",easeInQuart:"cubic-bezier(.895,.03,.685,.22)",easeOutQuart:"cubic-bezier(.165,.84,.44,1)",easeInOutQuart:"cubic-bezier(.77,0,.175,1)",easeInQuint:"cubic-bezier(.755,.05,.855,.06)",easeOutQuint:"cubic-bezier(.23,1,.32,1)",easeInOutQuint:"cubic-bezier(.86,0,.07,1)",easeInSine:"cubic-bezier(.47,0,.745,.715)",easeOutSine:"cubic-bezier(.39,.575,.565,1)",easeInOutSine:"cubic-bezier(.445,.05,.55,.95)",easeInBack:"cubic-bezier(.6,-.28,.735,.045)",easeOutBack:"cubic-bezier(.175, .885,.32,1.275)",easeInOutBack:"cubic-bezier(.68,-.55,.265,1.55)"};m[d]&&(d=m[d]),g.off(jQuery.CSS.transitionEnd+"."+f.id);var n=jQuery.CSS.getProp(a),p={};jQuery.extend(p,a),p[jQuery.CSS.sfx+"transition-property"]=n,p[jQuery.CSS.sfx+"transition-duration"]=b+"ms",p[jQuery.CSS.sfx+"transition-delay"]=c+"ms",p[jQuery.CSS.sfx+"transition-timing-function"]=d,setTimeout(function(){g.one(jQuery.CSS.transitionEnd+"."+f.id,o),g.css(p)},1),f.timeout=setTimeout(function(){return f.called||!e?(f.called=!1,f.CSSAIsRunning=!1,void 0):(g.css(jQuery.CSS.sfx+"transition",""),e.apply(f),f.CSSAIsRunning=!1,"function"==typeof f.CSSqueue&&(f.CSSqueue(),f.CSSqueue=null),void 0)},b+c+10)}})}},jQuery.fn.CSSAnimate=jQuery.CSS.animate,jQuery.normalizeCss=jQuery.CSS.normalizeCss,jQuery.fn.css3=function(a){return this.each(function(){var b=jQuery(this),c=jQuery.normalizeCss(a);b.css(c)})};
;/*
* ******************************************************************************
* jquery.mb.components
* file: jquery.mb.browser.min.js
*
* Copyright (c) 2001-2014. Matteo Bicocchi (Pupunzi);
* Open lab srl, Firenze - Italy
* email: matteo@open-lab.com
* site: http://pupunzi.com
* blog: http://pupunzi.open-lab.com
* http://open-lab.com
*
* Licences: MIT, GPL
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* last modified: 26/03/14 21.43
* *****************************************************************************
*/
var nAgt=navigator.userAgent;if(!jQuery.browser){jQuery.browser={},jQuery.browser.mozilla=!1,jQuery.browser.webkit=!1,jQuery.browser.opera=!1,jQuery.browser.safari=!1,jQuery.browser.chrome=!1,jQuery.browser.msie=!1,jQuery.browser.ua=nAgt,jQuery.browser.name=navigator.appName,jQuery.browser.fullVersion=""+parseFloat(navigator.appVersion),jQuery.browser.majorVersion=parseInt(navigator.appVersion,10);var nameOffset,verOffset,ix;if(-1!=(verOffset=nAgt.indexOf("Opera")))jQuery.browser.opera=!0,jQuery.browser.name="Opera",jQuery.browser.fullVersion=nAgt.substring(verOffset+6),-1!=(verOffset=nAgt.indexOf("Version"))&&(jQuery.browser.fullVersion=nAgt.substring(verOffset+8));else if(-1!=(verOffset=nAgt.indexOf("OPR")))jQuery.browser.opera=!0,jQuery.browser.name="Opera",jQuery.browser.fullVersion=nAgt.substring(verOffset+4);else if(-1!=(verOffset=nAgt.indexOf("MSIE")))jQuery.browser.msie=!0,jQuery.browser.name="Microsoft Internet Explorer",jQuery.browser.fullVersion=nAgt.substring(verOffset+5);else if(-1!=nAgt.indexOf("Trident")){jQuery.browser.msie=!0,jQuery.browser.name="Microsoft Internet Explorer";var start=nAgt.indexOf("rv:")+3,end=start+4;jQuery.browser.fullVersion=nAgt.substring(start,end)}else-1!=(verOffset=nAgt.indexOf("Chrome"))?(jQuery.browser.webkit=!0,jQuery.browser.chrome=!0,jQuery.browser.name="Chrome",jQuery.browser.fullVersion=nAgt.substring(verOffset+7)):-1!=(verOffset=nAgt.indexOf("Safari"))?(jQuery.browser.webkit=!0,jQuery.browser.safari=!0,jQuery.browser.name="Safari",jQuery.browser.fullVersion=nAgt.substring(verOffset+7),-1!=(verOffset=nAgt.indexOf("Version"))&&(jQuery.browser.fullVersion=nAgt.substring(verOffset+8))):-1!=(verOffset=nAgt.indexOf("AppleWebkit"))?(jQuery.browser.webkit=!0,jQuery.browser.name="Safari",jQuery.browser.fullVersion=nAgt.substring(verOffset+7),-1!=(verOffset=nAgt.indexOf("Version"))&&(jQuery.browser.fullVersion=nAgt.substring(verOffset+8))):-1!=(verOffset=nAgt.indexOf("Firefox"))?(jQuery.browser.mozilla=!0,jQuery.browser.name="Firefox",jQuery.browser.fullVersion=nAgt.substring(verOffset+8)):(nameOffset=nAgt.lastIndexOf(" ")+1)<(verOffset=nAgt.lastIndexOf("/"))&&(jQuery.browser.name=nAgt.substring(nameOffset,verOffset),jQuery.browser.fullVersion=nAgt.substring(verOffset+1),jQuery.browser.name.toLowerCase()==jQuery.browser.name.toUpperCase()&&(jQuery.browser.name=navigator.appName));-1!=(ix=jQuery.browser.fullVersion.indexOf(";"))&&(jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix)),-1!=(ix=jQuery.browser.fullVersion.indexOf(" "))&&(jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix)),jQuery.browser.majorVersion=parseInt(""+jQuery.browser.fullVersion,10),isNaN(jQuery.browser.majorVersion)&&(jQuery.browser.fullVersion=""+parseFloat(navigator.appVersion),jQuery.browser.majorVersion=parseInt(navigator.appVersion,10)),jQuery.browser.version=jQuery.browser.majorVersion}jQuery.browser.android=/Android/i.test(nAgt),jQuery.browser.blackberry=/BlackBerry|BB|PlayBook/i.test(nAgt),jQuery.browser.ios=/iPhone|iPad|iPod|webOS/i.test(nAgt),jQuery.browser.operaMobile=/Opera Mini/i.test(nAgt),jQuery.browser.windowsMobile=/IEMobile|Windows Phone/i.test(nAgt),jQuery.browser.kindle=/Kindle|Silk/i.test(nAgt),jQuery.browser.mobile=jQuery.browser.android||jQuery.browser.blackberry||jQuery.browser.ios||jQuery.browser.windowsMobile||jQuery.browser.operaMobile||jQuery.browser.kindle,jQuery.isMobile=jQuery.browser.mobile,jQuery.isTablet=jQuery.browser.mobile&&jQuery(window).width()>765,jQuery.isAndroidDefault=jQuery.browser.android&&!/chrome/i.test(nAgt);
;//fgnass.github.com/spin.js#v2.0.1
!function(a,b){"object"==typeof exports?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Spinner=b()}(this,function(){"use strict";function a(a,b){var c,d=document.createElement(a||"div");for(c in b)d[c]=b[c];return d}function b(a){for(var b=1,c=arguments.length;c>b;b++)a.appendChild(arguments[b]);return a}function c(a,b,c,d){var e=["opacity",b,~~(100*a),c,d].join("-"),f=.01+100*(c/d),g=Math.max(1-(1-a)/b*(100-f),a),h=j.substring(0,j.indexOf("Animation")).toLowerCase(),i=h&&"-"+h+"-"||"";return l[e]||(m.insertRule("@"+i+"keyframes "+e+"{0%{opacity:"+g+"}"+f+"%{opacity:"+a+"}"+(f+.01)+"%{opacity:1}"+(f+b)%100+"%{opacity:"+a+"}100%{opacity:"+g+"}}",m.cssRules.length),l[e]=1),e}function d(a,b){var c,d,e=a.style;for(b=b.charAt(0).toUpperCase()+b.slice(1),d=0;d<k.length;d++)if(c=k[d]+b,void 0!==e[c])return c;return void 0!==e[b]?b:void 0}function e(a,b){for(var c in b)a.style[d(a,c)||c]=b[c];return a}function f(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)void 0===a[d]&&(a[d]=c[d])}return a}function g(a,b){return"string"==typeof a?a:a[b%a.length]}function h(a){this.opts=f(a||{},h.defaults,n)}function i(){function c(b,c){return a("<"+b+' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">',c)}m.addRule(".spin-vml","behavior:url(#default#VML)"),h.prototype.lines=function(a,d){function f(){return e(c("group",{coordsize:k+" "+k,coordorigin:-j+" "+-j}),{width:k,height:k})}function h(a,h,i){b(m,b(e(f(),{rotation:360/d.lines*a+"deg",left:~~h}),b(e(c("roundrect",{arcsize:d.corners}),{width:j,height:d.width,left:d.radius,top:-d.width>>1,filter:i}),c("fill",{color:g(d.color,a),opacity:d.opacity}),c("stroke",{opacity:0}))))}var i,j=d.length+d.width,k=2*j,l=2*-(d.width+d.length)+"px",m=e(f(),{position:"absolute",top:l,left:l});if(d.shadow)for(i=1;i<=d.lines;i++)h(i,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(i=1;i<=d.lines;i++)h(i);return b(a,m)},h.prototype.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d<e.childNodes.length&&(e=e.childNodes[b+d],e=e&&e.firstChild,e=e&&e.firstChild,e&&(e.opacity=c))}}var j,k=["webkit","Moz","ms","O"],l={},m=function(){var c=a("style",{type:"text/css"});return b(document.getElementsByTagName("head")[0],c),c.sheet||c.styleSheet}(),n={lines:12,length:7,width:5,radius:10,rotate:0,corners:1,color:"#000",direction:1,speed:1,trail:100,opacity:.25,fps:20,zIndex:2e9,className:"spinner",top:"50%",left:"50%",position:"absolute"};h.defaults={},f(h.prototype,{spin:function(b){this.stop();var c=this,d=c.opts,f=c.el=e(a(0,{className:d.className}),{position:d.position,width:0,zIndex:d.zIndex});if(d.radius+d.length+d.width,e(f,{left:d.left,top:d.top}),b&&b.insertBefore(f,b.firstChild||null),f.setAttribute("role","progressbar"),c.lines(f,c.opts),!j){var g,h=0,i=(d.lines-1)*(1-d.direction)/2,k=d.fps,l=k/d.speed,m=(1-d.opacity)/(l*d.trail/100),n=l/d.lines;!function o(){h++;for(var a=0;a<d.lines;a++)g=Math.max(1-(h+(d.lines-a)*n)%l*m,d.opacity),c.opacity(f,a*d.direction+i,g,d);c.timeout=c.el&&setTimeout(o,~~(1e3/k))}()}return c},stop:function(){var a=this.el;return a&&(clearTimeout(this.timeout),a.parentNode&&a.parentNode.removeChild(a),this.el=void 0),this},lines:function(d,f){function h(b,c){return e(a(),{position:"absolute",width:f.length+f.width+"px",height:f.width+"px",background:b,boxShadow:c,transformOrigin:"left",transform:"rotate("+~~(360/f.lines*k+f.rotate)+"deg) translate("+f.radius+"px,0)",borderRadius:(f.corners*f.width>>1)+"px"})}for(var i,k=0,l=(f.lines-1)*(1-f.direction)/2;k<f.lines;k++)i=e(a(),{position:"absolute",top:1+~(f.width/2)+"px",transform:f.hwaccel?"translate3d(0,0,0)":"",opacity:f.opacity,animation:j&&c(f.opacity,f.trail,l+k*f.direction,f.lines)+" "+1/f.speed+"s linear infinite"}),f.shadow&&b(i,e(h("#000","0 0 4px #000"),{top:"2px"})),b(d,b(i,h(g(f.color,k),"0 0 1px rgba(0,0,0,.1)")));return d},opacity:function(a,b,c){b<a.childNodes.length&&(a.childNodes[b].style.opacity=c)}});var o=e(a("group"),{behavior:"url(#default#VML)"});return!d(o,"transform")&&o.adj?i():j=d(o,"animation"),h});
;/*
* @fileOverview TouchSwipe - jQuery Plugin
* @version 1.6.6
*
* @author Matt Bryson http://www.github.com/mattbryson
* @see https://github.com/mattbryson/TouchSwipe-Jquery-Plugin
* @see http://labs.rampinteractive.co.uk/touchSwipe/
* @see http://plugins.jquery.com/project/touchSwipe
*
* Copyright (c) 2010-2015 Matt Bryson
* Dual licensed under the MIT or GPL Version 2 licenses.
*
*/
(function(a){if(typeof define==="function"&&define.amd&&define.amd.jQuery){define(["jquery"],a)}else{a(jQuery)}}(function(f){var p="left",o="right",e="up",x="down",c="in",z="out",m="none",s="auto",l="swipe",t="pinch",A="tap",j="doubletap",b="longtap",y="hold",D="horizontal",u="vertical",i="all",r=10,g="start",k="move",h="end",q="cancel",a="ontouchstart" in window,v=window.navigator.msPointerEnabled&&!window.navigator.pointerEnabled,d=window.navigator.pointerEnabled||window.navigator.msPointerEnabled,B="TouchSwipe";var n={fingers:1,threshold:75,cancelThreshold:null,pinchThreshold:20,maxTimeThreshold:null,fingerReleaseThreshold:250,longTapThreshold:500,doubleTapThreshold:200,swipe:null,swipeLeft:null,swipeRight:null,swipeUp:null,swipeDown:null,swipeStatus:null,pinchIn:null,pinchOut:null,pinchStatus:null,click:null,tap:null,doubleTap:null,longTap:null,hold:null,triggerOnTouchEnd:true,triggerOnTouchLeave:false,allowPageScroll:"auto",fallbackToMouseEvents:true,excludedElements:"label, button, input, select, textarea, a, .noSwipe",preventDefaultEvents:true};f.fn.swipe=function(G){var F=f(this),E=F.data(B);if(E&&typeof G==="string"){if(E[G]){return E[G].apply(this,Array.prototype.slice.call(arguments,1))}else{f.error("Method "+G+" does not exist on jQuery.swipe")}}else{if(!E&&(typeof G==="object"||!G)){return w.apply(this,arguments)}}return F};f.fn.swipe.defaults=n;f.fn.swipe.phases={PHASE_START:g,PHASE_MOVE:k,PHASE_END:h,PHASE_CANCEL:q};f.fn.swipe.directions={LEFT:p,RIGHT:o,UP:e,DOWN:x,IN:c,OUT:z};f.fn.swipe.pageScroll={NONE:m,HORIZONTAL:D,VERTICAL:u,AUTO:s};f.fn.swipe.fingers={ONE:1,TWO:2,THREE:3,ALL:i};function w(E){if(E&&(E.allowPageScroll===undefined&&(E.swipe!==undefined||E.swipeStatus!==undefined))){E.allowPageScroll=m}if(E.click!==undefined&&E.tap===undefined){E.tap=E.click}if(!E){E={}}E=f.extend({},f.fn.swipe.defaults,E);return this.each(function(){var G=f(this);var F=G.data(B);if(!F){F=new C(this,E);G.data(B,F)}})}function C(a4,av){var az=(a||d||!av.fallbackToMouseEvents),J=az?(d?(v?"MSPointerDown":"pointerdown"):"touchstart"):"mousedown",ay=az?(d?(v?"MSPointerMove":"pointermove"):"touchmove"):"mousemove",U=az?(d?(v?"MSPointerUp":"pointerup"):"touchend"):"mouseup",S=az?null:"mouseleave",aD=(d?(v?"MSPointerCancel":"pointercancel"):"touchcancel");var ag=0,aP=null,ab=0,a1=0,aZ=0,G=1,aq=0,aJ=0,M=null;var aR=f(a4);var Z="start";var W=0;var aQ=null;var T=0,a2=0,a5=0,ad=0,N=0;var aW=null,af=null;try{aR.bind(J,aN);aR.bind(aD,a9)}catch(ak){f.error("events not supported "+J+","+aD+" on jQuery.swipe")}this.enable=function(){aR.bind(J,aN);aR.bind(aD,a9);return aR};this.disable=function(){aK();return aR};this.destroy=function(){aK();aR.data(B,null);aR=null};this.option=function(bc,bb){if(av[bc]!==undefined){if(bb===undefined){return av[bc]}else{av[bc]=bb}}else{f.error("Option "+bc+" does not exist on jQuery.swipe.options")}return null};function aN(bd){if(aB()){return}if(f(bd.target).closest(av.excludedElements,aR).length>0){return}var be=bd.originalEvent?bd.originalEvent:bd;var bc,bb=a?be.touches[0]:be;Z=g;if(a){W=be.touches.length}else{bd.preventDefault()}ag=0;aP=null;aJ=null;ab=0;a1=0;aZ=0;G=1;aq=0;aQ=aj();M=aa();R();if(!a||(W===av.fingers||av.fingers===i)||aX()){ai(0,bb);T=at();if(W==2){ai(1,be.touches[1]);a1=aZ=au(aQ[0].start,aQ[1].start)}if(av.swipeStatus||av.pinchStatus){bc=O(be,Z)}}else{bc=false}if(bc===false){Z=q;O(be,Z);return bc}else{if(av.hold){af=setTimeout(f.proxy(function(){aR.trigger("hold",[be.target]);if(av.hold){bc=av.hold.call(aR,be,be.target)}},this),av.longTapThreshold)}ao(true)}return null}function a3(be){var bh=be.originalEvent?be.originalEvent:be;if(Z===h||Z===q||am()){return}var bd,bc=a?bh.touches[0]:bh;var bf=aH(bc);a2=at();if(a){W=bh.touches.length}if(av.hold){clearTimeout(af)}Z=k;if(W==2){if(a1==0){ai(1,bh.touches[1]);a1=aZ=au(aQ[0].start,aQ[1].start)}else{aH(bh.touches[1]);aZ=au(aQ[0].end,aQ[1].end);aJ=ar(aQ[0].end,aQ[1].end)}G=a7(a1,aZ);aq=Math.abs(a1-aZ)}if((W===av.fingers||av.fingers===i)||!a||aX()){aP=aL(bf.start,bf.end);al(be,aP);ag=aS(bf.start,bf.end);ab=aM();aI(aP,ag);if(av.swipeStatus||av.pinchStatus){bd=O(bh,Z)}if(!av.triggerOnTouchEnd||av.triggerOnTouchLeave){var bb=true;if(av.triggerOnTouchLeave){var bg=aY(this);bb=E(bf.end,bg)}if(!av.triggerOnTouchEnd&&bb){Z=aC(k)}else{if(av.triggerOnTouchLeave&&!bb){Z=aC(h)}}if(Z==q||Z==h){O(bh,Z)}}}else{Z=q;O(bh,Z)}if(bd===false){Z=q;O(bh,Z)}}function L(bb){var bc=bb.originalEvent;if(a){if(bc.touches.length>0){F();return true}}if(am()){W=ad}a2=at();ab=aM();if(ba()||!an()){Z=q;O(bc,Z)}else{if(av.triggerOnTouchEnd||(av.triggerOnTouchEnd==false&&Z===k)){bb.preventDefault();Z=h;O(bc,Z)}else{if(!av.triggerOnTouchEnd&&a6()){Z=h;aF(bc,Z,A)}else{if(Z===k){Z=q;O(bc,Z)}}}}ao(false);return null}function a9(){W=0;a2=0;T=0;a1=0;aZ=0;G=1;R();ao(false)}function K(bb){var bc=bb.originalEvent;if(av.triggerOnTouchLeave){Z=aC(h);O(bc,Z)}}function aK(){aR.unbind(J,aN);aR.unbind(aD,a9);aR.unbind(ay,a3);aR.unbind(U,L);if(S){aR.unbind(S,K)}ao(false)}function aC(bf){var be=bf;var bd=aA();var bc=an();var bb=ba();if(!bd||bb){be=q}else{if(bc&&bf==k&&(!av.triggerOnTouchEnd||av.triggerOnTouchLeave)){be=h}else{if(!bc&&bf==h&&av.triggerOnTouchLeave){be=q}}}return be}function O(bd,bb){var bc=undefined;if((I()||V())||(P()||aX())){if(I()||V()){bc=aF(bd,bb,l)}if((P()||aX())&&bc!==false){bc=aF(bd,bb,t)}}else{if(aG()&&bc!==false){bc=aF(bd,bb,j)}else{if(ap()&&bc!==false){bc=aF(bd,bb,b)}else{if(ah()&&bc!==false){bc=aF(bd,bb,A)}}}}if(bb===q){a9(bd)}if(bb===h){if(a){if(bd.touches.length==0){a9(bd)}}else{a9(bd)}}return bc}function aF(be,bb,bd){var bc=undefined;if(bd==l){aR.trigger("swipeStatus",[bb,aP||null,ag||0,ab||0,W,aQ]);if(av.swipeStatus){bc=av.swipeStatus.call(aR,be,bb,aP||null,ag||0,ab||0,W,aQ);if(bc===false){return false}}if(bb==h&&aV()){aR.trigger("swipe",[aP,ag,ab,W,aQ]);if(av.swipe){bc=av.swipe.call(aR,be,aP,ag,ab,W,aQ);if(bc===false){return false}}switch(aP){case p:aR.trigger("swipeLeft",[aP,ag,ab,W,aQ]);if(av.swipeLeft){bc=av.swipeLeft.call(aR,be,aP,ag,ab,W,aQ)}break;case o:aR.trigger("swipeRight",[aP,ag,ab,W,aQ]);if(av.swipeRight){bc=av.swipeRight.call(aR,be,aP,ag,ab,W,aQ)}break;case e:aR.trigger("swipeUp",[aP,ag,ab,W,aQ]);if(av.swipeUp){bc=av.swipeUp.call(aR,be,aP,ag,ab,W,aQ)}break;case x:aR.trigger("swipeDown",[aP,ag,ab,W,aQ]);if(av.swipeDown){bc=av.swipeDown.call(aR,be,aP,ag,ab,W,aQ)}break}}}if(bd==t){aR.trigger("pinchStatus",[bb,aJ||null,aq||0,ab||0,W,G,aQ]);if(av.pinchStatus){bc=av.pinchStatus.call(aR,be,bb,aJ||null,aq||0,ab||0,W,G,aQ);if(bc===false){return false}}if(bb==h&&a8()){switch(aJ){case c:aR.trigger("pinchIn",[aJ||null,aq||0,ab||0,W,G,aQ]);if(av.pinchIn){bc=av.pinchIn.call(aR,be,aJ||null,aq||0,ab||0,W,G,aQ)}break;case z:aR.trigger("pinchOut",[aJ||null,aq||0,ab||0,W,G,aQ]);if(av.pinchOut){bc=av.pinchOut.call(aR,be,aJ||null,aq||0,ab||0,W,G,aQ)}break}}}if(bd==A){if(bb===q||bb===h){clearTimeout(aW);clearTimeout(af);if(Y()&&!H()){N=at();aW=setTimeout(f.proxy(function(){N=null;aR.trigger("tap",[be.target]);if(av.tap){bc=av.tap.call(aR,be,be.target)}},this),av.doubleTapThreshold)}else{N=null;aR.trigger("tap",[be.target]);if(av.tap){bc=av.tap.call(aR,be,be.target)}}}}else{if(bd==j){if(bb===q||bb===h){clearTimeout(aW);N=null;aR.trigger("doubletap",[be.target]);if(av.doubleTap){bc=av.doubleTap.call(aR,be,be.target)}}}else{if(bd==b){if(bb===q||bb===h){clearTimeout(aW);N=null;aR.trigger("longtap",[be.target]);if(av.longTap){bc=av.longTap.call(aR,be,be.target)}}}}}return bc}function an(){var bb=true;if(av.threshold!==null){bb=ag>=av.threshold}return bb}function ba(){var bb=false;if(av.cancelThreshold!==null&&aP!==null){bb=(aT(aP)-ag)>=av.cancelThreshold}return bb}function ae(){if(av.pinchThreshold!==null){return aq>=av.pinchThreshold}return true}function aA(){var bb;if(av.maxTimeThreshold){if(ab>=av.maxTimeThreshold){bb=false}else{bb=true}}else{bb=true}return bb}function al(bb,bc){if(av.preventDefaultEvents===false){return}if(av.allowPageScroll===m){bb.preventDefault()}else{var bd=av.allowPageScroll===s;switch(bc){case p:if((av.swipeLeft&&bd)||(!bd&&av.allowPageScroll!=D)){bb.preventDefault()}break;case o:if((av.swipeRight&&bd)||(!bd&&av.allowPageScroll!=D)){bb.preventDefault()}break;case e:if((av.swipeUp&&bd)||(!bd&&av.allowPageScroll!=u)){bb.preventDefault()}break;case x:if((av.swipeDown&&bd)||(!bd&&av.allowPageScroll!=u)){bb.preventDefault()}break}}}function a8(){var bc=aO();var bb=X();var bd=ae();return bc&&bb&&bd}function aX(){return !!(av.pinchStatus||av.pinchIn||av.pinchOut)}function P(){return !!(a8()&&aX())}function aV(){var be=aA();var bg=an();var bd=aO();var bb=X();var bc=ba();var bf=!bc&&bb&&bd&&bg&&be;return bf}function V(){return !!(av.swipe||av.swipeStatus||av.swipeLeft||av.swipeRight||av.swipeUp||av.swipeDown)}function I(){return !!(aV()&&V())}function aO(){return((W===av.fingers||av.fingers===i)||!a)}function X(){return aQ[0].end.x!==0}function a6(){return !!(av.tap)}function Y(){return !!(av.doubleTap)}function aU(){return !!(av.longTap)}function Q(){if(N==null){return false}var bb=at();return(Y()&&((bb-N)<=av.doubleTapThreshold))}function H(){return Q()}function ax(){return((W===1||!a)&&(isNaN(ag)||ag<av.threshold))}function a0(){return((ab>av.longTapThreshold)&&(ag<r))}function ah(){return !!(ax()&&a6())}function aG(){return !!(Q()&&Y())}function ap(){return !!(a0()&&aU())}function F(){a5=at();ad=event.touches.length+1}function R(){a5=0;ad=0}function am(){var bb=false;if(a5){var bc=at()-a5;if(bc<=av.fingerReleaseThreshold){bb=true}}return bb}function aB(){return !!(aR.data(B+"_intouch")===true)}function ao(bb){if(bb===true){aR.bind(ay,a3);aR.bind(U,L);if(S){aR.bind(S,K)}}else{aR.unbind(ay,a3,false);aR.unbind(U,L,false);if(S){aR.unbind(S,K,false)}}aR.data(B+"_intouch",bb===true)}function ai(bc,bb){var bd=bb.identifier!==undefined?bb.identifier:0;aQ[bc].identifier=bd;aQ[bc].start.x=aQ[bc].end.x=bb.pageX||bb.clientX;aQ[bc].start.y=aQ[bc].end.y=bb.pageY||bb.clientY;return aQ[bc]}function aH(bb){var bd=bb.identifier!==undefined?bb.identifier:0;var bc=ac(bd);bc.end.x=bb.pageX||bb.clientX;bc.end.y=bb.pageY||bb.clientY;return bc}function ac(bc){for(var bb=0;bb<aQ.length;bb++){if(aQ[bb].identifier==bc){return aQ[bb]}}}function aj(){var bb=[];for(var bc=0;bc<=5;bc++){bb.push({start:{x:0,y:0},end:{x:0,y:0},identifier:0})}return bb}function aI(bb,bc){bc=Math.max(bc,aT(bb));M[bb].distance=bc}function aT(bb){if(M[bb]){return M[bb].distance}return undefined}function aa(){var bb={};bb[p]=aw(p);bb[o]=aw(o);bb[e]=aw(e);bb[x]=aw(x);return bb}function aw(bb){return{direction:bb,distance:0}}function aM(){return a2-T}function au(be,bd){var bc=Math.abs(be.x-bd.x);var bb=Math.abs(be.y-bd.y);return Math.round(Math.sqrt(bc*bc+bb*bb))}function a7(bb,bc){var bd=(bc/bb)*1;return bd.toFixed(2)}function ar(){if(G<1){return z}else{return c}}function aS(bc,bb){return Math.round(Math.sqrt(Math.pow(bb.x-bc.x,2)+Math.pow(bb.y-bc.y,2)))}function aE(be,bc){var bb=be.x-bc.x;var bg=bc.y-be.y;var bd=Math.atan2(bg,bb);var bf=Math.round(bd*180/Math.PI);if(bf<0){bf=360-Math.abs(bf)}return bf}function aL(bc,bb){var bd=aE(bc,bb);if((bd<=45)&&(bd>=0)){return p}else{if((bd<=360)&&(bd>=315)){return p}else{if((bd>=135)&&(bd<=225)){return o}else{if((bd>45)&&(bd<135)){return x}else{return e}}}}}function at(){var bb=new Date();return bb.getTime()}function aY(bb){bb=f(bb);var bd=bb.offset();var bc={left:bd.left,right:bd.left+bb.outerWidth(),top:bd.top,bottom:bd.top+bb.outerHeight()};return bc}function E(bb,bc){return(bb.x>bc.left&&bb.x<bc.right&&bb.y>bc.top&&bb.y<bc.bottom)}}}));