home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 2001 March / macformat-101.iso / mac / Demos / SolidThinking 4 / Help / ehlpdht4.js < prev    next >
Encoding:
JavaScript  |  2000-09-06  |  14.2 KB  |  479 lines  |  [TEXT/dosa]

  1. /// Section Begin  - kadov DHTM (JavaScript 1.2)
  2. // eHelpÆ Corporation Dynamic HTML JavaScript 
  3. // Copyright© 1998-2000 eHelpÆ Corporation.All rights reserved.
  4. // Version=4.42
  5.  
  6. // Warning:Do not modify this file.It is generated by RoboHELPÆ and changes will be overwritten.
  7.  
  8.  
  9.  
  10. //Begin to support extended and dropdown text effects.
  11. function kadovIsParagraph(el)
  12. {
  13.     return( el.tagName == "P" || el.tagName.indexOf("H") == 0 ) ? true : false;
  14. }
  15.  
  16. function kadovInitEachChild(el)
  17. {    
  18.     for(var i=0; i<el.children.length; i++)
  19.     {
  20.         var child = el.children[i];
  21.         if( child.tagName == "SCRIPT" || child.tagName == "!" )
  22.             continue;
  23.  
  24.         if( child.id != "" )
  25.         {
  26.             var tmpID = child.id;
  27.             if( tmpID > "" )
  28.             {
  29.                 // to wipe out the onload effects
  30.                 var onLoadEffect = child.style.getAttribute( "x-on-pageload" );
  31.                 if( (onLoadEffect != null) && (onLoadEffect > "") )
  32.                     child.style.setAttribute( "x-on-pageload", "" );
  33.                 
  34.                 var href = child.getAttribute("href")
  35.                 if( href != null && href > "" && href.indexOf( "BSSCPopup" ) >= 0 )
  36.                     kadovFilePopupInit(tmpID); // Init for Popup
  37.                 else if( child.className == "dropspot" || child.className == "expandspot" || 
  38.                          child.className == "glossterm" )
  39.                     kadovTextPopupInit(tmpID);// Init for Expanding/Glossary or DropDown text
  40.                 else if( child.className == "trigger")
  41.                     kadovInitTrigger(tmpID);// Init for Trigger
  42.                 else
  43.                     kadovInitEffects(tmpID);// Init for DHTML effects
  44.             }
  45.         }
  46.         
  47.         if( (child.tagName == "IMG") && (child.getAttribute("dynsrc") > "") )
  48.             child.start = "mouseover";// to start a AVI file. fileopen doesn't work
  49.  
  50.         kadovInitEachChild(child);
  51.     }
  52. }
  53.  
  54. function kadovRetrieveTextInner(el)
  55. {    
  56.     var x = "";
  57.     if( (!el) || (el.tagName == "!") || (el.tagName == "SCRIPT" ))
  58.         return x;
  59.  
  60.     if( kadovIsParagraph(el) )
  61.     {
  62.         var strNewID = " ";
  63.         if( el.id != "" )
  64.             strNewID += "id=" + el.id + "_NewSpan ";
  65.         x = "<span" + strNewID + "style='" + el.style.cssText + "'>" + el.innerHTML + "</span>";
  66.     }
  67.     else
  68.     {
  69.         for(var i=0; i<el.children.length; i++)
  70.             x += kadovRetrieveTextInner( el.children[i] );
  71.     }
  72.     return x;
  73. }
  74.  
  75. function kadovRetrieveCleanHTML( strRawHTML, strTagOpen, strTagClose, nDistance )
  76. {    
  77.     var nTagOpen = strRawHTML.indexOf( strTagOpen, 0 );
  78.     if( nTagOpen < 0 )
  79.         return strRawHTML;
  80.  
  81.     var nTagClose = strRawHTML.indexOf( strTagClose, nTagOpen);
  82.     if( nTagClose < nTagOpen )
  83.         return strRawHTML;
  84.         
  85.     if( typeof(nDistance) == "number" && nDistance > 0 )
  86.         if( (nTagClose - nTagOpen) != nDistance )
  87.             return strRawHTML;
  88.         
  89.     var strCleanOnce = strRawHTML.substring(0, nTagOpen) + strRawHTML.substr(nTagClose + strTagClose.length) ;
  90.     return     kadovRetrieveCleanHTML( strCleanOnce, strTagOpen, strTagClose );
  91. }
  92.  
  93. function kadovAdjustObjectTag(strRawHTML, nStartPos)
  94. {// adjust object tag for related topics HTML control, because innerHTML misses out the item settings
  95.     
  96.     //Is there any DTC?
  97.     var strDTCTagOpen = '<!--Metadata type="DesignerControl" startspan';
  98.     var strDTCTagClose = '<!--Metadata type="DesignerControl" endspan-->';
  99.     var nDTCTagOpen = strRawHTML.indexOf( strDTCTagOpen, nStartPos );
  100.     if( nDTCTagOpen < 0 )
  101.         return strRawHTML;
  102.     var nDTCTagClose = strRawHTML.indexOf( strDTCTagClose, nDTCTagOpen );
  103.     if( nDTCTagClose < nDTCTagOpen)
  104.         return strRawHTML; // no Design Time Controls;
  105.         
  106.     //Is the DTC HTML Help Control?
  107.     var strRTObjTagOpen = 'classid=clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11';
  108.     var strRTObjTagClose = '</OBJECT>';
  109.     var nRTObjTagOpen = strRawHTML.indexOf( strRTObjTagOpen, nDTCTagOpen );
  110.     if( nRTObjTagOpen < nDTCTagOpen )
  111.         return strRawHTML;
  112.     var nRTObjTagClose = strRawHTML.indexOf( strRTObjTagClose, nRTObjTagOpen );
  113.     if( nRTObjTagClose < nRTObjTagOpen )
  114.         return strRawHTML; // is not a HTML help control
  115.         
  116.     // Is it a related Topics html help control?
  117.     var strRTObjLabel = '<PARAM NAME=\"Command\" VALUE=\"Related Topics';
  118.     if( strRawHTML.indexOf(strRTObjLabel, nRTObjTagOpen) < 0 )
  119.         return strRawHTML;
  120.     
  121.     // does the commented object tag contain a items parameters        
  122.     var strRTItemsOpen = '<param name=Items value="';
  123.     var strRTItemsClose = '$$**$$" >';
  124.     var nRTItemsOpen = strRawHTML.indexOf(strRTItemsOpen, nDTCTagOpen);
  125.     if( nRTItemsOpen < nDTCTagOpen )
  126.         return strRawHTML;
  127.     var nRTItemsClose = strRawHTML.indexOf(strRTItemsClose, nRTItemsOpen);
  128.     if( nRTItemsClose < nRTItemsOpen )
  129.         return strRawHTML;
  130.         
  131.     // found a items string
  132.     var strItems = strRawHTML.substring( nRTItemsOpen + strRTItemsOpen.length, nRTItemsClose);
  133.     if( strItems.length < 1 )
  134.         return strRawHTML;
  135.     
  136.     // to reconstruct the item(s) param tag(s)
  137.     var strItemsArray = strItems.split('$$**$$');
  138.     if( strItemsArray.length < 1 )
  139.         return strRawHTML;
  140.     var strRunTimeItemParam = "";
  141.     for( var i = 0; i < strItemsArray.length; i++ )
  142.     {
  143.         strRunTimeItemParam += '<PARAM  NAME="Item' + (i+1);
  144.         strRunTimeItemParam += '"' + '  VALUE="';
  145.         strRunTimeItemParam += strItemsArray[i];
  146.         strRunTimeItemParam += '">';
  147.     }
  148.     
  149.     // to insert the reconstructed item params into runtime object tag
  150.     var strAdjustedHTML = strRawHTML.substring(0,nRTObjTagClose) + strRunTimeItemParam + strRawHTML.substring(nRTObjTagClose, strRawHTML.length);
  151.     return kadovAdjustObjectTag(strAdjustedHTML, nDTCTagClose + strDTCTagClose.length);
  152. }
  153.  
  154. function kadovTextPopupOnLoad( el )
  155. {
  156.     if( !CCSSP.bIsWinOS )
  157.         return;
  158.  
  159.     if( typeof(el) == "string" )
  160.         el = document.all.item(el);
  161.  
  162.     var src = el.getAttribute( "x-use-popup" );
  163.     if(!src)
  164.         return;
  165.  
  166.     var name = src;
  167.     if( src.substr(0,1) == "#" ) 
  168.         name = src.substr(1, src.length-1);
  169.     var srcDiv = document.all.item(name);
  170.     if( !srcDiv )
  171.         return 1;
  172.  
  173.     var type = el.getAttribute( "x-popup-type" );
  174.     var setup = el.getAttribute( "x-tmp-setup" );
  175.     var newId = name;
  176.     if( newId.indexOf( "_tmp") <= 0 )
  177.         newId += "_tmp";
  178.  
  179.     if( !setup )
  180.     {
  181.         el.setAttribute( "x-tmp-setup", 1 );
  182.     
  183.         if( type == "pulldown"  )
  184.         {
  185.             var strAdjust = kadovAdjustObjectTag(srcDiv.innerHTML,0);
  186.             var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");
  187.             strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");
  188.  
  189.             //work around the bug in HH.exe that highlight the phrases when use Search tab
  190.             //this approach is just removing the <FONT...> tag inserted by Microsoft in the runtime
  191.             strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<FONT color=#", "\">", 52);
  192.             
  193.             var strStyle = " style='display:none; position:relative;";
  194.             var newDiv = "<div class=droptext id=" + newId + strStyle + "'>" + strCleanHTML + "</div>";
  195.  
  196.             srcDiv.outerHTML = ""; // empty the original DIV tag
  197.             var elParentPra = kadovFindParentParagraph(el);
  198.             if( elParentPra )
  199.                 elParentPra.insertAdjacentHTML( "AfterEnd", newDiv );
  200.         }
  201.         else if( type == "expanding"  )
  202.         {
  203.             var inner = kadovRetrieveTextInner(srcDiv);
  204.             if( inner == "" )
  205.                 inner = srcDiv.innerHTML;
  206.             var strAdjust = kadovAdjustObjectTag(inner,0);
  207.             var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");
  208.             strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");
  209.             var strClassName = (el.className == "glossterm") ? "glosstext" : "expandtext";
  210.             var newSpan = "<span class=" + strClassName + " style='display: none;' id=" + newId + "> " + strCleanHTML + "</span>";
  211.             srcDiv.outerHTML = ""; // empty the original DIV tag
  212.             el.insertAdjacentHTML( "AfterEnd", newSpan );
  213.         }
  214.     }
  215. }
  216.  
  217. function kadovTextPopup( el )
  218. {
  219.     if( (!CCSSP.bIsWinOS) || (window.event == null) )
  220.         return;
  221.     window.event.cancelBubble = true;
  222.  
  223.     if( typeof(el) == "string" )
  224.         el = document.all.item(el);
  225.  
  226.     var src = el.getAttribute( "x-use-popup" );
  227.     if(!src)
  228.         return 1;
  229.  
  230.     var name = src;
  231.     if( src.substr(0,1) == "#" ) 
  232.         name = src.substr(1, src.length-1) + "_tmp";
  233.     var srcDiv = document.all.item(name);
  234.     if( !srcDiv )
  235.         return 1;
  236.  
  237.     var type = el.getAttribute( "x-popup-type" );
  238.     var setup = el.getAttribute( "x-tmp-setup" );
  239.     if( srcDiv )
  240.     {
  241.         if( srcDiv.style.display == "" )
  242.             srcDiv.style.display = "none";
  243.         else
  244.         {
  245.             srcDiv.style.display = "";
  246.             kadovInitEffects(name);
  247.             kadovInitEachChild(srcDiv);
  248.         }
  249.     }
  250. }
  251.  
  252. function kadovFindParentParagraph( el )
  253. {
  254.     if( typeof(el) == "string" )
  255.         el = document.all.item(el);
  256.     if( (!el) || el.tagName == "BODY" )
  257.         return null;
  258.     if( kadovIsParagraph(el.parentElement) )
  259.         return el.parentElement;
  260.     else
  261.         return kadovFindParentParagraph( el.parentElement );
  262. }
  263.  
  264. //Begin HTML code invoked function
  265. function kadovRegisterEventHandler( obj, strEvent, strEventHandler )
  266. {
  267.     if( !gbBsIE4 )
  268.         return;
  269.     CCSSP.RegisterEventHandler( obj, strEvent, strEventHandler );
  270. }
  271.  
  272. function kadovTextPopupInit( el )
  273. {
  274.     if( (!gbBsIE4) || (!CCSSP.bIsWinOS) )
  275.         return;
  276.         
  277.     if( typeof(el) == "string" )
  278.         el = document.all.item(el);
  279.     if( el != null )
  280.     {
  281.         CCSSP.RegisterEventHandler( el, "onclick", "kadovTextPopup(" + el.id +");" );
  282.         CCSSP.RegisterEventHandler( window, "onload", "kadovTextPopupOnLoad(" + el.id +");" );
  283.     }
  284. }
  285. //End HTML code invoked function
  286.  
  287. //End to support extended and dropdown text effects.
  288.  
  289. //Begin to convert iWrite format to RoboEditor Format for DHTML effects
  290. function kadovInitTriggersInHead( )
  291. {
  292.   if( Object.xDelayedInitElements )
  293.   {
  294.      var x = Object.xDelayedInitElements;
  295.      for(i=0; i<x.length; i++)
  296.          kadovInitTrigger( x[i] );
  297.   }
  298. }
  299.  
  300. //Begin HTML code invoked function
  301. function kadovFilePopupInit( el )
  302. {
  303.     if( !gbBsIE4 )
  304.         return;
  305.     if( typeof(el) == "string" )
  306.         el = document.all.item(el);
  307.  
  308.     //_BSSCCreatePopupDivOnWriteForKodav();
  309.  
  310.     if( el != null )
  311.         CCSSP.RegisterEventHandler( el, "onmouseover", "BSPSPopupOnMouseOver(event);" );
  312. }
  313.  
  314. function kadovInitTrigger( element )
  315. {
  316.     if( !gbBsIE4 )
  317.         return;
  318.     var srcElement = element;
  319.     if( typeof(srcElement) == "string" )
  320.     {
  321.         srcElement = document.all.item(element,0);
  322.         if(srcElement == null)
  323.             return;
  324.     }
  325.     
  326.     if( !kadovIsParentVisible(srcElement) )
  327.         return;
  328.  
  329.     var targets = srcElement.getAttribute( "x-targets" );
  330.     var arrOneTarget = targets.split( "," );
  331.     for( var i = 0; i < arrOneTarget.length; i ++ )
  332.         bsscFXInit( element, arrOneTarget[i], null, null, null, null );
  333. }
  334.  
  335. function kadovIsParentVisible( el )
  336. {
  337.     if( typeof(el) == "string" )
  338.         el = document.all.item(el);
  339.     if( (!el) || el.tagName == "BODY" )
  340.         return true;
  341.     if( el.style.display == 'none' ) //el.visibility == 'hidden' || 
  342.         return false;
  343.     else
  344.         return kadovIsParentVisible( el.parentElement );
  345. }
  346.  
  347. function kadovInitEffects( element )
  348. {
  349.     if( !gbBsIE4 )
  350.         return;
  351.     var srcElement = element;
  352.     if( typeof(srcElement) == "string" )
  353.     {
  354.         srcElement = document.all.item(element,0);
  355.         if(srcElement == null)
  356.             return;
  357.     }
  358.     
  359.     if( !kadovIsParentVisible(srcElement) )
  360.         return;
  361.     
  362.     kadovInitEffect( srcElement, "x-on-hover" );
  363.     kadovInitEffect( srcElement, "x-on-pageclick" );
  364.     kadovInitEffect( srcElement, "x-on-pageload" );
  365.     kadovInitEffect( srcElement, "x-on-trigger-1" );
  366.     kadovInitEffect( srcElement, "x-on-trigger-2" );
  367. }
  368. //End HTML code invoked function
  369.  
  370. function kadovInitEffect( element, prop )
  371. {
  372.     var values = null;
  373.     if( element.getAttribute( "currentStyle" ) )
  374.         values = element.currentStyle.getAttribute( prop );
  375.     else 
  376.         values = element.style.getAttribute( prop );
  377.     if( !values )
  378.         return;
  379.  
  380.     var functions = new Array();
  381.     var nIdx = 0, nStart = 0;
  382.     var nNext = values.indexOf( "\)", 0);
  383.     while( nNext >= 0 && nNext < values.length )
  384.     {
  385.         functions[nIdx] = values.substr( nStart, nNext-nStart+1);
  386.         nStart = nNext + 1;
  387.         nIdx++;
  388.         nNext = values.indexOf( "\)", nStart);
  389.     }
  390.         
  391.     for( var i=0; i<functions.length; i++)
  392.     {
  393.         var id = element.getAttribute( "id" );
  394.         var translatedProp = kadovTranslateProp(prop);
  395.  
  396.         var lp = functions[i].indexOf( "(" );
  397.         var fnname = functions[i].substring(0, lp);
  398.         var srcargs = functions[i].substring(lp+1, functions[i].length-1);
  399.         
  400.         var nClickTimes = 1;
  401.         var arrForClickCount = srcargs.split( "," );
  402.         for( var j = 0; j < arrForClickCount.length; j++ )
  403.         {// to locate and get the "clicks=99" settings
  404.             var nPageClick = arrForClickCount[j].indexOf("clicks");
  405.             if( nPageClick >= 0 )
  406.             {
  407.                 nPageClick = arrForClickCount[j].indexOf("=");
  408.                 if( nPageClick > 0 )
  409.                 {
  410.                     nClickTimes = arrForClickCount[j].substring( nPageClick + 1, arrForClickCount[j].length) * 1;
  411.                     break;
  412.                 }
  413.             }
  414.         }
  415.         var args = srcargs;
  416.         if( j < arrForClickCount.length )
  417.         {// to strip out the "clicks=99" from the arguments string
  418.             args = "";
  419.             for( var k = 0; k < arrForClickCount.length; k ++ )
  420.             {
  421.                 if( k != j )
  422.                 {
  423.                     args += arrForClickCount[k];
  424.                     if( k < arrForClickCount.length - 1 )
  425.                         args += ",";
  426.                 }
  427.             }
  428.         }
  429.         bsscFXInit( null, id, translatedProp, fnname, args, nClickTimes );
  430.     }
  431. }
  432.  
  433. function kadovTranslateProp( prop )
  434. {
  435.     switch( prop )
  436.     {
  437.     case "x-on-hover" :     return "bsschover";
  438.     case "x-on-pageclick" : return "bsscpageclick";
  439.     case "x-on-pageload" :  return "bsscpageload";
  440.     case "x-on-trigger-1" : return "bssctrigger1";
  441.     case "x-on-trigger-2" : return "bssctrigger2";
  442.     }
  443.     return null;
  444. }
  445. //End to convert iWrite format to RoboEditor Format for DHTML effects
  446.  
  447. //Begin the definition of one entry to DHTML effects
  448. function bsscFXInit( trigger_ID, target_ID, event_type, 
  449.     action_type, action_setting, event_addional )
  450. {
  451.     if( !CCSSP.bIsWinOS || typeof(target_ID) != "string" )//MUST have a target_ID
  452.         return; // we don't support Navigator yet
  453.     
  454.     if( typeof(event_type) == "string" )
  455.         event_type = event_type.toLowerCase();
  456.     if( typeof(action_type) == "string" )
  457.         action_type = action_type.toLowerCase();
  458.     if( typeof(action_setting) == "string" )
  459.          action_setting = action_setting.toLowerCase();
  460.     
  461.     // to get the target element then add it to the target list
  462.     var eleTarget = CCSSP.GetObject( target_ID );
  463.     if( (eleTarget != null) && (event_type != null) && (action_type != null) )
  464.     {
  465.         CEngine.AddOneTarget( target_ID, eleTarget );
  466.         CEngine.BuildTargetObject(target_ID, event_type, action_type, action_setting, event_addional);
  467.     }
  468.     
  469.     // to validate the trigger_ID parameter
  470.     if( typeof(trigger_ID) == "string" && trigger_ID != "" )
  471.         CEngine.BuildTriggerObject( trigger_ID, target_ID );
  472. }    
  473. //End the definition of one entry to DHTML effects
  474.  
  475.  
  476. /// Section End  - kadov DHTM (JavaScript 1.2)
  477.  
  478.  
  479.