home *** CD-ROM | disk | FTP | other *** search
/ Computer Buyer 1997 November / dpcb1197.iso / Business / FrontPg / enu / data.z / animate.js < prev    next >
Text File  |  1997-07-29  |  8KB  |  250 lines

  1.  
  2. <!--
  3.   // If you want to change this script, you must also make the following
  4.   // changes so that FrontPage will not overwrite your new script.
  5.   // In the script tag, change type="dynamicanimation" to type="mydynamicanimation"
  6.   // In the first script statement, change "dynamicanimation" to "mydynamicanimation"
  7.   // Throughout the HTML content, change dynamicanimation= to mydynamicanimation=
  8.   // Change function dynAnimation to function mydynAnimation
  9.   // In the body tag, change onload="dynAnimation()" to onload="mydynAnimation()"
  10.   dynamicanimAttr = "dynamicanimation"
  11.   animateElements = new Array()
  12.   currentElement = 0
  13.   speed = 0
  14.   stepsZoom = 8
  15.   stepsWord = 8
  16.   stepsFly = 12
  17.   stepsSpiral = 16
  18.   steps = stepsZoom
  19.   step = 0
  20.   outString = ""
  21.   function dynAnimation()
  22.   {
  23.     var ms = navigator.appVersion.indexOf("MSIE")
  24.     ie4 = (ms>0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4)
  25.     if(!ie4)
  26.         return
  27.     for (index=document.all.length-1; index >= document.body.sourceIndex; index--)
  28.     {
  29.       el = document.all[index]
  30.       animation = el.getAttribute(dynamicanimAttr, false)
  31.       if(null != animation)
  32.       {
  33.         if(animation == "dropWord" || animation == "flyTopRightWord" || animation == "flyBottomRightWord")
  34.         {
  35.           ih = el.innerHTML
  36.           outString = ""
  37.           i1 = 0
  38.           iend = ih.length
  39.           while(true)
  40.           {
  41.             i2 = startWord(ih, i1)
  42.             if(i2 == -1)
  43.               i2 = iend
  44.             outWord(ih, i1, i2, false, "")
  45.             if(i2 == iend)
  46.               break
  47.             i1 = i2
  48.             i2 = endWord(ih, i1)
  49.             if(i2 == -1)
  50.               i2 = iend
  51.             outWord(ih, i1, i2, true, animation)
  52.             if(i2 == iend)
  53.               break
  54.             i1 = i2
  55.           }
  56.           document.all[index].innerHTML = outString
  57.           document.all[index].style.posLeft = 0
  58.           document.all[index].setAttribute(dynamicanimAttr, null)
  59.         }
  60.         if(animation == "zoomIn" || animation == "zoomOut")
  61.         {
  62.           ih = el.innerHTML
  63.           outString = "<SPAN " + dynamicanimAttr + "=\"" + animation + "\" style=\"position: relative; left: 10000;\">"
  64.           outString += ih
  65.           outString += "</SPAN>"
  66.           document.all[index].innerHTML = outString
  67.           document.all[index].style.posLeft = 0
  68.           document.all[index].setAttribute(dynamicanimAttr, null)
  69.         }
  70.       }
  71.     }
  72.     i = 0
  73.     for (index=document.body.sourceIndex; index < document.all.length; index++)
  74.     {
  75.       el = document.all[index]
  76.       animation = el.getAttribute(dynamicanimAttr, false)
  77.       if (null != animation)
  78.       {
  79.         if(animation == "flyLeft")
  80.         {
  81.           el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth
  82.           el.style.posTop = 0
  83.         }
  84.         else if(animation == "flyRight")
  85.         {
  86.           el.style.posLeft = 10000-offsetLeft(el)+document.body.offsetWidth
  87.           el.style.posTop = 0
  88.         }
  89.         else if(animation == "flyTop" || animation == "dropWord")
  90.         {
  91.           el.style.posLeft = 0
  92.           el.style.posTop = document.body.scrollTop-offsetTop(el)-el.offsetHeight
  93.         }
  94.         else if(animation == "flyBottom")
  95.         {
  96.           el.style.posLeft = 0
  97.           el.style.posTop = document.body.scrollTop-offsetTop(el)+document.body.offsetHeight
  98.         }
  99.         else if(animation == "flyTopLeft")
  100.         {
  101.           el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth
  102.           el.style.posTop = document.body.scrollTop-offsetTop(el)-el.offsetHeight
  103.         }
  104.         else if(animation == "flyTopRight" || animation == "flyTopRightWord")
  105.         {
  106.           el.style.posLeft = 10000-offsetLeft(el)+document.body.offsetWidth
  107.           el.style.posTop = document.body.scrollTop-offsetTop(el)-el.offsetHeight
  108.         }
  109.         else if(animation == "flyBottomLeft")
  110.         {
  111.           el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth
  112.           el.style.posTop = document.body.scrollTop-offsetTop(el)+document.body.offsetHeight
  113.         }
  114.         else if(animation == "flyBottomRight" || animation == "flyBottomRightWord")
  115.         {
  116.           el.style.posLeft = 10000-offsetLeft(el)+document.body.offsetWidth
  117.           el.style.posTop = document.body.scrollTop-offsetTop(el)+document.body.offsetHeight
  118.         }
  119.         else if(animation == "spiral")
  120.         {
  121.           el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth
  122.           el.style.posTop = document.body.scrollTop-offsetTop(el)-el.offsetHeight
  123.         }
  124.         else if(animation == "zoomIn")
  125.         {
  126.           el.style.posLeft = 10000
  127.           el.style.posTop = 0
  128.         }
  129.         else if(animation == "zoomOut")
  130.         {
  131.           el.style.posLeft = 10000
  132.           el.style.posTop = 0
  133.         }
  134.         else
  135.         {
  136.           el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth
  137.           el.style.posTop = 0
  138.         }
  139.         el.initLeft = el.style.posLeft
  140.         el.initTop = el.style.posTop
  141.         animateElements[i++] = el
  142.       }
  143.     }
  144.     window.setTimeout("animate();", speed)
  145.   }
  146.   function offsetLeft(el)
  147.   {
  148.     x = el.offsetLeft
  149.     for (e = el.offsetParent; e; e = e.offsetParent)
  150.       x += e.offsetLeft;
  151.     return x
  152.   } 
  153.   function offsetTop(el)
  154.   {
  155.     y = el.offsetTop
  156.     for (e = el.offsetParent; e; e = e.offsetParent)
  157.       y += e.offsetTop;
  158.     return y
  159.   } 
  160.   function startWord(ih, i)
  161.   {
  162.     for(tag = false; i < ih.length; i++)
  163.     {
  164.       c = ih.charAt(i)
  165.       if(c == '<')
  166.         tag = true
  167.       if(!tag)
  168.         return i
  169.       if(c == '>')
  170.         tag = false
  171.     }
  172.     return -1
  173.   }
  174.   function endWord(ih, i)
  175.   {
  176.     nonSpace = false
  177.     space = false
  178.     while(i < ih.length)
  179.     {
  180.       c = ih.charAt(i)
  181.       if(c != ' ')
  182.         nonSpace = true
  183.       if(nonSpace && c == ' ')
  184.         space = true
  185.       if(c == '<')
  186.         return i
  187.       if(space && c != ' ')
  188.         return i
  189.       i++
  190.     }
  191.     return -1
  192.   }
  193.   function outWord(ih, i1, i2, dyn, anim)
  194.   {
  195.     if(dyn)
  196.       outString += "<SPAN " + dynamicanimAttr + "=\"" + anim + "\" style=\"position: relative; left: 10000;\">"
  197.     outString += ih.substring(i1, i2)
  198.     if(dyn)
  199.       outString += "</SPAN>"
  200.   }
  201.   function animate()
  202.   {
  203.     el = animateElements[currentElement]
  204.     animation = el.getAttribute(dynamicanimAttr, false)
  205.     step++
  206.     if(animation == "spiral")
  207.     {
  208.       steps = stepsSpiral
  209.       v = step/steps
  210.       rf = 1.0 - v
  211.       t = v * 2.0*Math.PI
  212.       rx = Math.max(Math.abs(el.initLeft), 200)
  213.       ry = Math.max(Math.abs(el.initTop),  200)
  214.       el.style.posLeft = Math.ceil(-rf*Math.cos(t)*rx)
  215.       el.style.posTop  = Math.ceil(-rf*Math.sin(t)*ry)
  216.     }
  217.     else if(animation == "zoomIn")
  218.     {
  219.       steps = stepsZoom
  220.       el.style.fontSize = Math.ceil(50+50*step/steps) + "%"
  221.       el.style.posLeft = 0
  222.     }
  223.     else if(animation == "zoomOut")
  224.     {
  225.       steps = stepsZoom
  226.       el.style.fontSize = Math.ceil(100+200*(steps-step)/steps) + "%"
  227.       el.style.posLeft = 0
  228.     }
  229.     else
  230.     {
  231.       steps = stepsFly
  232.       if(animation == "dropWord" || animation == "flyTopRightWord" || animation == "flyBottomRightWord")
  233.         steps = stepsWord
  234.       dl = el.initLeft / steps
  235.       dt = el.initTop  / steps
  236.       el.style.posLeft = el.style.posLeft - dl
  237.       el.style.posTop = el.style.posTop - dt
  238.     }
  239.     if (step >= steps) 
  240.     {
  241.       el.style.posLeft = 0
  242.       el.style.posTop = 0
  243.       currentElement++
  244.       step = 0
  245.     }
  246.     if(currentElement < animateElements.length)
  247.       window.setTimeout("animate();", speed)
  248.   }
  249. //-->
  250.