// Copyright 2007 by EDS (Electronic Data Systems) - All Rights Reserved
// Programming by Fred Keultjes

var instrumentAllHyperlinks = false;
var settingInfoInsideHyperlink = false; // when required, assign true after this script file is included

function InstrumentAttachmentHyperlinks()
{
  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 = frontElement!=null && frontElement.tagName=="IMG";

         if( !imageAlreadyPresent )
         {
           var prev = cur.previousSibling;
           while( prev!=null && (prev.nodeType==3 || (prev.tagName=="SPAN" && prev.className.indexOf("ipspace")>=0)) )
           {
              prev = prev.previousSibling;
           }
           imageAlreadyPresent = prev != null && prev.tagName=="IMG";
         }
         
         if( !imageAlreadyPresent )
         {
           var next = cur.nextSibling;
           while( next!=null && (next.nodeType==3 || (next.tagName=="SPAN" && next.className.indexOf("ipspace")>=0)) )
           {
              next = next.nextSibling;
           }
           imageAlreadyPresent = next != null && next.tagName=="IMG";
         }

         if( !imageAlreadyPresent )
         {
           var lastElement = cur.lastChild;
           imageAlreadyPresent = lastElement!=null && lastElement.tagName=="IMG";
         }

         var lastElement = cur.lastChild;
         var infoAlreadyPresent;
         if( layoutIconOnly )
           infoAlreadyPresent = true;
         else
          infoAlreadyPresent = lastElement!=null && (lastElement.tagName=="SPAN" || (lastElement.className!=null && lastElement.className.indexOf("attinfo")>=0))

         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.className = "ipspace";
            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=" + (layoutClassic ? "finfoc" : layout30days ? "finfo30" : "finfo")
               + (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 imgElem = CreateTypeIconNode(cur.href);
            if( imgElem != null )
            {
              var spaceElem = document.createElement("SPAN");
              spaceElem.style.textDecoration="none";
              spaceElem.className = "ipspace";
              spaceElem.appendChild(document.createTextNode(" "));

              if( layoutClassic )
              {
                 if( cur.nextSibling==null )
                 {
                  cur.parentNode.appendChild(spaceElem);
                  cur.parentNode.appendChild(imgElem);
                 }
                 else
                 {
                  cur.parentNode.insertBefore( imgElem, cur.nextSibling );
                  cur.parentNode.insertBefore( spaceElem, cur.nextSibling );
                 }
              }
              else if( settingInfoInsideHyperlink )
              {
                imgElem.style.textDecoration="none";
                if( frontElement==null )
                {
                  cur.appendChild(imgElem);
                  cur.appendChild(spaceElem);
                }
                else
                {
                  cur.insertBefore( imgElem, frontElement );
                  cur.insertBefore( spaceElem, frontElement );
                }
              }
              else
              {
                 cur.parentNode.insertBefore( imgElem, cur );
                 cur.parentNode.insertBefore( spaceElem, cur );
              }
            }
         } 

      }
    }
  }
}

function CreateTypeIconNode(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, url;

  switch( filePath.substring(iLastDot+1).toLowerCase() )
  {
    case "accdb":
      url = "/nlapps/images/type_accdb.gif";
      name = "Access 2007 Database";
      break;
    case "doc":
      name = "Word";
      url = "/nlapps/images/type_doc.gif";
      break;
    case "dot":
      name = "Word Template";
      url = "/nlapps/images/type_doc.gif";
      break;
    case "docx":
      name = "Word";
      url = "/nlapps/images/type_docx.gif";
      break;
    case "dotx":
      name = "Word Template";
      url = "/nlapps/images/type_docx.gif";
      break;
    case "eml": case "msg":
      name = "Email Message";
      url = "/nlapps/images/type_msg.gif";
      break;
    case "exe":
      name = "Application";
      url = "/nlapps/images/type_app.gif";
      break;
    case "gif": case "jpg": case "jpeg": case "png":
      name = "Image";
      url = "/nlapps/images/type_img.gif";
      break;
    case "htm": case "html":
      name = "HTML";
      url = "/nlapps/images/type_html.gif";
      break;
    case "mdb": case "ade": case "adp":
      name = "Microsft Access";
      url = "/nlapps/images/type_mdb.gif";
      break;
    case "mid": case "mp3": case "wma": case "wav":
      name = "Audio";
      url = "/nlapps/images/type_audio.gif";
      break;
    case "mpg": case "wmv": case "avi": case "mpeg": case "asx": case "flv":
      name = "Video";
      url = "/nlapps/images/type_video.gif";
      break;
    case "mpp":
      name = "Microsoft Project";
      url = "/nlapps/images/type_mpp.gif";
      break;
    case "pdf":
      name = "PDF";
      url = "/nlapps/images/type_pdf.gif";
      break;
    case "potx":
      name = "PowerPoint Template";
      url = "/nlapps/images/type_potx.gif";
      break;
    case "pps":
      name = "PowerPoint";
      url = "/nlapps/images/type_pps.gif";
      break;
    case "ppt":
      name = "PowerPoint";
      url = "/nlapps/images/type_ppt.gif";
      break;
    case "ppsx":
      name = "Slide Show";
      url = "/nlapps/images/type_ppsx.gif";
      break;
    case "pptx":
      name = "PowerPoint";
      url = "/nlapps/images/type_pptx.gif";
      break;
    case "sldx":
      name = "Slide";
      url = "/nlapps/images/type_sldx.gif";
      break;
    case "txt":
      name = "Text";
      url = "/nlapps/images/type_text.gif";
      break;
    case "vsd":
      name = "Visio";
      url = "/nlapps/images/type_vsd.gif";
      break;
    case "xlam":
      name = "Excel Add-in";
      url = "/nlapps/images/type_xlam.gif";
      break;
    case "xls": case "xlt":
      name = "Excel";
      url = "/nlapps/images/type_xls.gif";
      break;
    case "xlsb":
      name = "Excel Binary Worksheet";
      url = "/nlapps/images/type_xlsb.gif";
      break;
    case "xlsx":
      name = "Excel";
      url = "/nlapps/images/type_xlsx.gif";
      break;
    case "xltx":
      name = "Excel Template";
      url = "/nlapps/images/type_xlst.gif";
      break;
    case "zip":
      name = "WinZip";
      url = "/nlapps/images/type_zip.gif";
      break;
    default:
      return null;
  }
  var imgElem = document.createElement("IMG");
  imgElem.src= url;
  imgElem.alt= name;
  imgElem.border= "0";
  imgElem.align= "absbottom";
  return imgElem;
}


chainToOnLoad("InstrumentAttachmentHyperlinks()");
