/*
* 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);