if (xhr_enabled()) {

	// function to find the x, y position of an element (from http://www.quirksmode.org/js/findpos.html)
	jQuery.fn.findPos = function(){
		var obj = this.get(0);
		var curleft = curtop = 0;
		if (obj && obj.offsetParent) {
			curleft = obj.offsetLeft
			curtop = obj.offsetTop
			while (obj = obj.offsetParent) {
				curleft += obj.offsetLeft
				curtop += obj.offsetTop
			}
		}
		return [curleft, curtop];
	}

	var preload = new Image();
	preload.src = '/_assets/img/namebubble.png';
	var preload2 = new Image();
	preload2.src = '/_assets/img/namebubble.gif';
	var preload3 = new Image();
	preload3.src = '/_assets/img/gender_M.gif';
	var preload4 = new Image();
	preload4.src = '/_assets/img/gender_F.gif';
	var preload5 = new Image();
	preload5.src = '/_assets/img/gender_E.gif';
	
	jQuery.wait_for('div.footer', function(){
		var data_cache = {};
		var linkTimeout;
		
		function remove_balloon(){
			clearTimeout(linkTimeout);
			jQuery('#name-balloon').remove();
		}

		function add_balloon(){
		
			var links;
			var name = $(this).text();
			var id = name;
			
			var idattr = new String($(this).attr('id'));
			
			re = /name_(\d+)/;
			if (idm = idattr.match(re)) {
				if (idm[1] > 0) {
					id = idm[1];
				}
			}
			
			if (jQuery('#name-balloon').attr('_name_id') == id) 
				return;
			
			remove_balloon();
			
			var link_pos = $(this).findPos();
			var link_width = $(this).width();
			
			var balloon = jQuery('<div></div>').appendTo('body')
							.attr('id', 'name-balloon')
							.attr('_name_id', id)
							.css({
									left: (link_pos[0] + link_width) + 'px',
									top: (link_pos[1] - 47) + 'px'
								})
							.mouseover(function(){clearTimeout(linkTimeout)})
							.mousemove(function(){clearTimeout(linkTimeout)})
							.mouseout(function() {linkTimeout = setTimeout(function() {remove_balloon()},500)});
			
			jQuery('<div></div>').addClass('name-balloon-bg').appendTo(balloon);
			
			jQuery('<h1></h1>').text(name).appendTo(balloon);
			
			jQuery('<p></p>').text('Loading...').appendTo(balloon);
			jQuery('<p></p>').html('&nbsp;').appendTo(balloon);
			
			links = jQuery('<p></p>').addClass('name-balloon-links');
			
			jQuery('<a></a>').attr('href', '/name/' + name).text('more info').appendTo(links);
			
			jQuery('<a></a>').addClass('add-to-faves').text('add to faves').click(function(){
				addNameList(id);
				return false;
			}).appendTo(links);
			
			jQuery('<a></a>').text('close').attr('href', '#').click(function(){
				remove_balloon();
				return false;
			}).appendTo(links);
			/*
			 }
			 else {
			 var link = jQuery(this);
			 var name = link.text();
			 id = link.attr('id').split('_')[1];
			 
			 if (jQuery('#name-balloon').attr('_name_id') == id) return;
			 
			 remove_balloon();
			 
			 var link_pos = link.findPos();
			 var link_width = link.width();
			 
			 var balloon = jQuery('<div></div>')
			 .appendTo('body')
			 .attr('id', 'name-balloon')
			 .attr('_name_id', id)
			 .css({
			 left: (link_pos[0] + link_width) + 'px',
			 top: (link_pos[1] - 47) + 'px'
			 });
			 
			 jQuery('<div></div>').addClass('name-balloon-bg').appendTo(balloon);
			 
			 jQuery('<h1></h1>').text(name).appendTo(balloon);
			 
			 jQuery('<p></p>').text('Loading...').appendTo(balloon);
			 jQuery('<p></p>').html('&nbsp;').appendTo(balloon);
			 
			 var links = jQuery('<p></p>').addClass('name-balloon-links').appendTo(balloon);
			 
			 jQuery('<a></a>').attr('href', link.attr('href')).text('more').appendTo(links);
			 
			 jQuery('<a></a>')
			 .addClass('add-to-faves')
			 .text('add to faves')
			 .click(function(){
			 addNameList(id);
			 })
			 .appendTo(links);
			 
			 jQuery('<a></a>')
			 .text('close')
			 .attr('href', '#')
			 .click(function(){
			 remove_balloon();
			 return false;
			 })
			 .appendTo(links);
			 }*/
			function callback(data){
				jQuery('p:first', balloon).text(data.meaning);
				jQuery('p:eq(1)', balloon).text('Origin: ' + data.origin);
				jQuery(links).appendTo(balloon);
				jQuery('<img>').attr('src', '/_assets/img/gender_' + data.gender + '.gif').appendTo(balloon);
			}

			if (data_cache[id]) {
				callback(data_cache[id]);
			}
			else {
				jQuery.getJSON('/_assets/inc/namelist_ajax.php', {
					method: 'getNameInfo',
					id: id
				}, function(data){
					data_cache[id] = data;
					callback(data);
				});
			}
		}

		jQuery('a.name-balloon-holder').mouseover(add_balloon).mouseout(function() {linkTimeout = setTimeout(function() {remove_balloon()},500)});
		jQuery('span.namepop').mouseover(add_balloon);

	}); // footer ready

} // xhr_enabled