home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 October / CHIP1002.ISO / exe / COMPUGUI.exe / whstub.js < prev    next >
Encoding:
Text File  |  2002-04-23  |  3.2 KB  |  156 lines

  1. window.whname="wh_stub";
  2. function getframehandle(frames,framename)
  3. {
  4.     var frame=null;
  5.     if(null==frames) return null;
  6.     for(var i=0;i<frames.length;i++)
  7.     {
  8.         if(typeof(frames[i].name)!="unknown")
  9.         {
  10.             if(frames[i].name==framename)
  11.                 return frames[i];
  12.             if(frames[i].frames.length>0)
  13.                 frame=getframehandle(frames[i].frames,framename);
  14.                 if(null!=frame)
  15.                     return frame;
  16.         }
  17.     }
  18.     return frame;
  19. }
  20.  
  21. function AddToArray(arr,obj)
  22. {
  23.     var bFound=false;
  24.     for(var i=0;i<arr.length;i++){
  25.         if(arr[i]==obj){
  26.             bFound=true;
  27.             break;
  28.         }
  29.         else if(arr[i]==null){
  30.             break;
  31.         }
  32.     }
  33.     if(!bFound) arr[i]=obj;
  34. }
  35.  
  36. var gArrayRegistedMessage=new Array();
  37. var gArrayCompoentsArray=new Array();
  38.  
  39. function GetComponentsArray(nMessageId)
  40. {
  41.     var len=gArrayRegistedMessage.length;
  42.     for(var i=0;i<len;i++)
  43.     {
  44.         if(gArrayRegistedMessage[i]==nMessageId){
  45.             if(gArrayCompoentsArray.length>i)
  46.                 return gArrayCompoentsArray[i];
  47.             else
  48.                 return null;
  49.         }
  50.     }
  51.     return null;
  52. }
  53.  
  54. function CreateComponentsArray(nMessageId)
  55. {
  56.     var len=gArrayRegistedMessage.length;
  57.     gArrayRegistedMessage[len]=nMessageId;
  58.     gArrayCompoentsArray[len]=new Array();
  59.     return gArrayCompoentsArray[len];
  60. }
  61.  
  62. function listener(sName,oWindow)
  63. {
  64.     this.sName=sName;
  65.     this.oWindow=oWindow;
  66. }
  67.  
  68. function RegisterListener(windowName,nMessageId)
  69. {
  70.     var arrayComponents=GetComponentsArray(nMessageId);
  71.     if(arrayComponents==null)
  72.         arrayComponents=CreateComponentsArray(nMessageId);
  73.     
  74.     if(arrayComponents!=null)
  75.     {
  76.         for (var i=0;i<arrayComponents.length;i++)
  77.         {
  78.             if (arrayComponents[i].sName == windowName)
  79.                 return false;
  80.         }
  81.         var oListener=new listener(windowName,null);
  82.         AddToArray(arrayComponents,oListener);
  83.         return true;
  84.     }
  85.     else
  86.         return false;
  87. }
  88.  
  89. function RegisterListener2(oWindow,nMessageId)
  90. {
  91.     var arrayComponents=GetComponentsArray(nMessageId);
  92.     if(arrayComponents==null)
  93.         arrayComponents=CreateComponentsArray(nMessageId);
  94.     
  95.     if(arrayComponents!=null)
  96.     {
  97.         var oListener=new listener("",oWindow);
  98.         AddToArray(arrayComponents,oListener);
  99.         return true;
  100.     }
  101.     else
  102.         return false;
  103. }
  104.  
  105. function UnRegisterListener2(oWindow,nMessageId)
  106. {
  107.     var arrayComponents=GetComponentsArray(nMessageId);
  108.     if(arrayComponents!=null)
  109.     {
  110.         for(var i=0;i<arrayComponents.length;i++)
  111.         {
  112.             if(arrayComponents[i].oWindow==oWindow)
  113.             {
  114.                 removeItemFromArray(arrayComponents,i);
  115.                 return true;
  116.             }
  117.         }
  118.     }
  119.     else
  120.         return false;
  121. }
  122.  
  123. function SendMessage(oMessage)
  124. {
  125.     var bDelivered=false;
  126.     var arrayComponents=GetComponentsArray(oMessage.nMessageId);
  127.     if(arrayComponents!=null&&arrayComponents.length>0){
  128.         for(var i=0;i<arrayComponents.length;i++)
  129.         {
  130.             if(null!=arrayComponents[i])
  131.             {
  132.                 var pFrame;
  133.                 if(arrayComponents[i].oWindow==null)
  134.                     pFrame=getframehandle(frames,arrayComponents[i].sName);
  135.                 else
  136.                     pFrame=arrayComponents[i].oWindow;
  137.                 if(null!=pFrame)
  138.                 {
  139.                     if(pFrame.onSendMessageX)
  140.                     {
  141.                         bDelivered=true;
  142.                         if(!pFrame.onSendMessageX(oMessage))
  143.                             break;
  144.                     }
  145.                     if(pFrame.onSendMessage)
  146.                     {
  147.                         bDelivered=true;
  148.                         if(!pFrame.onSendMessage(oMessage))
  149.                             break;
  150.                     }
  151.                 }
  152.             }
  153.         }
  154.     }
  155.     return bDelivered;
  156. }