/*
** Linker 
** written by Marek Robak, Bonnier Business (Polska)
*/

// linker = function(){}
linker = function(){}

linker.companies = linker_companies;
linker.url = 'http://notowania.pb.pl/instrument/%ID%';

linker.simple_replace = function(nodes)
{
     
     for(var i = 0; i < nodes.length; i++)
     {          
          if(nodes[i])
		  {
			nodes[i].innerHTML = this.parser(nodes[i].innerHTML); 
			}
     }
}

/*
linker.dom_replace = function(e)
{
     var oldCode;
     var newCode; 
     if((e.childNodes.length == 1) && (e.firstChild.nodeName == '#text')) 
     {
          oldCode = e.innerHTML;
          newCode = this.parser(oldCode);
          console.log('@@@' + e.nodeName + e.firstChild.nodeName + '\n' + oldCode + '\n=>\n' + newCode);
          if(newCode != oldCode)
          {
            e.innerHTML = newCode;
          }
     }
     else
     {
          for(var i = 0; i < e.childNodes.length; i++)
          {
               // alert(i + '::' + e.childNodes[i].nodeType + '\n' + e.childNodes[i].nodeType + '\n' + e.childNodes[i].innerHTML);
               // console.log(e.tagName, e.childNodes.length, e.innerHTML.substring(0, 100))
               tagName = e.childNodes[i].tagName
               if(tagName != 'A')
               {
                    this.dom_replace(e.childNodes[i]);
               }
          }         
     }
}
*/

linker.parser = function(txt)
{	
     if(txt != null)
     {
          for(var i in this.companies)
          {
               var searchstring = this.companies[i].replace(/,/g,'|').replace(' ','[ \n]+');
               var url = this.url.replace('%ID%',i); 
               txt = txt.replace(new RegExp('([ >"])(' + searchstring + ')([ .,;?!&*]|\<[^a])' + '(.*)'), '$1&nbsp;<a href="'+ url +'" target="_blank" class="stock">$2</a>$3$4');
          }
     }
     return txt;
}

linker.go = function()
{
     // this.simple_replace([document.getElementById('article_content')]);
     this.dom_replace(document.getElementById('article_content'))
}




linker.dom_replace = function(e)
{
     var oldCode;
     var newCode; 
     if(!e.hasChildNodes()) 
     {
          // console.log(e.nodeName, ': ', e.nodeValue)
          if(true)
          {
              // e = f(e);
              oldCode = e.nodeValue;
              // oldCode = e.innerHTML;
              newCode = this.parser(oldCode);
              // console.log(e.parentNode.nodeName + ' ' + e.nodeName + '\n' + oldCode + '\n=>\n' + newCode);
              if(newCode != oldCode)
              {
                   // console.log('zamiana\n',oldCode, '\n=>\n', newCode);
                   e2 = document.createElement('span');
                   e2.innerHTML = newCode;
                   e.parentNode.replaceChild(e2, e);
                   /*
                   for(i = 0; i < e2.childNodes.length; i++)
                   {
                        console.log('dodawanie ',e2.childNodes[i].nodeValue);
                        e.parentNode.insertBefore(e2.childNodes[i], e);
                        
                   }
                   */
                   
                   

              }
          }
     }
     else
     {
          for(var i = 0; i < e.childNodes.length; i++)
          {
               // alert(i + '::' + e.childNodes[i].nodeType + '\n' + e.childNodes[i].nodeType + '\n' + e.childNodes[i].innerHTML);
               // console.log(e.tagName + '\n' + e.innerHTML)
               tagName = e.childNodes[i].tagName
               if(tagName != 'A' && tagName != 'IMG') 
               {
                    this.dom_replace(e.childNodes[i]);
               }
          }         
     }
}

