home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 February / Chip_2000-02_cd.bin / servis / SPIE45 / IE401_q246094.exe / RCDATA / CABINET / shdo95.dll / 2110 / ABOUT.DLG next >
Text File  |  1999-11-30  |  25KB  |  792 lines

  1. <HTML id=dlgAbout STYLE="width: 25.9em; height: 22em">
  2. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  3. <head>
  4. <TITLE>
  5. About Internet Explorer
  6. </TITLE>
  7. <style>
  8.     .versionformat {
  9.         color: black;
  10.         font-family: MS Sans Serif;
  11.         font-size: 8pt;
  12.         position: absolute; 
  13.         left: 0em; 
  14.     top: 0em;
  15.         height: 2em; 
  16.         width:25em;
  17.     z-index: 20;
  18.        }
  19.  
  20.     .textformat {
  21.     color: black;
  22.         font-family: MS Sans Serif;
  23.         font-size:8pt;
  24.         position: absolute; 
  25.         left: 10.2em; 
  26.         top: 19.8em;  //19.5em;
  27.         height: 3em; 
  28.         width:26.5em;
  29.     }
  30.  
  31.     .logo {
  32.     color: LIGHTGREY;
  33.     font-family: MS Sans Serif;
  34.         font-size:40pt;
  35.         position: absolute; 
  36.         left: 1.9em; 
  37.         top: 4.5em;
  38.         height: 0.5em; 
  39.         width:1em;
  40.     z-index: -1;
  41.     }
  42.   .button{
  43.     position: absolute;
  44.     top: 28em;
  45.     width: 7em;
  46.     height: 2.2em;
  47.     color: black;
  48.     font-family: MS Sans Serif;
  49.            font-size:8pt;
  50.     cursor: hand;
  51.     z-index: 100;
  52.  
  53.     }
  54. </style>
  55.  
  56.  
  57.  
  58. </head>
  59.  
  60. <body id=bodyid onload="OnPageLoad()" onfilterchange="bodyOnFilterChange()" onkeydown="bodyOnKeyDown()" bgcolor="white" scroll=no leftmargin=0 topmargin=0 rightmargin=0 bottommargin=0 style="border:none">
  61. <!--Graphics -->
  62. <div id="allPic"  STYLE="width:25em;position: absolute; top: 0px;left:0px;font-family: MS Sans Serif;font-size: 8pt; z-index: 13;">
  63. </div>
  64. <img src="ie256.gif" id="ID_IE" CLASS="Movable" style="position:absolute; left:0; top:0; width:0; height:0; visibility:hidden; z-index: 10;" FinalHeight=44, FinalWidth=39, FinalX=353, FinalY=0>
  65. <img src="world256.gif" id="ID_World"
  66.         style="position:absolute; left:0px; top:0px; width:0; height:0; visibility:hidden; z-index: 3;" 
  67.         FinalHeight=86, FinalWidth=86, FinalX=12, FinalY=56 nOrigLeft=86, nOrigTop=86>
  68.  
  69. <img src=ietxt256.bmp id="ID_IEText" style="position:absolute; left:104; top:61; width:269; height:109; visibility:hidden; z-index:100" alt="Microsoft Internet Explorer"
  70.     SuperClass="Flingable" xDelta="0" yDelta="0" reqDirX=1 reqDirY=0 nScore=2>
  71.  
  72. <img src=lines256.bmp id=lines style="position:absolute;left:0;top:0;visibility:hidden">
  73.  
  74. <div nowrap id="versionDetails" class=versionformat style="color: white; left: 10.2em;top: 15.7em">
  75. Version <SPAN id=spaVersion ></SPAN><br>
  76. Cipher Strength: <SPAN id=spaCipher ></SPAN><br>
  77. <span id=minorversion></SPAN><br>
  78. </div>
  79.  
  80. <div id="userInfo"  class=textformat style="visibility:hidden;z-index: 10;line-height: 140%">
  81.     <SPAN id=spaText>Product ID: <SPAN id=pID></SPAN></SPAN>
  82.     <BR><A href="" id=copyrightLink onclick="copyrightclick()"  > Copyright Information</A><!-- onmouseover="copyrightmouseover()" onmouseout="copyrightmouseout()" --> 
  83. </div>
  84.  
  85. <DIV id="copyrightDetails"  class=textformat style="visibility:hidden">
  86.     Based on NCSA Mosaic. NCSA Mosaic(TM); was developed at the National Center for
  87.     Supercomputing Applications at the University of Illinois at Urbana-Champaign. Distributed under a 
  88.     licensing agreement with Spyglass, Inc.
  89. </DIV>
  90.  
  91. <!-- <div id="copyrightLogo" class=logo style="visibility:hidden;z-index: 9">©©©</DIV> -->
  92. <DIV id="copyrightDetails2" class=textformat style="visibility:hidden">
  93.     <P>Contains security software licensed from<BR>RSA Data Security Inc.</P>
  94.     <p style="position: relative; top: -0.5em">Portions of this software are based in part<BR>on the work of the Independent
  95.     JPEG Group.</P>
  96. </DIV>
  97. <DIV id="copyrightDetails3" class=textformat style="visibility:hidden">
  98.     <p>Contains SOCKS client software licensed from<BR>Hummingbird Communications Ltd</P>
  99.     <p style="position: relative; top: -0.5em">Contains ASN.1 software licensed from<BR>Open Systems Solutions, Inc.</P>
  100. </DIV>
  101. <DIV id="copyrightDetails4" class=textformat style="visibility:hidden">
  102.     <p>Multimedia software components, including Indeo(R); video, Indeo(R) audio, and Web Design Effects are provided by Intel Corp</P>
  103. </DIV>
  104.  
  105.  
  106. <DIV id=warning  class=textformat style="visibility:hidden">
  107. Warning:  This computer program is protected by copyright law and
  108. international treaties.  Unauthorized reproduction or distribution of
  109. this program, or any portion of it, may result in severe civil and
  110. criminal penalties, and will be prosecuted to the maximum extent
  111. possible under the law.
  112. </div>
  113. <div id=gettingStarted class=textformat style="visibility:hidden;line-height:175%"><a href="res://ie4tour.dll/tour.htm#MinimalTour=1" onclick="gettingStartedClick()">Take a Quick Tour</A>
  114. <div id=techSupport style="visibility:hidden"><a href="http://www.microsoft.com/iesupport/">Technical Support</a></div>
  115. <DIV id=copyrightMicrosoft  style="visibility:hidden"><a href="http://www.microsoft.com/" id="copyright">Copyright ©1995-97 Microsoft Corp.</a><span id="rightsReserved"><BR>All rights reserved.</span></DIV>
  116. </DIV>
  117. <BUTTON id="backButton" class=button accessKey="B" onClick="backButtononclick()" style="left: 31.5em; visibility: hidden">< <U>B</U>ack</BUTTON> <!-- onmouseover="buttonOnMouseOver()" onmouseout="buttonOnMouseOut()" --> 
  118. <BUTTON id="nextButton" class=button accessKey="N" onClick="nextButtononclick()"  style="left: 31.5em; visibility: hidden"><U>N</U>ext ></BUTTON> <!-- onmouseover="buttonOnMouseOver()" onmouseout="buttonOnMouseOut()" --> 
  119. <BUTTON id="okButton" class=button onClick="window.close();" style="left: 29.5em; visibility: hidden">OK</BUTTON> <!-- onmouseover="buttonOnMouseOver()" onmouseout="buttonOnMouseOut()" --> 
  120. <BUTTON id="ID_Lock" class=button onClick="UnLock(ID_Lock);" style="left:104; top:61; visibility: hidden; z-index:1">Unlock</BUTTON>
  121. <SCRIPT language=javascript>
  122. window.onerror = HandleError;
  123. var isMMInstalled=0;  //Disable MM because of DirectD flicker bug on S3 cards
  124. var beforeLinksDivCount=5;
  125. var totaldivCount=8;
  126. var noReEntry=0;
  127. var curDiv=0;
  128. var fade=0;
  129. var backwards=0;
  130. divNames = new Object();
  131. divNames[0]="userInfo";
  132. divNames[1]="copyrightDetails";
  133. divNames[2]="copyrightDetails2";
  134. divNames[3]="copyrightDetails3";
  135. divNames[4]="copyrightDetails4";
  136. divNames[5]="warning";
  137. divNames[6]="gettingStarted";
  138. divNames[7]="techSupport";
  139. divNames[8]="copyrightMicrosoft";
  140.  
  141. var g_nFinalGrowth = 12;
  142. var g_nCurrGrowth = 0;
  143.  
  144. var g_nDragOffsetX=0;
  145. var g_nDragOffsetY=0;
  146. var g_fInDrag=0;
  147. var g_nStep=0;
  148. var g_nMaxStepHistory=4;
  149. var g_szPrevElement="";
  150. var g_cFlungObjects=0;
  151. var g_nScore=0;
  152. var g_nScoreNeeded=3;  // 1 for text  + 1 for button
  153.  
  154. FlingingItems = new Object();
  155.  
  156. CursorHistoryX = new Object();
  157. CursorHistoryY = new Object();
  158.  
  159. var g_nWobbleAmount = 4;
  160.  
  161. //+-------------------------------------------------------------------
  162. //
  163. //  Synopsis:   Turns off error messages in dialogs
  164. //
  165. //  Arguments:  none
  166. //
  167. //  returns:    true (tells browser not to handle message)
  168. //
  169. //--------------------------------------------------------------------
  170.  
  171.  
  172. function HandleError(message, url, line)
  173. {
  174.     var L_Dialog_ErrorMessage = "An error has occured in this dialog.";
  175.     var L_ErrorNumber_Text = "Error: ";
  176.  
  177.     var str = L_Dialog_ErrorMessage + "\n\n" 
  178.         + L_ErrorNumber_Text + line + "\n"
  179.         + message;
  180.  
  181.     alert (str);
  182.     window.close();
  183.  
  184.     return true;
  185. }
  186.  
  187.  
  188. //function called by body.onload.  Starts initial animation
  189. function OnPageLoad()
  190. {
  191.     var L_UpdateVersions_Text = "Update versions: "; 
  192.    
  193.     if(window.screen.colorDepth<8)
  194.     {
  195.         document.all["ID_IE"].src="ie.gif";
  196.         document.all["ID_World"].src="world.bmp";
  197.         document.all["lines"].src="lines.bmp";
  198.         document.all["ID_IEText"].src="ietext.bmp";
  199.     }
  200.     else
  201.         document.body.bgColor="#F8F8F8";
  202.  
  203.     if(isMMInstalled==1)
  204.     {
  205.         for(i=0;i<=beforeLinksDivCount;i++)
  206.         {
  207.             document.all[divNames[i]].style.filter="blendTrans(duration=0.5)";
  208.             document.all[divNames[i]].onfilterchange="onfilterchangeHandler()";
  209.         }
  210.         for(i=beforeLinksDivCount+1;i<=totaldivCount;i++)
  211.         {
  212.             document.all[divNames[i]].style.filter="blendTrans(duration=0.5)";
  213.             document.all[divNames[i]].onfilterchange="onfilterchangeHandlerLinks()";
  214.         }
  215.         document.all.copyrightLogo.style.filter="blendTrans(duration=0.5)";
  216.     }
  217.  
  218.     if ((null != window.dialogArguments))
  219.     {
  220.         arrArgs = window.dialogArguments.split("~");
  221.         spaVersion.innerText = arrArgs[0];
  222.         if (arrArgs[3] == "168") spaCipher.innerText = "128-bit";
  223.         if (arrArgs[3] == "128" || arrArgs[3] == "40") spaCipher.innerText = "40-bit";
  224.         if (arrArgs[3] == "56")  spaCipher.innerText = "56-bit";
  225.         pID.innerText=arrArgs[4];
  226.     }
  227.  
  228.     //Check for QFEs
  229.     var mv=window.navigator.appMinorVersion;
  230.     if(mv!="0") minorversion.innerText=L_UpdateVersions_Text + mv;
  231.     spaText.innerText = spaText.innerText;
  232.     backButton.style.posLeft=okButton.style.posLeft-15.3;
  233.     nextButton.style.posLeft=okButton.style.posLeft-7.6;
  234.     allPic.style.pixelLeft=userInfo.offsetLeft-103;
  235.     allPic.style.pixelTop=(versionDetails.offsetTop-170)/2;
  236.  
  237.     //start initial animation
  238.     document.all["ID_World"].style.visibility="";
  239.     document.all["ID_IE"].style.visibility="";
  240.  
  241.     // Create final x/y for World and Logo.
  242.     document.all["ID_IE"].FinalX=allPic.style.posLeft+350;
  243.     document.all["ID_IE"].FinalY=allPic.style.posTop+0;
  244.     document.all["ID_World"].FinalX=allPic.style.posLeft+10;
  245.     document.all["ID_World"].FinalY=allPic.style.posTop+50;
  246.     document.all["ID_World"].nOrigLeft=document.all["ID_World"].FinalX;
  247.     document.all["ID_World"].nOrigTop=document.all["ID_World"].FinalY;
  248.  
  249.     // Move World and Logo onto screen.
  250.     window.setTimeout("DoGrow();",100);
  251. }
  252.  
  253. //this function grows the earth and IE logos from the upper left corner
  254. function DoGrow()
  255. {
  256.     g_nCurrGrowth += 1;
  257.  
  258.     ID_World.style.posHeight = Math.round(parseInt(ID_World.FinalHeight) * (g_nCurrGrowth/g_nFinalGrowth));
  259.     ID_World.style.posWidth = Math.round(parseInt(ID_World.FinalWidth) * (g_nCurrGrowth/g_nFinalGrowth));
  260.     ID_World.style.posLeft = Math.round(parseInt(ID_World.FinalX) * (g_nCurrGrowth/g_nFinalGrowth));
  261.     ID_World.style.posTop = Math.round(parseInt(ID_World.FinalY) * (g_nCurrGrowth/g_nFinalGrowth));
  262.  
  263.     document.all.ID_IE.style.posHeight = Math.round(parseInt(document.all.ID_IE.FinalHeight) * (g_nCurrGrowth/g_nFinalGrowth));
  264.     document.all.ID_IE.style.posWidth = Math.round(parseInt(document.all.ID_IE.FinalWidth) * (g_nCurrGrowth/g_nFinalGrowth));
  265.     document.all.ID_IE.style.posLeft = Math.round(parseInt(document.all.ID_IE.FinalX) * (g_nCurrGrowth/g_nFinalGrowth));
  266.     document.all.ID_IE.style.posTop = Math.round(parseInt(document.all.ID_IE.FinalY) * (g_nCurrGrowth/g_nFinalGrowth));
  267.  
  268.  
  269.     if(g_nCurrGrowth < g_nFinalGrowth)
  270.     {
  271.         window.setTimeout("DoGrow()",1);
  272.     }
  273.     else
  274.     {
  275.         window.setTimeout("DoPics()",200);
  276.     }
  277. }
  278.  
  279. //When done growing, display the other parts of the IE splash screen
  280. function DoPics() {
  281.     ID_IEText.style.posTop=allPic.offsetTop+60;
  282.     ID_IEText.style.posLeft=allPic.offsetLeft+98;
  283.     ID_IEText.style.visibility="";
  284.  
  285.     ID_Lock.style.posTop=ID_IEText.style.posTop+30;
  286.     ID_Lock.style.posLeft=ID_IEText.style.posLeft+100;
  287.     ID_Lock.style.visibility="";
  288.  
  289.     lines.style.posLeft=allPic.style.posLeft+43;
  290.     lines.style.posTop=allPic.style.posTop+17;
  291.     lines.style.visibility="";
  292.  
  293.     window.setTimeout("startVersion()",500);
  294. }
  295.  
  296. //Start version number sliding in from bottom
  297. function startVersion() {
  298.     versionDetails.style.posTop=28;
  299.     versionDetails.style.color="black";
  300.     DoVersion();
  301. }
  302.  
  303. function DoVersion() {
  304. if (versionDetails.style.posTop>15.7) versionDetails.style.posTop=versionDetails.style.posTop-1;
  305. if (versionDetails.style.posTop<=15.7) 
  306.     {
  307.     versionDetails.style.posTop=15.7;
  308.     okButton.style.visibility="";
  309.     okButton.focus();
  310.     window.setTimeout("DoShow()",100);
  311.     showDiv=-2;
  312.     }
  313. else window.setTimeout("DoVersion()",1);
  314. }
  315.  
  316. //General function for showing the different paragraphs of text
  317. //If MM is used, performs a fade-in transition
  318.  
  319. function DoShow() {
  320. if(isMMInstalled==1) document.all[divNames[curDiv]].filters[0].Apply();
  321. document.all[divNames[curDiv]].style.visibility="visible";
  322. if(isMMInstalled==1) document.all[divNames[curDiv]].filters[0].Play();
  323. //Next two lines call the filterchanged events manually
  324. //when MM is not enabled
  325. else if(curDiv<=beforeLinksDivCount) onfilterchangeHandler();
  326. else onfilterchangeHandlerLinks();
  327. }
  328.  
  329. //General function for hiding the different paragraphs
  330. //IF MM is used, performs a fade-out transition
  331.  
  332. function DoFade() {
  333. var divNum=DoFade.arguments[0];
  334. fade=1;
  335. if(isMMInstalled==1) document.all[divNames[divNum]].filters[0].Apply();
  336. document.all[divNames[divNum]].style.visibility="hidden";
  337. if(isMMInstalled==1) document.all[divNames[divNum]].filters[0].Play();
  338. //Next two lines call the filterchanged events manually
  339. //when MM is not enabled
  340. else if(curDiv<=beforeLinksDivCount) onfilterchangeHandler();
  341. else {
  342.     if(backwards==0) curDiv=curDiv-1; 
  343.     onfilterchangeHandlerLinks();
  344.     }
  345. }
  346.  
  347. //Logo behind copyright info needs separate fade routine
  348.  
  349. //function DoLogoFade() { //Fade logo characters
  350. //if(isMMInstalled==1) document.all.copyrightLogo.filters[0].Apply();
  351. //document.all.copyrightLogo.style.visibility="hidden";
  352. //if(isMMInstalled==1) document.all.copyrightLogo.filters[0].Play();
  353. //}
  354.  
  355. //When copyright link is clicked, show first paragraph of copyright info
  356.  
  357. function copyrightclick(){
  358. window.event.returnValue=0;
  359. if (noReEntry!=1) 
  360.     {
  361.     backButton.style.visibility="";    
  362.     nextButton.style.visibility="";    
  363.     backButton.disabled=0;
  364.     curDiv=1;
  365.     noReEntry=1;
  366.     DoFade(0);
  367. //    DoLogoFade();
  368.     }
  369. }
  370.  
  371. //Show logo underneath copyright link when hover over
  372. //function copyrightmouseover(){
  373. //copyrightLogo.style.visibility="visible";
  374. //}
  375.  
  376. //Hide logo again when mouse leaves copyright link
  377. //function copyrightmouseout(){
  378. //copyrightLogo.style.visibility="hidden";
  379. //}
  380.  
  381. //Go back one paragraph.  Check to see if at beginning
  382. function backButtononclick(){
  383. if (noReEntry==0) {
  384.     curDiv=curDiv-1;
  385.     if(curDiv<0) curDiv=0;
  386.     else {
  387.          noReEntry=1;
  388.          backwards=1;
  389.          //Fade old div out
  390.          DoFade(curDiv+1); 
  391.          }
  392.     }
  393. setButtonColor();
  394. }
  395.  
  396. //Go forward one paragraph
  397. function nextButtononclick(){
  398. if (noReEntry==0) {
  399.     curDiv=curDiv+1;
  400.     if(curDiv>beforeLinksDivCount+1) curDiv=beforeLinksDivCount+1;
  401.     else {
  402.          noReEntry=1;
  403.          //Fade old div out
  404.          DoFade(curDiv-1);
  405.          }
  406.     }
  407. setButtonColor();
  408. }
  409.  
  410. //Check to see if one of the buttons should be disabled
  411. //if at the beginning or end of the paragraphs
  412.  
  413. function setButtonColor() {
  414. if((curDiv==beforeLinksDivCount+1)&&(backwards==0)) {
  415.     nextButton.style.color="";
  416.     nextButton.disabled=1;
  417.     }
  418. else {
  419.       nextButton.disabled=0;
  420.       if(curDiv==0) {
  421.     backButton.style.color="";
  422.     backButton.disabled=1;
  423.     }
  424.       else backButton.disabled=0;
  425.      }
  426. }
  427.  
  428. //Respond to ESC key
  429.  
  430. function bodyOnKeyDown() {
  431. if (window.event.keyCode==27) window.close();
  432. }
  433.  
  434. //General function for turning the buttons text blue when mouseover
  435.  
  436. function buttonOnMouseOver(){
  437. var srcElement=window.event.srcElement;
  438. if (((srcElement.id!="backButton")|| (backButton.disabled==0))&&((srcElement.id!="nextButton")||(nextButton.disabled==0))) window.event.srcElement.style.color="blue";
  439. }
  440.  
  441. //General function for restoring the buttons text when mouse out
  442.  
  443. function buttonOnMouseOut(){
  444. var srcElement=window.event.srcElement;
  445. if (((srcElement.id!="backButton")|| (backButton.disabled==0))&&((srcElement.id!="nextButton")||(nextButton.disabled==0))) window.event.srcElement.style.color="";
  446. }
  447.  
  448. //launch IE tour in new window
  449.  
  450. function gettingStartedClick() {
  451. var foo="gettingstarted";
  452. window.open("res://ie4tour.dll/tour.htm#MinimalTour=1",foo,"");
  453. window.event.returnValue=false;
  454. return false;
  455. }
  456.  
  457. //Event is called when a transition is complete
  458. //Used to go from fade of one paragraph to show of the next
  459. //This event is called manually when MM is not enabled
  460.  
  461. function onfilterchangeHandler() {
  462. if(fade==1) window.setTimeout("DoShow()",100);
  463. else noReEntry=0;
  464. backwards=0;
  465. fade=0;
  466. }
  467.  
  468. //Separate event for the links, since they act differently
  469. //This is also called manually when MM is not enabled
  470.  
  471. function onfilterchangeHandlerLinks() {
  472. if(backwards!=1) { //going forwards
  473.     if(curDiv<totaldivCount) 
  474.         {
  475.         curDiv=curDiv+1;
  476.         window.setTimeout("DoShow()",100);
  477.         }
  478.     else     noReEntry=0;
  479.     }        
  480. else { //going backwards
  481.     if(curDiv>beforeLinksDivCount) { //still have links to fade
  482.         curDiv=curDiv-1;
  483.         window.setTimeout("DoFade(" +parseInt(curDiv+1) +")",100);
  484.         }
  485.     else {    //show div the comes before the links
  486.         curDiv=beforeLinksDivCount;
  487.         window.setTimeout("DoShow()",100);
  488.         }
  489.     }          
  490. fade=0;
  491. }
  492.  
  493.  
  494. // BUGBUG: This is a hack to work around MSHTML crashing on document.onselectstart events
  495. // being canceled (false being returned).
  496. var g_fWasMouseDown;
  497.  
  498. function MyOnMouseDown()
  499. {
  500.     g_fWasMouseDown = window.event.button;
  501. }
  502.  
  503. document.onmousedown = MyOnMouseDown;
  504.  
  505.  
  506. function CancelEvent()
  507. {
  508.     if (2 == g_fWasMouseDown)
  509.     {
  510.         return true;        // Trident crashes when Right-Click events are canceled.
  511.     }
  512.  
  513.     return false;   // Cancel event.
  514. }
  515.  
  516. // Disable text and object selecting.
  517. document.onselectstart = CancelEvent;
  518. document.ondragstart = CancelEvent;
  519.  
  520. function OpenEEGG()
  521. {
  522.     // Do the navigation
  523.     window.open("wcee.htm", "TheWCEE", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=414,height=352");
  524.     window.close();
  525.     return false;
  526. }
  527.  
  528.  
  529. function GetIndex(nStep, nDelta)
  530. {
  531.     nReturn = nStep + nDelta;
  532.  
  533.     if (nReturn < 0)
  534.         nReturn += g_nMaxStepHistory;
  535.  
  536.     if (g_nMaxStepHistory <= nReturn)
  537.         nReturn -= g_nMaxStepHistory;
  538.  
  539.     return nReturn;
  540. }
  541.  
  542. function StartFlinging()
  543. {
  544.     nStop = 1;
  545.  
  546.     for (j in FlingingItems)
  547.     {
  548.         obj = FlingingItems[j];
  549.  
  550.         if(obj.xDelta != 0) obj.style.pixelLeft += obj.xDelta;
  551.         if(obj.yDelta != 0) obj.style.pixelTop += obj.yDelta;
  552.  
  553.         if ((obj.style.pixelLeft > -1000) && (obj.style.pixelLeft < 2000) &&
  554.             (obj.style.pixelTop > -1000) && (obj.style.pixelTop < 2000))
  555.             nStop = 0;
  556.     }
  557.  
  558.     // Stop looping when object is fully off the screen.
  559.     if (0 == nStop)
  560.     {
  561.         window.setTimeout("StartFlinging()", 10);
  562.     }
  563. }
  564.  
  565. function TrackStep(x, y, e, bkey)
  566. {
  567.     CursorHistoryX[g_nStep] = x;
  568.     CursorHistoryY[g_nStep] = y;
  569.  
  570.     // Did we just bounce into a flingable object?
  571.     if ((e.SuperClass != g_szPrevElement) && (e.SuperClass == "Flingable"))
  572.     {
  573.         fValidFling = 1;
  574.         // Yes, so see if we can fling it.
  575.  
  576.         if (0 == e.reqDirX)
  577.         {
  578.             nIndex = 0;
  579.  
  580.             // It's necessary that all x movement remain within object width.
  581.             while ((nIndex < (g_nMaxStepHistory - 1)) && (1 == fValidFling))
  582.             {
  583.                 nPrevX = CursorHistoryX[GetIndex(g_nStep, -nIndex)];
  584.                 if ((nPrevX < e.style.pixelLeft) ||
  585.                     (nPrevX > e.style.pixelLeft + e.style.pixelWidth))
  586.                 {
  587.                     fValidFling = 0;
  588.                 }
  589.                 nIndex++;
  590.             }
  591.         }
  592.         else
  593.         {
  594.             nIndex = 0;
  595.  
  596.             // It's necessary that all x movement stay constantly left or right.
  597.             while ((nIndex < (g_nMaxStepHistory - 1)) && (1 == fValidFling))
  598.             {
  599.                 if (0 < e.reqDirX)
  600.                 {
  601.                     if (CursorHistoryX[GetIndex(g_nStep, -nIndex)] < CursorHistoryX[GetIndex(g_nStep, -nIndex - 1)])
  602.                     {
  603.                         fValidFling = 0;
  604.                     }
  605.                 }
  606.                 else
  607.                 {
  608.                     if (CursorHistoryX[GetIndex(g_nStep, -nIndex)] > CursorHistoryX[GetIndex(g_nStep, -nIndex - 1)])
  609.                     {
  610.                         fValidFling = 0;
  611.                     }
  612.                 }
  613.                 nIndex++;
  614.             }
  615.         }
  616.  
  617.         if (1 == fValidFling)
  618.         {
  619.             if (0 == e.reqDirY)
  620.             {
  621.                 nIndex = 0;
  622.  
  623.                 // It's necessary that all y movement remain within object height.
  624.                 while ((nIndex < (g_nMaxStepHistory - 1)) && (1 == fValidFling))
  625.                 {
  626.                     nPrevY = CursorHistoryY[GetIndex(g_nStep, -nIndex)];
  627.                     if ((nPrevY < e.style.pixelTop) ||
  628.                         (nPrevY > e.style.pixelTop + e.style.pixelHeight))
  629.                     {
  630.                         fValidFling = 0;
  631.                     }
  632.                     nIndex++;
  633.                 }
  634.             }
  635.             else
  636.             {
  637.                 nIndex = 0;
  638.  
  639.                 // It's necessary that all y movement stay constantly up or down.
  640.                 while ((nIndex < (g_nMaxStepHistory - 1)) && (1 == fValidFling))
  641.                 {
  642.                     if (0 < e.reqDirY)
  643.                     {
  644.                         if (CursorHistoryY[GetIndex(g_nStep, -nIndex)] < CursorHistoryY[GetIndex(g_nStep, -nIndex - 1)])
  645.                         {
  646.                             fValidFling = 0;
  647.                         }
  648.                     }
  649.                     else
  650.                     {
  651.                         if (CursorHistoryY[GetIndex(g_nStep, -nIndex)] > CursorHistoryY[GetIndex(g_nStep, -nIndex - 1)])
  652.                         {
  653.                             fValidFling = 0;
  654.                         }
  655.                     }
  656.                     nIndex++;
  657.                 }
  658.             }
  659.         }
  660.  
  661.         if ((1 == fValidFling) && bkey)
  662.         {
  663.             nXDelta = CursorHistoryX[g_nStep] - CursorHistoryX[GetIndex(g_nStep, -g_nMaxStepHistory + 1)];
  664.             nYDelta = CursorHistoryY[g_nStep] - CursorHistoryY[GetIndex(g_nStep, -g_nMaxStepHistory + 1)];
  665.  
  666.             if (0 != e.reqDirX)
  667.                 e.xDelta = Math.round(nXDelta / 2);
  668.             else
  669.                 e.xDelta = 0;
  670.  
  671.             if (0 != e.reqDirY)
  672.                 e.yDelta = Math.round(nYDelta / 2);
  673.             else
  674.                 e.yDelta = 0;
  675.  
  676.             FlingingItems[FlingingItems.length] = e;
  677.             g_cFlungObjects++;
  678.             g_nScore += (g_cFlungObjects * e.nScore);
  679.             StartFlinging();
  680.         }
  681.  
  682.     }
  683.  
  684.  
  685.     // Increment
  686.     g_szPrevElement = e.SuperClass;
  687.     g_nStep = GetIndex(g_nStep, 1);
  688. }
  689.  
  690. function StartWorldGrow()
  691. {
  692.     if (ID_World.style.pixelWidth > 800)
  693.     {
  694.         OpenEEGG();
  695.     }
  696.     else
  697.     {
  698.         ID_World.style.pixelWidth += 100;
  699.         ID_World.style.pixelHeight += 100;
  700.         ID_World.style.pixelLeft -= 30;
  701.         ID_World.style.pixelTop -= 30;
  702.         window.setTimeout("StartWorldGrow()", 10);
  703.     }
  704. }
  705.  
  706. function UpdateMouse(x, y, shift, button)
  707. {
  708.     var e;
  709.  
  710.     e = event.srcElement;
  711.  
  712.     if ((0 == g_fInDrag) && (e.className == "Movable"))
  713.     {
  714.         g_fInDrag = 1;
  715.         g_nDragOffsetX = event.x - document.all["ID_IE"].style.pixelLeft;
  716.         g_nDragOffsetY = event.y - document.all["ID_IE"].style.pixelTop;
  717.     }
  718.  
  719.  
  720.     if ((1 == event.button) && (1 == g_fInDrag) && (true == event.ctrlKey))
  721.     {
  722.         document.all["ID_IE"].style.pixelLeft = event.x - g_nDragOffsetX;
  723.         document.all["ID_IE"].style.pixelTop = event.y - g_nDragOffsetY;
  724.  
  725.         TrackStep(event.x, event.y, e, event.ctrlKey);
  726.     }
  727.     else
  728.     {
  729.         g_fInDrag = 0;
  730.  
  731.         // Check if IE Logo was dropped on the world.
  732.         if ((document.all["ID_IE"].style.pixelLeft > document.all["ID_World"].style.pixelLeft) &&
  733.             (document.all["ID_IE"].style.pixelLeft + document.all["ID_IE"].style.pixelWidth < document.all["ID_World"].style.pixelLeft + document.all["ID_World"].style.pixelWidth) &&
  734.             (document.all["ID_IE"].style.pixelTop > document.all["ID_World"].style.pixelTop) &&
  735.             (document.all["ID_IE"].style.pixelTop + document.all["ID_IE"].style.pixelHeight < document.all["ID_World"].style.pixelTop + document.all["ID_World"].style.pixelHeight) &&
  736.             g_nScore >= g_nScoreNeeded)
  737.         {
  738.             // Move the logo so we don't continue to navigate over and over again.
  739.             document.all["ID_IE"].style.pixelLeft = parseInt(document.all["ID_IE"].FinalX);
  740.             document.all["ID_IE"].style.pixelTop = parseInt(document.all["ID_IE"].FinalY);
  741.  
  742.             document.all["ID_IE"].style.visibility="hidden";
  743.  
  744.             // Make this cover everything else.
  745.             document.all["ID_World"].style.zIndex = "1000";
  746.             
  747.             g_nScore = 0;
  748.             StopWobble(ID_World);
  749.             window.setTimeout("StartWorldGrow()", 10);
  750.         }
  751.     }
  752.  
  753.     return 1;
  754. }
  755.  
  756. document.onmousemove = UpdateMouse;
  757.  
  758. function WobbleControl(obj)
  759. {
  760.     if (0 != obj.wobbleTimer)
  761.     {
  762.         obj.style.posLeft = parseInt(obj.nOrigLeft) + Math.round(Math.random() * 2 * g_nWobbleAmount) - g_nWobbleAmount;
  763.         obj.style.posTop = parseInt(obj.nOrigTop) + Math.round(Math.random() * 2 * g_nWobbleAmount) - g_nWobbleAmount;
  764.     }
  765. }
  766.  
  767. function StartWobble(obj)
  768. {
  769.     obj.wobbleTimer = setInterval("WobbleControl(ID_World)", 100);
  770. }
  771.  
  772. function StopWobble(obj)
  773. {
  774.     if (0 != obj.wobbleTimer)
  775.     {
  776.         clearInterval(obj.wobbleTimer);
  777.         obj.wobbleTimer = 0;
  778.         document.all["ID_World"].posLeft = parseInt(document.all["ID_World"].nOrigLeft);
  779.         document.all["ID_World"].posTop = parseInt(document.all["ID_World"].nOrigTop);
  780.     }
  781. }
  782.  
  783. function UnLock(obj)
  784. {
  785.     g_nScore += 1;
  786.     obj.disabled = true;
  787.     StartWobble(obj);
  788. }
  789. </SCRIPT>
  790. </body>
  791. </html>
  792.