/* (c) Line Digital 2009 */
(function ($) {
	var REGEX_HACK = '<>';
	$.fn.extend({
		glossary: function (terms) {
			var root = $(this);

			root.each(function () {
				for (var term in terms) {
					var self = $(this);

					if (typeof(terms[term]['regex']) == 'undefined') {
						terms[term]['regex'] = new RegExp('\\b(' + term + ')\\b(?=[^\>]*?\<)', 'ig');
						if (typeof(terms[term]['url']) == 'undefined') {
							terms[term]['replace'] = '<span class="glossary_term" title="' + terms[term]['definition'] + '">$1</span>';
						} else {
							terms[term]['replace'] = '<a class="glossary_term" href="' + terms[term]['url'] + '" title="' + terms[term]['definition'] + '">$1</a>';
						}
					}

					var regex = terms[term]['regex'];
					var newHTML = (self.html() + REGEX_HACK).replace(regex, terms[term]['replace']);
					self.html(newHTML.substring(0, newHTML.length - REGEX_HACK.length));
				}
			});
		}
	});
})(jQuery);
