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

  1. /// Section Begin  - CCSSP DHTM 1 (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 the definition of class CTrigger
  11. function CTrigger( TriggerElement )
  12. {
  13.     // object : the trigger element. Never be null. 
  14.     this.eleTrigger = TriggerElement;
  15.     
  16.     // number : the click counter number: only 3 values: 0,1,2;
  17.     this.nCounter = 0; 
  18.     
  19.     //object as associative array of string:
  20.     // the associate target ID strings; one element at least.            
  21.     this.objStrTarget = new Object();
  22.     this.eleTrigger.style.cursor = "hand";
  23.     if( this.eleTrigger.tagName == "AREA" && this.eleTrigger.getAttribute("href") == "" )
  24.         this.eleTrigger.setAttribute("href", "#") // to make a hand cursor for image map
  25. }
  26.  
  27. CTrigger.prototype.AddTargetID = function( strTargetID )
  28. {// add one target ID string to the objStrTarget
  29.     if( typeof(strTargetID) != "string" )
  30.         return ;
  31.     if( typeof(this.objStrTarget[strTargetID]) != "string" )
  32.         this.objStrTarget[strTargetID] = strTargetID;
  33. }
  34.  
  35. CTrigger.prototype.OnTriggerClick = function()
  36. {// to activate all asociated target
  37.     var strEventType = ( (this.nCounter++)% 2 == 0 ) ? 
  38.         "bssctrigger1" : "bssctrigger2";
  39.         
  40.     // to enumerate associative target element's ID string
  41.     for( var strTargetID in this.objStrTarget ) 
  42.         CEngine.SendEventToOneTarget( strTargetID, strEventType );
  43. }
  44. //End the definition of class CTrigger
  45.  
  46. //Begin the definition of class CTarget
  47. function CTarget( TargetElement )
  48. {
  49.     // object : the target element. Never be null.
  50.     this.eleTarget = TargetElement;
  51.     this.objManager = new Object(); // object: the event manager
  52.  
  53. CTarget.nPageClickCounter = 0;// static class property.
  54.  
  55. CTarget.prototype.GetAgencyObject = function(str_action_type,action_setting )
  56. {// return the action agency ( effect )object's refernece 
  57.     switch( str_action_type )
  58.     {
  59.     case "show":return new CAgencyShow( this.eleTarget, true ) ;
  60.     case "hide":return new CAgencyShow( this.eleTarget, false ) ;
  61.  
  62.     case "flyin" : 
  63.         return new CAgencyFly(this.eleTarget, action_setting, true);
  64.     case "flyout" : 
  65.         return new CAgencyFly(this.eleTarget, action_setting, false);
  66.     case "spiralin" : 
  67.         return new CAgencySpiral(this.eleTarget, action_setting, true);
  68.     case "spiralout" : 
  69.         return new CAgencySpiral(this.eleTarget, action_setting, false);
  70.     case "zoomin" :
  71.         return new CAgencyZoom(this.eleTarget, action_setting, true);
  72.     case "zoomout" : 
  73.         return new CAgencyZoom(this.eleTarget, action_setting, false);
  74.     case "elastic" : 
  75.         return new CAgencyElastic(this.eleTarget, action_setting);
  76.         
  77.     case "fadein" : 
  78.         return (CCSSP.bIsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, true) : null;
  79.     case "fadeout" :
  80.         return (CCSSP.bIsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, false) : null;
  81.     case "rockrollstatic" :
  82.     case "rockroll" :
  83.         return (CCSSP.bIsIE4)? new CAgencyWave(this.eleTarget, action_setting, false) : null;
  84.  
  85.     case "glow":
  86.         return (CCSSP.bIsIE4)? new CAgencyGlow(this.eleTarget,action_setting) : null;
  87.     case "dropshadow":
  88.         return (CCSSP.bIsIE4)? new CAgencyDropShadow(this.eleTarget,action_setting) : null;
  89.     case "transition" :
  90.         return (CCSSP.bIsIE4)? new CAgencyRevealTrans(this.eleTarget,action_setting) : null;
  91.     case "blur" :
  92.         return (CCSSP.bIsIE4)? new CAgencyBlur(this.eleTarget,action_setting) : null;
  93.  
  94.     case "fliph" : // all these 4 do NOT need any parameters
  95.     case "flipv" :
  96.     case "invert":
  97.     case "gray" :
  98.         return (CCSSP.bIsIE4)? new CAgencyChangeFilter(this.eleTarget, str_action_type) : null;
  99.     
  100.     case "fontchange": // the effects below change the style on the fly, so won't work in Navigator
  101.         return (CCSSP.bIsIE4)? new CAgencyFontChange(this.eleTarget,action_setting) : null;
  102.     case "boderchange": 
  103.     case "stylechange":
  104.         return (CCSSP.bIsIE4)? new CAgencyChangeStyle(this.eleTarget,action_setting) : null;
  105.  
  106.     default: return null;
  107.     }
  108. }
  109.  
  110. CTarget.prototype.SetEventManager = function( 
  111.     one_event_type,str_action_type,action_setting,event_additional)
  112. {// to set the event manager with specified action 
  113.     if( typeof( one_event_type ) != "string" ||    
  114.         typeof( str_action_type ) != "string"||
  115.         typeof( action_setting ) != "string" )
  116.         return false;
  117.     if( typeof(this.objManager[one_event_type]) == "undefined" )
  118.     {
  119.         this.objManager[one_event_type] = new Object();
  120.         this.objManager[one_event_type].length = 0;
  121.     }
  122.     
  123.     var eventAgency = this.GetAgencyObject(str_action_type,action_setting);
  124.     if( eventAgency != null )
  125.     {
  126.         var ct = this.objManager[one_event_type].length ++;
  127.         this.objManager[one_event_type][ct] = eventAgency;
  128.         
  129.         if( one_event_type == "bsscpageclick" )
  130.         {// to deal with the "number of pageclick" stuff
  131.             if( typeof(event_additional) == "number" )
  132.                 this.objManager[one_event_type][ct].nPageClick = event_additional;
  133.             else // set the default number 
  134.                 this.objManager[one_event_type][ct].nPageClick = 1;
  135.             
  136.             if( (typeof(this.objManager.nMinPageClickIndex) == "undefined") ||
  137.                 (this.objManager[one_event_type][ct].nPageClick < 
  138.                     this.objManager[one_event_type][this.objManager.nMinPageClickIndex].nPageClick) )
  139.                 this.objManager.nMinPageClickIndex = ct;
  140.         }
  141.         
  142.         //hide the object blindly,SetState function will take care of the final correct state
  143.         if( ((one_event_type == "bsscpageclick") && 
  144.              (this.objManager[one_event_type][ct].nPageClick == 1)) ||
  145.             one_event_type == "bsscpageload" ||
  146.             one_event_type == "bssctrigger1" )
  147.             CCSSP.ShowObject( this.eleTarget, false );
  148.         return true;
  149.     }
  150.     return false;
  151. }
  152.  
  153. CTarget.prototype.OnEvent = function( strBsscEvent )
  154. {// response to the event ( bssc format )
  155.     if( typeof(this.objManager[strBsscEvent]) == "object" )
  156.     { // to get the event agency from the event manager
  157.         var eventAgency = this.objManager[strBsscEvent];
  158.         for( var i = 0; i < eventAgency.length; i++ )
  159.         {
  160.             if( strBsscEvent == "bsscpageclick" && 
  161.                  eventAgency[i].nPageClick != CTarget.nPageClickCounter )
  162.                  continue;
  163.             else if( strBsscEvent == "bsschover" && event.type == "mouseout" )
  164.                 eventAgency[i].EndEffect();
  165.             else // to invoke the unified function in effect object    
  166.                 eventAgency[i].UpdateEffect(); 
  167.         }
  168.     }
  169. }
  170.  
  171. CTarget.prototype.SetState = function( strBsscEvent )
  172. {
  173.     if( typeof(this.objManager[strBsscEvent]) != "object" )
  174.         return false;
  175.  
  176.     // to get the event agency from the event manager
  177.     var eventAgency = this.objManager[strBsscEvent];
  178.     
  179.     if( strBsscEvent == "bsscpageclick" )
  180.     {// we only set the initial state for the minium number of pageclick 
  181.         eventAgency[this.objManager.nMinPageClickIndex].PrepareEffect();
  182.         return true;
  183.     }
  184.     else
  185.     {
  186.         for( var i = 0; i < eventAgency.length; i++ )
  187.             eventAgency[i].PrepareEffect(); // to invoke the unified function in effect object     
  188.         if( i > 0 )
  189.             return true;
  190.         else
  191.             return false;
  192.     }
  193. }
  194. //End the definition of class CTarget
  195.  
  196. //Begin the definition of CEngine class
  197. function CEngine(){}// all properities are going be "class" properities
  198.  
  199. // object : as associative array of trigger objects
  200. CEngine.objTrigger = new Object();
  201. // object : as associative array of target objects 
  202. CEngine.objTarget = new Object(); 
  203.  
  204. // Array : each element is a CAgencyXXX animation object
  205. CEngine.arrAnimation = new Array();
  206. CEngine.PerformAnimation = function( nIndex )
  207. {// animation : update effects function
  208.     CEngine.arrAnimation[nIndex].UpdateEffect();
  209. }
  210.  
  211. CEngine.AddOneTrigger = function(TriggerID,TriggerElement)
  212. {// add one Trigger object into the trigger array
  213.     if( typeof(TriggerID) != "string" || TriggerElement == null ||
  214.         typeof(TriggerElement) != "object" )
  215.         return;
  216.     if( typeof(CEngine.objTrigger[TriggerID] ) != "object" )
  217.         CEngine.objTrigger[TriggerID] = new CTrigger(TriggerElement);
  218. }
  219.     
  220. CEngine.AddOneTarget = function(TargetID, TargetElement)
  221. {// add one Target object into the target array
  222.     if( typeof(TargetID) != "string" || TargetElement == null ||
  223.         typeof(TargetElement) != "object" )
  224.         return;
  225.     if( typeof(CEngine.objTarget[TargetID]) != "object" )
  226.         CEngine.objTarget[TargetID] = new CTarget( TargetElement );
  227. }
  228.  
  229. CEngine.SendEventToOneTarget = function(strTargetID, strBsscEvent )
  230. {// to activate one target object
  231.     if( typeof(CEngine.objTarget[strTargetID]) == "object" ) 
  232.         CEngine.objTarget[strTargetID].OnEvent( strBsscEvent );
  233. }
  234.  
  235. CEngine.SendEventToAllTarget = function( strBsscEvent )
  236. { //to activate all target associative to the BSSC event
  237.     for( var strTargetID in CEngine.objTarget ) //to enumerate all target
  238.         CEngine.SendEventToOneTarget( strTargetID, strBsscEvent );
  239. }
  240.  
  241. CEngine.SetOneTargetInitialState = function( strTargetID )
  242. {// only invoked after ALL effects for the target have been set
  243.     if( typeof(CEngine.objTarget[strTargetID]) == "object" ) 
  244.     {// to get target object
  245.         var objTarget = CEngine.objTarget[strTargetID];
  246.         if( objTarget.SetState( "bsscpageload" ) == false )
  247.         {
  248.             objTarget.SetState( "bsscpageclick" );
  249.             objTarget.SetState( "bssctrigger1" );
  250.         }
  251.     }
  252. }
  253.  
  254. CEngine.AdjustPageClickCounter = function()
  255. {
  256.     var nAdjustedClickCounter = CTarget.nPageClickCounter;
  257.     var bAdjusted = false;
  258.     for( var strTargetID in CEngine.objTarget ) //to enumerate all target
  259.     {// try to find the minum pageCliclConter greater than CTarget.nPageClickCounter
  260.         var objEventPageClick = CEngine.objTarget[strTargetID].objManager.bsscpageclick;
  261.         if( objEventPageClick != null )
  262.         {
  263.             for( var i = 0; i < objEventPageClick.length; i++ )
  264.             {
  265.                 var nOtherPageClick = objEventPageClick[i].nPageClick;
  266.                 if( nOtherPageClick == CTarget.nPageClickCounter )
  267.                     return;
  268.                 if( nOtherPageClick > CTarget.nPageClickCounter )
  269.                 {
  270.                     if( !bAdjusted )
  271.                     {
  272.                         nAdjustedClickCounter = nOtherPageClick;
  273.                         bAdjusted = true;
  274.                     }
  275.                     else if( nOtherPageClick < nAdjustedClickCounter )
  276.                         nAdjustedClickCounter = nOtherPageClick;
  277.                 }
  278.             }
  279.         }
  280.     }
  281.     CTarget.nPageClickCounter = nAdjustedClickCounter;
  282. }
  283.  
  284. CEngine.OnPageLoad = function()
  285. {     
  286.     // first, to set all target's initial state
  287.     for( var strTargetID in CEngine.objTarget )
  288.         CEngine.SetOneTargetInitialState( strTargetID );
  289.     
  290.     // to invoke all target's onpageload handler
  291.     CEngine.SendEventToAllTarget( "bsscpageload" );
  292. }
  293.  
  294. CEngine.OnPageClick = function()
  295. { // to invoke all target's onpageclick handler
  296.     var src = CCSSP.GetEventElement( arguments[0] );
  297.     if( src == null )
  298.         return;
  299.         
  300.     var objClickedTrigger = null;
  301.     for( var strTriggerID in CEngine.objTrigger )
  302.     { // to detect which trigger is clicked
  303.         if( CCSSP.IsDescendant( CEngine.objTrigger[strTriggerID].eleTrigger,src) )
  304.         {
  305.             objClickedTrigger = CEngine.objTrigger[strTriggerID];
  306.             break;
  307.         }
  308.     }
  309.     
  310.     if( objClickedTrigger != null) // the clicked trigger found
  311.         objClickedTrigger.OnTriggerClick();
  312.     else // no trigger is clicked
  313.     { // to send PageClick event to all target
  314.         CTarget.nPageClickCounter++;
  315.         CEngine.AdjustPageClickCounter();
  316.         CEngine.SendEventToAllTarget( "bsscpageclick" );
  317.     }
  318. }    
  319.  
  320. CEngine.OnMouseOver = function()
  321. { // to invoke all target's onpageload handler
  322.     var src = CCSSP.GetEventElement( arguments[0] );
  323.     if( src == null )
  324.         return;
  325.         
  326.     var strHoveredTargetID = null;
  327.     for( var strTargetID in CEngine.objTarget )
  328.     { // to detect which Target is hovering on
  329.         if( CCSSP.IsDescendant( CEngine.objTarget[strTargetID].eleTarget, src ) )
  330.         {
  331.             strHoveredTargetID = strTargetID;
  332.             break;
  333.         }
  334.     }
  335.     
  336.     if( strHoveredTargetID != null ) // the hovered target found
  337.         CEngine.SendEventToOneTarget( strHoveredTargetID, "bsschover" );
  338. }
  339.  
  340. CEngine.BuildTargetObject = function(target_ID,event_type,action_type,
  341.             action_setting, event_additional)
  342. {// to build target object 
  343.     // to get the target object
  344.     if( typeof( CEngine.objTarget[target_ID] ) != "object" )
  345.         return false;// the engine's AddOneTarget function might have failed.
  346.     var TargetObject = CEngine.objTarget[target_ID];
  347.     
  348.     // to prepare the parameters for the event manager
  349.     var arrEvent = event_type.split("|"); // to split the combined event_type string
  350.     var arrAction = action_type.split("|");//to split the combined action_type string
  351.     for( var trim = 0; trim < arrEvent.length; trim++ )
  352.         arrEvent[trim] = CCSSP.TrimSpace(arrEvent[trim]);
  353.     
  354.     for( trim = 0; trim < arrAction.length; trim++ )
  355.         arrAction[trim] = CCSSP.TrimSpace(arrAction[trim]);
  356.     
  357.     var arrSetting = new Array(); 
  358.     if( typeof(action_setting) == "string" )
  359.         arrSetting = action_setting.split("|");// to split the combined action_setting string
  360.     // to calibrate the arrays
  361.     for( var i = arrSetting.length; i < arrAction.length; i++ )
  362.     {
  363.         if( typeof(arrSetting[i]) != "string" )
  364.              arrSetting[i] = "";
  365.     }                 
  366.  
  367.     // to prepare for dealing with the absolute posioning element
  368.     TargetObject.eleTarget.ABSX = CCSSP.GetObjectLeft( TargetObject.eleTarget );
  369.     TargetObject.eleTarget.ABSY = CCSSP.GetObjectTop( TargetObject.eleTarget );
  370.  
  371.     if( arrEvent.length > 1 )
  372.     {// if event is combined, it must be : "bssctrigger1 | bssctrigger2"
  373.         if( arrAction.length != 2 )
  374.             return false; // if event is combined, there must be 2 actions
  375.         for( i = 0 ; i < 2; i++ )
  376.         {
  377.             if( TargetObject.SetEventManager(arrEvent[i], arrAction[i], 
  378.                 arrSetting[i], event_additional) == false )
  379.                 return false; // the event manager has not been set up
  380.         }
  381.     }
  382.     else // the event_type string is not combined
  383.     {
  384.         for( i = 0 ; i < arrAction.length; i++ )
  385.         {
  386.             TargetObject.SetEventManager(event_type, arrAction[i], arrSetting[i], event_additional);
  387.             // to validate the event manager
  388.             if( typeof(TargetObject.objManager[event_type]) != "object" ||
  389.                     typeof(TargetObject.objManager[event_type][i]) != "object" )
  390.                 return false; // the event manager has not been set up
  391.         }
  392.     }
  393.     return true;
  394. }
  395.  
  396. CEngine.BuildTriggerObject = function(trigger_ID, target_ID)
  397. {// to build the trigger object
  398.     var arrTrigger = trigger_ID.split("|"); // to split the combined trigger_ID string
  399.     for( var i = 0; i < arrTrigger.length; i ++ )
  400.     {// to get the trigger element then add it to the trigger list
  401.         arrTrigger[i] = CCSSP.TrimSpace( arrTrigger[i] );
  402.         var eleTrigger = CCSSP.GetObject( arrTrigger[i] );
  403.         if( eleTrigger == null )
  404.             continue; // the trigger_ID string in the HTML code maybe wrong
  405.         CEngine.AddOneTrigger( arrTrigger[i], eleTrigger );
  406.  
  407.         // to get the target object
  408.         if( typeof( this.objTrigger[arrTrigger[i]] ) != "object" )
  409.             continue;// the engine's AddOneTarget function might have failed.
  410.         CEngine.objTrigger[arrTrigger[i]].AddTargetID( target_ID );
  411.     }
  412. }
  413. //End the definition of CEngine class
  414.  
  415. /// Section End  - CCSSP DHTM 1 (JavaScript 1.2)
  416.  
  417.