function JargonBuster(b){
	var a=this;
	a.jargon=new Object;
	a.jargonCached=false;
	a.targetContainer=$("#content");
	a.targetElements=$.browser.msie?$(".applyjargon",a.targetContainer).find("p, ul, ol, .spec th, .spec td"):$(".applyjargon",a.targetContainer).find("p, ul, ol, .spec");
	a.regexPrefix="(";a.regexPostfix=')(?!([a-zA-Z0-9 _:;/#?&-]*?"?(>| [a-zA-Z0-9_-]*?="?[a-zA-Z0-9 _:;/#?&-]"?)|.*?</(a|h[1-2]|button|option|script|style|textarea)>|.*?" />))';
	a.regexOptions="gi";
	a.divOffsetX=-10;
	a.divOffsetY=-24;
	a.tabSet=$("ul.tabs");
	a.initBubble=function(){
		var c=$('<div id="ajaxNode" style="display: none;"><div id="ajaxNodeTitle"><h3 id="ajaxHeadTitle"></h3></div><div id="ajaxNodeText"></div></div>');
		$("body").append(c);
		return(c)
	};
	a.updateBubble=function(d){
		var c=d.className.split(" ")[1];
		if(!a.divHead){
			a.divHead=$("#ajaxNodeTitle > h3");
			a.divBody=$("#ajaxNodeText")
		}
		a.divHead.text(a.jargon[c].term);
		a.divBody.html(a.jargon[c].description)
	};
	a.positionBubble=function(c,d){
		a.jargonBubble.css({
			left:c+a.divOffsetX,top:(d-a.jargonBubble.height())+a.divOffsetY
		})
	};
	a.jargonWindow=function(c){
		a.lastClicked="#"+(c.split("#").pop());
		a.tabSet.tabs("select","#jargon-buster");
		return(false)
	};
	a.tabShowHandler=function(c,d){
		if(d&&(d.tab.id=="tab_jargon")&&(a.lastClicked)){
			setTimeout(function(){
				var e=$(a.lastClicked).offset();
				a.lastClicked=null;
				$(document).scrollTop(e.top)
			},100)
		}
	};
	a.insertJargon=function(e){
		var c=a.targetElements,f=new Array,d=$("jargonterm",e);
		c.each(function(g){
			f[g]=$(this).html()
		});
		d.each(function(i){
			var i=0,g=$(this),h=new RegExp(a.regexPrefix+g.attr("regex")+a.regexPostfix,a.regexOptions);
			a.jargon[g.attr("id")]=new Object({
				term:g.attr("term"),description:$("description",g).text(),href:g.attr("href"),regex:g.attr("regex")
			});
			for(i=0;i<f.length;i++){
				f[i]=f[i].replace(h,'\r\n<a class="jargonbuster '+g.attr("id")+'" href="'+g.attr("href")+'">$1</a>\r\n')
			}
		});
		c.each(function(g){
			$(this).html(f[g])
		})
	};
	a.addJargonEvents=function(){
		var c=$(".jargonbuster",a.targetContainer);
		c.click(function(d){
			return(a.jargonWindow(this.href))
		});
		c.hover(function(d){
			a.updateBubble(this);
			a.jargonBubble.css("display","block");
			a.positionBubble(d.pageX,d.pageY)
		},
		function(d){
			a.jargonBubble.css("display","none")
		});
		c.mousemove(function(d){
			a.positionBubble(d.pageX,d.pageY)
		})
	};
	a.fetchJargon=function(c){
		$.ajax({
			type:"GET",dataType:"xml",url:c,data:{
				sid:Math.random()
			},
			success:function(d){
				$(".jargon-buster").hide();
				a.insertJargon(d);
				a.addJargonEvents()
			}
		})
	};
	a.jargonBubble=a.initBubble();
	a.tabSet.bind("tabsselect",a.tabShowHandler);
	a.fetchJargon(b)
};

