home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD 71 / SUPERCD71.iso / Microsoft / nuevo / ES_IE60.SP1 / es / ieak6cd.exe / 1033 / RCDATA / CABINET / ieakhelp.chm / shared.js < prev    next >
Text File  |  2002-08-30  |  72KB  |  1,885 lines

  1. // Filename: shared.js
  2. // Version shared.js for Whistler
  3. // version post b2
  4.  
  5. //************************************************ Shared components path setting *****************************************
  6. //*******************************************************************************************************************
  7. //    Date   03/30/01
  8. //  
  9.  
  10. set_path = "" + document.URL
  11. ntshared = set_path.indexOf("::/")
  12.  
  13. if (ntshared == -1) {
  14.     var moniker= "ms-its:";                  
  15.     var sSharedCHM = moniker+"ieakhelp.chm::/";         
  16.     }                                                    
  17. else
  18.     {
  19.     path = set_path.substring(0,ntshared)
  20.     path = path.toLowerCase()
  21.     ntshared = path.lastIndexOf("\\")
  22.     var moniker = path.substring(0,ntshared)+ "\\";
  23.     //var ntshared = moniker.lastIndexOf("\\")
  24.     //var moniker = moniker.substring(0,ntshared) + "\\";
  25.     var sSharedCHM= moniker+"ieakhelp.chm::/";
  26.     }
  27.  
  28.  
  29.  
  30.  
  31. //************************************************ EVENT HANDLING ********************************************
  32. //*******************************************************************************************************************
  33. //  re-directs to the proper event-driven functions.
  34.  
  35. // window.onload = load_object;
  36. window.onload = loadPage;
  37. document.onclick= onclickTriage;
  38. document.onmouseover= gettingHot;
  39. document.onmouseout= gettingCold;
  40. window.onunload=saveChecklistState;
  41. window.onresize= resizeDiv;
  42.  
  43. window.onbeforeprint = set_to_print;
  44. window.onafterprint = reset_form;
  45.         
  46. //********************************************  USER-DEFINED GLOBAL VARIABLES  ************************************
  47. //********************************************************************************************************************
  48. //  The images listed below can all be changed by the user.
  49. var isIE5 = (navigator.appVersion.indexOf("MSIE 5")>0) || (navigator.appVersion.indexOf("MSIE")>0 && parseInt(navigator.appVersion)> 4);
  50. var isIE55 = (navigator.appVersion.indexOf("MSIE 5.5")>0);
  51. if (isIE5 && isIE55) isIE5 = false;
  52. var isIE6 = (navigator.appVersion.indexOf("MSIE 6")>0);
  53. var isIE4 = (navigator.appVersion.indexOf("MSIE 4")>0);
  54.  
  55. if (isIE4){
  56.     var moniker= "ms-its:";                                         // moniker= ""; for flat files
  57.     var sSharedCHM= moniker+"ieakhelp.chm::/";
  58. }
  59.  
  60.  
  61. if (!isIE5 && !isIE55 && !isIE4 && !isIE6) {
  62.     isIE6 = true;
  63.     }
  64.  
  65.  
  66. var sShortcutTip= "";
  67.  
  68. var gifwithin = false;
  69.  
  70. if(!isIE4){
  71.     xmldoc = new ActiveXObject("microsoft.XMLDOM");
  72.     xmldoc.async = false;
  73.     xmldoc.load(sSharedCHM + "alttext.xml");
  74.  
  75.     var Alt_sPreviousTip= xmldoc.getElementsByTagName("sPreviousTip")
  76.     var Alt_sNextTip= xmldoc.getElementsByTagName("sNextTip")
  77.     var Alt_sExpandTip= xmldoc.getElementsByTagName("sExpandTip")
  78.     var Alt_sPopupTip= xmldoc.getElementsByTagName("sPopupTip")
  79.     var hld_path2reuse= xmldoc.getElementsByTagName("path2reuse")
  80.     var hld_path2glossary= xmldoc.getElementsByTagName("path2glossary")
  81.     var hld_rel_gif = xmldoc.getElementsByTagName("reltopgif")
  82.     var hld_chmName = xmldoc.getElementsByTagName("chmName")
  83.     var hld_emailer = xmldoc.getElementsByTagName("emailer")
  84.     var hld_sendtext = xmldoc.getElementsByTagName("sendtext")
  85.     var hld_sendto = xmldoc.getElementsByTagName("sendto")
  86.     
  87.     //<SMARTHELP>
  88.  
  89.    var defaultStartMode;
  90.    var defaultCPanelMode;
  91.    var smartErrorTextNode;
  92.    var smartErrorText;
  93.    var xmldocSKUSettings;
  94.  
  95.    // Grab the ALTTEXT.XML enteries for smart span classes.
  96.    // Get SKU specific defaults.
  97.    var defaultSKUSettingsURL = xmldoc.documentElement.selectSingleNode("smartreusabletext");
  98.    if (defaultSKUSettingsURL != null) {
  99.       if (defaultSKUSettingsURL.text == sSharedCHM + "alttext.xml") {
  100.           xmldocSKUSettings = xmldoc;
  101.       } else {
  102.          xmldocSKUSettings = new ActiveXObject("microsoft.XMLDOM");
  103.          xmldocSKUSettings.async = false;
  104.          xmldocSKUSettings.load(moniker + defaultSKUSettingsURL.text);
  105.       }
  106.       if (xmldocSKUSettings.documentElement != null) {
  107.          defaultStartMode = xmldocSKUSettings.documentElement.selectSingleNode("smartstartdefault");
  108.          defaultCPanelMode = xmldocSKUSettings.documentElement.selectSingleNode("smartcpaneldefault");
  109.          smartErrorTextNode = xmldocSKUSettings.documentElement.selectSingleNode("smarterrortext");
  110.          smartErrorText = smartErrorTextNode ? smartErrorTextNode.text : "XOXOX";
  111.       }
  112.    } // (defaultSKUSettingsURL != NULL)
  113.  
  114. //</SMARTHELP>
  115.  
  116.     
  117.     var sPreviousTip="" + Alt_sPreviousTip.item(0).nodeTypedValue
  118.     var sNextTip="" + Alt_sNextTip.item(0).nodeTypedValue
  119.     var sExpandTip="" + Alt_sExpandTip.item(0).nodeTypedValue
  120.     var sPopupTip="" + Alt_sPopupTip.item(0).nodeTypedValue
  121.     var path2reuse="" + hld_path2reuse.item(0).nodeTypedValue
  122.     var path2glossary="" + hld_path2glossary.item(0).nodeTypedValue
  123.     var rel_gif="" + hld_rel_gif.item(0).nodeTypedValue
  124.     var chmName="" + hld_chmName.item(0).nodeTypedValue+"::/"
  125.     var emailer="" + hld_emailer.item(0).nodeTypedValue
  126.     var sendtext="" + hld_sendtext.item(0).nodeTypedValue
  127.     var sendto="" + hld_sendto.item(0).nodeTypedValue
  128.     
  129. var xmldom = new ActiveXObject("microsoft.XMLDOM");
  130.     xmldom.async = false;
  131.     
  132. //if (!xmlLoaded) {
  133.  
  134.             xmldoc = new ActiveXObject("microsoft.XMLDOM");
  135.  
  136.             // Init Properties
  137.             xmldoc.async = false;
  138.             xmldoc.validateOnParse = false; // improve perf
  139.             xmldoc.resolveExternals = false;
  140.             xmldoc.preserveWhiteSpace = false;
  141.  
  142.             // Load Document
  143.             xmldoc.load(moniker + path2reuse + "reusable.xml");
  144.             // if (xmldoc == null || xmldoc.documentElement == null) return;     // couldn't open reusable.xml
  145.             xmlLoaded = true;
  146. //         }
  147.  
  148. } // skip all this because ie4 doesn't support xml.
  149. else
  150. {
  151. var sPreviousTip="" 
  152.     var sNextTip=""
  153.     var sExpandTip=""
  154.     var sPopupTip=""
  155.     var rel_gif="no"
  156. }
  157.  
  158. var closed = sSharedCHM + "plusCold.gif";            //image used for collapsed item in callExpand()
  159. var closedHot = sSharedCHM + "plusHot.gif";            //hot image used for collapsed item in callExpand()
  160. var expand = sSharedCHM + "minusCold.gif";            //image used for expanded item in callExpand()
  161. var expandHot = sSharedCHM + "minusHot.gif";        //hot image used for expanded item in callExpand()
  162.  
  163. var previousCold= sSharedCHM + "previousCold.gif";
  164. var previousHot= sSharedCHM + "previousHot.gif"; 
  165. var nextCold= sSharedCHM + "nextCold.gif";
  166. var nextHot= sSharedCHM + "nextHot.gif"; 
  167.  
  168. var shortcutCold= sSharedCHM + "shortcutCold.gif";
  169. var shortcutHot= sSharedCHM + "shortcutHot.gif";
  170.  
  171. var popupCold= sSharedCHM + "popupCold.gif";
  172. var popupHot= sSharedCHM + "popupHot.gif";
  173.  
  174. var emptyImg= sSharedCHM + "empty.gif";        //image used for empty expand
  175. var noteImg= sSharedCHM + "note.gif";            //image used for notes
  176. var tipImg= sSharedCHM + "tip.gif";            //image used for tips
  177. var warningImg= sSharedCHM + "warning.gif";        //image used for warnings
  178. var cautionImg= sSharedCHM + "caution.gif";        //image used for cautions
  179. var importantImg= sSharedCHM + "important.gif";        //image used for important notice
  180. var relTopicsImg= sSharedCHM + "rel_top.gif";        //image used for important notice
  181.  
  182. var branchImg= sSharedCHM + "elle.gif";
  183. var branchImg_RTL= sSharedCHM + "elle_rtl.gif";
  184.  
  185.  
  186. //********************************************  GLOBAL VARIABLES  ******************************************
  187. //********************************************************************************************************
  188.  
  189. var joejoe = false;
  190. var printing = false;
  191. var single = "FALSE";
  192. var scroller = "FALSE";
  193. var valet = "FALSE";
  194. var isRTL= (document.dir=="rtl");
  195. var imgStyleRTL= ""; 
  196.       if (isRTL) imgStyleRTL=" style='filter:flipH' ";
  197.  
  198. var sActX_TDC= "CLASSID='CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83'";        //Tabular Data Control  for  reusable text data
  199. var sSharedReusableTextFile= sSharedCHM + "reusable.xml";                                        // common reusable text file
  200. var sSharedReusableTextFileRecord= "para";                                                        //reusable text record
  201.  
  202. var numbers= /\d/g;                //javascript regular expression
  203. var spaces= /\s/g;                //javascript regular expression
  204. var semicolon= /;/g;            //javascript regular expression
  205.  
  206. var isPersistent= false;
  207.  
  208.  
  209.  
  210.     
  211. //********************************************  INITIALIZATION  *************************************************
  212. //******************************************************************************************************************
  213. function list_them(){
  214.         
  215.     var envelope = sSharedCHM +'envelope.gif';
  216.     var server = "<DIV Class='FeedbackBar'><SPAN Class='webOnly'><IMG  SRC=" + envelope + " ALT='' BORDER='0'></SPAN><SPAN Class='webOnly' Style='position:relative; top:-1; left:1; color:#333333;'> " + sendtext + " "; 
  217.     server += "<a href='mailto:" + sendto + "?subject=HELP: ";
  218.     server += document.title + "'";
  219.     server += ">" + sendto + "</a></SPAN></DIV>";
  220.     
  221.     var i;
  222.  
  223.     for (i=0; i < document.all.length; i++){
  224.         if ((document.all[i].tagName == "P") ||
  225.             (document.all[i].tagName == "H1")||
  226.             (document.all[i].tagName == "H6")){
  227.             document.all[i].outerHTML = server + document.all[i].outerHTML;
  228.             i = document.all.length;
  229.             }
  230.         }
  231. }
  232. //*** loadPage **********************************************************************************************
  233. //  Adds the default image tags and re-usable text to the HTML page.
  234.  
  235. function loadPage(){
  236. if (printing == true) return;
  237.  
  238. if (emailer == "yes" ) list_them();
  239.  
  240. isPersistent= (document.all.item("checklist")!=null) && ((isIE5) || (isIE55) ||(isIE6));
  241.  
  242.   setPreviousNext();
  243.   
  244.   resizeDiv();
  245.   if (isPersistent) getChecklistState();
  246.    
  247.      load_object();
  248.     addReusableText();
  249.     
  250.     insertImages();
  251. }
  252.  
  253. //****** setPreviousNext  ************************************************************************ ********************************************************************************************* 
  254. // insert previous/next navbar
  255. // called by: <div id="nav">@@HTMLsequenceFile.txt or .lst@@</div>
  256.  
  257. function setPreviousNext(){
  258.  
  259.   var oNav = document.all.item("nav");
  260.         if (oNav == null ) return;
  261.   
  262.   var sPreviousALT= sPreviousTip;
  263.   var sNextALT= sNextTip;
  264.   var sHTMLfile= oNav.innerHTML;
  265.  
  266.   var imgPrev= "<IMG SRC='"+previousCold+"' BORDER=0 ALT='"+ sPreviousALT +"' ALIGN='top' "+ imgStyleRTL +">";
  267.   var imgNext= "<IMG SRC='"+nextCold+"' BORDER=0 ALT='"+ sNextALT  + "' ALIGN='top' "+ imgStyleRTL +">";
  268.   
  269.   var previousNextObject= "<OBJECT ID='HTMlist' WIDTH=100 HEIGHT=51 " + sActX_TDC +"><param name='DataURL' value='"
  270.         +sHTMLfile +"'><param name='UseHeader' value=True></OBJECT>";
  271.       
  272.         oNav.innerHTML= "<TABLE WIDTH='100%' STYLE='margin-top:0;' cellspacing=0>"
  273.         + "<TR><TD style='text-align=left; background-color:transparent'><A ID='previousLink' HREF='#' REL='previous' CLASS='navbar'>"
  274.         +imgPrev + "</A></TD><TD width='100%' align='center'></td><TD style='text-align=right; background-color:transparent'><A ID='nextLink' HREF='#' REL='next' CLASS='navbar'>"
  275.         +imgNext+ "</A></TD></TR></TABLE>";
  276.                     
  277.       document.body.innerHTML= document.body.innerHTML +  previousNextObject;
  278.       findPageSeq();
  279.       if (printing == true) return;
  280.       var  thisLoc= document.location.href +"#";
  281.  
  282.       if (previousLink.href== thisLoc) previousLink.style.display="none";
  283.       else  previousLink.style.display="block";
  284.  
  285.       if (nextLink.href== thisLoc) nextLink.style.display="none";
  286.       else  nextLink.style.display="block";
  287.       
  288. }
  289.  
  290. function findPageSeq() {
  291.  
  292. var rs= HTMlist.recordset;
  293. var thisLoc= document.location.href;
  294. var iLoc= thisLoc.lastIndexOf("/");
  295.  
  296.     if (iLoc > 0) thisLoc= thisLoc.substring(iLoc+1, thisLoc.length);
  297.     
  298.     
  299.     if (nav.style == "[object]") {
  300.                 nav.style.visibility="hidden";
  301.                 printing = false;
  302.                 }
  303.         else
  304.             {
  305.                 printing = true;
  306.                 return;
  307.             }
  308.     
  309.        
  310.     rs.moveFirst();
  311.        
  312.     while (!rs.EOF) {
  313.           if (thisLoc == rs.fields("HTMfiles").value){
  314.               nav.style.visibility="visible"; 
  315.                 rs.MoveNext();
  316.               break;
  317.           }
  318.           previousLink.href=rs.fields("HTMfiles").value;      
  319.           rs.moveNext();
  320.      }
  321.                 
  322.       if (!rs.EOF) nextLink.href=rs.fields("HTMfiles").value;
  323. }
  324.     
  325. //******Re-usable text ********************************************************************************************* 
  326. // Inserts the Tabular Data Control (TDC) object at the end of the page 
  327. // Inserts "re-usable text" from the txt file at: <span id="@@CHM_name@@@@index#@@" class="reuse"></span>
  328. // e.g.<span id="printing4" class="reuse"></span> for record#4 in the printing.txt in printing.chm.
  329.  
  330. // <SMARTREUSABLETEXT>
  331.  
  332. // addReusableText() - called during document load to find all references
  333. // render time bound <SPAN> contents.  Extracts content resources from reusable.xml.
  334. //
  335. // "class" names bound (reuse, smart)
  336. // "reuse" static lookup of commonly referred to text.
  337. // "smart" dynamic lookup of navigation text relevent 
  338. //         to the shell presentation of the start menu 
  339. //         and the control panel, (simple and classic), for the logged on user.
  340. //         Requires inserting custom <OBJECT> supported by Help and Support Services viewer.
  341. //         Currently not available from HTML Help control. 2000/01/12.
  342. //
  343. function smarthelperror(){
  344.     // alert("error - error")
  345.     addReusableText();
  346.     
  347.     insertImages();
  348.     return true;
  349.     // alert("error - error")
  350.     }
  351.  
  352. //var obj = window.document.createElement("OBJECT");
  353.     
  354. function load_object(){
  355.             if(!isIE6) return;
  356.             
  357.             window.onerror = smarthelperror;
  358.             
  359.             var obj = window.document.createElement("OBJECT");
  360.             var sActX_PCHealth = "CLSID:FC7D9E02-3F9E-11d3-93C0-00C04F72DAF7";
  361.            objLoaded = true;    
  362.            obj.width = 1;
  363.            obj.height = 1;
  364.         
  365.            obj = document.body.insertAdjacentElement("beforeEnd", obj)
  366.            obj.id = "pchealth";
  367.            obj.classid = sActX_PCHealth;
  368.           // alert("success")
  369.        }
  370.  
  371. function addReusableText(){
  372.     if (isIE4) return;    // no reusable text for IE4
  373.    var coll = document.all.tags("SPAN");
  374.    var xmlLoaded = false;
  375.    var control = null;
  376.    var thisID;
  377.    var strKey;
  378.    var text;
  379.  
  380.    // original error text
  381.    text = "OXO";
  382.  
  383.    //<SMARTREUSABLETEXT>
  384.    //queried state of shell presentation for start menu and control panel.
  385.    var menuSimple = false;
  386.    var controlSimple = false;
  387.  
  388.    // holds calculated lookup suffixes for smart class items.
  389.    var strSuffixStartMenuOnly = "";
  390.    var strSuffixStartMenuAndControlPanel = "";
  391.  
  392.    // smart class UserSettings Interface classid
  393.    var sActX_PCHealth = "CLSID:FC7D9E02-3F9E-11d3-93C0-00C04F72DAF7";
  394.  
  395.    // smart class lookup suffixes per shell presentation mode.
  396.    // TODO: Findout where these constants are best documented.
  397.    var strMenuClassic =   "_smclassic";
  398.    var strMenuSimple =    "_smsimple";
  399.    var strCPanelClassic = "_cpclassic";
  400.    var strCPanelSimple =  "_cpsimple";
  401.  
  402.    // only attempt to query once per rendering
  403.    var bPresentationModeQueried = false;
  404.    //</SMARTREUSABLETEXT>
  405.     span_count = coll.length;
  406.    // Check every span in the document.
  407.    for (var i=0; i< span_count; i++) {
  408.     
  409.       var thisSpan = coll[i];
  410.       var spanClass = thisSpan.className.toLowerCase();
  411.       if (spanClass == "reuse" || spanClass == "smart") {
  412.          if (isRTL) thisSpan.dir = "rtl";
  413.          if (thisSpan.id == null) break;
  414.  
  415.          // strKey is the key we'll use to look up the replaceable text in the XML file
  416.          strKey = thisSpan.id.toLowerCase();
  417.          
  418.         
  419.            
  420.          // skip smart tags when defaults are not present
  421.          if ((defaultSKUSettingsURL != null) && (xmldocSKUSettings.documentElement != null)) {
  422.             if (spanClass == "smart") {
  423.              
  424.                // Query Presentation Mode once per rendering.
  425.                if (!bPresentationModeQueried) {
  426.                 
  427.                   bPresentationModeQueried=true;
  428.  
  429.                   // Set To Defaults
  430.                   if (defaultStartMode != null) {
  431.                      menuSimple = (defaultStartMode.text == strMenuSimple);
  432.                   } else {
  433.                      menuSimple = true;
  434.                   }
  435.  
  436.                   if (defaultCPanelMode != null) {
  437.                      controlSimple = (defaultCPanelMode.text == strCPanelSimple);
  438.                   } else {
  439.                      controlSimple = true;
  440.                   }
  441.                        
  442.                   
  443.                     
  444.                  // alert("inside of reuse")
  445.  
  446.                   // Get the current user's presentation settings
  447.                   // Attempt to read smart help values from system
  448.                   var test = window.document.all("pchealth");
  449.                   
  450.                   if (test != null) {
  451.                       
  452.                      if (test.UserSettings != null) {                        
  453.                           
  454.                    
  455.                             menuSimple = test.UserSettings.IsStartPanelOn;
  456.                     
  457.                             controlSimple = test.UserSettings.IsWebViewBarricadeOn;
  458.                                                 
  459.                         
  460.                      }
  461.                      else
  462.                      {
  463.                          menuSimple = (defaultStartMode.text == strMenuSimple)
  464.                         controlSimple = (defaultCPanelMode.text == strCPanelSimple);
  465.                     }
  466.                              
  467.                          
  468.                     
  469.                         
  470.                  }// (test != null)
  471.  
  472.               }// (!bPresentationModeQueried)
  473.  
  474.               // get the error text to display
  475.               text = smartErrorText;
  476.  
  477.               // Build key suffixes. One for start menu only and one for start menu and control panel.
  478.               strSuffixStartMenuOnly = (menuSimple ? strMenuSimple : strMenuClassic);
  479.               strSuffixStartMenuAndControlPanel = strSuffixStartMenuOnly + (controlSimple ? strCPanelSimple : strCPanelClassic);
  480.  
  481.               // The actual key could have either strSuffixStartMenuOnly or strSuffixStartMenuAndControlPanel suffixes.
  482.               // strSuffixStartMenuAndControlPanel has precedence over strSuffixStartMenuOnly
  483.               strKey = strKey + strSuffixStartMenuAndControlPanel;
  484.                 //alert(strKey)
  485.             }//if (spanClass == "smart")
  486.  
  487.          }// ((defaultSKUSettingsURL != null) && (xmldocSKUSettings.documentElement != null))
  488.  
  489.          // Lookup XML node containing reference
  490.  
  491.          var strNodeSelector = "glossSection/entry[@entryID='" + strKey + "']/scopeDef/def";
  492.          var node = xmldoc.documentElement.selectSingleNode(strNodeSelector);
  493.  
  494.          // if we haven't found the node yet, try the other suffix if this is a smart span
  495.          if (node == null && spanClass == "smart" && (defaultSKUSettingsURL != null) && (xmldocSKUSettings.documentElement != null)) {
  496.             // one more try--use the other suffix
  497.             strKey = thisSpan.id.toLowerCase() + strSuffixStartMenuOnly;
  498.             strNodeSelector = "glossSection/entry[@entryID='" + strKey + "']/scopeDef/def";
  499.             node = xmldoc.documentElement.selectSingleNode(strNodeSelector);
  500.          }
  501.  
  502.         // okay, we found the node, get the text
  503.          // alert(coll.length)
  504.          if (node != null) {
  505.             // replace the span's contents with the reusable text
  506.             thisSpan.insertAdjacentHTML("BeforeBegin",node.text);
  507.             // var coll = document.all.tags("SPAN");
  508.             thisSpan.className = "anything"
  509.             thisSpan.innerHTML = "";
  510.             //alert(node.text)
  511.              //thisSpan.innerHTML = node.text;
  512.          } else {
  513.                  // error shown by this  OXO
  514.                thisSpan.innerHTML = text;
  515.          }
  516.         
  517.       } // if (spanClass == "reuse" || spanClass == "smart")
  518.    }// for
  519.  
  520. }// addReusableText()
  521. // <SMARTREUSABLETEXT>
  522.  
  523.  
  524. //****** insertImages ********************************************************************************************* 
  525. //  Inserts shared images in User-Defined Variables section and thumbnails.
  526. var booking = false;
  527. function insertImages(){
  528.  
  529. if (printing == false) booking = true;
  530. if (printing == true && booking == true ) {
  531.     booking = false;
  532.     return;
  533.     }
  534. // insert alert icons
  535.   var collP = document.all.tags("P");
  536.   
  537.   for (var i=0; i<collP.length; i++) {
  538.        if (collP[i].className.toLowerCase()=="note")            collP[i].innerHTML ="<img class='alert' src='"+noteImg+"' "+ imgStyleRTL +"> " +     collP[i].innerHTML;
  539.        else if (collP[i].className.toLowerCase()=="warning")    collP[i].innerHTML ="<img class='alert' src='"+warningImg+"'> " +  collP[i].innerHTML;
  540.        else if (collP[i].className.toLowerCase()=="caution")    collP[i].innerHTML ="<img class='alert' src='"+cautionImg+"'> " +  collP[i].innerHTML;
  541.        else if (collP[i].className.toLowerCase()=="tip")        collP[i].innerHTML ="<img class='alert' src='"+tipImg+"'> " +      collP[i].innerHTML;
  542.        else if (collP[i].className.toLowerCase()=="important")  collP[i].innerHTML ="<img class='alert' src='"+importantImg+"'> " + collP[i].innerHTML;
  543.        else if (collP[i].className.toLowerCase()=="empty")      collP[i].innerHTML ="<img class='alert' src='"+emptyImg+"'> " +    collP[i].innerHTML;
  544.        if (collP[i].className.toLowerCase()=="reltopics" && rel_gif == "yes")  {
  545.             collP[i].outerHTML ="<img class='relTopics' src='"+relTopicsImg+"'> " + collP[i].outerHTML;
  546.             }   
  547.           }
  548.   
  549. //alert(printing)
  550. //alert(isIE55)
  551. //indents for Navigation Tree 
  552. var collUL = document.all.tags("UL");
  553. if (!printing) {
  554. for (var i=0; i<collUL.length; i++) {
  555.        var indent= 0;
  556.        if (collUL[i].className.toLowerCase()=="navtree"){
  557.            if (isRTL) collUL[i].style.listStyleImage= "url('" + branchImg_RTL + "')";
  558.            else collUL[i].style.listStyleImage= "url('" + branchImg + "')";
  559.              for (var j = 0; j < collUL[i].children.length; j++)
  560.                 if (collUL[i].children[j].className.toLowerCase()=="branch"){
  561.                     if (isRTL) collUL[i].children[j].style.marginRight= (indent +'em');
  562.                     else   collUL[i].children[j].style.marginLeft= (indent +'em');
  563.                     indent= indent + 0.75;
  564.                 }
  565.       }
  566. }
  567. }
  568.    
  569.   for (var i=0; i < document.anchors.length; i++){
  570.          var imgInsert="";  
  571.          var imgStyle= "";
  572.          var imgSpace= "<span class='space'></span>";      
  573.          var oBefore=document.anchors[i].parentElement.tagName;
  574.          var oAnchor= document.anchors[i].id.toLowerCase();
  575.          
  576. // insert RELTOPICS icons
  577.     if (rel_gif == "yes"){
  578.        if (oAnchor=="reltopics")
  579.                if (document.anchors[i].children.tags("IMG")(0) && document.anchors[i].children.tags("IMG")(0).className.toLowerCase() == "reltopics")
  580.                     imgInsert= "";    // not to re-insert when persistent
  581.             else  imgInsert= "<img class='relTopics' src='"+relTopicsImg+"'>" + imgSpace;
  582.         }
  583.         
  584. // insert SHORTCUT icons
  585.        if (oAnchor=="shortcut") {    
  586.             document.anchors[i].title= sShortcutTip;     
  587.             if (document.anchors[i].children.tags("IMG")(0) && document.anchors[i].children.tags("IMG")(0).className.toLowerCase() == "shortcut")
  588.                     imgInsert= "";    // not to re-insert when persistent
  589.             else  imgInsert= "<img class='shortcut' src='"+shortcutCold+"' "+ imgStyleRTL+ ">" + imgSpace;
  590.         }    
  591.                       
  592. // insert POPUP icons
  593.        else if (oAnchor=="wpopup" || oAnchor=="wpopupweb") document.anchors[i].title= sPopupTip;
  594.        else if (document.anchors[i].className.toLowerCase()=="popupicon")
  595.             if (document.anchors[i].children.tags("IMG")(0) && document.anchors[i].children.tags("IMG")(0).className.toLowerCase() == "popup")
  596.                    imgInsert= "";    // not to re-insert when persistent
  597.             else imgInsert= "<img class='popup' src='"+popupCold+"'>" + imgSpace;
  598.  
  599. // insert EXPAND icons 
  600.        else if (oAnchor=="expand") {
  601.               document.anchors[i].title= sExpandTip;
  602.               if (document.anchors[i].children.tags("IMG")(0) && document.anchors[i].children.tags("IMG")(0).className.toLowerCase() == "expand")
  603.                   imgInsert= "";     // not to re-insert when persistent      
  604.               else{ 
  605.                   if (document.anchors[i].parentElement.offsetLeft == document.anchors[i].offsetLeft) {
  606.                       imgSpace= "<span class='space' style='width:0'></span>";     
  607.                       if (isRTL){ document.anchors[i].parentElement.style.marginRight= "1.5em";  imgStyle=" style=margin-right:'-1.5em'";}
  608.                       else { document.anchors[i].parentElement.style.marginLeft= "1.5em";  imgStyle=" style=margin-left:'-1.5em'";}
  609.                   }      
  610.                   imgInsert= "<img class='expand' src='"+ closed +"' "+imgStyle+">" +imgSpace;
  611.               }
  612.        }
  613.  
  614.  
  615.  
  616. // insert thumbnail images       
  617.        else if (oAnchor=="thumbnail"  || oAnchor=="thumbnailweb"){ 
  618.             var sAltText = document.anchors[i].innerHTML;
  619.             gifwithin = true;
  620.             var sThumbnailText = document.anchors[i].title; 
  621.             var oImg = document.anchors[i].href.toLowerCase();
  622.                   if (oAnchor=="thumbnail") 
  623.                          var sThumbnailImg= moniker + getURL(oImg);
  624.                   else var sThumbnailImg = document.anchors[i].href.toLowerCase();
  625.                   
  626.                  found = sAltText.indexOf("BACKGROUND-COLOR:")
  627.             if (found != -1) {
  628.                 stop_p = sAltText.indexOf(">");
  629.                 sAltText = sAltText.substring(stop_p + 1, sAltText.length);
  630.                 stop_p = sAltText.indexOf("</FONT>");
  631.                 Highlighted = sAltText.substring(0,stop_p)
  632.                 sAltText = Highlighted + sAltText.substring(stop_p + 7, sAltText.length);
  633.                 }
  634.  
  635.                   
  636.                 document.anchors[i].outerHTML = "<DIV id='thumbDiv' class='thumbnail'>"+document.anchors[i].outerHTML+"</div>";
  637.                 document.anchors[i].innerHTML = "<img class='thumbnail' src='" + sThumbnailImg + "' alt= ' " + sAltText + "'><p>" +sThumbnailText+"</p>";
  638.                 
  639.                   if (isRTL) thumbDiv.style.styleFloat= "right";
  640.            }
  641.            
  642.         
  643.         
  644.         document.anchors[i].innerHTML = imgInsert + document.anchors[i].innerHTML;
  645.        if (isRTL) document.anchors[i].dir="rtl";
  646.    }
  647. }
  648.  
  649.  
  650.  
  651. //***** onclickTriage ****************************************************************************************
  652. // redirects to the appropriate function based on the ID of the clicked <A> tag.
  653.  
  654. function onclickTriage(){
  655. var e= window.event.srcElement;
  656.  
  657. //  if the innerHTML in the <a> tag is encapsulated by a style tag or hightlighted in the word seach,
  658. //  the parentElement is called.
  659.  
  660.     if ((isIE55 || isIE6) && printing == true) {
  661.         printing = false;
  662.         reset_form();
  663.         }
  664.         
  665.     for (var i=0; i < 5; i++)
  666.            if (e.tagName!="A" && e.parentElement!=null) e= e.parentElement;
  667.     eID= e.id.toLowerCase();
  668.                 
  669.     if (popupOpen) closePopup();
  670.     
  671. // expand image in a new window
  672.     if (eID=="thumbnail" || eID=="pophtm") popNewWindow(e);
  673.     else if (eID=="thumbnailweb") callThumbnailWeb(e);
  674.     else if (eID=="wpopup")    callPopup(e);
  675.     else if (eID=="wpopupweb") callPopupWeb(e);
  676.     else if (eID=="shortcut")  callShortcut(e);
  677.     else if (eID=="reltopics") callRelatedTopics(e);
  678.     else if (eID=="altloc")    callAltLocation(e);
  679.     else if (eID=="expand")    callExpand(e);
  680. // added to support Randy's Quad method code
  681.     else QuadDocumentClick()
  682. // ******************************
  683. }
  684.  
  685.  
  686. //*** gettingHot ****************************************************************************************
  687. // Makes all the required changes for mouseover.
  688.  
  689. function gettingHot() {
  690. var e = window.event.srcElement;
  691.     
  692.   if (e.id.toLowerCase()=="cold")  e.id ="hot";
  693.   else if (e.src== previousCold)  e.src = previousHot;
  694.   else if (e.className.toLowerCase()=="navbar" && e.children.tags("IMG")(0).src== previousCold)  e.children.tags("IMG")(0).src= previousHot;
  695.   else if (e.src== nextCold)  e.src = nextHot;
  696.   else if (e.className.toLowerCase()=="navbar" && e.children.tags("IMG")(0).src== nextCold)  e.children.tags("IMG")(0).src= nextHot;
  697.   
  698.   else if (e.className.toLowerCase()=="shortcut" && e.tagName=="IMG")  e.src = shortcutHot;            //<img> tags have a class
  699.   else if (e.id.toLowerCase()=="shortcut")  e.children.tags("IMG")(0).src = shortcutHot;            //<a> tags have an ID
  700.   
  701.   else if (e.className.toLowerCase()=="popup" && e.tagName=="IMG")  e.src = popupHot;            //<img> tags have a class
  702.   else if (e.className.toLowerCase()=="popupicon")  e.children.tags("IMG")(0).src = popupHot;            //<a> tags have an ID
  703.   
  704.   else if ((e.className.toLowerCase()=="expand" && e.tagName=="IMG") ||( e.id.toLowerCase()=="expand")) expandGoesHot(e);
  705.  
  706.  // Added to support Quad Method   **************************
  707.     if (e != null && e.firstChild != null && 
  708.         e.firstChild.tagName != null &&
  709.         e.firstChild.tagName.toLowerCase() == "input" && 
  710.         e.firstChild.type.toLowerCase() == "radio" && 
  711.         e.parentElement.className != "indentGray"){
  712.             QuadDocumentMouseOver()
  713.             }
  714.  
  715. // *****************************
  716. }
  717.  
  718. //*** gettingCold **************************************************************************************
  719. // Initial state for mouseout.
  720.  
  721. function gettingCold() {
  722. var e = window.event.srcElement;
  723.  
  724.  
  725.  
  726.   if (e.id.toLowerCase()=="hot")  e.id ="cold";
  727.   else if (e.src== previousHot)  e.src = previousCold;
  728.   else if (e.className.toLowerCase()=="navbar" && e.children.tags("IMG")(0).src== previousHot)  e.children.tags("IMG")(0).src= previousCold;
  729.   else if (e.src== nextHot)  e.src = nextCold;
  730.   else if (e.className.toLowerCase()=="navbar" && e.children.tags("IMG")(0).src== nextHot)  e.children.tags("IMG")(0).src= nextCold;
  731.   
  732.   else if (e.className.toLowerCase()=="shortcut" && e.tagName=="IMG")   e.src = shortcutCold;        //<img> tags have a class
  733.   else if (e.id.toLowerCase()=="shortcut")  e.children.tags("IMG")(0).src= shortcutCold;             //<a> tags have an ID
  734.   
  735.   else if (e.className.toLowerCase()=="popup" && e.tagName=="IMG")   e.src = popupCold;        //<img> tags have a class
  736.   else if (e.className.toLowerCase()=="popupicon")  e.children.tags("IMG")(0).src= popupCold;             //<a> tags have an ID
  737.   
  738.   else if ((e.className.toLowerCase()=="expand" && e.tagName=="IMG") ||( e.id.toLowerCase()=="expand")) expandGoesCold(e);
  739.   
  740.   // Added to support Quad Method   **************************
  741.     if (e != null && e.firstChild != null && 
  742.         e.firstChild.tagName != null &&
  743.         e.firstChild.tagName.toLowerCase() == "input" && 
  744.         e.firstChild.type.toLowerCase() == "radio" && 
  745.         e.parentElement.className != "indentGray"){
  746.             QuadDocumentMouseOver()
  747.             }
  748.  
  749. // *****************************
  750. }
  751.  
  752. //****************************************** OBJECT CONSTRUCTION **************************************
  753. //*****************************************************************************************************
  754. //  Uses an A tag to pass parameters between an HTML page and this script.
  755. //  Creates an ActiveX Object from these parameters, appends the Object to the end of the page,
  756. //  and clicks it. These objects relate to HTMLHelp environment and information about them can be found on the http://HTMLHelp site.
  757.  
  758. //  Object construction variables *********************************************************************
  759.  
  760. var sParamCHM,sParamFILE, sParamEXEC, sParamMETA,iEND;
  761. var sActX_HH= " type='application/x-oleobject' classid='clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11' ";
  762.  
  763.  
  764. //*** callPopup ***************************************************************************************
  765. // creates an object from an <A> tag HREF, the object inserts a winhelp popup
  766. // called by: <A ID="wPopup" HREF="HELP=@@file_name.hlp@@ TOPIC=@@topic#@@">@@Popup text@@</A>
  767.  
  768. var joker = false;
  769. var blague = true;
  770.  
  771. function callPopup(eventSrc) {
  772. if (popupOpen) closePopup();
  773. var ntsharedAdded= false;                    // make sure the object is only added once
  774. var CHMspecificAdded= false;                // make sure the object is only added once
  775. var coll = document.all.tags("SPAN");
  776. var sIndex,sText=" ",sFile,sFileID,dataBindingObject;
  777.  
  778.      var e= eventSrc;
  779.      var eH= unescape(e);
  780.      eH = eH.toLowerCase();
  781.      var eH_= eH.toLowerCase();
  782.      
  783.      if(event){
  784.          event.returnValue = false;
  785.         }
  786.      found = false;
  787.                                                        
  788.        var iTOPIC = eH.lastIndexOf("topic=");
  789.      if (iTOPIC==-1) return;
  790.      sParamTOPIC = eH.substring((iTOPIC+6),eH.length);
  791.      if (!isIE4){
  792.      if (!joejoe){
  793.         xmldom.load(moniker + path2glossary + "glossary.xml");
  794.         joejoe = true;
  795.         }
  796.          
  797.         var o=0;
  798.         var node = "";    
  799.         node = xmldom.selectSingleNode("glossary/glossSection/entry[@entryID='" + sParamTOPIC + "']");
  800.                     
  801.         if(node!=null)
  802.             {
  803.             
  804.             found = true;
  805.             var ralf = "";
  806.             ralf = node.getElementsByTagName("term")
  807.             sText = "<DIV CLASS='PopTerm'>" + ralf.item(0).nodeTypedValue + "</DIV>";
  808.             ralf = node.getElementsByTagName("para")
  809.             
  810.             if (ralf.length != 0){
  811.                 sText = sText + "<DIV CLASS='PopDef'>" + ralf.item(0).nodeTypedValue;
  812.                 sText = sText + "</DIV>";
  813.                 }
  814.             seealsos = node.getElementsByTagName("seeAlso");
  815.             var o=0;
  816.             
  817.             look_at = xmldom.getElementsByTagName("glossary/locSection/locItem[@locItemID = 'SeeAlso']");
  818.                         
  819.             while (o < seealsos.length){
  820.                 sIndex = seealsos.item(o).getAttribute("seeAlsoTermID");
  821.                 node = xmldom.selectSingleNode("glossary/glossSection/entry[@entryID='" + sIndex + "']");
  822.                 ralf = node.getElementsByTagName("term");
  823.                 sTerm = ralf.item(0).nodeTypedValue;
  824.                 if (o == 0) {
  825.                     sText = sText + "<DIV CLASS='PopSeeAlso'>" + look_at.item(0).nodeTypedValue + " "
  826.                     // sIndex = "<Input type=submit tabindex=1 value=hhhh onclick='jscript:alert(oPopup.sIndex.innerHTML)'>"
  827.                     sIndex = "<A ID='wPopup' HREF='HELP=glossary.hlp TOPIC=" + sIndex + "' bite_me='1'>" + sTerm + "</a>"
  828.                     }
  829.                 else
  830.                     {
  831.                     sIndex = ", <A ID='wPopup' HREF='HELP=glossary.hlp TOPIC=" + sIndex + "' bite_me='1'>" + sTerm + "</a>"
  832.                     }
  833.                 o++;
  834.                 sText = sText + sIndex 
  835.                 }
  836.                     
  837.             definition = xmldom.getElementsByTagName("glossary/locSection/locItem[@locItemID = 'See']");        
  838.             
  839.             seeentrys = node.getElementsByTagName("seeEntry");
  840.                             
  841.             while (o < seeentrys.length){
  842.                 sIndex = seeentrys.item(o).getAttribute("seeTermID");
  843.                 node = xmldom.selectSingleNode("glossary/glossSection/entry[@entryID='" + sIndex + "']");
  844.                 ralf = node.getElementsByTagName("term");
  845.                 sTerm = ralf.item(0).nodeTypedValue;
  846.                 if (o == 0) {
  847.                     sText = sText + "<DIV CLASS='PopSeeAlso'>" + definition.item(0).nodeTypedValue + " "
  848.                     // sIndex = "<Input type=submit tabindex=1 value=hhhh onclick='jscript:alert(oPopup.sIndex.innerHTML)'>"
  849.                     sIndex = "<A ID='wPopup' HREF='HELP=glossary.hlp TOPIC=" + sIndex + "' bite_me='1'>" + sTerm + "</a>"
  850.                     }
  851.                 else
  852.                     {
  853.                     sIndex = ", <A ID='wPopup' HREF='HELP=glossary.hlp TOPIC=" + sIndex + "' bite_me='1'>" + sTerm + "</a>"
  854.                     }
  855.                 o++;
  856.                 sText = sText + sIndex 
  857.                 }
  858.             }
  859.             
  860.             if (o != 0) sText = sText + "</DIV>" 
  861.              
  862.             if ((isIE55 || isIE6) && found){
  863.                 var oPopup = false
  864.                 var oPopup = window.createPopup();
  865.                  var strScript = "<script language='JScript'> function clickPopup(){if (event.srcElement.tagName.toLowerCase() == 'a') parent.callPopup(event.srcElement.href); window.PopObject.hide(); return false;}</script>";
  866.                   var strDoc = oPopup.document.body.outerHTML.toLowerCase()
  867.                 
  868.                   oPopup.document.write(strDoc.replace("></body>", " onclick=\"clickPopup()\">" + strScript + "</body>"));
  869.                 //oPopup.document.write(strDoc.replace("></body>", " onclick=\"clickPopup()\, onkeypress=\"process_closePopup()\">" + strScript + "</body>"));
  870.                     oPopup.document.createStyleSheet(sSharedCHM + "coUA.css");    // Apply the stylesheet.
  871.                 var oPopBody = oPopup.document.body;
  872.                 
  873.                 //oPopBody.style.backgroundColor = '#FFFFCC';
  874.                 
  875.                   // oPopBody.style.border = "solid black 1px";
  876.                   oPopBody.style.margin = "0 0 0 0";
  877.                 if (isRTL) oPopBody.innerHTML = "<SPAN DIR='RTL' class='XMLPopup'>" + sText + "</SPAN>"           // need to add the style class here.
  878.                 else oPopBody.innerHTML = "<SPAN class='XMLPopup'>" + sText + "</SPAN>"
  879.                     // alert(oPopBody.innerHTML)                
  880.                 if (window.event){
  881.                     joker = window.event.srcElement;
  882.                     }
  883.                 oPopup.show(0, 0, 400, 8, joker);    // Show the popup at an arbitrary size.
  884.                 var textSize = oPopBody.createTextRange();
  885.                 var wPop = textSize.boundingWidth + oPopBody.offsetWidth - oPopBody.clientWidth;    // Get the size of the text.
  886.                 var hPop = oPopBody.scrollHeight;
  887.                 oPopup.hide();
  888.                 oPopup.document.parentWindow.PopParent = window;
  889.                   oPopup.document.parentWindow.PopObject = oPopup;
  890.                 
  891.                   oPopup.show(0, 1, wPop , hPop, joker);
  892.                 //oPopup.document.focus(oPopup.document.body.JOKER);    
  893.                 return;
  894.                 }
  895.             
  896.             if (found){
  897.                 if (blague){
  898.                 document.body.insertAdjacentHTML("beforeEnd", "<DIV id='wPopupWeb' CLASS='popup'>" + sText + "</DIV>");
  899.                 blague = false;
  900.                 }
  901.                 window.wPopupWeb.innerHTML = sText;
  902.                 callPopupWeb(e);
  903.                 return;
  904.                 }
  905.             } // for support of IE4 disable xml popups
  906.                   
  907.    var iTOPIC = eH_.lastIndexOf("topic=");
  908.         if (iTOPIC==-1) return;
  909.         sParamTOPIC = eH.substring((iTOPIC+6),eH.length);          // extracts the topic for item2
  910.         
  911.   var iHELP = eH_.lastIndexOf("help=");
  912.         if (iHELP==-1) return;
  913.         sParamHELP = eH.substring(iHELP+5,iTOPIC);            // extracts the help file for item1
  914.         
  915.         if (document.hhPopup) document.hhPopup.outerHTML = "";    // if hhPopup object exists, clears it
  916.  
  917.  
  918.  var  h= "<object id='hhPopup'"+ sActX_HH + "STYLE='display:none'><param name='Command' value='WinHelp, Popup'>";
  919.       h= h + "<param name='Item1' value='" + sParamHELP + "'><param name='Item2' value='" + sParamTOPIC + "'></object>";
  920.         
  921.         document.body.insertAdjacentHTML("beforeEnd", h);     
  922.         document.hhPopup.hhclick();
  923. }
  924.  
  925.  
  926. //*** callAltLocation******************************************************************************
  927. // creates an object from an <A> tag HREF, the object will navigate to the alternate location if the first location is not found.
  928. // called from: <A ID="altLoc" HREF="CHM=@@1st_chm_name.chm;Alt_chm_name.chm@@  FILE=@@1st_file_name.htm;Alt_file_name.htm@@">@@Link text here@@</A>
  929.    
  930.  
  931. function callAltLocation(eventSrc) {
  932. var e= eventSrc;
  933. var eH= unescape(e.href);
  934. var eH_= eH.toLowerCase();
  935. var sFILEarray,sCHMarray;
  936.      event.returnValue = false;
  937.      
  938.   var sParamTXT= e.innerHTML;
  939.       sParamTXT= sParamTXT.replace(semicolon,"");
  940.                                        
  941.   var iFILE = eH_.lastIndexOf("file=");
  942.         if (iFILE==-1) return;
  943.         sParamFILE= eH.substring((iFILE+5),eH.length);                  // extracts the 2 HTM files
  944.         sParamFILE= sParamFILE.replace(spaces,"");
  945.         iSPLIT= sParamFILE.match(semicolon);
  946.         if (iSPLIT)
  947.               sFILEarray = sParamFILE.split(";");                                        // separates the 2 HTM files
  948.         else return;
  949.           
  950.   var iCHM  = eH_.lastIndexOf("chm=");
  951.         if(iCHM==-1) return;
  952.         else         sParamCHM = eH.substring(iCHM+4,iFILE);            // extracts the 2 CHM's
  953.         sParamCHM= sParamCHM.replace(spaces,"");
  954.         iSPLIT= sParamCHM.match(semicolon);
  955.         if (iSPLIT)
  956.             sCHMarray= sParamCHM.split(";");                                    // separates the 2 CHM's
  957.         else return;
  958.         
  959.         sParamFILE= moniker + sCHMarray[0]+ "::/" + sFILEarray[0] + ";" + moniker + sCHMarray[1]+ "::/" + sFILEarray[1];
  960.                 
  961.         if (document.hhAlt) document.hhAlt.outerHTML = "";                // if hhAlt object exists, clears it
  962.  
  963.  
  964.   var h= "<object id='hhAlt'"+ sActX_HH + "STYLE='display:none'><PARAM NAME='Command' VALUE='Related Topics'>";
  965.       h= h + "<param name='Item1' value='" + sParamTXT +";" + sParamFILE + "'></object>";
  966.     
  967.         document.body.insertAdjacentHTML("beforeEnd", h); 
  968.         document.hhAlt.hhclick();
  969. }
  970.  
  971.  
  972. //*** callRelatedTopics******************************************************************************
  973. // creates an object from an <A> tag HREF, the object inserts a popup of the related topics to select
  974. // called from: <A ID="relTopics" HREF="CHM=@@chm_name1.chm;chm_name2.chm@@ META=@@a_filename1;a_filename2@@">Related Topics</A>
  975.    
  976.  
  977. function callRelatedTopics(eventSrc) {
  978. var e= eventSrc;
  979. var eH= unescape(e.href);
  980. var eH_= eH.toLowerCase();
  981.      event.returnValue = false;
  982.                                        
  983.   var iMETA = eH_.lastIndexOf("meta=");
  984.         if (iMETA==-1) return;
  985.         sParamMETA = eH.substring((iMETA+5),eH.length);              // extracts the META keywords for item2
  986.         
  987.   var iCHM  = eH_.lastIndexOf("chm=");
  988.         if(iCHM==-1) sParamCHM = "";
  989.         else         sParamCHM = eH.substring(iCHM+4,iMETA);            // extracts the CHM files for item1
  990.     
  991.         if (document.hhRel) document.hhRel.outerHTML = "";            // if hhRel object exists, clears it
  992.  
  993.  
  994.   var h= "<object id='hhRel'"+ sActX_HH + "STYLE='display:none'><param name='Command' value='ALink,MENU'>";
  995.       h= h + "<param name='Item1' value='" + sParamCHM + "'><param name='Item2' value='" + sParamMETA + "'></object>";
  996.     
  997.         document.body.insertAdjacentHTML("beforeEnd", h);     
  998.         document.hhRel.hhclick();
  999. }
  1000.  
  1001. //*** popNewWindow***************************************************************************************
  1002. // creates an object from an <A> tag HREF, the object then opens a new window from the image URL found in the HREF
  1003. // called from: <a id="thumbnail" title="Enlarge figure" href="CHM=NTArt.chm FILE=@@image_name.gif@@">@@alt text here@@</A>
  1004. // the thumbnail image is loaded by loadPage();
  1005.  
  1006.  
  1007. function popNewWindow(eventSrc) {
  1008. var eH= eventSrc.href;
  1009.       event.returnValue = false;
  1010.       
  1011.  // extracts the thumbnail image URL from the <a> tag HREF
  1012.     sParamFILE =  getURL(eH);
  1013.     if (sParamFILE=="") return;
  1014.     
  1015.     // sParamFILE = moniker + sParamFILE; 
  1016.     // sParamFILE = moniker + sParamFILE; 
  1017.     //alert(sParamFILE)
  1018.     // callThumbnailWeb(sParamFFILE)
  1019.     
  1020.        
  1021.  // if the hhWindow object exists, clears it
  1022.     if (document.hhWindow) document.hhWindow.outerHTML = "";        
  1023.         
  1024. var  h =  "<object id='hhWindow'"+ sActX_HH +" STYLE='display:none'><param name='Command' value='Related Topics'>";
  1025.      h = h + "<param name='Window' value='$global_largeart'><param name='Item1' value='$global_largeart;" + moniker + sParamFILE+ "'> </object>";
  1026.     
  1027.      document.body.insertAdjacentHTML("beforeEnd", h);
  1028.      document.hhWindow.hhclick();
  1029. }
  1030.  
  1031. //*** callShortcut ***************************************************************************************
  1032. // creates an object from an <A> tag, the object then calls the executable code
  1033. // called from: <A ID="shortcut" HREF="EXEC=@@executable_name.exe@@ CHM=ntshared.chm FILE=@@error_file_name.htm@@">@@Shortcut text@@</A>
  1034. // the shortcut image is loaded by loadInitialImg();
  1035.  
  1036. function callShortcut(eventSrc) {
  1037. var e= eventSrc;
  1038. var eH= unescape(e.href);
  1039. var eH_= eH.toLowerCase();
  1040.  
  1041.     
  1042.  
  1043.     event.returnValue = false;
  1044.               
  1045.  // extracts the error file URL from the <a> tag HREF
  1046.     iEND= eH.length;
  1047.     sParamFILE =  getURL(eH);
  1048.     
  1049. var iEXEC = eH_.lastIndexOf("exec="); 
  1050.         if (iEXEC==-1) return;
  1051.         else sParamEXEC = eH.substring(iEXEC+5,iEND);                // extracts the executable for item1
  1052.         
  1053.         if (document.hhShortcut) document.hhShortcut.outerHTML = "";            // if the hhShortcut object exists, clears it
  1054.     
  1055. var  h =  "<object id='hhShortcut'"+ sActX_HH +" STYLE='display:none'> <param name='Command' value='ShortCut'>";
  1056.      if(sParamFILE != "") h = h + "<param name='Window' value='" + moniker + sParamFILE+ "'>";
  1057.      h = h + "<param name='Item1' value='" + sParamEXEC + "'><param name='Item2' value='msg,1,1'></object>";
  1058.  
  1059.         document.body.insertAdjacentHTML("beforeEnd", h);
  1060.         document.hhShortcut.hhclick();
  1061. }
  1062.  
  1063. //****************************************  EXPAND FUNCTIONS *********************************************************
  1064. //********************************************************************************************************************
  1065.  
  1066. //**  callExpand **************************************************************************************************
  1067. //  This expands & collapses (based on current state) "expandable" nodes as they are clicked.
  1068. //  Called by: <A ID="expand" href="#">@@Hot text@@</A>
  1069. //  Followed by:  <div class="expand">
  1070.  
  1071. function callExpand(eventSrc) {
  1072.  
  1073. var e= eventSrc;
  1074.     event.returnValue = false;                    // prevents navigating for <A> tag
  1075.     
  1076. var oExpandable = getExpandable(e); 
  1077. var oImg = getImage(e);
  1078.  
  1079.      if (oExpandable.style.display == "block")
  1080.           doCollapse(oExpandable, oImg);
  1081.      else doExpand(oExpandable, oImg);
  1082. }
  1083.  
  1084. //** expandGoesHot *********************************************************************************************
  1085. // Returns expand image to hot. 
  1086.  
  1087. function expandGoesHot(eventSrc){
  1088. var e= eventSrc;
  1089.     
  1090. var oExpandable = getExpandable(e);  
  1091. var oImg = getImage(e);
  1092. if (!isIE4){
  1093.    if (oExpandable.style.display == "block") oImg.src = expandHot;
  1094.    else oImg.src = closedHot;
  1095. }
  1096. }
  1097.  
  1098.  
  1099. //** expandGoesCold *********************************************************************************************
  1100. // Returns expand image to cold.
  1101.  
  1102. function expandGoesCold(eventSrc){
  1103. var e= eventSrc;
  1104.  
  1105. var oExpandable = getExpandable(e);   
  1106. var oImg = getImage(e);
  1107. if (!isIE4){
  1108.  if (oExpandable.style.display == "block") oImg.src = expand;
  1109.   else oImg.src = closed;
  1110. }  
  1111. }
  1112.  
  1113.  
  1114. //** getExpandable *****************************[used by callExpand, expandGoesHot, expandGoesCold]*******
  1115. //  Determine if the element is an expandable node or a child of one.  
  1116.  
  1117. function getExpandable(eventSrc){
  1118. var  e = eventSrc;
  1119. var iNextTag, oExpandable;
  1120.     
  1121.        for (var i=1;i<4; i++){
  1122.                iNextTag=    e.sourceIndex+e.children.length+i;
  1123.               oExpandable= document.all(iNextTag);
  1124.               if (oExpandable.className.toLowerCase()=="expand" || iNextTag == document.all.length)
  1125.                    break;
  1126.        }
  1127.        return oExpandable;
  1128.        
  1129. }
  1130.  
  1131. //**  getImage ***********************************[used by callExpand, expandGoesHot, expandGoesCold]*******
  1132. //  Find the first image in the children of the current srcElement.   
  1133. // (allows the  image to be placed anywhere inside the <A HREF> tag)
  1134.  
  1135. function getImage(header) {
  1136. var oImg = header;
  1137.  
  1138.        if(oImg.tagName != "IMG") oImg=oImg.children.tags("IMG")(0);
  1139.        return oImg;
  1140. }
  1141.  
  1142.  
  1143. //****  expandAll *******************************************************************************************************
  1144. //  Will expand or collapse all "expandable" nodes when clicked. [calls closeAll()]
  1145. //  called by: <A HREF="#" onclick="expandAll();">expand all</A>
  1146.  
  1147. var stateExpand = false;    //applies to the page 
  1148.  
  1149. //**** ****************************************************************************************************************
  1150.  
  1151. function expandAll() {
  1152. var oExpandToggle, oImg;
  1153. var expandAllMsg = "expand all";                    //message returned when CloseAll() is invoked
  1154. var closeAllMsg = "close all";                        //message returned when ExpandAll() is invoked
  1155. var e= window.event.srcElement;
  1156.        event.returnValue = false;
  1157.  
  1158.        for (var i=0; i< document.anchors.length; i++){
  1159.                oExpandToggle = document.anchors[i];
  1160.          
  1161.                 if (oExpandToggle.id.toLowerCase() == "expand"){ 
  1162.                      oExpandable = getExpandable(oExpandToggle);  
  1163.                      oImg = getImage(oExpandToggle);
  1164.              
  1165.                      if (stateExpand == true) doCollapse(oExpandable, oImg);
  1166.                      else                     doExpand(oExpandable, oImg);
  1167.                 }
  1168.        }
  1169.        if (stateExpand == true) {
  1170.             stateExpand = false;
  1171.             e.innerText= expandAllMsg;
  1172.        }
  1173.        else {
  1174.             stateExpand = true;
  1175.             e.innerText= closeAllMsg;
  1176.        }
  1177. }
  1178.  
  1179.  
  1180. //****  doExpand *******************************************************************************************************
  1181. //  Expands expandable block & changes image
  1182.     
  1183. var redo = false;    
  1184. function doExpand(oToExpand, oToChange) {
  1185. var oExpandable= oToExpand;
  1186. var oImg= oToChange;
  1187.  
  1188. //    if (printing == "TRUE") return;
  1189.  
  1190.     oImg.src = expand;
  1191.     oExpandable.style.display = "block";
  1192.     
  1193.     if (!redo && isIE4) {
  1194.         // alert("what")
  1195.         redo = true;
  1196.         // focus(oToExpand);
  1197.         doExpand(oToExpand, oToChange);
  1198.         }
  1199.     }
  1200.  
  1201.  
  1202. //****  doCollapse *****************************************************************************************************
  1203. //  Collapses expandable block & changes image
  1204.     
  1205. function doCollapse(oToCollapse, oToChange) {
  1206. // if (printing == "TRUE") return;
  1207. var oExpandable= oToCollapse;
  1208. var oImg= oToChange;
  1209.  
  1210.     oExpandable.style.display = "none";
  1211.     oImg.src = closed;
  1212. }
  1213.  
  1214. //*******************************************************************************************************
  1215. //******* WEB  FUNCTIONS **************************************************************************
  1216. //*******************************************************************************************************
  1217.  
  1218. //**** callThumbnailWeb **************************************************************************************
  1219.  
  1220. function callThumbnailWeb(eventSrc) {
  1221. var e= eventSrc;
  1222.        event.returnValue = false;
  1223.                     
  1224. var thumbnailWin= window.open (e.href, "height=450, width=600, left=10, top=10, dependent=yes, resizable=yes, status=no, directories=no, titlebar=no, toolbar=yes, menubar=no, location=no","true");
  1225.  
  1226. thumbnailWin.document.write ("<html><head><title>Windows 2000</title></head><body><img src='"+e.href+"'></body></html>");
  1227.  
  1228. return;
  1229. }
  1230.  
  1231. //*********************************************************************************************************
  1232. //*********************************************************************************************************
  1233.                                 
  1234. var popupOpen= false;                //state of popups
  1235. var posX, posY;                        //coordinates of popups
  1236. var oPopup;                            //object to be used as popup content
  1237.  
  1238. //**** callPopupWeb **************************************************************************************
  1239. // the web popups have been converted from the object winHelp popup for the web.
  1240. // called by: <A ID="wPopupWeb" HREF="#">@@Popup text@@</A>
  1241. // followed by: <div class="popup">Popup content</div>
  1242.  
  1243.  
  1244. function callPopupWeb(eventSrc) {
  1245. var e= eventSrc;
  1246.   
  1247.   // find the popup <div> that follows <a id="wPopupWeb"></a>
  1248.   findPopup(e);
  1249.   if (!e.bite_me) positionPopup(e)
  1250.  
  1251.   oPopup.style.visibility = "visible";
  1252.   // document.focus(e)
  1253.   popupOpen = true;
  1254.  
  1255.   return;
  1256. }
  1257.  
  1258. //**** findPopup ****************************************************************************************
  1259.  
  1260. function findPopup(oX){
  1261. var e= oX;
  1262. var iNextTag;
  1263.     
  1264.     for (var i=1;i<document.all.length; i++){
  1265.          iNextTag=    e.sourceIndex + i;
  1266.          oPopup= document.all(iNextTag);
  1267.          if (oPopup.className.toLowerCase()=="popup" || iNextTag == document.all.length)
  1268.              break;
  1269.     }
  1270.     
  1271.     if (iNextTag != document.all.length) {
  1272.         posX = window.event.clientX; 
  1273.         posY = window.event.clientY + document.body.scrollTop+10;
  1274.     }
  1275.     if (popupOpen) closePopup();
  1276. }
  1277.  
  1278.  
  1279. //****  positionPopup ************************************************************************************
  1280. // Set size and position of popup.
  1281. // If it is off the page, move up, but not past the very top of the page.
  1282.  
  1283. function positionPopup(oX){
  1284. var e= oX;    
  1285. var popupOffsetWidth = oPopup.offsetWidth;
  1286.  
  1287. //determine if popup will be offscreen to right
  1288. var rightlimit = posX + popupOffsetWidth;
  1289.  
  1290.   if (rightlimit >= document.body.clientWidth) 
  1291.       posX -= (rightlimit - document.body.clientWidth);
  1292.   if (posX < 0) posX = 0;
  1293.     
  1294. //position popup
  1295.   oPopup.style.top = posY;
  1296.   oPopup.style.left = posX;
  1297.  
  1298. var pageBottom = document.body.scrollTop + document.body.clientHeight;
  1299. var popupHeight = oPopup.offsetHeight;
  1300.   
  1301.   if (popupHeight + posY >= pageBottom) {
  1302.       if (popupHeight <= document.body.clientHeight)
  1303.           oPopup.style.top = pageBottom - popupHeight;
  1304.       else
  1305.            oPopup.style.top = document.body.scrollTop;
  1306.   }
  1307. }
  1308.  
  1309. //**** closePopup ****************************************************************************************
  1310. // Close Popup
  1311. function closePopup() {
  1312.  
  1313.   oPopup.style.visibility = "hidden";
  1314.   popupOpen = false;
  1315.   return;
  1316. }
  1317.  
  1318.  
  1319. //*********************************************  GENERAL FUNCTIONS ************************************************
  1320. //**************************************************************************************************************************
  1321.  
  1322. //***ajustImg *************************************************************************************************************
  1323. // expands an image to the with of the window or shrinks it to 90px
  1324.  
  1325. function ajustImg(eventSrc) {
  1326. var e= eventSrc;
  1327. var fullWidth= document.body.offsetWidth;
  1328.  
  1329.     fullWidth = fullWidth - 50;
  1330.     if (e.style.pixelWidth==90)
  1331.          e.style.pixelWidth=fullWidth;
  1332.     else e.style.pixelWidth=90;
  1333. }
  1334.  
  1335.  
  1336. //**  getURL **************************************[used in callShortcut, popNewWindow& loadPage]********
  1337. // extracts the file location (CHM::/HTM) URL 
  1338.  
  1339. function getURL(sHREF) {
  1340. var spaces= /\s/g
  1341. var eH = unescape(sHREF);
  1342.     eH = eH.replace(spaces,""); 
  1343.  
  1344. var eH_= eH.toLowerCase();
  1345. var sParamFILE= "";
  1346. var sParamCHM= "";
  1347.  
  1348. var iFILE= eH_.lastIndexOf("file=");
  1349.     if (iFILE!=-1){
  1350.         iEND= iFILE +1;
  1351.         sParamFILE = eH.substring(iFILE+5,eH.length);
  1352.     }
  1353.  
  1354. var iCHM  = eH_.lastIndexOf("chm=");
  1355.  
  1356. gifwithin = false; 
  1357. if (gifwithin){
  1358.     gifwithin = false;
  1359.     var con_mmc;
  1360.     var doc_mmc;
  1361.     doc_mmc = " " + document.location;
  1362.     doc_mmc = doc_mmc.toLowerCase();
  1363.     if (iCHM!=-1){
  1364.         iEND  = iCHM +1;                             // iEND used by callShortcut
  1365.         sParamCHM = eH.substring(iCHM+4, iFILE);
  1366.         con_mmc = doc_mmc.indexOf(sParamCHM);
  1367.             if (con_mmc != -1){
  1368.                 sParamCHM = "";
  1369.                 iCHM = -1;
  1370.             sParamFILE= sParamCHM+sParamFILE;    
  1371.             }
  1372.         }
  1373.     }
  1374.  
  1375.      if (iCHM!=-1){
  1376.         iEND  = iCHM +1;                             // iEND used by callShortcut
  1377.         sParamCHM = eH.substring(iCHM+4, iFILE);
  1378.         sParamFILE= sParamCHM+"::/"+sParamFILE;    
  1379.         }    
  1380.     return sParamFILE;
  1381. }
  1382. //****************************************************************************************************************************
  1383. //********************************************  IE5 PERSISTENCE  *************************************************************
  1384. //****************************************************************************************************************************
  1385.  
  1386. var oTD,iTD;         // persistence
  1387.  
  1388. //****** Persistence for userData ********************************************************************************************* 
  1389.  
  1390. function getChecklistState(){ 
  1391.  
  1392.  var pageID= addID();
  1393.  
  1394.     if (checklist.all== "[object]") {
  1395.     oTD=checklist.all.tags("INPUT");
  1396.     iTD= oTD.length;
  1397.         }
  1398.     else
  1399.         {
  1400.         printing = true;
  1401.         isPersistent = false;
  1402.         return;
  1403.         }
  1404.  
  1405.     if (iTD == 0){
  1406.         printing = true;
  1407.         isPersistent = false;
  1408.         return;
  1409.         }
  1410.     
  1411. // routine added to fix a bug in the ocx 06/14/99    
  1412.      lct = document.location + ".";
  1413.      xax = 10;
  1414.      xax = lct.indexOf("mk:@MSITStore");
  1415.      if (xax != -1) {
  1416.          lct = "ms-its:" + lct.substring(14,lct.length-1);
  1417.         // alert("before reload : " + document.location);
  1418.         // alert("replace with : " + lct);
  1419.         isPersistent = false;
  1420.         document.location.replace(lct);
  1421.         isPersistent = true;
  1422.         // alert("after reload : " + document.location);
  1423.         }     
  1424.      else
  1425.          {      
  1426.          checklist.load("oXMLStore");
  1427.         }
  1428. // routine added to fix a bug in the ocx 06/14/99
  1429.     if (checklist.getAttribute("sPersist"+pageID+"0"))    
  1430.     for (i=0; i<iTD; i++){
  1431.  
  1432.          if (oTD[i].type =="checkbox" || oTD[i].type =="radio"){
  1433.          checkboxValue= checklist.getAttribute("sPersist"+pageID+i);
  1434.         
  1435.          if (checkboxValue=="yes") oTD[i].checked=true;
  1436.          else oTD[i].checked=false;
  1437.          }// if
  1438.          if (oTD[i].type =="text")              
  1439.               oTD[i].value= checklist.getAttribute("sPersist"+pageID+i);
  1440.      }// for
  1441. } // end persistence
  1442.  
  1443. //**  saveChecklistState *************************************************************************************************************
  1444. function saveChecklistState(){
  1445. var pageID= addID(); 
  1446.  
  1447.         if (!isPersistent) return; 
  1448.          //  you will need this           document.location
  1449.         for (i=0; i<iTD; i++){
  1450.  
  1451.                 if (oTD[i].type =="checkbox" || oTD[i].type =="radio"){
  1452.                  if (oTD[i].checked) checkboxValue="yes";
  1453.                  else checkboxValue="no";
  1454.                  
  1455.                  checklist.setAttribute("sPersist"+pageID+i, checkboxValue);
  1456.              }// if
  1457.             
  1458.               if (oTD[i].type =="text") 
  1459.                  checklist.setAttribute("sPersist"+pageID+i, oTD[i].value);
  1460.          }    // for
  1461.  
  1462.  // routine added to fix a bug in the ocx 06/14/99    
  1463.      lct = document.location + ".";
  1464.      xax = 10;
  1465.      xax = lct.indexOf("mk:@MSITStore");
  1466.      if (xax != -1) {
  1467.          lct = "ms-its:" + lct.substring(14,lct.length-1);
  1468.         // alert("before reload : " + document.location);
  1469.         // alert("replace with : " + lct);
  1470.         isPersistent = false;
  1471.         document.location.replace(lct);
  1472.         isPersistent = true;
  1473.         // alert("after reload : " + document.location);
  1474.         }     
  1475.      else
  1476.          {      
  1477.          checklist.save("oXMLStore");
  1478.         }
  1479. // routine added to fix a bug in the ocx 06/14/99
  1480.      
  1481. }//end function
  1482.  
  1483. //**  resizeDiv *******************************[used with callPopupWeb, setPreviousNext}****************************************************
  1484. //  resize the page when the <div class=nav></div> && <div class=text></div> are found
  1485. function resizeDiv(){
  1486. if (printing == true) return;
  1487. var oNav = document.all.item("nav");
  1488. var oText= document.all.item("text");
  1489.  
  1490.     if (popupOpen) closePopup();
  1491.     if (oText == null) return;
  1492.     if (oNav != null){
  1493.         document.all.nav.style.width= document.body.offsetWidth;
  1494.         document.all.text.style.width= document.body.offsetWidth-4;
  1495.         document.all.text.style.top= document.all.nav.offsetHeight;
  1496.         if (document.body.offsetHeight > document.all.nav.offsetHeight)
  1497.             document.all.text.style.height= document.body.offsetHeight - document.all.nav.offsetHeight;
  1498.          else document.all.text.style.height=0; 
  1499.   }
  1500. }
  1501. //**  addID *************************************************************************************************************
  1502. function addID(){
  1503.  
  1504. var locID = document.location.href; 
  1505. var iHTM = locID.lastIndexOf(".htm");
  1506. var iName=locID.lastIndexOf("/");
  1507.       locID = locID.substring(iName+1,iHTM);
  1508.     
  1509.     return locID;
  1510. }    
  1511. //** set_to_print ***************
  1512. function set_to_print(){
  1513.     // alert(printing)
  1514.     if (printing == true) return
  1515.     var i;
  1516.     
  1517.  
  1518. var isIE5 = (navigator.appVersion.indexOf("MSIE 5")>0) || (navigator.appVersion.indexOf("MSIE")>0 && parseInt(navigator.appVersion)> 4);
  1519. var isIE55 = (navigator.appVersion.indexOf("MSIE 5.5")>0);
  1520. if (isIE5 && isIE55) isIE5 = false;
  1521. var isIE6 = (navigator.appVersion.indexOf("MSIE 6")>0);
  1522. var isIE4 = (navigator.appVersion.indexOf("MSIE 4")>0);
  1523.  
  1524. if (!isIE5 && !isIE55 && !isIE4 && !isIE6) {
  1525.     isIE6 = true;
  1526.     }
  1527.  
  1528.  
  1529. // trying    
  1530.  
  1531. printing = true;
  1532.  
  1533.  if (isIE55){
  1534.      addReusableText();
  1535.      insertImages_4_print();
  1536.      }
  1537. if (isIE6){
  1538.     addReusableText();
  1539.      insertImages_4_print();
  1540.     }
  1541.  
  1542. // to fix printing
  1543.  
  1544.  
  1545.  
  1546. isPersistent= (document.all.item("checklist")!=null) && ((isIE5) || (isIE6) || (isIE55));
  1547.  setPreviousNext();
  1548.  resizeDiv();
  1549. // if (isPersistent) getChecklistState();
  1550.  
  1551.  
  1552.     if (window.text) {
  1553.         if (!window.text.style){
  1554.             scroller = "FALSE";
  1555.             }
  1556.         else
  1557.             {
  1558.             document.all.text.style.height = "auto";
  1559.             scroller = "TRUE";
  1560.             }
  1561.         }
  1562.     
  1563. var thisLoc= document.location.href;
  1564.     thisLoc = thisLoc.indexOf("glossary.htm")
  1565.     if (thisLoc != -1){
  1566.         return;
  1567.         }
  1568.     // alert("in print")
  1569.     
  1570.     // alert(isIE6)
  1571.     for (i=0; i < document.all.length; i++){
  1572.         if (document.all[i].id == "expand") {
  1573.             // callExpand(document.all[i]);         // no longer needed since the coua_print.css does this now.
  1574.             single = "TRUE";
  1575.             }
  1576.         if (document.all[i].tagName == "BODY") {
  1577.             document.all[i].scroll = "auto";
  1578.             }
  1579.         if (document.all[i].tagName == "A" && scroller != "TRUE") {
  1580.             joe = " " + document.all[i].outerHTML
  1581.             joe = joe.toLowerCase();
  1582.             joe = joe.indexOf("href=")
  1583.             if(joe == -1){
  1584.                 document.all[i].outerHTML = "<A NAME=''>" + document.all[i].innerHTML + "</a>";
  1585.                 }
  1586.             else
  1587.                 {
  1588.                 document.all[i].outerHTML = "<A HREF=''>" + document.all[i].innerHTML + "</a>";
  1589.                 }
  1590.             }
  1591.         }
  1592.         
  1593. // reset_form();
  1594.     
  1595. }
  1596. //** used to reset a page if needed ********************
  1597. function reset_form(){
  1598.     printing = false;
  1599.     document.location.reload();
  1600. }
  1601.  
  1602.     
  1603. //** on error routine *********************************
  1604. function errorHandler() {
  1605.  //  alert("Error Handled");
  1606.   return true;
  1607. }
  1608.  
  1609. // ******************************* this function is to help ie55 and ie6 to print these images  ******
  1610. booking = false;
  1611. function insertImages_4_print(){
  1612.  
  1613. window.onerror = errorHandler
  1614. // if (isIE6) return
  1615. // if (isIE55) return
  1616. if (!printing) booking = true;
  1617. if (printing == true && booking == true ) {
  1618.     booking = false;
  1619.     return;
  1620.     }
  1621.  
  1622.  
  1623.  var collP = document.all.tags("P");
  1624.   
  1625.   for (var i=0; i<collP.length; i++) {
  1626.        if (collP[i].className.toLowerCase()=="note")            collP[i].innerHTML ="<img class='alert' src='"+noteImg+"' "+ imgStyleRTL +"> " +     collP[i].innerHTML;
  1627.        else if (collP[i].className.toLowerCase()=="warning")    collP[i].innerHTML ="<img class='alert' src='"+warningImg+"'> " +  collP[i].innerHTML;
  1628.        else if (collP[i].className.toLowerCase()=="caution")    collP[i].innerHTML ="<img class='alert' src='"+cautionImg+"'> " +  collP[i].innerHTML;
  1629.        else if (collP[i].className.toLowerCase()=="tip")        collP[i].innerHTML ="<img class='alert' src='"+tipImg+"'> " +      collP[i].innerHTML;
  1630.        else if (collP[i].className.toLowerCase()=="important")  collP[i].innerHTML ="<img class='alert' src='"+importantImg+"'> " + collP[i].innerHTML;
  1631.        else if (collP[i].className.toLowerCase()=="empty")      collP[i].innerHTML ="<img class='alert' src='"+emptyImg+"'> " +    collP[i].innerHTML;
  1632.        if (collP[i].className.toLowerCase()=="reltopics" && rel_gif == "yes")  {
  1633.             collP[i].outerHTML ="<img class='relTopics' src='"+relTopicsImg+"'> " + collP[i].outerHTML;
  1634.             }   
  1635.           }
  1636.   
  1637. //alert(printing)
  1638. //alert(isIE55)
  1639. //indents for Navigation Tree 
  1640. var collUL = document.all.tags("UL");
  1641. if (!printing) {
  1642. for (var i=0; i<collUL.length; i++) {
  1643.        var indent= 0;
  1644.        if (collUL[i].className.toLowerCase()=="navtree"){
  1645.            if (isRTL) collUL[i].style.listStyleImage= "url('" + branchImg_RTL + "')";
  1646.            else collUL[i].style.listStyleImage= "url('" + branchImg + "')";
  1647.              for (var j = 0; j < collUL[i].children.length; j++)
  1648.                 if (collUL[i].children[j].className.toLowerCase()=="branch"){
  1649.                     if (isRTL) collUL[i].children[j].style.marginRight= (indent +'em');
  1650.                     else   collUL[i].children[j].style.marginLeft= (indent +'em');
  1651.                     indent= indent + 0.75;
  1652.                 }
  1653.       }
  1654. }
  1655. }
  1656.    
  1657.   for (var i=0; i < document.anchors.length; i++){
  1658.          var imgInsert="";  
  1659.          var imgStyle= "";
  1660.          var imgSpace= "<span class='space'></span>";      
  1661.          var oBefore=document.anchors[i].parentElement.tagName;
  1662.          var oAnchor= document.anchors[i].id.toLowerCase();
  1663.          
  1664. // insert RELTOPICS icons
  1665.     if (rel_gif == "yes"){
  1666.        if (oAnchor=="reltopics")
  1667.                if (document.anchors[i].children.tags("IMG")(0) && document.anchors[i].children.tags("IMG")(0).className.toLowerCase() == "reltopics")
  1668.                     imgInsert= "";    // not to re-insert when persistent
  1669.             else  imgInsert= "<img class='relTopics' src='"+relTopicsImg+"'>" + imgSpace;
  1670.         }
  1671.         
  1672. // insert SHORTCUT icons
  1673.        if (oAnchor=="shortcut") {    
  1674.             document.anchors[i].title= sShortcutTip;     
  1675.             if (document.anchors[i].children.tags("IMG")(0) && document.anchors[i].children.tags("IMG")(0).className.toLowerCase() == "shortcut")
  1676.                     imgInsert= "";    // not to re-insert when persistent
  1677.             else  imgInsert= "<img class='shortcut' src='"+shortcutCold+"' "+ imgStyleRTL+ ">" + imgSpace;
  1678.         }    
  1679.                       
  1680. // insert POPUP icons
  1681.        else if (oAnchor=="wpopup" || oAnchor=="wpopupweb") document.anchors[i].title= sPopupTip;
  1682.        else if (document.anchors[i].className.toLowerCase()=="popupicon")
  1683.             if (document.anchors[i].children.tags("IMG")(0) && document.anchors[i].children.tags("IMG")(0).className.toLowerCase() == "popup")
  1684.                    imgInsert= "";    // not to re-insert when persistent
  1685.             else imgInsert= "<img class='popup' src='"+popupCold+"'>" + imgSpace;
  1686.  
  1687. // insert EXPAND icons 
  1688.        else if (oAnchor=="expand") {
  1689.               document.anchors[i].title= sExpandTip;
  1690.               if (document.anchors[i].children.tags("IMG")(0) && document.anchors[i].children.tags("IMG")(0).className.toLowerCase() == "expand")
  1691.                   imgInsert= "";     // not to re-insert when persistent      
  1692.               else{ 
  1693.                   if (document.anchors[i].parentElement.offsetLeft == document.anchors[i].offsetLeft) {
  1694.                       imgSpace= "<span class='space' style='width:0'></span>";     
  1695.                       if (isRTL){ document.anchors[i].parentElement.style.marginRight= "1.5em";  imgStyle=" style=margin-right:'-1.5em'";}
  1696.                       else { document.anchors[i].parentElement.style.marginLeft= "1.5em";  imgStyle=" style=margin-left:'-1.5em'";}
  1697.                   }      
  1698.                   imgInsert= "<img class='expand' src='"+ closed +"' "+imgStyle+">" +imgSpace;
  1699.               }
  1700.        }
  1701.  
  1702.  
  1703.  
  1704. // insert thumbnail images       
  1705.        else if (oAnchor=="thumbnail"  || oAnchor=="thumbnailweb"){ 
  1706.             var sAltText = document.anchors[i].innerHTML;
  1707.             gifwithin = true;
  1708.             var sThumbnailText = document.anchors[i].title; 
  1709.             var oImg = document.anchors[i].href.toLowerCase();
  1710.                   if (oAnchor=="thumbnail") 
  1711.                          var sThumbnailImg= moniker + getURL(oImg);
  1712.                   else var sThumbnailImg = document.anchors[i].href.toLowerCase();
  1713.                   
  1714.                  found = sAltText.indexOf("BACKGROUND-COLOR:")
  1715.             if (found != -1) {
  1716.                 stop_p = sAltText.indexOf(">");
  1717.                 sAltText = sAltText.substring(stop_p + 1, sAltText.length);
  1718.                 stop_p = sAltText.indexOf("</FONT>");
  1719.                 Highlighted = sAltText.substring(0,stop_p)
  1720.                 sAltText = Highlighted + sAltText.substring(stop_p + 7, sAltText.length);
  1721.                 }
  1722.  
  1723.                   
  1724.                 document.anchors[i].outerHTML = "<DIV id='thumbDiv' class='thumbnail'>"+document.anchors[i].outerHTML+"</div>";
  1725.                 document.anchors[i].innerHTML = "<img class='thumbnail' src='" + sThumbnailImg + "' alt= ' " + sAltText + "'><p>" +sThumbnailText+"</p>";
  1726.                 
  1727.                   if (isRTL) thumbDiv.style.styleFloat= "right";
  1728.            }
  1729.            
  1730.         
  1731.         
  1732.         document.anchors[i].innerHTML = imgInsert + document.anchors[i].innerHTML;
  1733.        if (isRTL) document.anchors[i].dir="rtl";
  1734.    }
  1735. }
  1736.  
  1737. //** quad method code --  Witten by Randy Feinger, morphed to work inside of shared.js
  1738. function QuadDocumentMouseOver()
  1739. {
  1740.     var elem = event.srcElement;
  1741.     
  1742.     // If the first childe of the source element is a radio button and 
  1743.     // the parent element isn't grayed, change the cursor to a hand
  1744.     // or back to the original as appropriate.
  1745.     if (elem != null && elem.firstChild != null && 
  1746.         elem.firstChild.tagName != null &&
  1747.         elem.firstChild.tagName.toLowerCase() == "input" && 
  1748.         elem.firstChild.type.toLowerCase() == "radio" && 
  1749.         elem.parentElement.className != "indentGray")
  1750.     {
  1751.         if (elem.style.cursor == "hand")
  1752.             elem.style.cursor = "auto";
  1753.         else
  1754.             elem.style.cursor = "hand";
  1755.     }
  1756. }
  1757.  
  1758. function QuadDocumentClick()
  1759. {
  1760.     // Don't process clicks on grayed text.
  1761.     if (event.srcElement.parentElement.className == "indentGray")
  1762.         return;
  1763.     
  1764.     // INPUT elements should be wrapped by another element such as a SPAN, DIV, or P.
  1765.     var elem = event.srcElement.firstChild;
  1766.     
  1767.     // If this is a radio button...
  1768.     if (elem != null && elem.tagName != null && elem.tagName.toLowerCase() == "input" && elem.type == "radio")
  1769.     {
  1770.         // check it.
  1771.         elem.checked = true;
  1772.     }
  1773.     else
  1774.     {    
  1775.         // Otherwise, set elem to the event's source element.
  1776.         elem = event.srcElement;
  1777.     }
  1778.     
  1779.     // Call OnElementClick() and pass in the source element, and the name token
  1780.     // used to mark a top-level clickable element such as a radio button.
  1781.     OnElementClick(elem, "row1");
  1782. }
  1783.  
  1784.  
  1785.  
  1786. function OnElementClick(srcElem, token)
  1787. {
  1788.     var elemTagName = srcElem.tagName;                        // Tag name of the source element.
  1789.     var collElements1 = document.all.item(srcElem.name);    // Collection of elements with the same name property as the source element.
  1790.     var n = srcElem.sourceIndex;                            // The source index of the source element.
  1791.     var elemGroup = srcElem.group;                            // The (dynamic) group property for the source element.
  1792.     var elemID = srcElem.id;                                // The source element's ID.
  1793.     var i, j, k;                                            // Loop variables.
  1794.     
  1795.     // If there are no elements with the same name as the source element, or
  1796.     // if the source element isn't part of a group, exit the function.
  1797.     if (collElements1 == null || elemGroup == null || collElements1.length == null)
  1798.         return;
  1799.     
  1800.     // Make sure the source element's name contains the designated token
  1801.     // so we know it's top-level element that should be processed.
  1802.     if (srcElem.name.toLowerCase().indexOf(token) != -1)
  1803.     {
  1804.         // Loop through the collection of 
  1805.         for (i = 0; i < collElements1.length; i++)
  1806.         {
  1807.             // Go up one level and then down a level in the element hierarchy to find
  1808.             // the container (parent) element for the clickable sub-elements (radio buttons).
  1809.             var oNextElement = collElements1(i).parentElement.nextSibling;
  1810.             
  1811.             // If there is no such element, get the next element in the collection.
  1812.             if (oNextElement == null || oNextElement.tagName == null)
  1813.                 continue;
  1814.             
  1815.             // Get the collection of all the elements within the container element that 
  1816.             // have the same tag name as the source element.
  1817.             var collElements2 = oNextElement.all.tags(elemTagName);
  1818.             
  1819.             // Make sure the collection is valid.
  1820.             if (collElements2 == null || collElements2.length == 0)
  1821.                 continue;
  1822.  
  1823.             // Loop through the collection of sub-elements within the container element.
  1824.             for (j = 0; j < collElements2.length; j++)
  1825.             {
  1826.                 // If the current element in the collection is not the
  1827.                 // source element, disable it and make the text gray.
  1828.                 if (collElements1(i).sourceIndex != n)
  1829.                 {
  1830.                     oNextElement.className = "indentGray"
  1831.                     collElements2(j).disabled = true;
  1832.                 }
  1833.                 else    // Otherwise, enable the element and make the text black.
  1834.                 {
  1835.                     oNextElement.className = "indentBlack"
  1836.                     collElements2(j).disabled = false;
  1837.                     
  1838.                     // Set the ID for the checked (selected) element for use below.
  1839.                     if (collElements2(j).tagName.toLowerCase() == "input" && 
  1840.                         collElements2(j).type.toLowerCase() == "radio" && 
  1841.                         collElements2(j).checked == true)
  1842.                     {
  1843.                         elemID = collElements2(j).id;
  1844.                     }
  1845.                 }
  1846.             }
  1847.         }
  1848.     }
  1849.     
  1850.     // Get the collection of all of the elements with the same tag name as that
  1851.     // of the source element.
  1852.     var collElements2 = document.all.tags(elemTagName);
  1853.         
  1854.     // Make sure the collection is valid.
  1855.     if (collElements2 == null || collElements2.length == 0)
  1856.         return;
  1857.         
  1858.     // Loop through the collection of elements.
  1859.     for (i = 0; i < collElements2.length; i++)
  1860.     {
  1861.         // Get the collection of all elements with the same ID as the
  1862.         // current item in the collection.
  1863.         var collAssocElems = document.all(collElements2(i).id);
  1864.                 
  1865.         // Make sure the collection is valid.
  1866.         if (collAssocElems == null || collAssocElems.length == 0)
  1867.             continue;
  1868.             
  1869.         // Loop through the collection of same-named elements.
  1870.         for (j = 0; j < collAssocElems.length; j++)
  1871.         {
  1872.             // If the tag name for the current element is different than that for the source element,
  1873.             // and the current element is part of the same group as the source element, 
  1874.             // hide or display the element as appropriate.
  1875.             if (collAssocElems(j).tagName != elemTagName && collAssocElems(j).group == elemGroup)
  1876.             {
  1877.                 // Hide the element unless the current element's ID matches the ID of the element
  1878.                 // that has been checked (selected).
  1879.                 collAssocElems(j).style.display = ((collAssocElems(j).id == elemID) ? "block" : "none")
  1880.             }
  1881.         }
  1882.     }
  1883. }
  1884.  
  1885.