var Debug = function (b, a) {
    if (!$("#Debug")) {
        $("body").append("<div id='Debug'></div>")
    }
    if (a) {
        $("#Debug").html($("#Debug").html() + "<br/>" + b)
    } else {
        $("#Debug").html($("#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("<img class='GrpEffectImg' id='" + k.replace("#", "") + "'/>");
            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("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("<img class='GrpEffectImg' id='" + k.replace("#", "") + "'/>");
            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("<div id='GrpViewport-" + h + "'></div>");
            a("#GrpViewport-" + h).css("overflow", "hidden");
            a("#GrpViewport-" + h).width(i.width());
            a("#GrpViewport-" + h).height(i.height());
            a("#GrpViewport-" + h).append("<img class='GrpEffectImg' id='" + k.replace("#", "") + "'/>");
            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("<div id='GrpViewport'></div>");
            a("#GrpViewport").css("overflow", "hidden");
            a("#GrpViewport").width(i.width());
            a("#GrpViewport").height(i.height());
            a("#GrpViewport").append("<div class='GrpEffectDiv' id='" + p.replace("#", "") + "'/>");
            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("<div id='GrpViewport'></div>");
            a("#GrpViewport").css("overflow", "hidden");
            a("#GrpViewport").width(i.width());
            a("#GrpViewport").height(i.height());
            a("#GrpViewport").append("<div class='GrpEffectDiv' id='" + p.replace("#", "") + "'/>");
            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("<div class='GrpEffectDiv1' id='" + o.replace("#", "") + "'/>");
            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("<img class='GrpEffectImg'  id='" + k.replace("#", "") + "'/>");
            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);
                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(c))
        }
    }
})(jQuery);


