// Copyright 2007 by EDS (Electronic Data Systems) - All Rights Reserved
// Programming by Fred Keultjes

var instrumentAllHyperlinks = false;

function InstrumentAttachmentHyperlinks()
{
  var settingInfoInsideHyperlink = false;

  var LinkElements = document.getElementsByTagName("A");
  if( LinkElements.length>0 )
  {
    var i;

    for( i=0; i<LinkElements.length; i++ )
    {
      var cur = LinkElements[i];
      if( (instrumentAllHyperlinks || cur.className.indexOf("attinfo")>=0) && cur.href.toLowerCase().indexOf("attachments/")>=0 )
      {
         var layoutClassic = cur.className.indexOf("attinfoc")>=0;
         var layoutIconOnly = cur.className.indexOf("attinfoi")>=0;
         var layout30days = cur.className.indexOf("attinfo30")>=0;
         var isTempAttachment = cur.href.toLowerCase().indexOf("tempattachments/")>=0;

         var frontElement = cur.firstChild;
         var imageAlreadyPresent = false;

         var lastElement = cur.lastChild;
         var infoAlreadyPresent = layoutIconOnly;

         if( !infoAlreadyPresent )
         {
           var re1 = /^(\s|\xA0)*$/;
           var re2 = /^(\s|\xA0)*\(\d.*\).*$/;

           var next = cur.nextSibling;
           while( next!=null && ((next.nodeType==3 && re1.test(next.nodeValue)) || next.tagName=="IMG") )
              next = next.nextSibling;

           infoAlreadyPresent = next != null && ((next.tagName=="SPAN" && (next.className!=null && next.className.indexOf("attinfo")>=0))
                                                  ||(next.nodeType==3 && re2.test(next.nodeValue)));
         }

         if( !infoAlreadyPresent )
         {
            var spanElem = document.createElement("SPAN");
            spanElem.id = "attinfo_span_" + i;
            spanElem.className = "attinfo";
            spanElem.style.textDecoration="none";

            var spaceElem = document.createElement("SPAN");
            spaceElem.style.textDecoration="none";
            spaceElem.appendChild(document.createTextNode(" "));

            if( settingInfoInsideHyperlink )
            {
              cur.appendChild(spaceElem);
              cur.appendChild(spanElem);
            }
            else
            {
              var next = cur.nextSibling;
              if( next==null )
              {
                cur.parentNode.appendChild(spaceElem);
                cur.parentNode.appendChild(spanElem);
              }
              else
              {
                cur.parentNode.insertBefore( spaceElem, next );
                cur.parentNode.insertBefore( spanElem, next );
              }
            }

            var sitePrefix = "";
            var pos1 = cur.href.indexOf("://");
            if( pos1>=0 )
            {
              var pos2 = cur.href.indexOf("/",pos1+3);
              if( pos2>=0 )
                sitePrefix = cur.href.substring(0,pos2);
            }
            var aElem = document.createElement("SCRIPT");
            aElem.type = "text/javascript";
            aElem.src = sitePrefix + "/nlapps/iPublish/getinfo.js.asp?name=" + (layout30days ? "finfox30" : "finfox")
               + (isTempAttachment ? "&temp=1" : "" ) + "&elementID="
               + spanElem.id + "&filename=" + cur.href.substring(cur.href.lastIndexOf("/")+1).replace( /&/g, "%26").replace( /\+/g, "%2b");
            document.documentElement.appendChild(aElem);
         }


         if( !imageAlreadyPresent )
         {
            var theTypeName = CreateTypeName(cur.href);
            if( theTypeName != "" )
            {
              var typeElem = document.createElement("SPAN");
              typeElem.style.textDecoration="none";
              typeElem.appendChild(document.createTextNode(" " + theTypeName + ","));

              if( settingInfoInsideHyperlink )
              {
                imgElem.style.textDecoration="none";
                if( frontElement==null )
                {
                  cur.appendChild(typeElem);
                }
                else
                {
                  cur.insertBefore( typeElem, frontElement );
                }
              }
              else
              {
                 if( cur.nextSibling==null )
                 {
                  cur.parentNode.appendChild(typeElem);
                 }
                 else
                 {
                  cur.parentNode.insertBefore( typeElem, cur.nextSibling );
                 }
              }
            }
         } 

      }
    }
  }
}

function CreateTypeName(filePath)
{
  var iLastSlash = filePath.lastIndexOf('/');
  var iLastBackSlash = filePath.lastIndexOf('\\');
  if( iLastBackSlash>iLastSlash )
    iLastSlash = iLastBackSlash;

  var iLastDot = filePath.lastIndexOf('.');
  if( iLastDot<=iLastSlash )
    return null;

  var name;

  switch( filePath.substring(iLastDot+1).toLowerCase() )
  {
    case "doc": case "dot":
      name = "Word";
      break;
    case "xls": case "xlt":
      name = "Excel";
      break;
    case "pdf":
      name = "PDF";
      break;
    case "ppt":
      name = "PowerPoint";
      break;
    case "zip":
      name = "Zip";
      break;
    case "htm":
      name = "HTML";
      break;
    case "txt":
      name = "Text";
      break;
    case "mdb": case "ade": case "adn": case "adp":
      name = "Microsft Access";
      break;
    case "pps":
      name = "PowerPoint";
      break;
    case "mpp":
      name = "Microsoft Project";
      break;
    default:
      return "";
  }
  return name;
}


chainToOnLoad("InstrumentAttachmentHyperlinks()");

