home *** CD-ROM | disk | FTP | other *** search
/ PC World Plus! (NZ) 2000 September / PCWORLD_PLUS.iso / review / wmp7.exe / RCDATA / CABINET / wmplayer.chm / glossary.js < prev    next >
Text File  |  2000-06-15  |  7KB  |  206 lines

  1. /* Localize the following variables */
  2. /* Start Localize */
  3. var sErr_EntryNotFound        = "<P STYLE='color:red'><B> Definition not found.</B></P>";
  4. var sGlossaryPopUpTitle        = "Glossary Term";
  5. /* End Localize */
  6.  
  7. //----------------------------------------------------------------------------------
  8.  
  9. // Global variables 
  10. var bDataSetComplete         = false;            // flag to ensure the user will not access DB before load complete
  11. var sDBGlossary             = "../dbGlossary.csv";    // path to glossary DB file
  12. var sPopUpBGColor             = "lightblue";        // popup background color
  13. var sPopUpShadowBGColor     = "lightblue";        // popup background color
  14. var oBInfo                     = GetBrowserInfo();    // browser information 
  15.  
  16. // Call Intialize PopUp Glossary
  17. Initialize();
  18.  
  19. // Main popup glossary subroutine, gets called everytime the user clicks on the on a glossary keyword
  20. function Glossary(oObj)
  21. {    
  22.     // If DB not loaded exit
  23.     // Removing safety check for IE4, under IE4 on WinNT4 TDC.ondatasetcomplete event never fires.
  24.     // Safety will only work for IE5
  25.     if(oBInfo.GB && bDataSetComplete == false) return;
  26.     // Reposition pop-up tray 
  27.     PosPopUpTray(idPopUpTray);
  28.  
  29.     // Get keyword definition from glossary database
  30.     idPopUp.innerHTML = GetKeyDef(dbGlossary.recordset, oObj.RID);
  31.  
  32.     // Set shadow 
  33.     idPopUpShadow.innerHTML = idPopUp.innerHTML
  34.  
  35.     // Display pop-up glossary
  36.     DspPopUp(1);
  37. }
  38.  
  39. // Method reposition glossary popup tray underneath the glossary keyword.
  40. function PosPopUpTray(oObj)
  41. {
  42.     var offSetLeft     = window.event.clientX + document.body.scrollLeft ;
  43.     var offSetTop    = window.event.clientY + document.body.scrollTop ;
  44.     var offSetWidth    = document.body.offsetWidth;
  45.     
  46.     // Avoid runing off to the right of the screen
  47.     if (((offSetLeft + 430) > offSetWidth) && (offSetWidth > 430 )) 
  48.     {
  49.         offSetLeft     = offSetWidth - parseInt(oObj.style.width) - 34 ;
  50.     }
  51.     oObj.style.left    = offSetLeft;    // set new x coordinate
  52.     oObj.style.top     = offSetTop;    // set new y coordinate
  53. }
  54.  
  55. // Method obtains keyword deffinition
  56. function GetKeyDef(oRecordSet, sKeyWord)
  57. {
  58.     var sDef = "";
  59.     oRecordSet.MoveFirst();
  60.  
  61.     for(var i=0; i < oRecordSet.RecordCount; i++)    // >
  62.     {
  63.         // If we found our keyword in the record set extract deffinition and exit
  64.         if(sKeyWord == oRecordSet.fields.item('rid').value)
  65.         {
  66.             sDef = "<P><B>" + oRecordSet.fields.item('key').value + "</B><BR>"
  67.             sDef = sDef + oRecordSet.fields.item('def').value + "</P>"
  68.             return sDef;
  69.         }
  70.         // Advance to next element
  71.         oRecordSet.MoveNext();
  72.     }
  73.     
  74.     sDef = sErr_EntryNotFound ;
  75.     return sDef;
  76. }
  77.  
  78. // Method turns pop-up tray display on/off
  79. function DspPopUp(nState)
  80. {
  81.     if(nState == 0)
  82.     {
  83.         idPopUpTray.style.display     = "none";
  84.     }
  85.     else if(nState == 1)
  86.     {
  87.         idPopUpTray.style.display     = "";
  88.         fadeIn(idPopUp);
  89.         idPopUpShadow.focus();
  90.     }
  91. }
  92.  
  93. // Method hides pop-up glossary
  94. function HidePopUp()
  95. {    
  96.     if(window.event.srcElement == null)
  97.     {
  98.         DspPopUp(0);
  99.     }
  100.     else if (window.event.srcElement.id != "idGlossary")
  101.     {
  102.         DspPopUp(0);
  103.     }
  104. }
  105.  
  106. // Method fades in the pop-up
  107. function fadeIn(oObj)
  108. {
  109.     if(!oBInfo.GB) return ;
  110.     oObj.style.filter="blendTrans(duration=.30";
  111.     // make sure filter is not already playing
  112.     if (oObj.filters.blendTrans.status != 2) 
  113.     {
  114.         oObj.style.visibility="hidden";
  115.         oObj.filters.blendTrans.apply();
  116.         oObj.style.visibility="visible";
  117.         oObj.filters.blendTrans.play();
  118.     }
  119. }
  120.  
  121. // Set all objects required for the pop-up glossary 
  122. function Initialize()
  123. {
  124.     // Create style string
  125.     var sStyle = '' + 
  126.     '<STYLE> #idGlossary{cursor: hand; color: green; text-decoration: underline;}</STYLE>';
  127.  
  128.     // Create Glossary onclick event handler
  129.     var sOnClickEvent = '' + 
  130.     '<SCR' + 'IPT LANGUAGE="JScript" FOR="idGlossary" EVENT="onclick">' +
  131.     '    Glossary(this);' +
  132.     '</SCR' + 'IPT>' ;
  133.  
  134.     // Create Glossary onmouseover event handler
  135.     var sOnMouseOverEvent = '' + 
  136.     '<SCR' + 'IPT LANGUAGE="JScript" FOR="idGlossary" EVENT="onmouseover">' +
  137.     '    this.title = "' + sGlossaryPopUpTitle + '";' +
  138.     '</SCR' + 'IPT>' ;
  139.  
  140.     // Create TBDCtl string
  141.     var sObj = '' + 
  142.     '<OBJECT ID="dbGlossary" CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83" STYLE="height: 0; width: 0;" ondatasetcomplete="bDataSetComplete = true">' + 
  143.     '    <PARAM NAME="DataURL" VALUE="' + sDBGlossary + '">' +
  144.     '    <PARAM NAME="UseHeader" VALUE="True">' + 
  145.     '    <PARAM NAME="TextQualifier" VALUE="|">' +
  146.     '</OBJECT>' ;
  147.  
  148.     // Create event handlers string
  149.     var sEvtHandle = '' +
  150.     '<SCR' + 'IPT LANGUAGE="JScript">' +
  151.     '    document.onmousedown    = HidePopUp;' + 
  152.     '    window.onresize             = HidePopUp;' +
  153.     '</SCR' + 'IPT >';
  154.  
  155.     // Create popup string , lemonchiffon
  156.     var sPopUp = '' +
  157.     '<DIV ID="idPopUpTray" STYLE="display: none; z-index:1; width:400; height:10; position:absolute; padding: 0; border-style: inset; border-width:0;">' + 
  158.     '    <DIV ID="idPopUp"             STYLE="z-index:3; width:400; height: 10; position:absolute; font:8pt Tahoma; line-height: 8pt; background-color:' + sPopUpBGColor + '; top: 0; left: 0; padding: 7; margin: 6; border-style: inset; border-left-width: 1; border-top-width: 1; border-right-width: 2; border-bottom-width: 2; border-right-color: black; border-bottom-color: black; "> </DIV>' + 
  159.     '    <DIV ID="idPopUpShadow"     STYLE="z-index:2; width:400; height: 10; position:absolute; font:8pt Tahoma; line-height: 8pt; background-color:' + sPopUpShadowBGColor + '; color:' + sPopUpShadowBGColor + ';top: 6; left:-6; padding: 7; margin: 6; border-style: solid; border-left-width: 1; border-top-width: 1; border-right-width: 2; border-bottom-width: 2; border-right-color: black; border-color:' + sPopUpShadowBGColor + '; filter:alpha(opacity=50, style=0);"> </DIV>' + 
  160.     '</DIV>' ;
  161.  
  162.     // Write objects to document
  163.     window.self.document.write(sStyle);
  164.     window.self.document.write(sOnClickEvent);
  165.     window.self.document.write(sOnMouseOverEvent);
  166.     window.self.document.write(sObj);
  167.     window.self.document.write(sPopUp);
  168.     window.self.document.write(sEvtHandle);
  169. }
  170.  
  171. // Container for browser/os information
  172. function BrowserInfo()
  173. {
  174.     this.Type     = "";
  175.     this.Ver     = 0;
  176.     this.Plat    = "";
  177.     this.GB        = false;
  178. }
  179.  
  180. // Determines browser/os platforms
  181. // Question: Will this code work with localized versions of the browser ??
  182. // ToDo: Test the code to see if it works under Netscape. On mac OS. 
  183. function GetBrowserInfo()
  184. {
  185.     var brw = new BrowserInfo; 
  186.     sUA = window.navigator.appVersion;
  187.     
  188.     if (parseInt(sUA.indexOf("MSIE ")) >= 0) // Check if IE
  189.     {
  190.         brw.Type = "IE";
  191.         brw.Ver = parseInt(sUA.substring(sUA.indexOf("MSIE ")+5,sUA.indexOf (".",sUA.indexOf("MSIE "))));
  192.         if (sUA.lastIndexOf("Win") >= 0)
  193.             brw.Plat = "Win";
  194.     }
  195.     else if(parseInt(navigator.appName.lastIndexOf("Netscape"))>=0)
  196.     {
  197.         brw.Type = "Nav";
  198.         brw.Ver = parseInt(sUA.substring(0, sUA.indexOf('.')));
  199.     }
  200.  
  201.     if (sUA.indexOf("Mac") != -1) {brw.Plat = "Mac"};
  202.     
  203.     brw.GB = (brw.Type == "IE" && brw.Ver >= 5 && brw.Plat == "Win");
  204.     return brw;
  205. }
  206.