
(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, "linear");
			}
		});
	};
})(jQuery);


