jQuery(document).ready(function () {
jQuery("[data-psswiggleplayer-autoplay=1]").addClass("hover");
jQuery("[data-psswiggleplayer-autoplay]").hover(function () {
var t = jQuery(this);
if (!t.hasClass("hover")) {
t.addClass("hover");
}
}, function () {
var t = jQuery(this);
if (t.attr("data-psswiggleplayer-autostop") != "0") {
t.removeClass("hover");
}
});
jQuery("[data-psswiggleplayer-dialog=1]").on('click', function (event) {
var img = jQuery(this);
new PSSWiggleDialog(img.closest('div').eq(0).attr("id"), img.attr("data-psswiggleplayer-fullsrc"), img.attr("data-psswiggleplayer-fullwidth") / 2, img.attr("data-psswiggleplayer-fullheight"));
return false;
});
});
function PSSWiggleDialog(animationClass, src, width, height) {
this.state = 'loading';
this.viewerContainerVerticalPadding = 40;
this.viewerContainerHoriontalPadding = 15;
this.viewerMinSize = 200;
this.imageWidth = width;
this.imageHeight = height;
this.domMain = jQuery("
")
.attr("id", "psswigglefullscreen");
jQuery("")
.attr("id", "background")
.on('click', this.close.bind(this))
.appendTo(this.domMain);
this.viewerContainer = jQuery("").attr("id", "viewer_container")
.on('click', this.close.bind(this))
.appendTo(this.domMain);
this.viewer = jQuery("")
.attr("id", "viewer")
.css("background-image", "url(\"" + src + "\")")
.css("background-position", "0")
.css("background-size", (this.imageWidth * 2) + "px " + this.imageHeight + "px")
.css("width", width + "px")
.css("height", height + "px")
.appendTo(this.viewerContainer);
this.viewerImage = jQuery("
")
.addClass('viewer')
.addClass(animationClass)
.on('load', this.viewerimageonload.bind(this))
.on('error', this.viewerimageonerror.bind(this))
.appendTo(this.viewer);
this.controls = jQuery("")
.attr("id", "controls")
.appendTo(this.viewerContainer);
jQuery('
')
.on('click', this.close.bind(this))
.appendTo(this.controls);
this.messageImage = jQuery("
")
.addClass('message')
.attr("src", 'data:image/gif;base64,R0lGODlhKwALAPEAAP///2dnZ7S0tGdnZyH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAKwALAAACMoSOCMuW2diD88UKG95W88uF4DaGWFmhZid93pq+pwxnLUnXh8ou+sSz+T64oCAyTBUAACH5BAkKAAAALAAAAAArAAsAAAI9xI4IyyAPYWOxmoTHrHzzmGHe94xkmJifyqFKQ0pwLLgHa82xrekkDrIBZRQab1jyfY7KTtPimixiUsevAAAh+QQJCgAAACwAAAAAKwALAAACPYSOCMswD2FjqZpqW9xv4g8KE7d54XmMpNSgqLoOpgvC60xjNonnyc7p+VKamKw1zDCMR8rp8pksYlKorgAAIfkECQoAAAAsAAAAACsACwAAAkCEjgjLltnYmJS6Bxt+sfq5ZUyoNJ9HHlEqdCfFrqn7DrE2m7Wdj/2y45FkQ13t5itKdshFExC8YCLOEBX6AhQAADsAAAAAAAAAAAA=')
.appendTo(this.viewer);
this.calculatePositions();
jQuery(document.body)
.on('keydown', this.onkeydown.bind(this))
.append(this.domMain);
jQuery(window).on('resize', this.onresize.bind(this));
this.viewerImage
.attr("src", src);
}
PSSWiggleDialog.prototype.viewerimageonload = function () {
this.state = 'ready';
this.calculatePositions();
}
PSSWiggleDialog.prototype.viewerimageonerror = function () {
this.state = 'error';
this.calculatePositions();
}
PSSWiggleDialog.prototype.close = function () {
jQuery(window).off('resize');
this.domMain.remove();
return false;
}
PSSWiggleDialog.prototype.onkeydown = function (event) {
if (event.keyCode == 27) {
this.close();
} else if (event.keyCode >= 37 && event.keyCode <= 40) {
return false;
}
}
PSSWiggleDialog.prototype.onresize = function () {
this.calculatePositions();
}
PSSWiggleDialog.prototype.calculatePositions = function () {
var w = jQuery(window).width();
var h = jQuery(window).height();
var maxScale = 0.9;
// available for display
var maxWidth = Math.round(w * maxScale) - 2 * this.viewerContainerHoriontalPadding;
var maxHeight = Math.round(h * maxScale) - 2 * this.viewerContainerVerticalPadding;
// scale the content in required
var scale = Math.min(maxWidth / this.imageWidth, maxHeight / this.imageHeight);
// don't upscale
scale = Math.min(1, scale);
// don't scale below min size
scale = Math.max(scale, this.viewerMinSize / this.imageWidth);
var scaledWidth = Math.ceil(this.imageWidth * scale);
var scaledHeight = Math.ceil(this.imageHeight * scale);
var scaledLeft = Math.floor((w - scaledWidth) / 2 - this.viewerContainerHoriontalPadding);
var scaledTop = Math.floor((h - scaledHeight) / 2 - this.viewerContainerVerticalPadding);
this.viewerContainer
.css("width", (scaledWidth + 2 * this.viewerContainerHoriontalPadding) + "px")
.css("height", (scaledHeight + 2 * this.viewerContainerVerticalPadding) + "px")
.css("position", "fixed")
.css("left", scaledLeft + "px")
.css("top", scaledTop + "px");
if (this.state == 'loading') {
this.messageImage
.css("visibility", "visible")
.css("left", ((this.imageWidth / 2) - 21) + "px")
.css("top", ((this.imageHeight / 2) - 5) + "px")
.attr("src", 'data:image/gif;base64,R0lGODlhKwALAPEAAP///2dnZ7S0tGdnZyH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAKwALAAACMoSOCMuW2diD88UKG95W88uF4DaGWFmhZid93pq+pwxnLUnXh8ou+sSz+T64oCAyTBUAACH5BAkKAAAALAAAAAArAAsAAAI9xI4IyyAPYWOxmoTHrHzzmGHe94xkmJifyqFKQ0pwLLgHa82xrekkDrIBZRQab1jyfY7KTtPimixiUsevAAAh+QQJCgAAACwAAAAAKwALAAACPYSOCMswD2FjqZpqW9xv4g8KE7d54XmMpNSgqLoOpgvC60xjNonnyc7p+VKamKw1zDCMR8rp8pksYlKorgAAIfkECQoAAAAsAAAAACsACwAAAkCEjgjLltnYmJS6Bxt+sfq5ZUyoNJ9HHlEqdCfFrqn7DrE2m7Wdj/2y45FkQ13t5itKdshFExC8YCLOEBX6AhQAADsAAAAAAAAAAAA=');
this.viewerImage
.css("visibility", "hidden");
} else if (this.state == 'error') {
this.messageImage
.css("visibility", "visible")
.css("left", ((this.imageWidth / 2) - 16) + "px")
.css("top", ((this.imageHeight / 2) - 16) + "px")
.attr("src", 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABuUlEQVRYR+2WzStEURjGjUSxQRbKmmwoaRoln2VpYams2IjN/B0WSpQi/gILZafkqzSjSFIWFspCUcjHLFD4PTVXd2bujHPOjKapOfVrzr3nfZ/z3Ldz3zuhiiKPUJH3rygbKIkKDHNOxmEAGqES7uEIViCWzznKVYE2hFeh/48NDlmfgBsXI9kM6Gk3od5Q9JG4MTgwjP8NCzLQymocGizFHogPw7VNXpCBXQQGbUR8sXfMX6AJEslzMsfvSTa9dAMjBG47bp4t7ZuFRYiC5ikj3cAaq5MWBoaI1VuxY5CzkDSR08Alq+0GYl6I9wAZTxag8cW9bjjzr/krUMXCM9T+kwHJXsE8rMOHbngGmplvQK/F5v58kwr4pU+5GIVbGaiBPeix3DwfA8q9gLAMTMOyw+b5GlB+VAbUyyOOBtSm9Raogi4jLgNPYNpyXTbJlZOQgTeoK7Syod6rDBzrMBgmpIfZNKKgLWIyMAtLjgb6kmdg3zF/xnsNVYVORxHXNHXEiNeIWrjYgi5XNcu8lEbk5VYz0YdoCjpADaqQ4x2xc9AHT634U+Il8ae0kFXI0CpXoFyBolfgB4WmQnzRD121AAAAAElFTkSuQmCC');
this.viewerImage
.css("visibility", "hidden");
} else {
this.messageImage
.css("visibility", "hidden");
this.viewerImage
.css("visibility", "visible");
}
if (scale != 1) {
this.viewer
.css("transform", 'scale(' + scale + ', ' + scale + ')')
.css("transformOrigin", '0% 0%');
}
this.viewerImage
.css("margin-left", "-" + this.imageWidth + "px")
.css("width", (this.imageWidth * 2) + "px")
.css("height", this.imageHeight + "px");
}