// To find the URL in a text content

var findReplaceURL = (function (){

	var p_getEl = function(el){
		if(typeof(el)==='string') return document.getElementById(el);
		return el;
	};

	var p_linkify = function(long_str){	
	  var short_str = long_str.length > 12 ? long_str.substr(0, 12) + '&hellip;' : long_str;
	  return '<a href="'+long_str+'">'+long_str+'</a>';
	}




	var p_getLinkHTMLFromTextNode = function(textNode){
		 
		 var s1  = textNode.data;
		 var s2 =  s1.replace(/(https?:\/\/\S+)/g, p_linkify  );
		 if( s1 != s2 ){
			var span = document.createElement('span');
			span.innerHTML = s2;
			textNode.parentNode.replaceChild(span,textNode);
			return s2;
		 }else{
			return false;
		 };		
		
	};


	if(  document.evaluate ){

		return function(el){
			var el =  p_getEl(el);
			var xPathResult = document.evaluate( './/text()[normalize-space(.) != ""]', el  , null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
			for (var i = 0, l = xPathResult.snapshotLength; i < l; i++) {
				 var textNode = xPathResult.snapshotItem(i);
				 p_getLinkHTMLFromTextNode(textNode );
			};
		};
	}else{
        
		return function(el){
				var aTextNodes = [];
				var findAll = function(el){
					var el =  p_getEl(el);
					var node = el.firstChild;
					
					while( node ){
						switch( node.nodeType ){
							case 3: aTextNodes.push( node);	break;
							case 1: findAll( node );  
							default:break;
						};
						node = node.nextSibling;
					};		 
				};
				findAll(el);
				var dText;
				
					
				for(var i=0;dText=aTextNodes[i];i++){
					p_getLinkHTMLFromTextNode(dText);
				};	 
		};
	}

})();
