First commit 18/08/2000
This commit is contained in:
261
addons/dynamicAnimation.js
Normal file
261
addons/dynamicAnimation.js
Normal file
@ -0,0 +1,261 @@
|
||||
<!--
|
||||
// If you want to change this script, you must also make the following
|
||||
// changes so that FrontPage will not overwrite your new script.
|
||||
// In the script tag, change type="dynamicanimation" to type="mydynamicanimation"
|
||||
// In the first script statement, change "dynamicanimation" to "mydynamicanimation"
|
||||
// Throughout the HTML content, change dynamicanimation= to mydynamicanimation=
|
||||
// Change function dynAnimation to function mydynAnimation
|
||||
// In the body tag, change onload="dynAnimation()" to onload="mydynAnimation()"
|
||||
dynamicanimAttr = "dynamicanimation"
|
||||
animateElements = new Array()
|
||||
currentElement = 0
|
||||
speed = 0
|
||||
stepsZoom = 8
|
||||
stepsWord = 8
|
||||
stepsFly = 12
|
||||
stepsSpiral = 16
|
||||
steps = stepsZoom
|
||||
step = 0
|
||||
outString = ""
|
||||
|
||||
function dynAnimation()
|
||||
{
|
||||
var ms = navigator.appVersion.indexOf("MSIE")
|
||||
ie4 = (ms>0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4)
|
||||
if(!ie4)
|
||||
{
|
||||
if((navigator.appName == "Netscape") &&
|
||||
(parseInt(navigator.appVersion.substring(0, 1)) >= 4))
|
||||
{
|
||||
for (index=document.layers.length-1; index >= 0; index--)
|
||||
{
|
||||
layer=document.layers[index]
|
||||
if (layer.left==10000)
|
||||
layer.left=0
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
for (index=document.all.length-1; index >= document.body.sourceIndex; index--)
|
||||
{
|
||||
el = document.all[index]
|
||||
animation = el.getAttribute(dynamicanimAttr, false)
|
||||
if(null != animation)
|
||||
{
|
||||
if(animation == "dropWord" || animation == "flyTopRightWord" || animation == "flyBottomRightWord")
|
||||
{
|
||||
ih = el.innerHTML
|
||||
outString = ""
|
||||
i1 = 0
|
||||
iend = ih.length
|
||||
while(true)
|
||||
{
|
||||
i2 = startWord(ih, i1)
|
||||
if(i2 == -1)
|
||||
i2 = iend
|
||||
outWord(ih, i1, i2, false, "")
|
||||
if(i2 == iend)
|
||||
break
|
||||
i1 = i2
|
||||
i2 = endWord(ih, i1)
|
||||
if(i2 == -1)
|
||||
i2 = iend
|
||||
outWord(ih, i1, i2, true, animation)
|
||||
if(i2 == iend)
|
||||
break
|
||||
i1 = i2
|
||||
}
|
||||
document.all[index].innerHTML = outString
|
||||
document.all[index].style.posLeft = 0
|
||||
document.all[index].setAttribute(dynamicanimAttr, null)
|
||||
}
|
||||
if(animation == "zoomIn" || animation == "zoomOut")
|
||||
{
|
||||
ih = el.innerHTML
|
||||
outString = "<SPAN " + dynamicanimAttr + "=\"" + animation + "\" style=\"position: relative; left: 10000;\">"
|
||||
outString += ih
|
||||
outString += "</SPAN>"
|
||||
document.all[index].innerHTML = outString
|
||||
document.all[index].style.posLeft = 0
|
||||
document.all[index].setAttribute(dynamicanimAttr, null)
|
||||
}
|
||||
}
|
||||
}
|
||||
i = 0
|
||||
for (index=document.body.sourceIndex; index < document.all.length; index++)
|
||||
{
|
||||
el = document.all[index]
|
||||
animation = el.getAttribute(dynamicanimAttr, false)
|
||||
if (null != animation)
|
||||
{
|
||||
if(animation == "flyLeft")
|
||||
{
|
||||
el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth
|
||||
el.style.posTop = 0
|
||||
}
|
||||
else if(animation == "flyRight")
|
||||
{
|
||||
el.style.posLeft = 10000-offsetLeft(el)+document.body.offsetWidth
|
||||
el.style.posTop = 0
|
||||
}
|
||||
else if(animation == "flyTop" || animation == "dropWord")
|
||||
{
|
||||
el.style.posLeft = 0
|
||||
el.style.posTop = document.body.scrollTop-offsetTop(el)-el.offsetHeight
|
||||
}
|
||||
else if(animation == "flyBottom")
|
||||
{
|
||||
el.style.posLeft = 0
|
||||
el.style.posTop = document.body.scrollTop-offsetTop(el)+document.body.offsetHeight
|
||||
}
|
||||
else if(animation == "flyTopLeft")
|
||||
{
|
||||
el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth
|
||||
el.style.posTop = document.body.scrollTop-offsetTop(el)-el.offsetHeight
|
||||
}
|
||||
else if(animation == "flyTopRight" || animation == "flyTopRightWord")
|
||||
{
|
||||
el.style.posLeft = 10000-offsetLeft(el)+document.body.offsetWidth
|
||||
el.style.posTop = document.body.scrollTop-offsetTop(el)-el.offsetHeight
|
||||
}
|
||||
else if(animation == "flyBottomLeft")
|
||||
{
|
||||
el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth
|
||||
el.style.posTop = document.body.scrollTop-offsetTop(el)+document.body.offsetHeight
|
||||
}
|
||||
else if(animation == "flyBottomRight" || animation == "flyBottomRightWord")
|
||||
{
|
||||
el.style.posLeft = 10000-offsetLeft(el)+document.body.offsetWidth
|
||||
el.style.posTop = document.body.scrollTop-offsetTop(el)+document.body.offsetHeight
|
||||
}
|
||||
else if(animation == "spiral")
|
||||
{
|
||||
el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth
|
||||
el.style.posTop = document.body.scrollTop-offsetTop(el)-el.offsetHeight
|
||||
}
|
||||
else if(animation == "zoomIn")
|
||||
{
|
||||
el.style.posLeft = 10000
|
||||
el.style.posTop = 0
|
||||
}
|
||||
else if(animation == "zoomOut")
|
||||
{
|
||||
el.style.posLeft = 10000
|
||||
el.style.posTop = 0
|
||||
}
|
||||
else
|
||||
{
|
||||
el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth
|
||||
el.style.posTop = 0
|
||||
}
|
||||
el.initLeft = el.style.posLeft
|
||||
el.initTop = el.style.posTop
|
||||
animateElements[i++] = el
|
||||
}
|
||||
}
|
||||
window.setTimeout("animate();", speed)
|
||||
}
|
||||
function offsetLeft(el)
|
||||
{
|
||||
x = el.offsetLeft
|
||||
for (e = el.offsetParent; e; e = e.offsetParent)
|
||||
x += e.offsetLeft;
|
||||
return x
|
||||
}
|
||||
function offsetTop(el)
|
||||
{
|
||||
y = el.offsetTop
|
||||
for (e = el.offsetParent; e; e = e.offsetParent)
|
||||
y += e.offsetTop;
|
||||
return y
|
||||
}
|
||||
function startWord(ih, i)
|
||||
{
|
||||
for(tag = false; i < ih.length; i++)
|
||||
{
|
||||
c = ih.charAt(i)
|
||||
if(c == '<')
|
||||
tag = true
|
||||
if(!tag)
|
||||
return i
|
||||
if(c == '>')
|
||||
tag = false
|
||||
}
|
||||
return -1
|
||||
}
|
||||
function endWord(ih, i)
|
||||
{
|
||||
nonSpace = false
|
||||
space = false
|
||||
while(i < ih.length)
|
||||
{
|
||||
c = ih.charAt(i)
|
||||
if(c != ' ')
|
||||
nonSpace = true
|
||||
if(nonSpace && c == ' ')
|
||||
space = true
|
||||
if(c == '<')
|
||||
return i
|
||||
if(space && c != ' ')
|
||||
return i
|
||||
i++
|
||||
}
|
||||
return -1
|
||||
}
|
||||
function outWord(ih, i1, i2, dyn, anim)
|
||||
{
|
||||
if(dyn)
|
||||
outString += "<SPAN " + dynamicanimAttr + "=\"" + anim + "\" style=\"position: relative; left: 10000;\">"
|
||||
outString += ih.substring(i1, i2)
|
||||
if(dyn)
|
||||
outString += "</SPAN>"
|
||||
}
|
||||
function animate()
|
||||
{
|
||||
el = animateElements[currentElement]
|
||||
animation = el.getAttribute(dynamicanimAttr, false)
|
||||
step++
|
||||
if(animation == "spiral")
|
||||
{
|
||||
steps = stepsSpiral
|
||||
v = step/steps
|
||||
rf = 1.0 - v
|
||||
t = v * 2.0*Math.PI
|
||||
rx = Math.max(Math.abs(el.initLeft), 200)
|
||||
ry = Math.max(Math.abs(el.initTop), 200)
|
||||
el.style.posLeft = Math.ceil(-rf*Math.cos(t)*rx)
|
||||
el.style.posTop = Math.ceil(-rf*Math.sin(t)*ry)
|
||||
}
|
||||
else if(animation == "zoomIn")
|
||||
{
|
||||
steps = stepsZoom
|
||||
el.style.fontSize = Math.ceil(50+50*step/steps) + "%"
|
||||
el.style.posLeft = 0
|
||||
}
|
||||
else if(animation == "zoomOut")
|
||||
{
|
||||
steps = stepsZoom
|
||||
el.style.fontSize = Math.ceil(100+200*(steps-step)/steps) + "%"
|
||||
el.style.posLeft = 0
|
||||
}
|
||||
else
|
||||
{
|
||||
steps = stepsFly
|
||||
if(animation == "dropWord" || animation == "flyTopRightWord" || animation == "flyBottomRightWord")
|
||||
steps = stepsWord
|
||||
dl = el.initLeft / steps
|
||||
dt = el.initTop / steps
|
||||
el.style.posLeft = el.style.posLeft - dl
|
||||
el.style.posTop = el.style.posTop - dt
|
||||
}
|
||||
if (step >= steps)
|
||||
{
|
||||
el.style.posLeft = 0
|
||||
el.style.posTop = 0
|
||||
currentElement++
|
||||
step = 0
|
||||
}
|
||||
if(currentElement < animateElements.length)
|
||||
window.setTimeout("animate();", speed)
|
||||
}
|
||||
//-->
|
Reference in New Issue
Block a user