﻿var n2d_links_install=null;(function(){var seeAlsoHeading='See also';var articles;if(typeof($)!=='undefined'&&location.hostname.substr(0,4)!=='zzz.')$(document).ready(function(){if(articles=identifyArticles())requestLinks(articles,function onrequestcomplete(data){try{var links=createLinks(data);var article,articlesById=createIndex(articles,'id');for(var i=0;i<links.length;i++){if(article=articlesById[links[i].articleId])article.links.push(links[i]);}
for(var i=0;i<articles.length;i++)articles[i].applyLinks();}
catch(ex){}});});function Article(element){this.element=element;this.id=element.id;this.links=[];}
Article.prototype.toString=function(){return this.id;}
Article.prototype.applyLinks=function(){var links=this.links;if(links.length==0)return;try{var match,pattern=new RegExp(links.join('|'));var start,added,nodes=getTextNodes(this.element);for(var i=0;i<nodes.length&&links.length>0;i++){if(match=pattern.exec(nodes[i].data)){var j;for(j=1;j<match.length;j++){if(match[j]){j--;break;}}
if(added=links[j].apply(nodes[i],match.index,match.lastIndex-match.index))nodes.push(added);links.splice(j--,1);pattern=new RegExp(links.join('|'));}}}
catch(ex){}
if(links.length){var div=document.createElement('div');var a=[];for(var s in links)a.push(links[s].html());div.innerHTML='<p><b>'+seeAlsoHeading+'</b><br/>'+a.join('<br/>')+'</p>';this.element.appendChild(div);}}
function Link(){this.articleId=arguments[0];this.phraseId=arguments[1];this.title=arguments[2];this.hint=arguments[3];this.pattern='('+this.title.replace(/\s+/g,'\\s')+')';}
Link.prototype.apply=function(node,start,length){if(start)node=node.splitText(start);if(!length)length=this.title.length;var remainder;if(length<node.data.length)remainder=node.splitText(length);else remainder=null;var element=document.createElement('A');element.target='_blank';element.className='n2d';element.href=this.href();node.parentNode.insertBefore(element,node);element.appendChild(node);return remainder;}
Link.prototype.href=function(){return'http://data.hedgefundintelligence.com/funds3/database/255.1/phrase.aspx?q='+this.phraseId;}
Link.prototype.html=function(){return['<a href="',this.href(),'">',this.title,'</a>'].join('');}
Link.prototype.toString=function(){return this.pattern;}
function identifyArticles(){var a=$.map($('DIV.article'),function(element){return new Article(element)});if(a.length)return a;else return null;}
function requestLinks(articles,callback){n2d_links_install=callback;var element=document.createElement("SCRIPT");element.type='text/javascript';element.src='http://data.hedgefundintelligence.com/links/links.js.ashx?ids='+articles.join(',');document.body.appendChild(element);}
function createLinks(data){var i=0,links=[];while(i<data.length)links.push(new Link(data[i++],data[i++],data[i++]));return links;}
function createIndex(array,name){var result={};for(var i=0;i<array.length;i++)result[array[i][name]]=array[i];return result;}
function getTextNodes(element){var a=[];var child=element.firstChild;while(child){if(child.nodeType==3){if(child.data.length)a.push(child);}
else{switch(child.tagName.substr(0,1)){case'H':case'A':break;default:a=a.concat(getTextNodes(child));}}
child=child.nextSibling;}
return a;}})();