(function(b) { var n, u, x, g, D, i, z, A, B, p = 0, e = {}, q = [], o = 0, c = {}, j = [], E = null, s = new Image, G = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, S = /[^\.]\.(swf)\s*$/i, H, I = 1, l, m, h = false, y = b.extend(b("<div/>")[0], { prop: 0 }), v = 0, O = !b.support.opacity && !window.XMLHttpRequest, J = function() { u.hide(); s.onerror = s.onload = null; E && E.abort(); n.empty() }, P = function() { b.fancybox('<p id="fancybox_error">The requested content cannot be loaded.<br />Please try again later.</p>', { scrolling: "no", padding: 20, transitionIn: "none", transitionOut: "none" }) }, K = function() { return [b(window).width(), b(window).height(), b(document).scrollLeft(), b(document).scrollTop()] }, T = function() { var a = K(), d = {}, f = c.margin, k = c.autoScale, t = (20 + f) * 2, w = (20 + f) * 2, r = c.padding * 2; if (c.width.toString().indexOf("%") > -1) { d.width = a[0] * parseFloat(c.width) / 100 - 40; k = false } else d.width = c.width + r; if (c.height.toString().indexOf("%") > -1) { d.height = a[1] * parseFloat(c.height) / 100 - 40; k = false } else d.height = c.height + r; if (k && (d.width > a[0] - t || d.height > a[1] - w)) if (e.type == "image" || e.type == "swf") { t += r; w += r; k = Math.min(Math.min(a[0] - t, c.width) / c.width, Math.min(a[1] - w, c.height) / c.height); d.width = Math.round(k * (d.width - r)) + r; d.height = Math.round(k * (d.height - r)) + r } else { d.width = Math.min(d.width, a[0] - t); d.height = Math.min(d.height, a[1] - w) } d.top = a[3] + (a[1] - (d.height + 40)) * 0.5; d.left = a[2] + (a[0] - (d.width + 40)) * 0.5; if (c.autoScale === false) { d.top = Math.max(a[3] + f, d.top); d.left = Math.max(a[2] + f, d.left) } return d }, U = function(a) { if (a && a.length) switch (c.titlePosition) { case "inside": return a; case "over": return '<span id="fancybox-title-over">' + a + "</span>"; default: return '<span id="fancybox-title-wrap"><span id="fancybox-title-left"></span><span id="fancybox-title-main">' + a + '</span><span id="fancybox-title-right"></span></span>' } return false }, V = function() { var a = c.title, d = m.width - c.padding * 2, f = "fancybox-title-" + c.titlePosition; b("#fancybox-title").remove(); v = 0; if (c.titleShow !== false) { a = b.isFunction(c.titleFormat) ? c.titleFormat(a, j, o, c) : U(a); if (!(!a || a === "")) { b('<div id="fancybox-title" class="' + f + '" />').css({ width: d, paddingLeft: c.padding, paddingRight: c.padding }).html(a).appendTo("body"); switch (c.titlePosition) { case "inside": v = b("#fancybox-title").outerHeight(true) - c.padding; m.height += v; break; case "over": b("#fancybox-title").css("bottom", c.padding); break; default: b("#fancybox-title").css("bottom", b("#fancybox-title").outerHeight(true) * -1); break } b("#fancybox-title").appendTo(D).hide() } } }, W = function() { b(document).unbind("keydown.fb").bind("keydown.fb", function(a) { if (a.keyCode == 27 && c.enableEscapeButton) { a.preventDefault(); b.fancybox.close() } else if (a.keyCode == 37) { a.preventDefault(); b.fancybox.prev() } else if (a.keyCode == 39) { a.preventDefault(); b.fancybox.next() } }); if (b.fn.mousewheel) { g.unbind("mousewheel.fb"); j.length > 1 && g.bind("mousewheel.fb", function(a, d) { a.preventDefault(); h || d === 0 || (d > 0 ? b.fancybox.prev() : b.fancybox.next()) }) } if (c.showNavArrows) { if (c.cyclic && j.length > 1 || o !== 0) A.show(); if (c.cyclic && j.length > 1 || o != j.length - 1) B.show() } }, L = function() { i.css("overflow", c.scrolling == "auto" ? c.type == "image" || c.type == "iframe" || c.type == "swf" ? "hidden" : "auto" : c.scrolling == "yes" ? "auto" : "visible"); if (!b.support.opacity) { i.get(0).style.removeAttribute("filter"); g.get(0).style.removeAttribute("filter") } b("#fancybox-title").show(); c.hideOnContentClick && i.one("click", b.fancybox.close); c.hideOnOverlayClick && x.one("click", b.fancybox.close); c.showCloseButton && z.show(); W(); b(window).bind("resize.fb", b.fancybox.center); c.centerOnScroll ? b(window).bind("scroll.fb", b.fancybox.center) : b(window).unbind("scroll.fb"); b.isFunction(c.onComplete) && c.onComplete(j, o, c); h = false; var a, d; if (j.length - 1 > o) { a = j[o + 1].href; if (typeof a !== "undefined" && a.match(G)) { d = new Image; d.src = a } } if (o > 0) { a = j[o - 1].href; if (typeof a !== "undefined" && a.match(G)) { d = new Image; d.src = a } } }, M = function(a) { var d = Math.round(l.width + (m.width - l.width) * a), f = Math.round(l.height + (m.height - l.height) * a); g.css({ width: d + "px", height: f + "px", top: Math.round(l.top + (m.top - l.top) * a) + "px", left: Math.round(l.left + (m.left - l.left) * a) + "px" }); d = Math.max(d - c.padding * 2, 0); f = Math.max(f - (c.padding * 2 + v * a), 0); i.css({ width: d + "px", height: f + "px" }); if (typeof m.opacity !== "undefined") g.css("opacity", a < 0.5 ? 0.5 : a) }, Q = function() { var a = e.orig ? b(e.orig) : false, d = {}; if (a && a.length) { d = a.offset(); d.top += parseFloat(a.css("paddingTop")) || 0; d.left += parseFloat(a.css("paddingLeft")) || 0; d.top += parseFloat(a.css("border-top-width")) || 0; d.left += parseFloat(a.css("border-left-width")) || 0; d.width = a.width(); d.height = a.height(); d = { width: d.width + c.padding * 2, height: d.height + c.padding * 2, top: d.top - c.padding - 20, left: d.left - c.padding - 20} } else { a = K(); d = { width: 1, height: 1, top: a[3] + a[1] * 0.5, left: a[2] + a[0] * 0.5} } return d }, N = function() { u.hide(); if (g.is(":visible") && b.isFunction(c.onCleanup)) if (c.onCleanup(j, o, c) === false) { b.event.trigger("fancybox-cancel"); h = false; return } j = q; o = p; c = e; i.get(0).scrollTop = 0; i.get(0).scrollLeft = 0; if (c.overlayShow) { O && b("select:not(#fancybox-tmp select)").filter(function() { return this.style.visibility !== "hidden" }).css({ visibility: "hidden" }).one("fancybox-cleanup", function() { this.style.visibility = "inherit" }); x.css({ "background-color": c.overlayColor, opacity: c.overlayOpacity }).unbind().show() } m = T(); V(); if (g.is(":visible")) { b(z.add(A).add(B)).hide(); var a = g.position(), d; l = { top: a.top, left: a.left, width: g.width(), height: g.height() }; d = l.width == m.width && l.height == m.height; i.fadeOut(c.changeFade, function() { var f = function() { i.html(n.contents()).fadeIn(c.changeFade, L) }; b.event.trigger("fancybox-change"); i.empty().css("overflow", "hidden"); if (d) { i.css({ top: c.padding, left: c.padding, width: Math.max(m.width - c.padding * 2, 1), height: Math.max(m.height - c.padding * 2 - v, 1) }); f() } else { i.css({ top: c.padding, left: c.padding, width: Math.max(l.width - c.padding * 2, 1), height: Math.max(l.height - c.padding * 2, 1) }); y.prop = 0; b(y).animate({ prop: 1 }, { duration: c.changeSpeed, easing: c.easingChange, step: M, complete: f }) } }) } else { g.css("opacity", 1); if (c.transitionIn == "elastic") { l = Q(); i.css({ top: c.padding, left: c.padding, width: Math.max(l.width - c.padding * 2, 1), height: Math.max(l.height - c.padding * 2, 1) }).html(n.contents()); g.css(l).show(); if (c.opacity) m.opacity = 0; y.prop = 0; b(y).animate({ prop: 1 }, { duration: c.speedIn, easing: c.easingIn, step: M, complete: L }) } else { i.css({ top: c.padding, left: c.padding, width: Math.max(m.width - c.padding * 2, 1), height: Math.max(m.height - c.padding * 2 - v, 1) }).html(n.contents()); g.css(m).fadeIn(c.transitionIn == "none" ? 0 : c.speedIn, L) } } }, F = function() { n.width(e.width); n.height(e.height); if (e.width == "auto") e.width = n.width(); if (e.height == "auto") e.height = n.height(); N() }, C = function() { J(); var a = q[p], d, f, k, t, w; e = b.extend({}, b.fn.fancybox.defaults, typeof b(a).data("fancybox") == "undefined" ? e : b(a).data("fancybox")); k = a.title || b(a).title || e.title || ""; if (a.nodeName && !e.orig) e.orig = b(a).children("img:first").length ? b(a).children("img:first") : b(a); if (k === "" && e.orig) k = e.orig.attr("alt"); d = a.nodeName && /^(?:javascript|#)/i.test(a.href) ? e.href || null : e.href || a.href || null; if (e.type) { f = e.type; if (!d) d = e.content } else if (e.content) f = "html"; else if (d) if (d.match(G)) f = "image"; else if (d.match(S)) f = "swf"; else if (b(a).hasClass("iframe")) f = "iframe"; else if (d.match(/#/)) { a = d.substr(d.indexOf("#")); f = b(a).length > 0 ? "inline" : "ajax" } else f = "ajax"; else f = "inline"; e.type = f; e.href = d; e.title = k; if (e.autoDimensions && e.type !== "iframe" && e.type !== "swf") { e.width = "auto"; e.height = "auto" } if (e.modal) { e.overlayShow = true; e.hideOnOverlayClick = false; e.hideOnContentClick = false; e.enableEscapeButton = false; e.showCloseButton = false } if (b.isFunction(e.onStart)) if (e.onStart(q, p, e) === false) { h = false; return } n.css("padding", 20 + e.padding + e.margin); b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change", function() { b(this).replaceWith(i.children()) }); switch (f) { case "html": n.html(e.content); F(); break; case "inline": b('<div class="fancybox-inline-tmp" />').hide().insertBefore(b(a)).bind("fancybox-cleanup", function() { b(this).replaceWith(i.children()) }).bind("fancybox-cancel", function() { b(this).replaceWith(n.children()) }); b(a).appendTo(n); F(); break; case "image": h = false; b.fancybox.showActivity(); s = new Image; s.onerror = function() { P() }; s.onload = function() { s.onerror = null; s.onload = null; h = true; e.width = s.width; e.height = s.height; b("<img />").attr({ id: "fancybox-img", src: s.src, alt: e.title }).appendTo(n); N() }; s.src = d; break; case "swf": t = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + e.width + '" height="' + e.height + '"><param name="movie" value="' + d + '"></param>'; w = ""; b.each(e.swf, function(r, R) { t += '<param name="' + r + '" value="' + R + '"></param>'; w += " " + r + '="' + R + '"' }); t += '<embed src="' + d + '" type="application/x-shockwave-flash" width="' + e.width + '" height="' + e.height + '"' + w + "></embed></object>"; n.html(t); F(); break; case "ajax": a = d.split("#", 2); f = e.ajax.data || {}; if (a.length > 1) { d = a[0]; if (typeof f == "string") f += "&selector=" + a[1]; else f.selector = a[1] } h = false; b.fancybox.showActivity(); E = b.ajax(b.extend(e.ajax, { url: d, data: f, error: P, success: function(r) { if (E.status == 200) { n.html(r); F() } } })); break; case "iframe": b('<iframe id="fancybox-frame" name="fancybox-frame' + (new Date).getTime() + '" frameborder="0" hspace="0" scrolling="' + e.scrolling + '" src="' + e.href + '"></iframe>').appendTo(n); N(); break } }, X = function() { if (u.is(":visible")) { b("div", u).css("top", I * -40 + "px"); I = (I + 1) % 12 } else clearInterval(H) }, Y = function() { if (!b("#fancybox-wrap").length) { b("body").append(n = b('<div id="fancybox-tmp"></div>'), u = b('<div id="fancybox-loading"><div></div></div>'), x = b('<div id="fancybox-overlay"></div>'), g = b('<div id="fancybox-wrap"></div>')); if (!b.support.opacity) { g.addClass("fancybox-ie"); u.addClass("fancybox-ie") } D = b('<div id="fancybox-outer"></div>').append('<div class="fancy-bg" id="fancy-bg-n"></div><div class="fancy-bg" id="fancy-bg-ne"></div><div class="fancy-bg" id="fancy-bg-e"></div><div class="fancy-bg" id="fancy-bg-se"></div><div class="fancy-bg" id="fancy-bg-s"></div><div class="fancy-bg" id="fancy-bg-sw"></div><div class="fancy-bg" id="fancy-bg-w"></div><div class="fancy-bg" id="fancy-bg-nw"></div>').appendTo(g); D.append(i = b('<div id="fancybox-inner"></div>'), z = b('<a id="fancybox-close"></a>'), A = b('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'), B = b('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')); z.click(b.fancybox.close); u.click(b.fancybox.cancel); A.click(function(a) { a.preventDefault(); b.fancybox.prev() }); B.click(function(a) { a.preventDefault(); b.fancybox.next() }); if (O) { x.get(0).style.height = (document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight) + "px"; u.get(0).style.top = -20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight / 2 : document.body.clientHeight / 2) + (ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"; D.prepend('<iframe id="fancybox-hide-sel-frame" src="javascript:\'\';" scrolling="no" frameborder="0" ></iframe>') } } }; b.fn.fancybox = function(a) { b(this).data("fancybox", b.extend({}, a, b.metadata ? b(this).metadata() : {})).unbind("click.fb").bind("click.fb", function(d) { d.preventDefault(); if (!h) { h = true; b(this).blur(); q = []; p = 0; d = b(this).attr("rel") || ""; if (!d || d == "" || d === "nofollow") q.push(this); else { q = b("a[rel=" + d + "], area[rel=" + d + "]"); p = q.index(this) } C(); return false } }); return this }; b.fancybox = function(a, d) { if (!h) { h = true; var f = typeof d !== "undefined" ? d : {}; q = []; p = f.index || 0; if (b.isArray(a)) { for (var k = 0, t = a.length; k < t; k++) if (typeof a[k] == "object") b(a[k]).data("fancybox", b.extend({}, f, a[k])); else a[k] = b({}).data("fancybox", b.extend({ content: a[k] }, f)); q = jQuery.merge(q, a) } else { if (typeof a == "object") b(a).data("fancybox", b.extend({}, f, a)); else a = b({}).data("fancybox", b.extend({ content: a }, f)); q.push(a) } if (p > q.length || p < 0) p = 0; C() } }; b.fancybox.showActivity = function() { clearInterval(H); u.show(); H = setInterval(X, 66) }; b.fancybox.hideActivity = function() { u.hide() }; b.fancybox.next = function() { return b.fancybox.pos(o + 1) }; b.fancybox.prev = function() { return b.fancybox.pos(o - 1) }; b.fancybox.pos = function(a) { if (!h) { a = parseInt(a, 10); if (a > -1 && j.length > a) { p = a; C() } if (c.cyclic && j.length > 1 && a < 0) { p = j.length - 1; C() } if (c.cyclic && j.length > 1 && a >= j.length) { p = 0; C() } } }; b.fancybox.cancel = function() { if (!h) { h = true; b.event.trigger("fancybox-cancel"); J(); e && b.isFunction(e.onCancel) && e.onCancel(q, p, e); h = false } }; b.fancybox.close = function() { function a() { x.fadeOut("fast"); g.hide(); b.event.trigger("fancybox-cleanup"); i.empty(); b.isFunction(c.onClosed) && c.onClosed(j, o, c); j = e = []; o = p = 0; c = e = {}; h = false } if (!(h || g.is(":hidden"))) { h = true; if (c && b.isFunction(c.onCleanup)) if (c.onCleanup(j, o, c) === false) { h = false; return } J(); b(z.add(A).add(B)).hide(); b("#fancybox-title").remove(); g.add(i).add(x).unbind(); b(window).unbind("resize.fb scroll.fb"); b(document).unbind("keydown.fb"); i.css("overflow", "hidden"); if (c.transitionOut == "elastic") { l = Q(); var d = g.position(); m = { top: d.top, left: d.left, width: g.width(), height: g.height() }; if (c.opacity) m.opacity = 1; y.prop = 1; b(y).animate({ prop: 0 }, { duration: c.speedOut, easing: c.easingOut, step: M, complete: a }) } else g.fadeOut(c.transitionOut == "none" ? 0 : c.speedOut, a) } }; b.fancybox.resize = function() { var a, d; if (!(h || g.is(":hidden"))) { h = true; a = i.wrapInner("<div style='overflow:auto'></div>").children(); d = a.height(); g.css({ height: d + c.padding * 2 + v }); i.css({ height: d }); a.replaceWith(a.children()); b.fancybox.center() } }; b.fancybox.center = function() { h = true; var a = K(), d = c.margin, f = {}; f.top = a[3] + (a[1] - (g.height() - v + 40)) * 0.5; f.left = a[2] + (a[0] - (g.width() + 40)) * 0.5; f.top = Math.max(a[3] + d, f.top); f.left = Math.max(a[2] + d, f.left); g.css(f); h = false }; b.fn.fancybox.defaults = { padding: 10, margin: 20, opacity: false, modal: false, cyclic: false, scrolling: "auto", width: 560, height: 340, autoScale: true, autoDimensions: true, centerOnScroll: false, ajax: {}, swf: { wmode: "transparent" }, hideOnOverlayClick: true, hideOnContentClick: false, overlayShow: true, overlayOpacity: 0.3, overlayColor: "#666", titleShow: true, titlePosition: "outside", titleFormat: null, transitionIn: "fade", transitionOut: "fade", speedIn: 300, speedOut: 300, changeSpeed: 300, changeFade: "fast", easingIn: "swing", easingOut: "swing", showCloseButton: true, showNavArrows: true, enableEscapeButton: true, onStart: null, onCancel: null, onComplete: null, onCleanup: null, onClosed: null }; b(document).ready(function() { Y() }) })(jQuery);
