/* * jQuery.ImageSwitch * Version: 1.0.2 * http://www.hieu.co.uk/ImageSwitch/ * * Copyright (c) 2009 Hieu Pham - http://www.hieu.co.uk * COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) * http://www.opensource.org/licenses/cddl1.php * * Date: 13/03/2009 * Revision: 50 */ var Debug = function (b, a) { if (!jQuery("#Debug")) { jQuery("body").append("
") } if (a) { jQuery("#Debug").html(jQuery("#Debug").html() + "
" + b) } else { jQuery("#Debug").html(jQuery("#Debug").html() + b) } }; (function (a) { a.fn.ImageSwitch = function (l, d) { var f = { Type : "FadeIn", NewImage : "", EffectOriginal : true, Speed : 1000, StartLeft : 50, StartTop : 0, StartOpacity : 0, EndLeft :- 50, EndTop : 0, EndOpacity : 0, Direction : "RightLeft", Door1 : "", Door2 : "" }; var q = a.extend(f, l); var i = this; var h = 0; var k; var p; var o; var j = function () { i.data("imageswitch", - 1) }; if (a.isFunction(d)) { j = function () { d(); a.data(this, "imageswitch", - 1) } } var c = function () { i.parent().append(""); a(k).attr("src", i.attr("src")); a(k).css("position", "absolute"); a(k).css("top", i.position().top); a(k).css("left", i.position().left); //a(k).css("width", i.width()); //a(k).css("height", i.height()); a(k).css("opacity", 1); i.attr("src", q.NewImage); if (q.EffectOriginal) { i.css("opacity", q.StartOpacity); i.animate({ opacity : 1 }, q.Speed) } a(k).animate({ opacity : 0 }, q.Speed, function () { a(k).remove(); j() }) }; var g = function (r) { a("body").append(""); a(k).css("position", "absolute"); if (r) { a(k).attr("src", q.NewImage); a(k).css("top", i.offset().top + q.StartTop); a(k).css("left", i.offset().left + q.StartLeft); a(k).css("opacity", q.StartOpacity); EndTop = i.offset().top; EndLeft = i.offset().left; EndOpacity = 1 } else { a(k).attr("src", i.attr("src")); i.attr("src", q.NewImage); a(k).css("top", i.offset().top); a(k).css("left", i.offset().left); a(k).css("opacity", 1); EndTop = i.offset().top + q.EndTop; EndLeft = i.offset().left + q.EndLeft; EndOpacity = q.EndOpacity } a(k).animate({ opacity : EndOpacity, top : EndTop, left : EndLeft }, q.Speed, function () { i.attr("src", q.NewImage); a(k).remove(); j() }) }; var b = function (u) { var t = i.clone(true); i.wrap("
"); a("#GrpViewport-" + h).css("overflow", "hidden"); a("#GrpViewport-" + h).width(i.width()); a("#GrpViewport-" + h).height(i.height()); a("#GrpViewport-" + h).append(""); a(k).css("position", "absolute"); var r = 0; var s = 0; switch (q.Direction) { case "RightLeft": s =- i.width(); break; case "LeftRight": s = i.width(); break; case "TopDown": r =- i.height(); break; case "DownTop": r = i.height(); break } if (u) { a(k).attr("src", q.NewImage); a(k).css("top", r); a(k).css("left", s); a(k).css("opacity", q.StartOpacity); EndTop = 0; EndLeft = 0; EndOpacity = 1 } else { a(k).attr("src", i.attr("src")); a(k).css("left", 0); a(k).css("top", 0); i.attr("src", q.NewImage); EndTop = r; EndLeft = s; EndOpacity = q.EndOpacity } if (i.css("position") != "absolute") { a("#GrpViewport-" + h).css("position", "relative"); i.css("position", "absolute") } else { a("#GrpViewport-" + h).css("position", "absolute"); a("#GrpViewport-" + h).css("left", i.css("left")); a("#GrpViewport-" + h).css("top", i.css("top")); i.css("top", 0); i.css("left", 0) } if (q.EffectOriginal && u) { i.animate({ top :- r, left :- s }, q.Speed) } a(k).animate({ opacity : EndOpacity, top : EndTop, left : EndLeft }, q.Speed, function () { t.attr("src", q.NewImage); t.removeAttr("imageswitch"); a("#GrpViewport-" + h).replaceWith(t); j() }) }; var n = function () { var t = i.clone(true); i.wrap("
"); a("#GrpViewport").css("overflow", "hidden"); a("#GrpViewport").width(i.width()); a("#GrpViewport").height(i.height()); a("#GrpViewport").append("
"); a(p).attr("src", q.NewImage); a(p).css("position", "absolute"); a(p).css("background-color", "#FFF"); if (q.Door1.length > 0) { a(p).css("background", q.Door1) } a(p).width(i.width()); a(p).height(i.height()); var r = 0; var s = 0; switch (q.Direction) { case "RightLeft": s =- i.width(); break; case "LeftRight": s = i.width(); break; case "TopDown": r =- i.height(); break; case "DownTop": r = i.height(); break } a(p).css("top", r); a(p).css("left", s); if (i.css("position") != "absolute") { a("#GrpViewport").css("position", "relative"); i.css("position", "absolute") } else { a("#GrpViewport").css("position", "absolute"); a("#GrpViewport").css("left", i.css("left")); a("#GrpViewport").css("top", i.css("top")); i.css("top", 0); i.css("left", 0) } a(p).animate({ top : 0, left : 0 }, q.Speed, function () { i.attr("src", q.NewImage); a(p).animate({ top : r, left : s }, q.Speed, function () { t.attr("src", q.NewImage); t.removeAttr("imageswitch"); a("#GrpViewport").replaceWith(t); j() }) }) }; var e = function () { var v = i.css("position"); var r = i.css("left"); var u = i.css("top"); i.wrap("
"); a("#GrpViewport").css("overflow", "hidden"); a("#GrpViewport").width(i.width()); a("#GrpViewport").height(i.height()); a("#GrpViewport").append("
"); a(p).css("position", "absolute"); a(p).css("background-color", "#FFF"); if (q.Door1.length > 0) { a(p).css("background", q.Door1) } a(p).width(i.width()); a(p).height(i.height()); a("#GrpViewport").append("
"); a(o).css("position", "absolute"); a(o).css("background-color", "#FFF"); if (q.Door2.length > 0) { a(o).css("background", q.Door2) } a(o).width(i.width()); a(o).height(i.height()); var s = 0; var t = 0; switch (q.Direction) { case "RightLeft": t =- i.width(); break; case "LeftRight": t = i.width(); break; case "TopDown": s =- i.height(); break; case "DownTop": s = i.height(); break } a(p).css("top", s); a(p).css("left", t); a(o).css("top", - s); a(o).css("left", - t); if (!q.EffectOriginal) { a(p).css("background", "#FFF url(" + q.NewImage + ") no-repeat " +- t / 2 + "px " +- s / 2 + "px"); a(o).css("background", "#FFF url(" + q.NewImage + ") no-repeat " + t / 2 + "px " + s / 2 + "px") } if (i.css("position") != "absolute") { a("#GrpViewport").css("position", "relative"); i.css("position", "absolute") } else { a("#GrpViewport").css("position", "absolute"); a("#GrpViewport").css("left", r); a("#GrpViewport").css("top", u); i.css("position", "absolute"); i.css("top", 0); i.css("left", 0) } a(p).animate({ top : s / 2, left : t / 2 }, q.Speed, function () { i.attr("src", q.NewImage); if (!q.EffectOriginal) { i.css("position", v); i.css("top", u); i.css("left", r); a("#GrpViewport").replaceWith(i) } else { a(p).animate({ top : s, left : t }, q.Speed, function () { i.css("position", v); i.css("top", u); i.css("left", r); a("#GrpViewport").replaceWith(i) }) } }); a(o).animate({ top :- s / 2, left :- t / 2 }, q.Speed, function () { i.attr("src", q.NewImage); if (!q.EffectOriginal) { j() } else { a(o).animate({ top :- s, left :- t }, q.Speed, function () { j() }) } }) }; var m = function (s) { var r = i.clone(true); if (i.css("z-index") == "auto") { i.css("z-index", 100) } if (i.css("position") != "absolute") { i.css("position", "relative") } a("body").append(""); a(k).css("position", "absolute"); a(k).css("top", i.offset().top); a(k).css("left", i.offset().left); if (s) { a(k).css("opacity", q.StartOpacity); a(k).css("z-index", i.css("z-index") - 1); a(k).attr("src", q.NewImage) } else { a(k).css("opacity", 1); a(k).css("z-index", i.css("z-index") + 1); a(k).attr("src", i.attr("src")); i.attr("src", q.NewImage) } if (Math.abs(q.EndTop) < i.height() && Math.abs(q.EndLeft) < i.width()) { EndTop = i.offset().top; EndLeft = i.offset().left + i.width() } else { EndTop = i.offset().top + q.EndTop; EndLeft = i.offset().left + q.EndLeft } EndOpacity = 1; a(k).animate({ opacity : EndOpacity, top : EndTop, left : EndLeft }, q.Speed, function () { if (s) { a(k).css("z-index", 101) } else { EndOpacity = q.EndOpacity; a(k).css("z-index", 2) } a(k).animate({ opacity : EndOpacity, top : i.offset().top, left : i.offset().left }, q.Speed, function () { r.attr("src", q.NewImage); r.removeAttr("imageswitch"); i.replaceWith(r); a(k).remove(); j() }) }) }; return this.each(function () { i = a(this); if (!i.ImageAnimating()) { h = a.data(i); h = parseInt(h); i.data("imageswitch", h); k = "#GrpEffectImg-" + h; p = "#GrpEffectDiv1-" + h; o = "#GrpEffectDiv2-" + h; var r = new Image(); r.src = q.NewImage; a.ImagePreload(q.NewImage, function () { switch (q.Type) { case "FadeIn": c(); break; case "FlyIn": g(true); break; case "FlyOut": g(false); break; case "FlipIn": m(true); break; case "FlipOut": m(false); break; case "ScrollIn": b(true); break; case "ScrollOut": b(false); break; case "SingleDoor": n(); break; case "DoubleDoor": e(); break } }) } }) } })(jQuery); (function (a) { a.fn.ImageAnimating = function () { if (this.data("imageswitch") > 0) { return true } else { return false; } } })(jQuery); (function (a) { a.fn.ImageStop = function (c, b, d) { return this.each(function () { if (a(this).ImageAnimating()) { var e = a.data(this, "imageswitch"); a("#GrpEffectImg-" + e).stop(c, b); a("#GrpEffectDiv-" + e).stop(c, b); a("#GrpEffectDiv1-" + e).stop(c, b); a(this).stop(c, b); a("#GrpEffectImg-" + e).remove(); a("#GrpEffectDiv-" + e).remove(); a("#GrpEffectDiv1-" + e).remove(); if (a.isFunction(d)) { d() } } }) } })(jQuery); (function (a) { a.ImageStopAll = function (c, b, d) { a(".GrpEffectImg").stop(c, b); a(".GrpEffectDiv").stop(c, b); a(".GrpEffectDiv1").stop(c, b); a(this).stop(c, b); a(".GrpEffectImg").remove(); a(".GrpEffectDiv").remove(); a(".GrpEffectDiv1").remove(); a.data(this, "imageswitch", - 1); if (a.isFunction(d)) { d() } } })(jQuery); (function (a) { a.ImagePreload = function (b, d) { var c = new Image(); c.src = b; if (a.isFunction(d)) { a(c).load(d()) } } })(jQuery);