(function(a){
    a.fn.lavaLamp = function(b){
        b = a.extend({
            fx: "swing",
            speed: 500,
            click: function(){
                return true
            },
            startItem: "no",
            autoReturn: true,
            returnDelay: 0,
            setOnClick: true,
            homeTop: 0,
            homeLeft: 0,
            homeWidth: 0,
            homeHeight: 0,
            returnHome: false
        }, b ||
        {});
        return this.each(function(){
            var h = location.pathname + location.search + location.hash;
            var e = new Object;
            var d;
            var i;
            var f;
            var g;
            if (b.homeTop || b.homeLeft) {
                f = a('<li class="homeLava selectedLava"></li>').css({
                    left: b.homeLeft,
                    top: b.homeTop,
                    width: b.homeWidth,
                    height: b.homeHeight,
                    position: "absolute"
                });
                a(this).prepend(f)
            }
            var j = a("li", this);
            if (b.startItem == "no") {
                e = a('li a[href$="' + h + '"]', this).parent("li")
            }
            if (e.length == 0 && b.startItem == "no" && location.hash) {
                e = a('li a[href$="' + location.hash + '"]', this).parent("li")
            }
            if (e.length == 0 || b.startItem != "no") {
                if (b.startItem == "no") {
                    b.startItem = 0
                }
                e = a(j[b.startItem])
            }
            g = a("li.selectedLava", this)[0] || a(e).addClass("selectedLava")[0];
            j.mouseover(function(){
                if (a(this).hasClass("homeLava")) {
                    g = a(this)[0]
                }
                c(this)
            });
            i = a('<li class="backLava"><div class="leftLava"></div><div class="bottomLava"></div><div class="cornerLava"></div></li>').appendTo(this);
            a(this).mouseout(function(){
                if (b.autoReturn) {
                    if (b.returnHome && f) {
                        c(f[0])
                    }
                    else {
                        if (b.returnDelay) {
                            if (d) {
                                clearTimeout(d)
                            }
                            d = setTimeout(c, b.returnDelay + b.speed)
                        }
                        else {
                            c()
                        }
                    }
                }
            });
            j.click(function(k){
                if (b.setOnClick) {
                    a(g).removeClass("selectedLava");
                    a(this).addClass("selectedLava");
                    g = this
                }
                return b.click.apply(this, [k, this])
            });
            if (b.homeTop || b.homeLeft) {
                i.css({
                    left: b.homeLeft,
                    top: b.homeTop,
                    width: b.homeWidth,
                    height: b.homeHeight
                })
            }
            else {
                i.css({
                    left: g.offsetLeft,
                    top: g.offsetTop,
                    width: g.offsetWidth,
                    height: g.offsetHeight
                })
            }
            function c(k){
                if (!k) {
                    k = g
                }
                var m = 0, l = 0;
                if (!a.browser.msie) {
                    m = (i.outerWidth() - i.innerWidth()) / 2;
                    l = (i.outerHeight() - i.innerHeight()) / 2
                }
                i.stop().animate({
                    left: k.offsetLeft - m,
                    top: k.offsetTop - l,
                    width: k.offsetWidth,
                    height: k.offsetHeight
                }, b.speed, b.fx)
            }
        })
    }
})(jQuery);
