jQuery.patterns = {};
jQuery.patterns.email = {
	pattern: new RegExp(/([\>\s\n\r][a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4})/gi),
	callback: function(match){
		if(match.charAt(0)=='>'){
			return match.substr(1,match.length);
		}
	}
};
jQuery.fn.patternWrap = function(pattern,elementDescription) {
	return this.each(function(){
		//locate matches
		var str = $(this).html();
		var matches = str.match(pattern.pattern);
		
		if(matches){
			//build strings for html wrap
			var ed = elementDescription;
			if(!ed.tagName){
				ed.tagName = 'span'; 
			}
			var htmlEnd = ' </'+ed.tagName+'>';
			var htmlBegin = '<'+ed.tagName;
			for(var j in ed){
				if(j.toLowerCase()!='tagname'){
					htmlBegin += ' '+j+'="'+ed[j]+'" ';
				}
			}
			htmlBegin += '>';
			
			//replace matches with wrap 
			for(var i=0;i<matches.length;i++){
				if(pattern.callback){
					var match = pattern.callback(matches[i]);
				}
				else{
					var match = matches[i];
				}
				str = str.replace(matches[i],htmlBegin+match+htmlEnd);
			}
			$(this).html(str);
		}
	});
}; 