(function (a) { a.fn.gallerypic = function (p) { var m = 0, d = true, k = [], c = 0; a(window).scroll(function () { b() }); a(window).resize(function () { b(); n() }); p = jQuery.extend({ animationSpeed: "normal", padding: 40, opacity: 0.35, showTitle: true, allowresize: true, counter_separator_label: "/", theme: "dark_rounded" }, p); a(this).each(function () { k[k.length] = this; a(this).bind("click", function () { g(this); return false }) }); function g(u) { m = a(u); theRel = a(m).attr("rel"); galleryRegExp = /\[(?:.*)\]/; theGallery = galleryRegExp.exec(theRel); isSet = false; setCount = 0; for (var t = 0; t < k.length; t++) { if (a(k[t]).attr("rel").indexOf(theGallery) != -1) { setCount++; if (setCount > 1) { isSet = true } if (a(k[t]).attr("href") == a(u).attr("href")) { c = setCount; arrayPosition = t } } } q(isSet); a("div.pp_pic_holder p.currentTextHolder").text(c + p.counter_separator_label + setCount); b(); a("div.pp_pic_holder #full_res").hide(); a(".pp_loaderIcon").show(); r() } showimage = function (w, t, z, y, x, u, v) { a(".pp_loaderIcon").hide(); var A = f(); if (a.browser.opera) { windowHeight = window.innerHeight; windowWidth = window.innerWidth } else { windowHeight = a(window).height(); windowWidth = a(window).width() } a("div.pp_pic_holder .pp_content").animate({ height: x, width: z }, p.animationSpeed); projectedTop = A.scrollTop + ((windowHeight / 2) - (y / 2)); if (projectedTop < 0) { projectedTop = 0 + a("div.ppt").height() } a("div.pp_pic_holder").animate({ top: projectedTop, left: ((windowWidth / 2) - (z / 2)), width: z }, p.animationSpeed, function () { a("#fullResImage").attr({ width: w, height: t }); a("div.pp_pic_holder").width(z); a("div.pp_pic_holder .hoverContainer").height(t).width(w); a("div.pp_pic_holder #full_res").fadeIn(p.animationSpeed); e(); if (v) { a("a.pp_expand,a.pp_contract").fadeIn(p.animationSpeed) } }) }; function j(t) { if (t == "previous") { arrayPosition--; c-- } else { arrayPosition++; c++ } if (!d) { d = true } a("div.pp_pic_holder .hoverContainer,div.pp_pic_holder .pp_details").fadeOut(p.animationSpeed); a("div.pp_pic_holder #full_res").fadeOut(p.animationSpeed, function () { a(".pp_loaderIcon").show(); r() }); s(); a("a.pp_expand,a.pp_contract").fadeOut(p.animationSpeed, function () { a(this).removeClass("pp_contract").addClass("pp_expand") }) } function i() { a("div.pp_pic_holder").fadeOut(p.animationSpeed, function () { a("div.pp_overlay").fadeOut(p.animationSpeed, function () { a("div.pp_overlay,div.pp_pic_holder").remove(); if (a.browser.msie && a.browser.version == 6) { a("select").css("visibility", "visible") } }) }); d = true } function h() { if (c == setCount) { a("div.pp_pic_holder a.pp_next").css("visibility", "hidden"); a("div.pp_pic_holder a.pp_arrow_next").addClass("disabled").unbind("click") } else { a("div.pp_pic_holder a.pp_next").css("visibility", "visible"); a("div.pp_pic_holder a.pp_arrow_next.disabled").removeClass("disabled").bind("click", function () { j("next"); return false }) } if (c == 1) { a("div.pp_pic_holder a.pp_previous").css("visibility", "hidden"); a("div.pp_pic_holder a.pp_arrow_previous").addClass("disabled").unbind("click") } else { a("div.pp_pic_holder a.pp_previous").css("visibility", "visible"); a("div.pp_pic_holder a.pp_arrow_previous.disabled").removeClass("disabled").bind("click", function () { j("previous"); return false }) } a("div.pp_pic_holder p.currentTextHolder").text(c + p.counter_separator_label + setCount); var t = (isSet) ? a(k[arrayPosition]) : a(m); if (t.attr("title")) { a("div.pp_pic_holder .pp_description").show().html(unescape(t.attr("title"))) } else { a("div.pp_pic_holder .pp_description").hide().text("") } if (t.find("img").attr("alt") && p.showTitle) { hasTitle = true } else { hasTitle = false } } function l(u, t) { hasBeenResized = false; a("div.pp_pic_holder .pp_details").width(u); a("div.pp_pic_holder .pp_details p.pp_description").width(u - parseFloat(a("div.pp_pic_holder a.pp_close").css("width"))); contentHeight = t + parseFloat(a("div.pp_pic_holder .pp_details").height()) + parseFloat(a("div.pp_pic_holder .pp_details").css("margin-top")) + parseFloat(a("div.pp_pic_holder .pp_details").css("margin-bottom")); contentWidth = u; containerHeight = t + parseFloat(a("div.ppt").height()) + parseFloat(a("div.pp_pic_holder .pp_top").height()) + parseFloat(a("div.pp_pic_holder .pp_bottom").height()); containerWidth = u + p.padding; imageWidth = u; imageHeight = t; windowHeight = a(window).height(); windowWidth = a(window).width(); if (((containerWidth > windowWidth) || (containerHeight > windowHeight)) && d && p.allowresize) { hasBeenResized = true; notFitting = true; while (notFitting) { if ((containerWidth > windowWidth)) { imageWidth = (windowWidth - 200); imageHeight = (t / u) * imageWidth } else { if ((containerHeight > windowHeight)) { imageHeight = (windowHeight - 200); imageWidth = (u / t) * imageHeight } else { notFitting = false } } containerHeight = imageHeight; containerWidth = imageWidth } contentHeight = imageHeight + parseFloat(a("div.pp_pic_holder .pp_details").height()) + parseFloat(a("div.pp_pic_holder .pp_details").css("margin-top")) + parseFloat(a("div.pp_pic_holder .pp_details").css("margin-bottom")); contentWidth = imageWidth; containerHeight = imageHeight + parseFloat(a("div.ppt").height()) + parseFloat(a("div.pp_pic_holder .pp_top").height()) + parseFloat(a("div.pp_pic_holder .pp_bottom").height()); containerWidth = imageWidth + p.padding; a("div.pp_pic_holder .pp_details").width(contentWidth); a("div.pp_pic_holder .pp_details p.pp_description").width(contentWidth - parseFloat(a("div.pp_pic_holder a.pp_close").css("width"))) } return { width: imageWidth, height: imageHeight, containerHeight: containerHeight, containerWidth: containerWidth, contentHeight: contentHeight, contentWidth: contentWidth, resized: hasBeenResized} } function b() { if (a("div.pp_pic_holder").size() > 0) { var t = f(); if (a.browser.opera) { windowHeight = window.innerHeight; windowWidth = window.innerWidth } else { windowHeight = a(window).height(); windowWidth = a(window).width() } if (d) { projectedTop = (windowHeight / 2) + t.scrollTop - (a("div.pp_pic_holder").height() / 2); if (projectedTop < 0) { projectedTop = 0 + a("div.ppt").height() } a("div.pp_pic_holder").css({ top: projectedTop, left: (windowWidth / 2) + t.scrollLeft - (a("div.pp_pic_holder").width() / 2) }) } } } function e() { if (isSet) { a("div.pp_pic_holder .hoverContainer").fadeIn(p.animationSpeed) } a("div.pp_pic_holder .pp_details").fadeIn(p.animationSpeed); o() } function o() { if (p.showTitle && hasTitle) { } } function s() { } function r() { h(); imgPreloader = new Image(); nextImage = new Image(); if (isSet && c > setCount) { nextImage.src = a(k[arrayPosition + 1]).attr("href") } prevImage = new Image(); if (isSet && k[arrayPosition - 1]) { prevImage.src = a(k[arrayPosition - 1]).attr("href") } a("div.pp_pic_holder .pp_content").css("overflow", "hidden"); if (isSet) { a("div.pp_pic_holder #fullResImage").attr("src", a(k[arrayPosition]).attr("href")) } else { a("div.pp_pic_holder #fullResImage").attr("src", a(m).attr("href")) } imgPreloader.onload = function () { var t = l(imgPreloader.width, imgPreloader.height); imgPreloader.width = t.width; imgPreloader.height = t.height; setTimeout("showimage(imgPreloader.width,imgPreloader.height," + t.containerWidth + "," + t.containerHeight + "," + t.contentHeight + "," + t.contentWidth + "," + t.resized + ")", 500) }; (isSet) ? imgPreloader.src = a(k[arrayPosition]).attr("href") : imgPreloader.src = a(m).attr("href") } function f() { var t = a(document); return { scrollTop: t.scrollTop(), scrollLeft: t.scrollLeft()} } function n() { a("div.pp_overlay").css({ height: a(document).height(), width: a(window).width() }) } function q() { backgroundDiv = "<div class='pp_overlay'></div>"; a("body").append(backgroundDiv); a("div.pp_overlay").css("height", a(document).height()).bind("click", function () { i() }); pictureHolder = '<div class="pp_pic_holder"><div class="pp_top"><div class="pp_left"></div><div class="pp_middle"></div><div class="pp_right"></div></div><div class="pp_content"><a href="#" class="pp_expand" title="Показать полноразмерное изображение">Увеличить</a><div class="pp_loaderIcon"></div><div class="hoverContainer"><a class="pp_next" href="#">next</a><a class="pp_previous" href="#">previous</a></div><div id="full_res"><img id="fullResImage" src="" /></div><div class="pp_details clearfix"><a class="pp_close" href="#">???????</a><p class="pp_description"></p><div class="pp_nav"><a href="#" class="pp_arrow_previous">?????</a><p class="currentTextHolder">0' + p.counter_separator_label + '0</p><a href="#" class="pp_arrow_next">?????</a></div></div></div><div class="pp_bottom"><div class="pp_left"></div><div class="pp_middle"></div><div class="pp_right"></div></div></div>'; titleHolder = '<div class="ppt"><div class="ppt_left"></div><div class="ppt_content"></div><div class="ppt_right"></div></div>'; a("body").append(pictureHolder).append(titleHolder); a(".pp_pic_holder,.titleHolder").css({ opacity: 0 }); a(".pp_pic_holder,.ppt").addClass(p.theme); a("a.pp_close").bind("click", function () { i(); return false }); a("a.pp_expand").bind("click", function () { if (a(this).hasClass("pp_expand")) { a(this).removeClass("pp_expand").addClass("pp_contract"); d = false } else { a(this).removeClass("pp_contract").addClass("pp_expand"); d = true } s(); a("div.pp_pic_holder .hoverContainer,div.pp_pic_holder #full_res").fadeOut(p.animationSpeed); a("div.pp_pic_holder .pp_details").fadeOut(p.animationSpeed, function () { r() }); return false }); a(".pp_pic_holder .pp_previous,.pp_pic_holder .pp_arrow_previous").bind("click", function () { j("previous"); return false }); a(".pp_pic_holder .pp_next,.pp_pic_holder .pp_arrow_next").bind("click", function () { j("next"); return false }); a(".hoverContainer").css({ "margin-left": p.padding / 2 }); if (!isSet) { a(".hoverContainer,.pp_nav").hide() } if (a.browser.msie && a.browser.version == 6) { a("body").addClass("ie6"); a("select").css("visibility", "hidden") } a("div.pp_overlay").css("opacity", 0).fadeTo(p.animationSpeed, p.opacity, function () { a("div.pp_pic_holder").css("opacity", 0).fadeIn(p.animationSpeed, function () { a("div.pp_pic_holder").attr("style", "left:" + a("div.pp_pic_holder").css("left") + ";top:" + a("div.pp_pic_holder").css("top") + ";") }) }) } }; (function (b) { b(document).ready(function () { b("A.gallerypic").gallerypic() }) })(jQuery) })(jQuery);
