/*
 * jquery.tools 1.1.2 - The missing UI library for the Web
 * 
 * [tools.tabs-1.0.4, tools.tabs.slideshow-1.0.2, tools.tabs.history-1.0.2, tools.tooltip-1.1.3, tools.tooltip.slide-1.0.0, tools.tooltip.dynamic-1.0.1, tools.scrollable-1.1.2, tools.scrollable.circular-0.5.1, tools.scrollable.autoscroll-1.0.1, tools.scrollable.navigator-1.0.2, tools.scrollable.mousewheel-1.0.1, tools.overlay-1.1.2, tools.overlay.gallery-1.0.0, tools.overlay.apple-1.0.1, tools.expose-1.0.5, tools.flashembed-1.0.4]
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 * 
 * -----
 * 
 * jquery.event.wheel.js - rev 1 
 * Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
 * Liscensed under the MIT License (MIT-LICENSE.txt)
 * http://www.opensource.org/licenses/mit-license.php
 * Created: 2008-07-01 | Updated: 2008-07-14
 * 
 * -----
 * 
 * File generated: Mon Mar 22 13:07:18 GMT 2010
 */
(function (d) {
    d.tools = d.tools || {};
    d.tools.tabs = {
        version: "1.0.4",
        conf: {
            tabs: "a",
            current: "current",
            onBeforeClick: null,
            onClick: null,
            effect: "default",
            initialIndex: 0,
            event: "click",
            api: false,
            rotate: false
        },
        addEffect: function (e, f) {
            c[e] = f
        }
    };
    var c = {
        "default": function (f, e) {
            this.getPanes().hide().eq(f).show();
            e.call()
        },
        fade: function (g, e) {
            var f = this.getConf(),
                j = f.fadeOutSpeed,
                h = this.getPanes();
            if (j) {
                h.fadeOut(j)
            } else {
                h.hide()
            }
            h.eq(g).fadeIn(f.fadeInSpeed, e)
        },
        slide: function (f, e) {
            this.getPanes().slideUp(200);
            this.getPanes().eq(f).slideDown(400, e)
        },
        ajax: function (f, e) {
            this.getPanes().eq(0).load(this.getTabs().eq(f).attr("href"), e)
        }
    };
    var b;
    d.tools.tabs.addEffect("horizontal", function (f, e) {
        if (!b) {
            b = this.getPanes().eq(0).width()
        }
        this.getCurrentPane().animate({
            width: 0
        }, function () {
            d(this).hide()
        });
        this.getPanes().eq(f).animate({
            width: b
        }, function () {
            d(this).show();
            e.call()
        })
    });

    function a(g, h, f) {
        var e = this,
            j = d(this),
            i;
        d.each(f, function (k, l) {
            if (d.isFunction(l)) {
                j.bind(k, l)
            }
        });
        d.extend(this, {
            click: function (k, n) {
                var o = e.getCurrentPane();
                var l = g.eq(k);
                if (typeof k == "string" && k.replace("#", "")) {
                    l = g.filter("[href*=" + k.replace("#", "") + "]");
                    k = Math.max(g.index(l), 0)
                }
                if (f.rotate) {
                    var m = g.length - 1;
                    if (k < 0) {
                        return e.click(m, n)
                    }
                    if (k > m) {
                        return e.click(0, n)
                    }
                }
                if (!l.length) {
                    if (i >= 0) {
                        return e
                    }
                    k = f.initialIndex;
                    l = g.eq(k)
                }
                if (k === i) {
                    return e
                }
                n = n || d.Event();
                n.type = "onBeforeClick";
                j.trigger(n, [k]);
                if (n.isDefaultPrevented()) {
                    return
                }
                c[f.effect].call(e, k, function () {
                    n.type = "onClick";
                    j.trigger(n, [k])
                });
                n.type = "onStart";
                j.trigger(n, [k]);
                if (n.isDefaultPrevented()) {
                    return
                }
                i = k;
                g.removeClass(f.current);
                l.addClass(f.current);
                return e
            },
            getConf: function () {
                return f
            },
            getTabs: function () {
                return g
            },
            getPanes: function () {
                return h
            },
            getCurrentPane: function () {
                return h.eq(i)
            },
            getCurrentTab: function () {
                return g.eq(i)
            },
            getIndex: function () {
                return i
            },
            next: function () {
                return e.click(i + 1)
            },
            prev: function () {
                return e.click(i - 1)
            },
            bind: function (k, l) {
                j.bind(k, l);
                return e
            },
            onBeforeClick: function (k) {
                return this.bind("onBeforeClick", k)
            },
            onClick: function (k) {
                return this.bind("onClick", k)
            },
            unbind: function (k) {
                j.unbind(k);
                return e
            }
        });
        g.each(function (k) {
            d(this).bind(f.event, function (l) {
                e.click(k, l);
                return false
            })
        });
        if (location.hash) {
            e.click(location.hash)
        } else {
            if (f.initialIndex === 0 || f.initialIndex > 0) {
                e.click(f.initialIndex)
            }
        }
        h.find("a[href^=#]").click(function (k) {
            e.click(d(this).attr("href"), k)
        })
    }
    d.fn.tabs = function (i, f) {
        var g = this.eq(typeof f == "number" ? f : 0).data("tabs");
        if (g) {
            return g
        }
        if (d.isFunction(f)) {
            f = {
                onBeforeClick: f
            }
        }
        var h = d.extend({}, d.tools.tabs.conf),
            e = this.length;
        f = d.extend(h, f);
        this.each(function (l) {
            var j = d(this);
            var k = j.find(f.tabs);
            if (!k.length) {
                k = j.children()
            }
            var m = i.jquery ? i : j.children(i);
            if (!m.length) {
                m = e == 1 ? d(i) : j.parent().find(i)
            }
            g = new a(k, m, f);
            j.data("tabs", g)
        });
        return f.api ? g : this
    }
})(jQuery);
(function (b) {
    var a = b.tools.tabs;
    a.plugins = a.plugins || {};
    a.plugins.slideshow = {
        version: "1.0.2",
        conf: {
            next: ".forward",
            prev: ".backward",
            disabledClass: "disabled",
            autoplay: false,
            autopause: true,
            interval: 3000,
            clickable: true,
            api: false
        }
    };
    b.prototype.slideshow = function (e) {
        var f = b.extend({}, a.plugins.slideshow.conf),
            c = this.length,
            d;
        e = b.extend(f, e);
        this.each(function () {
            var p = b(this),
                m = p.tabs(),
                i = b(m),
                o = m;
            b.each(e, function (t, u) {
                if (b.isFunction(u)) {
                    m.bind(t, u)
                }
            });

            function n(t) {
                return c == 1 ? b(t) : p.parent().find(t)
            }
            var s = n(e.next).click(function () {
                m.next()
            });
            var q = n(e.prev).click(function () {
                m.prev()
            });
            var h, j, l, g = false;
            b.extend(m, {
                play: function () {
                    if (h) {
                        return
                    }
                    var t = b.Event("onBeforePlay");
                    i.trigger(t);
                    if (t.isDefaultPrevented()) {
                        return m
                    }
                    g = false;
                    h = setInterval(m.next, e.interval);
                    i.trigger("onPlay");
                    m.next()
                },
                pause: function () {
                    if (!h) {
                        return m
                    }
                    var t = b.Event("onBeforePause");
                    i.trigger(t);
                    if (t.isDefaultPrevented()) {
                        return m
                    }
                    h = clearInterval(h);
                    l = clearInterval(l);
                    i.trigger("onPause")
                },
                stop: function () {
                    m.pause();
                    g = true
                },
                onBeforePlay: function (t) {
                    return m.bind("onBeforePlay", t)
                },
                onPlay: function (t) {
                    return m.bind("onPlay", t)
                },
                onBeforePause: function (t) {
                    return m.bind("onBeforePause", t)
                },
                onPause: function (t) {
                    return m.bind("onPause", t)
                }
            });
            if (e.autopause) {
                var k = m.getTabs().add(s).add(q).add(m.getPanes());
                k.hover(function () {
                    m.pause();
                    j = clearInterval(j)
                }, function () {
                    if (!g) {
                        j = setTimeout(m.play, e.interval)
                    }
                })
            }
            if (e.autoplay) {
                l = setTimeout(m.play, e.interval)
            } else {
                m.stop()
            }
            if (e.clickable) {
                m.getPanes().click(function () {
                    m.next()
                })
            }
            if (!m.getConf().rotate) {
                var r = e.disabledClass;
                if (!m.getIndex()) {
                    q.addClass(r)
                }
                m.onBeforeClick(function (u, t) {
                    if (!t) {
                        q.addClass(r)
                    } else {
                        q.removeClass(r);
                        if (t == m.getTabs().length - 1) {
                            s.addClass(r)
                        } else {
                            s.removeClass(r)
                        }
                    }
                })
            }
        });
        return e.api ? d : this
    }
})(jQuery);
(function (d) {
    var a = d.tools.tabs;
    a.plugins = a.plugins || {};
    a.plugins.history = {
        version: "1.0.2",
        conf: {
            api: false
        }
    };
    var e, b;

    function c(f) {
        if (f) {
            var g = b.contentWindow.document;
            g.open().close();
            g.location.hash = f
        }
    }
    d.fn.onHash = function (g) {
        var f = this;
        if (d.browser.msie && d.browser.version < "8") {
            if (!b) {
                b = d("<iframe/>").attr("src", "javascript:false;").hide().get(0);
                d("body").append(b);
                setInterval(function () {
                    var i = b.contentWindow.document,
                        j = i.location.hash;
                    if (e !== j) {
                        d.event.trigger("hash", j);
                        e = j
                    }
                }, 100);
                c(location.hash || "#")
            }
            f.bind("click.hash", function (h) {
                c(d(this).attr("href"))
            })
        } else {
            setInterval(function () {
                var j = location.hash;
                var i = f.filter("[href$=" + j + "]");
                if (!i.length) {
                    j = j.replace("#", "");
                    i = f.filter("[href$=" + j + "]")
                }
                if (i.length && j !== e) {
                    e = j;
                    d.event.trigger("hash", j)
                }
            }, 100)
        }
        d(window).bind("hash", g);
        return this
    };
    d.fn.history = function (g) {
        var h = d.extend({}, a.plugins.history.conf),
            f;
        g = d.extend(h, g);
        this.each(function () {
            var j = d(this).tabs(),
                i = j.getTabs();
            if (j) {
                f = j
            }
            i.onHash(function (k, l) {
                if (!l || l == "#") {
                    l = j.getConf().initialIndex
                }
                j.click(l)
            });
            i.click(function (k) {
                location.hash = d(this).attr("href").replace("#", "")
            })
        });
        return g.api ? f : this
    }
})(jQuery);
(function (c) {
    var d = [];
    c.tools = c.tools || {};
    c.tools.tooltip = {
        version: "1.1.3",
        conf: {
            effect: "toggle",
            fadeOutSpeed: "fast",
            tip: null,
            predelay: 0,
            delay: 30,
            opacity: 1,
            lazy: undefined,
            position: ["top", "center"],
            offset: [0, 0],
            cancelDefault: true,
            relative: false,
            oneInstance: true,
            events: {
                def: "mouseover,mouseout",
                input: "focus,blur",
                widget: "focus mouseover,blur mouseout",
                tooltip: "mouseover,mouseout"
            },
            api: false
        },
        addEffect: function (e, g, f) {
            b[e] = [g, f]
        }
    };
    var b = {
        toggle: [function (e) {
            var f = this.getConf(),
                g = this.getTip(),
                h = f.opacity;
            if (h < 1) {
                g.css({
                    opacity: h
                })
            }
            g.show();
            e.call()
        }, function (e) {
            this.getTip().hide();
            e.call()
        }],
        fade: [function (e) {
            this.getTip().fadeIn(this.getConf().fadeInSpeed, e)
        }, function (e) {
            this.getTip().fadeOut(this.getConf().fadeOutSpeed, e)
        }]
    };

    function a(f, g) {
        var p = this,
            k = c(this);
        f.data("tooltip", p);
        var l = f.next();
        if (g.tip) {
            l = c(g.tip);
            if (l.length > 1) {
                l = f.nextAll(g.tip).eq(0);
                if (!l.length) {
                    l = f.parent().nextAll(g.tip).eq(0)
                }
            }
        }
        function o(u) {
            var t = g.relative ? f.position().top : f.offset().top,
                s = g.relative ? f.position().left : f.offset().left,
                v = g.position[0];
            t -= l.outerHeight() - g.offset[0];
            s += f.outerWidth() + g.offset[1];
            var q = l.outerHeight() + f.outerHeight();
            if (v == "center") {
                t += q / 2
            }
            if (v == "bottom") {
                t += q
            }
            v = g.position[1];
            var r = l.outerWidth() + f.outerWidth();
            if (v == "center") {
                s -= r / 2
            }
            if (v == "left") {
                s -= r
            }
            return {
                top: t,
                left: s
            }
        }
        var i = f.is(":input"),
            e = i && f.is(":checkbox, :radio, select, :button"),
            h = f.attr("type"),
            n = g.events[h] || g.events[i ? (e ? "widget" : "input") : "def"];
        n = n.split(/,\s*/);
        if (n.length != 2) {
            throw "Tooltip: bad events configuration for " + h
        }
        f.bind(n[0], function (r) {
            if (g.oneInstance) {
                c.each(d, function () {
                    this.hide()
                })
            }
            var q = l.data("trigger");
            if (q && q[0] != this) {
                l.hide().stop(true, true)
            }
            r.target = this;
            p.show(r);
            n = g.events.tooltip.split(/,\s*/);
            l.bind(n[0], function () {
                p.show(r)
            });
            if (n[1]) {
                l.bind(n[1], function () {
                    p.hide(r)
                })
            }
        });
        f.bind(n[1], function (q) {
            p.hide(q)
        });
        if (!c.browser.msie && !i && !g.predelay) {
            f.mousemove(function () {
                if (!p.isShown()) {
                    f.triggerHandler("mouseover")
                }
            })
        }
        if (g.opacity < 1) {
            l.css("opacity", g.opacity)
        }
        var m = 0,
            j = f.attr("title");
        if (j && g.cancelDefault) {
            f.removeAttr("title");
            f.data("title", j)
        }
        c.extend(p, {
            show: function (r) {
                if (r) {
                    f = c(r.target)
                }
                clearTimeout(l.data("timer"));
                if (l.is(":animated") || l.is(":visible")) {
                    return p
                }
                function q() {
                    l.data("trigger", f);
                    var t = o(r);
                    if (g.tip && j) {
                        l.html(f.data("title"))
                    }
                    r = r || c.Event();
                    r.type = "onBeforeShow";
                    k.trigger(r, [t]);
                    if (r.isDefaultPrevented()) {
                        return p
                    }
                    t = o(r);
                    l.css({
                        position: "absolute",
                        top: t.top,
                        left: t.left
                    });
                    var s = b[g.effect];
                    if (!s) {
                        throw 'Nonexistent effect "' + g.effect + '"'
                    }
                    s[0].call(p, function () {
                        r.type = "onShow";
                        k.trigger(r)
                    })
                }
                if (g.predelay) {
                    clearTimeout(m);
                    m = setTimeout(q, g.predelay)
                } else {
                    q()
                }
                return p
            },
            hide: function (r) {
                clearTimeout(l.data("timer"));
                clearTimeout(m);
                if (!l.is(":visible")) {
                    return
                }
                function q() {
                    r = r || c.Event();
                    r.type = "onBeforeHide";
                    k.trigger(r);
                    if (r.isDefaultPrevented()) {
                        return
                    }
                    b[g.effect][1].call(p, function () {
                        r.type = "onHide";
                        k.trigger(r)
                    })
                }
                if (g.delay && r) {
                    l.data("timer", setTimeout(q, g.delay))
                } else {
                    q()
                }
                return p
            },
            isShown: function () {
                return l.is(":visible, :animated")
            },
            getConf: function () {
                return g
            },
            getTip: function () {
                return l
            },
            getTrigger: function () {
                return f
            },
            bind: function (q, r) {
                k.bind(q, r);
                return p
            },
            onHide: function (q) {
                return this.bind("onHide", q)
            },
            onBeforeShow: function (q) {
                return this.bind("onBeforeShow", q)
            },
            onShow: function (q) {
                return this.bind("onShow", q)
            },
            onBeforeHide: function (q) {
                return this.bind("onBeforeHide", q)
            },
            unbind: function (q) {
                k.unbind(q);
                return p
            }
        });
        c.each(g, function (q, r) {
            if (c.isFunction(r)) {
                p.bind(q, r)
            }
        })
    }
    c.prototype.tooltip = function (e) {
        var f = this.eq(typeof e == "number" ? e : 0).data("tooltip");
        if (f) {
            return f
        }
        var g = c.extend(true, {}, c.tools.tooltip.conf);
        if (c.isFunction(e)) {
            e = {
                onBeforeShow: e
            }
        } else {
            if (typeof e == "string") {
                e = {
                    tip: e
                }
            }
        }
        e = c.extend(true, g, e);
        if (typeof e.position == "string") {
            e.position = e.position.split(/,?\s/)
        }
        if (e.lazy !== false && (e.lazy === true || this.length > 20)) {
            this.one("mouseover", function (h) {
                f = new a(c(this), e);
                f.show(h);
                d.push(f)
            })
        } else {
            this.each(function () {
                f = new a(c(this), e);
                d.push(f)
            })
        }
        return e.api ? f : this
    }
})(jQuery);
(function (b) {
    var a = b.tools.tooltip;
    a.effects = a.effects || {};
    a.effects.slide = {
        version: "1.0.0"
    };
    b.extend(a.conf, {
        direction: "up",
        bounce: false,
        slideOffset: 10,
        slideInSpeed: 200,
        slideOutSpeed: 200,
        slideFade: !b.browser.msie
    });
    var c = {
        up: ["-", "top"],
        down: ["+", "top"],
        left: ["-", "left"],
        right: ["+", "left"]
    };
    b.tools.tooltip.addEffect("slide", function (d) {
        var f = this.getConf(),
            g = this.getTip(),
            h = f.slideFade ? {
                opacity: f.opacity
            } : {},
            e = c[f.direction] || c.up;
        h[e[1]] = e[0] + "=" + f.slideOffset;
        if (f.slideFade) {
            g.css({
                opacity: 0
            })
        }
        g.show().animate(h, f.slideInSpeed, d)
    }, function (e) {
        var g = this.getConf(),
            i = g.slideOffset,
            h = g.slideFade ? {
                opacity: 0
            } : {},
            f = c[g.direction] || c.up;
        var d = "" + f[0];
        if (g.bounce) {
            d = d == "+" ? "-" : "+"
        }
        h[f[1]] = d + "=" + i;
        this.getTip().animate(h, g.slideOutSpeed, function () {
            b(this).hide();
            e.call()
        })
    })
})(jQuery);
(function (d) {
    var c = d.tools.tooltip;
    c.plugins = c.plugins || {};
    c.plugins.dynamic = {
        version: "1.0.1",
        conf: {
            api: false,
            classNames: "top right bottom left"
        }
    };

    function b(h) {
        var e = d(window);
        var g = e.width() + e.scrollLeft();
        var f = e.height() + e.scrollTop();
        return [h.offset().top <= e.scrollTop(), g <= h.offset().left + h.width(), f <= h.offset().top + h.height(), e.scrollLeft() >= h.offset().left]
    }
    function a(f) {
        var e = f.length;
        while (e--) {
            if (f[e]) {
                return false
            }
        }
        return true
    }
    d.fn.dynamic = function (g) {
        var h = d.extend({}, c.plugins.dynamic.conf),
            f;
        if (typeof g == "number") {
            g = {
                speed: g
            }
        }
        g = d.extend(h, g);
        var e = g.classNames.split(/\s/),
            i;
        this.each(function () {
            if (d(this).tooltip().jquery) {
                throw "Lazy feature not supported by dynamic plugin. set lazy: false for tooltip"
            }
            var j = d(this).tooltip().onBeforeShow(function (n, o) {
                var m = this.getTip(),
                    l = this.getConf();
                if (!i) {
                    i = [l.position[0], l.position[1], l.offset[0], l.offset[1], d.extend({}, l)]
                }
                d.extend(l, i[4]);
                l.position = [i[0], i[1]];
                l.offset = [i[2], i[3]];
                m.css({
                    visibility: "hidden",
                    position: "absolute",
                    top: o.top,
                    left: o.left
                }).show();
                var k = b(m);
                if (!a(k)) {
                    if (k[2]) {
                        d.extend(l, g.top);
                        l.position[0] = "top";
                        m.addClass(e[0])
                    }
                    if (k[3]) {
                        d.extend(l, g.right);
                        l.position[1] = "right";
                        m.addClass(e[1])
                    }
                    if (k[0]) {
                        d.extend(l, g.bottom);
                        l.position[0] = "bottom";
                        m.addClass(e[2])
                    }
                    if (k[1]) {
                        d.extend(l, g.left);
                        l.position[1] = "left";
                        m.addClass(e[3])
                    }
                    if (k[0] || k[2]) {
                        l.offset[0] *= -1
                    }
                    if (k[1] || k[3]) {
                        l.offset[1] *= -1
                    }
                }
                m.css({
                    visibility: "visible"
                }).hide()
            });
            j.onShow(function () {
                var l = this.getConf(),
                    k = this.getTip();
                l.position = [i[0], i[1]];
                l.offset = [i[2], i[3]]
            });
            j.onHide(function () {
                var k = this.getTip();
                k.removeClass(g.classNames)
            });
            f = j
        });
        return g.api ? f : this
    }
})(jQuery);
(function (b) {
    b.tools = b.tools || {};
    b.tools.scrollable = {
        version: "1.1.2",
        conf: {
            size: 5,
            vertical: false,
            speed: 400,
            keyboard: true,
            keyboardSteps: null,
            disabledClass: "disabled",
            hoverClass: null,
            clickable: true,
            activeClass: "active",
            easing: "swing",
            loop: false,
            items: ".items",
            item: null,
            prev: ".prev",
            next: ".next",
            prevPage: ".prevPage",
            nextPage: ".nextPage",
            api: false
        }
    };
    var c;

    function a(o, m) {
        var r = this,
            p = b(this),
            d = !m.vertical,
            e = o.children(),
            k = 0,
            i;
        if (!c) {
            c = r
        }
        b.each(m, function (s, t) {
            if (b.isFunction(t)) {
                p.bind(s, t)
            }
        });
        if (e.length > 1) {
            e = b(m.items, o)
        }
        function l(t) {
            var s = b(t);
            return m.globalNav ? s : o.parent().find(t)
        }
        o.data("finder", l);
        var f = l(m.prev),
            h = l(m.next),
            g = l(m.prevPage),
            n = l(m.nextPage);
        b.extend(r, {
            getIndex: function () {
                return k
            },
            getClickIndex: function () {
                var s = r.getItems();
                return s.index(s.filter("." + m.activeClass))
            },
            getConf: function () {
                return m
            },
            getSize: function () {
                return r.getItems().size()
            },
            getPageAmount: function () {
                return Math.ceil(this.getSize() / m.size)
            },
            getPageIndex: function () {
                return Math.ceil(k / m.size)
            },
            getNaviButtons: function () {
                return f.add(h).add(g).add(n)
            },
            getRoot: function () {
                return o
            },
            getItemWrap: function () {
                return e
            },
            getItems: function () {
                return e.children(m.item)
            },
            getVisibleItems: function () {
                return r.getItems().slice(k, k + m.size)
            },
            seekTo: function (s, w, t) {
                if (s < 0) {
                    s = 0
                }
                if (k === s) {
                    return r
                }
                if (b.isFunction(w)) {
                    t = w
                }
                if (s > r.getSize() - m.size) {
                    return m.loop ? r.begin() : this.end()
                }
                var u = r.getItems().eq(s);
                if (!u.length) {
                    return r
                }
                var v = b.Event("onBeforeSeek");
                p.trigger(v, [s]);
                if (v.isDefaultPrevented()) {
                    return r
                }
                if (w === undefined || b.isFunction(w)) {
                    w = m.speed
                }
                function x() {
                    if (t) {
                        t.call(r, s)
                    }
                    p.trigger("onSeek", [s])
                }
                if (d) {
                    e.animate({
                        left: -u.position().left
                    }, w, m.easing, x)
                } else {
                    e.animate({
                        top: -u.position().top
                    }, w, m.easing, x)
                }
                c = r;
                k = s;
                v = b.Event("onStart");
                p.trigger(v, [s]);
                if (v.isDefaultPrevented()) {
                    return r
                }
                f.add(g).toggleClass(m.disabledClass, s === 0);
                h.add(n).toggleClass(m.disabledClass, s >= r.getSize() - m.size);
                return r
            },
            move: function (u, t, s) {
                i = u > 0;
                return this.seekTo(k + u, t, s)
            },
            next: function (t, s) {
                return this.move(1, t, s)
            },
            prev: function (t, s) {
                return this.move(-1, t, s)
            },
            movePage: function (w, v, u) {
                i = w > 0;
                var s = m.size * w;
                var t = k % m.size;
                if (t > 0) {
                    s += (w > 0 ? -t : m.size - t)
                }
                return this.move(s, v, u)
            },
            prevPage: function (t, s) {
                return this.movePage(-1, t, s)
            },
            nextPage: function (t, s) {
                return this.movePage(1, t, s)
            },
            setPage: function (t, u, s) {
                return this.seekTo(t * m.size, u, s)
            },
            begin: function (t, s) {
                i = false;
                return this.seekTo(0, t, s)
            },
            end: function (t, s) {
                i = true;
                var u = this.getSize() - m.size;
                return u > 0 ? this.seekTo(u, t, s) : r
            },
            reload: function () {
                p.trigger("onReload");
                return r
            },
            focus: function () {
                c = r;
                return r
            },
            click: function (u) {
                var v = r.getItems().eq(u),
                    s = m.activeClass,
                    t = m.size;
                if (u < 0 || u >= r.getSize()) {
                    return r
                }
                if (t == 1) {
                    if (m.loop) {
                        return r.next()
                    }
                    if (u === 0 || u == r.getSize() - 1) {
                        i = (i === undefined) ? true : !i
                    }
                    return i === false ? r.prev() : r.next()
                }
                if (t == 2) {
                    if (u == k) {
                        u--
                    }
                    r.getItems().removeClass(s);
                    v.addClass(s);
                    return r.seekTo(u, time, fn)
                }
                if (!v.hasClass(s)) {
                    r.getItems().removeClass(s);
                    v.addClass(s);
                    var x = Math.floor(t / 2);
                    var w = u - x;
                    if (w > r.getSize() - t) {
                        w = r.getSize() - t
                    }
                    if (w !== u) {
                        return r.seekTo(w)
                    }
                }
                return r
            },
            bind: function (s, t) {
                p.bind(s, t);
                return r
            },
            unbind: function (s) {
                p.unbind(s);
                return r
            }
        });
        b.each("onBeforeSeek,onStart,onSeek,onReload".split(","), function (s, t) {
            r[t] = function (u) {
                return r.bind(t, u)
            }
        });
        f.addClass(m.disabledClass).click(function () {
            r.prev()
        });
        h.click(function () {
            r.next()
        });
        n.click(function () {
            r.nextPage()
        });
        if (r.getSize() < m.size) {
            h.add(n).addClass(m.disabledClass)
        }
        g.addClass(m.disabledClass).click(function () {
            r.prevPage()
        });
        var j = m.hoverClass,
            q = "keydown." + Math.random().toString().substring(10);
        r.onReload(function () {
            if (j) {
                r.getItems().hover(function () {
                    b(this).addClass(j)
                }, function () {
                    b(this).removeClass(j)
                })
            }
            if (m.clickable) {
                r.getItems().each(function (s) {
                    b(this).unbind("click.scrollable").bind("click.scrollable", function (t) {
                        if (b(t.target).is("a")) {
                            return
                        }
                        return r.click(s)
                    })
                })
            }
            if (m.keyboard) {
                b(document).unbind(q).bind(q, function (t) {
                    if (t.altKey || t.ctrlKey) {
                        return
                    }
                    if (m.keyboard != "static" && c != r) {
                        return
                    }
                    var u = m.keyboardSteps;
                    if (d && (t.keyCode == 37 || t.keyCode == 39)) {
                         if ($("textarea:focus, input:focus").length == 0) { 
                        	r.move(t.keyCode == 37 ? -u : u); 
                        	return t.preventDefault();
                        }
                    }
                    if (!d && (t.keyCode == 38 || t.keyCode == 40)) {
                        r.move(t.keyCode == 38 ? -u : u);
                        return t.preventDefault()
                    }
                    return true
                })
            } else {
                b(document).unbind(q)
            }
        });
        r.reload()
    }
    b.fn.scrollable = function (d) {
        var e = this.eq(typeof d == "number" ? d : 0).data("scrollable");
        if (e) {
            return e
        }
        var f = b.extend({}, b.tools.scrollable.conf);
        d = b.extend(f, d);
        d.keyboardSteps = d.keyboardSteps || d.size;
        this.each(function () {
            e = new a(b(this), d);
            b(this).data("scrollable", e)
        });
        return d.api ? e : this
    }
})(jQuery);
(function (b) {
    var a = b.tools.scrollable;
    a.plugins = a.plugins || {};
    a.plugins.circular = {
        version: "0.5.1",
        conf: {
            api: false,
            clonedClass: "cloned"
        }
    };
    b.fn.circular = function (e) {
        var d = b.extend({}, a.plugins.circular.conf),
            c;
        b.extend(d, e);
        this.each(function () {
            var i = b(this).scrollable(),
                n = i.getItems(),
                k = i.getConf(),
                f = i.getItemWrap(),
                j = 0;
            if (i) {
                c = i
            }
            if (n.length < k.size) {
                return false
            }
            n.slice(0, k.size).each(function (o) {
                b(this).clone().appendTo(f).click(function () {
                    i.click(n.length + o)
                }).addClass(d.clonedClass)
            });
            var l = b.makeArray(n.slice(-k.size)).reverse();
            b(l).each(function (o) {
                b(this).clone().prependTo(f).click(function () {
                    i.click(-o - 1)
                }).addClass(d.clonedClass)
            });
            var m = f.children(k.item);
            var h = k.hoverClass;
            if (h) {
                m.hover(function () {
                    b(this).addClass(h)
                }, function () {
                    b(this).removeClass(h)
                })
            }
            function g(o) {
                var p = m.eq(o);
                if (k.vertical) {
                    f.css({
                        top: -p.position().top
                    })
                } else {
                    f.css({
                        left: -p.position().left
                    })
                }
            }
            g(k.size);
            b.extend(i, {
                move: function (s, r, p, q) {
                    var u = j + s + k.size;
                    var t = u > i.getSize() - k.size;
                    if (u <= 0 || t) {
                        var o = j + k.size + (t ? -n.length : n.length);
                        g(o);
                        u = o + s
                    }
                    if (q) {
                        m.removeClass(k.activeClass).eq(u + Math.floor(k.size / 2)).addClass(k.activeClass)
                    }
                    if (u === j + k.size) {
                        return self
                    }
                    return i.seekTo(u, r, p)
                },
                begin: function (p, o) {
                    return this.seekTo(k.size, p, o)
                },
                end: function (p, o) {
                    return this.seekTo(n.length, p, o)
                },
                click: function (p, r, q) {
                    if (!k.clickable) {
                        return self
                    }
                    if (k.size == 1) {
                        return this.next()
                    }
                    var s = p - j,
                        o = k.activeClass;
                    s -= Math.floor(k.size / 2);
                    return this.move(s, r, q, true)
                },
                getIndex: function () {
                    return j
                },
                setPage: function (p, q, o) {
                    return this.seekTo(p * k.size + k.size, q, o)
                },
                getPageAmount: function () {
                    return Math.ceil(n.length / k.size)
                },
                getPageIndex: function () {
                    if (j < 0) {
                        return this.getPageAmount() - 1
                    }
                    if (j >= n.length) {
                        return 0
                    }
                    var o = (j + k.size) / k.size - 1;
                    return o
                },
                getVisibleItems: function () {
                    var o = j + k.size;
                    return m.slice(o, o + k.size)
                }
            });
            i.onStart(function (p, o) {
                j = o - k.size;
                return false
            });
            i.getNaviButtons().removeClass(k.disabledClass)
        });
        return d.api ? c : this
    }
})(jQuery);
(function (b) {
    var a = b.tools.scrollable;
    a.plugins = a.plugins || {};
    a.plugins.autoscroll = {
        version: "1.0.1",
        conf: {
            autoplay: true,
            interval: 3000,
            autopause: true,
            steps: 1,
            api: false
        }
    };
    b.fn.autoscroll = function (d) {
        if (typeof d == "number") {
            d = {
                interval: d
            }
        }
        var e = b.extend({}, a.plugins.autoscroll.conf),
            c;
        b.extend(e, d);
        this.each(function () {
            var g = b(this).scrollable();
            if (g) {
                c = g
            }
            var i, f, h = true;
            g.play = function () {
                if (i) {
                    return
                }
                h = false;
                i = setInterval(function () {
                    g.move(e.steps)
                }, e.interval);
                g.move(e.steps)
            };
            g.pause = function () {
                i = clearInterval(i)
            };
            g.stop = function () {
                g.pause();
                h = true
            };
            if (e.autopause) {
                g.getRoot().add(g.getNaviButtons()).hover(function () {
                    g.pause();
                    clearInterval(f)
                }, function () {
                    if (!h) {
                        f = setTimeout(g.play, e.interval)
                    }
                })
            }
            if (e.autoplay) {
                setTimeout(g.play, e.interval)
            }
        });
        return e.api ? c : this
    }
})(jQuery);
(function (b) {
    var a = b.tools.scrollable;
    a.plugins = a.plugins || {};
    a.plugins.navigator = {
        version: "1.0.2",
        conf: {
            navi: ".navi",
            naviItem: null,
            activeClass: "active",
            indexed: false,
            api: false,
            idPrefix: null
        }
    };
    b.fn.navigator = function (d) {
        var e = b.extend({}, a.plugins.navigator.conf),
            c;
        if (typeof d == "string") {
            d = {
                navi: d
            }
        }
        d = b.extend(e, d);
        this.each(function () {
            var i = b(this).scrollable(),
                f = i.getRoot(),
                l = f.data("finder").call(null, d.navi),
                g = null,
                k = i.getNaviButtons();
            if (i) {
                c = i
            }
            i.getNaviButtons = function () {
                return k.add(l)
            };

            function j() {
                if (!l.children().length || l.data("navi") == i) {
                    l.empty();
                    l.data("navi", i);
                    for (var m = 0; m < i.getPageAmount(); m++) {
                        l.append(b("<" + (d.naviItem || "a") + "/>"))
                    }
                    g = l.children().each(function (n) {
                        var o = b(this);
                        o.click(function (p) {
                            i.setPage(n);
                            return p.preventDefault()
                        });
                        if (d.indexed) {
                            o.text(n + 1)
                        }
                        if (d.idPrefix) {
                            o.attr("id", d.idPrefix + n)
                        }
                    })
                } else {
                    g = d.naviItem ? l.find(d.naviItem) : l.children();
                    g.each(function (n) {
                        var o = b(this);
                        o.click(function (p) {
                            i.setPage(n);
                            return p.preventDefault()
                        })
                    })
                }
                g.eq(0).addClass(d.activeClass)
            }
            i.onStart(function (o, n) {
                var m = d.activeClass;
                g.removeClass(m).eq(i.getPageIndex()).addClass(m)
            });
            i.onReload(function () {
                j()
            });
            j();
            var h = g.filter("[href=" + location.hash + "]");
            if (h.length) {
                i.move(g.index(h))
            }
        });
        return d.api ? c : this
    }
})(jQuery);
(function (b) {
    b.fn.wheel = function (e) {
        return this[e ? "bind" : "trigger"]("wheel", e)
    };
    b.event.special.wheel = {
        setup: function () {
            b.event.add(this, d, c, {})
        },
        teardown: function () {
            b.event.remove(this, d, c)
        }
    };
    var d = !b.browser.mozilla ? "mousewheel" : "DOMMouseScroll" + (b.browser.version < "1.9" ? " mousemove" : "");

    function c(e) {
        switch (e.type) {
        case "mousemove":
            return b.extend(e.data, {
                clientX: e.clientX,
                clientY: e.clientY,
                pageX: e.pageX,
                pageY: e.pageY
            });
        case "DOMMouseScroll":
            b.extend(e, e.data);
            e.delta = -e.detail / 3;
            break;
        case "mousewheel":
            e.delta = e.wheelDelta / 120;
            break
        }
        e.type = "wheel";
        return b.event.handle.call(this, e, e.delta)
    }
    var a = b.tools.scrollable;
    a.plugins = a.plugins || {};
    a.plugins.mousewheel = {
        version: "1.0.1",
        conf: {
            api: false,
            speed: 50
        }
    };
    b.fn.mousewheel = function (f) {
        var g = b.extend({}, a.plugins.mousewheel.conf),
            e;
        if (typeof f == "number") {
            f = {
                speed: f
            }
        }
        f = b.extend(g, f);
        this.each(function () {
            var h = b(this).scrollable();
            if (h) {
                e = h
            }
            h.getRoot().wheel(function (i, j) {
                h.move(j < 0 ? 1 : -1, f.speed || 50);
                return false
            })
        });
        return f.api ? e : this
    }
})(jQuery);
(function (c) {
    c.tools = c.tools || {};
    c.tools.overlay = {
        version: "1.1.2",
        addEffect: function (e, f, g) {
            b[e] = [f, g]
        },
        conf: {
            top: "10%",
            left: "center",
            absolute: false,
            speed: "normal",
            closeSpeed: "fast",
            effect: "default",
            close: null,
            oneInstance: true,
            closeOnClick: true,
            closeOnEsc: true,
            api: false,
            expose: null,
            target: null
        }
    };
    var b = {};
    c.tools.overlay.addEffect("default", function (e) {
        this.getOverlay().fadeIn(this.getConf().speed, e)
    }, function (e) {
        this.getOverlay().fadeOut(this.getConf().closeSpeed, e)
    });
    var d = [];

    function a(g, k) {
        var o = this,
            m = c(this),
            n = c(window),
            j, i, h, e = k.expose && c.tools.expose.version;
        var f = k.target || g.attr("rel");
        i = f ? c(f) : null || g;
        if (!i.length) {
            throw "Could not find Overlay: " + f
        }
        if (g && g.index(i) == -1) {
            g.click(function (p) {
                o.load(p);
                return p.preventDefault()
            })
        }
        c.each(k, function (p, q) {
            if (c.isFunction(q)) {
                m.bind(p, q)
            }
        });
        c.extend(o, {
            load: function (u) {
                if (o.isOpened()) {
                    return o
                }
                var r = b[k.effect];
                if (!r) {
                    throw 'Overlay: cannot find effect : "' + k.effect + '"'
                }
                if (k.oneInstance) {
                    c.each(d, function () {
                        this.close(u)
                    })
                }
                u = u || c.Event();
                u.type = "onBeforeLoad";
                m.trigger(u);
                if (u.isDefaultPrevented()) {
                    return o
                }
                h = true;
                if (e) {
                    i.expose().load(u)
                }
                var t = k.top;
                var s = k.left;
                var p = i.outerWidth({
                    margin: true
                });
                var q = i.outerHeight({
                    margin: true
                });
                if (typeof t == "string") {
                    t = t == "center" ? Math.max((n.height() - q) / 2, 0) : parseInt(t, 10) / 100 * n.height()
                }
                if (s == "center") {
                    s = Math.max((n.width() - p) / 2, 0)
                }
                if (!k.absolute) {
                    t += n.scrollTop();
                    s += n.scrollLeft()
                }
                i.css({
                    top: t,
                    left: s,
                    position: "absolute"
                });
                u.type = "onStart";
                m.trigger(u);
                r[0].call(o, function () {
                    if (h) {
                        u.type = "onLoad";
                        m.trigger(u)
                    }
                });
                if (k.closeOnClick) {
                    c(document).bind("click.overlay", function (w) {
                        if (!o.isOpened()) {
                            return
                        }
                        var v = c(w.target);
                        if (v.parents(i).length > 1) {
                            return
                        }
                        c.each(d, function () {
                            this.close(w)
                        })
                    })
                }
                if (k.closeOnEsc) {
                    c(document).unbind("keydown.overlay").bind("keydown.overlay", function (v) {
                        if (v.keyCode == 27) {
                            c.each(d, function () {
                                this.close(v)
                            })
                        }
                    })
                }
                return o
            },
            close: function (q) {
                if (!o.isOpened()) {
                    return o
                }
                q = q || c.Event();
                q.type = "onBeforeClose";
                m.trigger(q);
                if (q.isDefaultPrevented()) {
                    return
                }
                h = false;
                b[k.effect][1].call(o, function () {
                    q.type = "onClose";
                    m.trigger(q)
                });
                var p = true;
                c.each(d, function () {
                    if (this.isOpened()) {
                        p = false
                    }
                });
                if (p) {
                    c(document).unbind("click.overlay").unbind("keydown.overlay")
                }
                return o
            },
            getContent: function () {
                return i
            },
            getOverlay: function () {
                return i
            },
            getTrigger: function () {
                return g
            },
            getClosers: function () {
                return j
            },
            isOpened: function () {
                return h
            },
            getConf: function () {
                return k
            },
            bind: function (p, q) {
                m.bind(p, q);
                return o
            },
            unbind: function (p) {
                m.unbind(p);
                return o
            }
        });
        c.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","), function (p, q) {
            o[q] = function (r) {
                return o.bind(q, r)
            }
        });
        if (e) {
            if (typeof k.expose == "string") {
                k.expose = {
                    color: k.expose
                }
            }
            c.extend(k.expose, {
                api: true,
                closeOnClick: k.closeOnClick,
                closeOnEsc: false
            });
            var l = i.expose(k.expose);
            l.onBeforeClose(function (p) {
                o.close(p)
            });
            o.onClose(function (p) {
                l.close(p)
            })
        }
        j = i.find(k.close || ".close");
        if (!j.length && !k.close) {
            j = c('<div class="close"></div>');
            i.prepend(j)
        }
        j.click(function (p) {
            o.close(p)
        })
    }
    c.fn.overlay = function (e) {
        var f = this.eq(typeof e == "number" ? e : 0).data("overlay");
        if (f) {
            return f
        }
        if (c.isFunction(e)) {
            e = {
                onBeforeLoad: e
            }
        }
        var g = c.extend({}, c.tools.overlay.conf);
        e = c.extend(true, g, e);
        this.each(function () {
            f = new a(c(this), e);
            d.push(f);
            c(this).data("overlay", f)
        });
        return e.api ? f : this
    }
})(jQuery);
(function (b) {
    var a = b.tools.overlay;
    a.plugins = a.plugins || {};
    a.plugins.gallery = {
        version: "1.0.0",
        conf: {
            imgId: "img",
            next: ".next",
            prev: ".prev",
            info: ".info",
            progress: ".progress",
            disabledClass: "disabled",
            activeClass: "active",
            opacity: 0.8,
            speed: "slow",
            template: "<strong>${title}</strong> <span>Image ${index} of ${total}</span>",
            autohide: true,
            preload: true,
            api: false
        }
    };
    b.fn.gallery = function (d) {
        var o = b.extend({}, a.plugins.gallery.conf),
            m;
        b.extend(o, d);
        m = this.overlay();
        var r = this,
            j = m.getOverlay(),
            k = j.find(o.next),
            g = j.find(o.prev),
            e = j.find(o.info),
            c = j.find(o.progress),
            h = g.add(k).add(e).css({
                opacity: o.opacity
            }),
            s = m.getClosers(),
            l;

        function p(u) {
            c.fadeIn();
            h.hide();
            s.hide();
            var t = u.attr("href");
            var v = new Image();
            v.onload = function () {
                c.fadeOut();
                var y = b("#" + o.imgId, j);
                if (!y.length) {
                    y = b("<img/>").attr("id", o.imgId).css("visibility", "hidden");
                    j.prepend(y)
                }
                y.attr("src", t).css("visibility", "hidden");
                var z = v.width;
                var A = (b(window).width() - z) / 2;
                l = r.index(r.filter("[href=" + t + "]"));
                r.removeClass(o.activeClass).eq(l).addClass(o.activeClass);
                var w = o.disabledClass;
                h.removeClass(w);
                if (l === 0) {
                    g.addClass(w)
                }
                if (l == r.length - 1) {
                    k.addClass(w)
                }
                var B = o.template.replace("${title}", u.attr("title") || u.data("title")).replace("${index}", l + 1).replace("${total}", r.length);
                var x = parseInt(e.css("paddingLeft"), 10) + parseInt(e.css("paddingRight"), 10);
                e.html(B).css({
                    width: z - x
                });
                j.animate({
                    width: z,
                    height: v.height,
                    left: A
                }, o.speed, function () {
                    y.hide().css("visibility", "visible").fadeIn(function () {
                        if (!o.autohide) {
                            h.fadeIn();
                            s.show()
                        }
                    })
                })
            };
            v.onerror = function () {
                j.fadeIn().html("Cannot find image " + t)
            };
            v.src = t;
            if (o.preload) {
                r.filter(":eq(" + (l - 1) + "), :eq(" + (l + 1) + ")").each(function () {
                    var w = new Image();
                    w.src = b(this).attr("href")
                })
            }
        }
        function f(t, u) {
            t.click(function () {
                if (t.hasClass(o.disabledClass)) {
                    return
                }
                var v = r.eq(i = l + (u ? 1 : -1));
                if (v.length) {
                    p(v)
                }
            })
        }
        f(k, true);
        f(g);
        b(document).keydown(function (t) {
            if (!j.is(":visible") || t.altKey || t.ctrlKey) {
                return
            }
            if (t.keyCode == 37 || t.keyCode == 39) {
                var u = t.keyCode == 37 ? g : k;
                alert(u);
                u.click();
                return t.preventDefault()
            }
            return true
        });

        function q() {
            if (!j.is(":animated")) {
                h.show();
                s.show()
            }
        }
        if (o.autohide) {
            j.hover(q, function () {
                h.fadeOut();
                s.hide()
            }).mousemove(q)
        }
        var n;
        this.each(function () {
            var v = b(this),
                u = b(this).overlay(),
                t = u;
            u.onBeforeLoad(function () {
                p(v)
            });
            u.onClose(function () {
                r.removeClass(o.activeClass)
            })
        });
        return o.api ? n : this
    }
})(jQuery);
(function (d) {
    var b = d.tools.overlay;
    b.effects = b.effects || {};
    b.effects.apple = {
        version: "1.0.1"
    };
    d.extend(b.conf, {
        start: {
            absolute: true,
            top: null,
            left: null
        },
        fadeInSpeed: "fast",
        zIndex: 9999
    });

    function c(f) {
        var g = f.offset();
        return [g.top + f.height() / 2, g.left + f.width() / 2]
    }
    var e = function (n) {
        var k = this.getOverlay(),
            f = this.getConf(),
            i = this.getTrigger(),
            q = this,
            r = k.outerWidth({
                margin: true
            }),
            m = k.data("img");
        if (!m) {
            var l = k.css("backgroundImage");
            if (!l) {
                throw "background-image CSS property not set for overlay"
            }
            l = l.substring(l.indexOf("(") + 1, l.indexOf(")")).replace(/\"/g, "");
            k.css("backgroundImage", "none");
            m = d('<img src="' + l + '"/>');
            m.css({
                border: 0,
                position: "absolute",
                display: "none"
            }).width(r);
            d("body").append(m);
            k.data("img", m)
        }
        var o = d(window),
            j = f.start.top || Math.round(o.height() / 2),
            h = f.start.left || Math.round(o.width() / 2);
        if (i) {
            var g = c(i);
            j = g[0];
            h = g[1]
        }
        if (!f.start.absolute) {
            j += o.scrollTop();
            h += o.scrollLeft()
        }
        m.css({
            top: j,
            left: h,
            width: 0,
            zIndex: f.zIndex
        }).show();
        m.animate({
            top: k.css("top"),
            left: k.css("left"),
            width: r
        }, f.speed, function () {
            k.css("zIndex", f.zIndex + 1).fadeIn(f.fadeInSpeed, function () {
                if (q.isOpened() && !d(this).index(k)) {
                    n.call()
                } else {
                    k.hide()
                }
            })
        })
    };
    var a = function (f) {
        var h = this.getOverlay(),
            i = this.getConf(),
            g = this.getTrigger(),
            l = i.start.top,
            k = i.start.left;
        h.hide();
        if (g) {
            var j = c(g);
            l = j[0];
            k = j[1]
        }
        h.data("img").animate({
            top: l,
            left: k,
            width: 0
        }, i.closeSpeed, f)
    };
    b.addEffect("apple", e, a)
})(jQuery);
(function (b) {
    b.tools = b.tools || {};
    b.tools.expose = {
        version: "1.0.5",
        conf: {
            maskId: null,
            loadSpeed: "slow",
            closeSpeed: "fast",
            closeOnClick: true,
            closeOnEsc: true,
            zIndex: 99999998,
            opacity: 0.8,
            color: "#456",
            api: false
        }
    };

    function a() {
        if (b.browser.msie) {
            var f = b(document).height(),
                e = b(window).height();
            return [window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, f - e < 20 ? e : f]
        }
        return [b(window).width(), b(document).height()]
    }
    function c(h, g) {
        var e = this,
            j = b(this),
            d = null,
            f = false,
            i = 0;
        b.each(g, function (k, l) {
            if (b.isFunction(l)) {
                j.bind(k, l)
            }
        });
        b(window).resize(function () {
            e.fit()
        });
        b.extend(this, {
            getMask: function () {
                return d
            },
            getExposed: function () {
                return h
            },
            getConf: function () {
                return g
            },
            isLoaded: function () {
                return f
            },
            load: function (n) {
                if (f) {
                    return e
                }
                i = h.eq(0).css("zIndex");
                if (g.maskId) {
                    d = b("#" + g.maskId)
                }
                if (!d || !d.length) {
                    var l = a();
                    d = b("<div/>").css({
                        position: "absolute",
                        top: 0,
                        left: 0,
                        width: l[0],
                        height: l[1],
                        display: "none",
                        opacity: 0,
                        zIndex: g.zIndex
                    });
                    if (g.maskId) {
                        d.attr("id", g.maskId)
                    }
                    b("body").append(d);
                    var k = d.css("backgroundColor");
                    if (!k || k == "transparent" || k == "rgba(0, 0, 0, 0)") {
                        d.css("backgroundColor", g.color)
                    }
                    if (g.closeOnEsc) {
                        b(document).bind("keydown.unexpose", function (o) {
                            if (o.keyCode == 27) {
                                e.close()
                            }
                        })
                    }
                    if (g.closeOnClick) {
                        d.bind("click.unexpose", function (o) {
                            e.close(o)
                        })
                    }
                }
                n = n || b.Event();
                n.type = "onBeforeLoad";
                j.trigger(n);
                if (n.isDefaultPrevented()) {
                    return e
                }
                b.each(h, function () {
                    var o = b(this);
                    if (!/relative|absolute|fixed/i.test(o.css("position"))) {
                        o.css("position", "relative")
                    }
                });
                h.css({
                    zIndex: Math.max(g.zIndex + 1, i == "auto" ? 0 : i)
                });
                var m = d.height();
                if (!this.isLoaded()) {
                    d.css({
                        opacity: 0,
                        display: "block"
                    }).fadeTo(g.loadSpeed, g.opacity, function () {
                        if (d.height() != m) {
                            d.css("height", m)
                        }
                        n.type = "onLoad";
                        j.trigger(n)
                    })
                }
                f = true;
                return e
            },
            close: function (k) {
                if (!f) {
                    return e
                }
                k = k || b.Event();
                k.type = "onBeforeClose";
                j.trigger(k);
                if (k.isDefaultPrevented()) {
                    return e
                }
                d.fadeOut(g.closeSpeed, function () {
                    k.type = "onClose";
                    j.trigger(k);
                    h.css({
                        zIndex: b.browser.msie ? i : null
                    })
                });
                f = false;
                return e
            },
            fit: function () {
                if (d) {
                    var k = a();
                    d.css({
                        width: k[0],
                        height: k[1]
                    })
                }
            },
            bind: function (k, l) {
                j.bind(k, l);
                return e
            },
            unbind: function (k) {
                j.unbind(k);
                return e
            }
        });
        b.each("onBeforeLoad,onLoad,onBeforeClose,onClose".split(","), function (k, l) {
            e[l] = function (m) {
                return e.bind(l, m)
            }
        })
    }
    b.fn.expose = function (d) {
        var e = this.eq(typeof d == "number" ? d : 0).data("expose");
        if (e) {
            return e
        }
        if (typeof d == "string") {
            d = {
                color: d
            }
        }
        var f = b.extend({}, b.tools.expose.conf);
        d = b.extend(f, d);
        this.each(function () {
            e = new c(b(this), d);
            b(this).data("expose", e)
        });
        return d.api ? e : this
    }
})(jQuery);
(function () {
    var e = typeof jQuery == "function";
    var i = {
        width: "100%",
        height: "100%",
        allowfullscreen: true,
        allowscriptaccess: "always",
        quality: "high",
        version: null,
        onFail: null,
        expressInstall: null,
        w3c: false,
        cachebusting: false
    };
    if (e) {
        jQuery.tools = jQuery.tools || {};
        jQuery.tools.flashembed = {
            version: "1.0.4",
            conf: i
        }
    }
    function j() {
        if (c.done) {
            return false
        }
        var l = document;
        if (l && l.getElementsByTagName && l.getElementById && l.body) {
            clearInterval(c.timer);
            c.timer = null;
            for (var k = 0; k < c.ready.length; k++) {
                c.ready[k].call()
            }
            c.ready = null;
            c.done = true
        }
    }
    var c = e ? jQuery : function (k) {
        if (c.done) {
            return k()
        }
        if (c.timer) {
            c.ready.push(k)
        } else {
            c.ready = [k];
            c.timer = setInterval(j, 13)
        }
    };

    function f(l, k) {
        if (k) {
            for (key in k) {
                if (k.hasOwnProperty(key)) {
                    l[key] = k[key]
                }
            }
        }
        return l
    }
    function g(k) {
        switch (h(k)) {
        case "string":
            k = k.replace(new RegExp('(["\\\\])', "g"), "\\$1");
            k = k.replace(/^\s?(\d+)%/, "$1pct");
            return '"' + k + '"';
        case "array":
            return "[" + b(k, function (n) {
                return g(n)
            }).join(",") + "]";
        case "function":
            return '"function()"';
        case "object":
            var l = [];
            for (var m in k) {
                if (k.hasOwnProperty(m)) {
                    l.push('"' + m + '":' + g(k[m]))
                }
            }
            return "{" + l.join(",") + "}"
        }
        return String(k).replace(/\s/g, " ").replace(/\'/g, '"')
    }
    function h(l) {
        if (l === null || l === undefined) {
            return false
        }
        var k = typeof l;
        return (k == "object" && l.push) ? "array" : k
    }
    if (window.attachEvent) {
        window.attachEvent("onbeforeunload", function () {
            __flash_unloadHandler = function () {};
            __flash_savedUnloadHandler = function () {}
        })
    }
    function b(k, n) {
        var m = [];
        for (var l in k) {
            if (k.hasOwnProperty(l)) {
                m[l] = n(k[l])
            }
        }
        return m
    }
    function a(r, t) {
        var q = f({}, r);
        var s = document.all;
        var n = '<object width="' + q.width + '" height="' + q.height + '"';
        if (s && !q.id) {
            q.id = "_" + ("" + Math.random()).substring(9)
        }
        if (q.id) {
            n += ' id="' + q.id + '"'
        }
        if (q.cachebusting) {
            q.src += ((q.src.indexOf("?") != -1 ? "&" : "?") + Math.random())
        }
        if (q.w3c || !s) {
            n += ' data="' + q.src + '" type="application/x-shockwave-flash"'
        } else {
            n += ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
        }
        n += ">";
        if (q.w3c || s) {
            n += '<param name="movie" value="' + q.src + '" />'
        }
        q.width = q.height = q.id = q.w3c = q.src = null;
        for (var l in q) {
            if (q[l] !== null) {
                n += '<param name="' + l + '" value="' + q[l] + '" />'
            }
        }
        var o = "";
        if (t) {
            for (var m in t) {
                if (t[m] !== null) {
                    o += m + "=" + (typeof t[m] == "object" ? g(t[m]) : t[m]) + "&"
                }
            }
            o = o.substring(0, o.length - 1);
            n += '<param name="flashvars" value=\'' + o + "' />"
        }
        n += "</object>";
        return n
    }
    function d(m, p, l) {
        var k = flashembed.getVersion();
        f(this, {
            getContainer: function () {
                return m
            },
            getConf: function () {
                return p
            },
            getVersion: function () {
                return k
            },
            getFlashvars: function () {
                return l
            },
            getApi: function () {
                return m.firstChild
            },
            getHTML: function () {
                return a(p, l)
            }
        });
        var q = p.version;
        var r = p.expressInstall;
        var o = !q || flashembed.isSupported(q);
        if (o) {
            p.onFail = p.version = p.expressInstall = null;
            m.innerHTML = a(p, l)
        } else {
            if (q && r && flashembed.isSupported([6, 65])) {
                f(p, {
                    src: r
                });
                l = {
                    MMredirectURL: location.href,
                    MMplayerType: "PlugIn",
                    MMdoctitle: document.title
                };
                m.innerHTML = a(p, l)
            } else {
                if (m.innerHTML.replace(/\s/g, "") !== "") {} else {
                    m.innerHTML = "<h2>Flash version " + q + " or greater is required</h2><h3>" + (k[0] > 0 ? "Your version is " + k : "You have no flash plugin installed") + "</h3>" + (m.tagName == "A" ? "<p>Click here to download latest version</p>" : "<p>Download latest version from <a href='http://www.adobe.com/go/getflashplayer'>here</a></p>");
                    if (m.tagName == "A") {
                        m.onclick = function () {
                            location.href = "http://www.adobe.com/go/getflashplayer"
                        }
                    }
                }
            }
        }
        if (!o && p.onFail) {
            var n = p.onFail.call(this);
            if (typeof n == "string") {
                m.innerHTML = n
            }
        }
        if (document.all) {
            window[p.id] = document.getElementById(p.id)
        }
    }
    window.flashembed = function (l, m, k) {
        if (typeof l == "string") {
            var n = document.getElementById(l);
            if (n) {
                l = n
            } else {
                c(function () {
                    flashembed(l, m, k)
                });
                return
            }
        }
        if (!l) {
            return
        }
        if (typeof m == "string") {
            m = {
                src: m
            }
        }
        var o = f({}, i);
        f(o, m);
        return new d(l, o, k)
    };
    f(window.flashembed, {
        getVersion: function () {
            var m = [0, 0];
            if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") {
                var l = navigator.plugins["Shockwave Flash"].description;
                if (typeof l != "undefined") {
                    l = l.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
                    var n = parseInt(l.replace(/^(.*)\..*$/, "$1"), 10);
                    var r = /r/.test(l) ? parseInt(l.replace(/^.*r(.*)$/, "$1"), 10) : 0;
                    m = [n, r]
                }
            } else {
                if (window.ActiveXObject) {
                    try {
                        var p = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")
                    } catch (q) {
                        try {
                            p = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
                            m = [6, 0];
                            p.AllowScriptAccess = "always"
                        } catch (k) {
                            if (m[0] == 6) {
                                return m
                            }
                        }
                        try {
                            p = new ActiveXObject("ShockwaveFlash.ShockwaveFlash")
                        } catch (o) {}
                    }
                    if (typeof p == "object") {
                        l = p.GetVariable("$version");
                        if (typeof l != "undefined") {
                            l = l.replace(/^\S+\s+(.*)$/, "$1").split(",");
                            m = [parseInt(l[0], 10), parseInt(l[2], 10)]
                        }
                    }
                }
            }
            return m
        },
        isSupported: function (k) {
            var m = flashembed.getVersion();
            var l = (m[0] > k[0]) || (m[0] == k[0] && m[1] >= k[1]);
            return l
        },
        domReady: c,
        asString: g,
        getHTML: a
    });
    if (e) {
        jQuery.fn.flashembed = function (l, k) {
            var m = null;
            this.each(function () {
                m = flashembed(this, l, k)
            });
            return l.api === false ? this : m
        }
    }
})();
//
(function ($) {
    $.fn.hoverIntent = function (f, g) {
        var cfg = {
            sensitivity: 7,
            interval: 100,
            timeout: 0
        };
        cfg = $.extend(cfg, g ? {
            over: f,
            out: g
        } : f);
        var cX, cY, pX, pY;
        var track = function (ev) {
            cX = ev.pageX;
            cY = ev.pageY;
        };
        var compare = function (ev, ob) {
            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
            if ((Math.abs(pX - cX) + Math.abs(pY - cY)) < cfg.sensitivity) {
                $(ob).unbind("mousemove", track);
                ob.hoverIntent_s = 1;
                return cfg.over.apply(ob, [ev]);
            } else {
                pX = cX;
                pY = cY;
                ob.hoverIntent_t = setTimeout(function () {
                    compare(ev, ob);
                }, cfg.interval);
            }
        };
        var delay = function (ev, ob) {
            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
            ob.hoverIntent_s = 0;
            return cfg.out.apply(ob, [ev]);
        };
        var handleHover = function (e) {
            var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
            while (p && p != this) {
                try {
                    p = p.parentNode;
                } catch (e) {
                    p = this;
                }
            }
            if (p == this) {
                return false;
            }
            var ev = jQuery.extend({}, e);
            var ob = this;
            if (ob.hoverIntent_t) {
                ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
            }
            if (e.type == "mouseover") {
                pX = ev.pageX;
                pY = ev.pageY;
                $(ob).bind("mousemove", track);
                if (ob.hoverIntent_s != 1) {
                    ob.hoverIntent_t = setTimeout(function () {
                        compare(ev, ob);
                    }, cfg.interval);
                }
            } else {
                $(ob).unbind("mousemove", track);
                if (ob.hoverIntent_s == 1) {
                    ob.hoverIntent_t = setTimeout(function () {
                        delay(ev, ob);
                    }, cfg.timeout);
                }
            }
        };
        return this.mouseover(handleHover).mouseout(handleHover);
    };
})(jQuery);
