var dejargonator = {
	prepDJ: function(scope) {
		scope = scope || "";
		jQuery('a.dejargonator', scope).hoverIntent({
			over: function(event) {
			
				jQuery(this).data('mouseout',false);
				
				if (jQuery(".dj-layer").length > 0) { jQuery(".dj-layer").remove(); }
				if (jQuery(this).attr("href") != ""&& jQuery(this).attr("href") != "#"&& jQuery(this).attr("href") != location.href + "#") {
					var origAnchor = this;
					
					var asyncLoad = false;
					
					// If dejargs are attached asynchronously, fetch dejargonator content from server.
					// Prevents blank dejargonator bubbles.
					if (window.location.href.indexOf("transactionhistory") > -1) {
						asyncLoad = true;
					}
					
					if (typeof jQuery('body').data('glossaryContent') == 'undefined' || jQuery('body').data('glossaryContent') == null || asyncLoad==true) {
						var arrURL = jQuery(this).attr("href").split('#');
						var glossaryXHR = jQuery.ajax({
							type: "GET",
							url: arrURL[0] + '?type=content' + '#' + arrURL[1],
							success: function(responseText) {
								jQuery('body').data('glossaryContent',responseText);
								dejargonator.createDJBubble(origAnchor, event);
							}
						});
					} else {
						dejargonator.createDJBubble(origAnchor, event);
					}
				}
			},
			out: function() {
			
				jQuery(this).data('mouseout',true);
			}
		});
	},
	createDJBubble: function(origAnchor, event) {
		if (jQuery(origAnchor).data('mouseout') !== true) {
			var oDjStruct = jQuery('<div class="dj-layer"><div class="dj-inner"></div><div class="dj-point"></div></div>').children(".dj-inner");
			
			oDjStruct.append(jQuery(jQuery('body').data('glossaryContent')).filter('#' + jQuery(origAnchor).attr("href").split('#')[1]));
			
			var oDj = oDjStruct.parent();
			oDj.appendTo(jQuery("body"));
			
			var left = event.pageX - 65;
			var top = event.pageY - oDj.height() + 22;
			oDj.css({
				 left: left,
				 top: top
			 });
			
			var v = function() {
				return {
					x: parseInt(jQuery(window).scrollLeft(),10),
					y: parseInt(jQuery(window).scrollTop(),10),
					cx: parseInt(jQuery(window).width(),10),
					cy: parseInt(jQuery(window).height(),10)
				};
			}();
			if (v.x + v.cx < left + oDj.width()) {
				left = event.pageX - 250;
				oDj.css({left: left + 'px'}).addClass("viewport-right");
			}
			if (top - v.y < oDj.height()) {
				top = event.pageY - 14;
				oDj.css({top: top + 'px'}).addClass("viewport-top").children(".dj-point").prependTo(oDj);
			}
			if (oDj.hasClass(".viewport-top")&& oDj.hasClass(".viewport-right")) {
				oDj.addClass("viewport-both");
			}
			
			oDj.stop(true).fadeIn().mouseleave(function(event) {
				jQuery(this).stop(true).fadeOut("fast", function(){
					jQuery(this).remove();
				});
			});
			jQuery('.tab').parent().parent().click(function(){
				jQuery('.tabdejarg').href= jQuery('.tabdejarg').name;
				jQuery('.tabdejarg').click();
			});

		}
	}
}
jQuery(function() {
	dejargonator.prepDJ();
	jQuery(window).resize(function() {
		jQuery(".dj-layer").remove();
	});
});


