home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Plus! (NZ) 2001 May
/
PCW0501.iso
/
games
/
BMKungFu.exe
/
data1.cab
/
Help_Files
/
help
/
animate.js
< prev
next >
Wrap
Text File
|
2001-01-08
|
14KB
|
600 lines
<!--
// See KB article about changing this dynamic HTML
dynamicanimAttr = "dynamicanimation"
animCancel = "skipanim"
fpanimationPrefix = "fpAnim"
animateElements = new Array()
currentElement = 0
speed = 1
stepsZoom = 8
stepsWord = 8
stepsFly = 17
stepsSpiral = 16
stepsSpiralWord = 19
stepsElastic = 32
steps = stepsZoom
step = 0
cornerPhase=0
outEffect=0
function remSuffix(str)
{
ind=str.indexOf("FP")
str = str.substring(0,ind)
return str
}
function dynAnimOut(el)
{
outEffect=1
dynAnimation(el)
outEffect=0
}
function dynAnimation(obj)
{
animateElements = new Array()
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))
doc_els=document.layers
else
return
}
else
doc_els=document.all
if(outEffect && !ie4)
return
if(ie4)
{
for (index=document.all.length-1; index >= document.body.sourceIndex; index--)
{
el = document.all[index]
if(outEffect && el != obj)
continue
if(outEffect)
animationId = el.id.substring(9,el.id.length)
else
animationId = el.id.substring(6,el.id.length)
animation=remSuffix(animationId)
if(null != animation)
{
altcnt=0
if( animation == "dropWord" ||
animation == "flyTopRightWord" ||
animation == "flyBottomRightWord" ||
animation == "waveWords" ||
animation == "hopWords")
{
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, "", outEffect ? obj.id : el.id)
if(i2 == iend)
break
i1 = i2
i2 = endWord(ih, i1)
if(i2 == -1)
i2 = iend
if (animation == "waveWords")
outWordAlt(ih, i1, i2, true, animation, altcnt)
else
outWord(ih, i1, i2, true, (outEffect ? "Out" : "") + animation,
outEffect ? obj.id : el.id)
if(i2 == iend)
break
i1 = i2
altcnt++
}
document.all[index].innerHTML = outString
document.all[index].style.posLeft = 0
document.all[index].setAttribute(animCancel, true)
document.all[index].style.visibility="visible"
}
}
}
}
i = 0
for (index=0; index < doc_els.length; index++)
{
el = doc_els[index]
if(0 != el.id.indexOf(fpanimationPrefix))
continue
if (ie4)
{
elprops=el.style
scrollOffsetTop=document.body.scrollTop
docHeight=document.body.offsetHeight
docWidth=document.body.offsetWidth
elW=100
elH=el.offsetHeight
}
else
{
elprops=el
scrollOffsetTop=window.pageYOffset
docHeight=window.innerHeight
docWidth=window.innerWidth
elW=el.clip.width
elH=el.clip.height
}
if(outEffect)
animationId = el.id.substring(9,el.id.length)
else
animationId = el.id.substring(6,el.id.length)
animation=remSuffix(animationId)
if(outEffect && (obj != el))
{
if(el.SRCID != obj.id)
continue
}
if (null != animation )
{
if(ie4 && null!=el.getAttribute(animCancel, false))
continue
if(!ie4)
{
elprops.posLeft=elprops.left
elprops.posTop=elprops.top
}
el.startL=offsetLeft(el)
if(animation == "flyLeft")
{
elprops.posLeft = -offsetLeft(el)-elW
elprops.posTop = 0
}
else if(animation == "flyRight" || animation=="elasticRight")
{
elprops.posLeft = -offsetLeft(el)+docWidth
elprops.posTop = 0
}
else if(animation == "flyTop" || animation == "dropWord")
{
elprops.posLeft = 0
elprops.posTop = scrollOffsetTop-offsetTop(el)-elH
}
else if(animation == "flyBottom" || animation == "elasticBottom")
{
elprops.posLeft = 0
elprops.posTop = scrollOffsetTop-offsetTop(el)+docHeight
}
else if(animation == "flyTopLeft")
{
elprops.posLeft = -offsetLeft(el)-elW
elprops.posTop = scrollOffsetTop-offsetTop(el)-elH
}
else if(animation == "flyTopRight" || animation == "flyTopRightWord")
{
elprops.posLeft = -offsetLeft(el)+docWidth
elprops.posTop = scrollOffsetTop-offsetTop(el)-elH
}
else if(animation == "flyCorner")
{
elprops.posLeft = docWidth*0.2-offsetLeft(el)
elprops.posTop = scrollOffsetTop-offsetTop(el)+docHeight
}
else if(animation == "flyBottomLeft")
{
elprops.posLeft = -offsetLeft(el)-elW
elprops.posTop = scrollOffsetTop-offsetTop(el)+docHeight
}
else if(animation == "flyBottomRight" || animation == "flyBottomRightWord")
{
elprops.posLeft = -offsetLeft(el)+docWidth
elprops.posTop = scrollOffsetTop-offsetTop(el)+docHeight
}
else if(animation == "spiral")
{
elprops.posLeft = -offsetLeft(el)+docWidth
elprops.posTop = scrollOffsetTop-offsetTop(el)+docHeight
}
else if((animation.indexOf("waveWords") != -1) || animation=="hopWords")
{
if(i)
{
prevEl=animateElements[i-1]
elprops.r = offsetLeft(el)-prevEl.startL
}
else
elprops.r = offsetLeft(el)
}
else if(animation == "wipeLR" || animation == "wipeMID")
{
if (ie4 && elprops.position=="absolute")
{
el.sizeW=el.offsetWidth
elprops.clip="rect(0 0 0 0)"
}
else if (!ie4)
{
el.sizeW=el.clip.width
el.clip.width=0
}
}
else if(animation == "wipeTB")
{
if (ie4 && elprops.position=="absolute")
{
elprops.clip="rect(0 0 0 0)"
}
else if(!ie4)
{
el.sizeH=el.clip.height
el.clip.height=0
}
}
else if(animation == "zoomIn")
{
elprops.posLeft = 0
elprops.posTop = 0
}
else if(animation == "zoomOut")
{
elprops.posLeft = 0
elprops.posTop = 0
}
else
{
continue
}
if(!outEffect)
{
el.initLeft = elprops.posLeft
el.initTop = elprops.posTop
el.endLeft = 0
el.endTop = 0
elprops.visibility = "hidden"
}
else
{
el.initLeft = 0
el.initTop = 0
el.endLeft = elprops.posLeft
el.endTop = elprops.posTop
elprops.posTop = 0
elprops.posLeft = 0
}
if(!ie4)
{
elprops.left=elprops.initLeft
elprops.top =elprops.initTop
}
animateElements[i++] = el
}
}
if(animateElements.length > 0)
{
if(outEffect)
window.setTimeout("animate(1);", speed, "Javascript")
else
window.setTimeout("animate(0);", speed, "Javascript")
}
}
function offsetLeft(el)
{
if(ie4)
{
x = el.offsetLeft
for (e = el.offsetParent; e; e = e.offsetParent)
x += e.offsetLeft
return x
}
else
{
x = el.pageX
return x
}
}
function offsetTop(el)
{
if(ie4)
{
y = el.offsetTop
for (e = el.offsetParent; e; e = e.offsetParent)
y += e.offsetTop;
return y
}
else
{
y = el.pageY
return y
}
}
function startWord(ih, i)
{
for(tag = false; i < ih.length; i++)
{
c = ih.charAt(i)
if(c == '<')
{
if(ih.substring(i+1, i+4) == "IMG")
return i;
tag = true
}
if(!tag)
return i
if(c == '>')
tag = false
}
return -1
}
function endWord(ih, i)
{
nonSpace = false
space = false
img = false
if(ih.charAt(i) == '<')
{
img = true
i++;
}
while(i < ih.length)
{
c = ih.charAt(i)
if(c != ' ')
nonSpace = true
if(img && c == '>')
img = false;
if(nonSpace && !img && c == ' ')
space = true
if(c == '<')
return i
if(space && c != ' ')
return i
i++
}
return -1
}
function outWord(ih, i1, i2, dyn, anim, srcID)
{
if(dyn)
if(!outEffect)
outString += "<SPAN ID=\"" + fpanimationPrefix + anim + "FP\" style=\"position: relative; visibility: hidden;\">"
else
outString += "<SPAN SRCID=\"" + srcID + "\"ID=\"" + fpanimationPrefix + anim + "FP\" style=\"position: relative;\">"
outString += ih.substring(i1, i2)
if(dyn)
outString += "</SPAN>"
}
function outWordAlt(ih, i1, i2, dyn, anim, altcnt)
{
if(dyn)
{
if(altcnt%2)
outString += "<SPAN ID=\"" + fpanimationPrefix + anim + "LFP\" style=\"position: relative; visibility: hidden;\">"
else
outString += "<SPAN ID=\"" + fpanimationPrefix + anim + "RFP\" style=\"position: relative; visibility: hidden;\">"
}
outString += ih.substring(i1, i2)
if(dyn)
outString += "</SPAN>"
}
function animate(animOut)
{
el = animateElements[currentElement]
if(animOut)
animationId = el.id.substring(9,el.id.length);
else
animationId = el.id.substring(6,el.id.length);
animation=remSuffix(animationId)
if (ie4)
elprops=el.style
else
elprops=el
if(!step && !animOut)
elprops.visibility="visible"
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)
elprops.posLeft = Math.ceil(-rf*Math.cos(t)*rx)
elprops.posTop = Math.ceil(-rf*Math.sin(t)*ry)
}
else if(animation == "waveWordsL" || animation=="hopWords" || animation == "waveWords")
{
steps = stepsSpiralWord
v = step/steps
rf = (1.0 - v)
t = v * 1.0*Math.PI
elprops.posLeft = Math.ceil(-rf*Math.cos(t)*elprops.r)
elprops.posTop = Math.ceil(-rf*Math.sin(t)*elprops.r)
}
else if(animation == "waveWordsR")
{
steps = stepsSpiralWord
v = step/steps
rf = (1.0 - v)
t = v * 1.0*Math.PI
elprops.posLeft = Math.ceil(-rf*Math.cos(t)*elprops.r)
elprops.posTop = Math.ceil( rf*Math.sin(t)*elprops.r)
}
else if(animation == "zoomIn")
{
steps = stepsZoom
elprops.fontSize = Math.ceil(50+50*step/steps) + "%"
elprops.posLeft = 0
}
else if(animation == "zoomOut")
{
steps = stepsZoom
fontSz=Math.ceil(100+200*(steps-step)/steps) + "%"
elprops.fontSize = fontSz
elprops.posLeft = 0
}
else if(animation == "elasticRight")
{
steps = stepsElastic
v = step/steps
rf=Math.exp(-v*7)
t = v * 1.5*Math.PI
rx =Math.abs(el.initLeft)
elprops.posLeft = rf*Math.cos(t)*rx
elprops.posTop = 0
}
else if(animation == "elasticBottom")
{
steps = stepsElastic
v = step/steps
rf=Math.exp(-v*7)
t = v * 2.5*Math.PI
ry =Math.abs(el.initTop)
elprops.posLeft = 0
elprops.posTop = rf*Math.cos(t)*ry
}
else if(animation == "wipeLR")
{
steps = stepsElastic
if(ie4 && elprops.position=="absolute")
elprops.clip = "rect(0 "+ step/steps*100 +"% 100% 0)"
else if (!ie4)
{
elprops.clip.right=step/steps*el.sizeW
}
}
else if(animation == "wipeTB")
{
steps = stepsElastic
if(ie4 && elprops.position=="absolute")
elprops.clip = "rect(0 100% "+step/steps*el.offsetHeight+"px 0)"
else
elprops.clip.bottom=step/steps*el.sizeH
}
else if(animation == "wipeMID")
{
steps = stepsElastic
if(ie4 && elprops.position=="absolute")
{
elprops.clip = "rect(0 "+el.sizeW/2*(1+step/steps)+"px 100% "+el.sizeW/2*(1-step/steps)+")"
}
else if(!ie4)
{
elprops.clip.right=el.sizeW/2*(1+step/steps)
elprops.clip.left=el.sizeW/2*(1-step/steps)
}
}
else if(animation == "flyCorner")
{
if(!cornerPhase)
{
steps = stepsElastic/2
v = step/steps
rf=Math.exp(-v*7)
t = v * 2.5*Math.PI
ry =Math.abs(el.initTop)
elprops.posTop = rf*Math.cos(t)*ry
}
else
{
steps = stepsFly
dl = el.initLeft / steps
elprops.posLeft = elprops.posLeft - dl
elprops.posTop = 0
}
}
else
{
steps = stepsFly
if(animation == "dropWord" || animation == "flyTopRightWord" || animation == "flyBottomRightWord")
steps = stepsWord
dl = (el.endLeft - el.initLeft) / steps
dt = (el.endTop - el.initTop) / steps
elprops.posLeft = elprops.posLeft + dl
elprops.posTop = elprops.posTop + dt
}
if (step >= steps)
{
if(!(animation == "wipeLR" ||
animation == "wipeTB" ||
animation == "wipeMID" ||
(animation == "flyCorner" && !cornerPhase)))
{
elprops.posLeft = el.endLeft
elprops.posTop = el.endTop
}
if(animOut)
{
elprops.visibility="hidden"
}
step = 0
if(animation=="flyCorner" && !cornerPhase)
cornerPhase=1
else
{
cornerPhase=0
currentElement++
}
}
if(!ie4)
{
elprops.left=elprops.posLeft
elprops.top =elprops.posTop
}
if(currentElement < animateElements.length)
{
if(animOut)
window.setTimeout("animate(1);", speed, "Javascript")
else
window.setTimeout("animate(0);", speed, "Javascript")
}
else
currentElement=0
}
function rollIn(el)
{
var ms = navigator.appVersion.indexOf("MSIE")
ie4 = (ms>0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4)
if(ie4)
{
el.initstyle=el.style.cssText;el.style.cssText=el.fprolloverstyle
}
}
function rollOut(el)
{
var ms = navigator.appVersion.indexOf("MSIE")
ie4 = (ms>0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4)
if(ie4)
{
el.style.cssText=el.initstyle
}
}
function clickSwapStyle(el)
{
var ms = navigator.appVersion.indexOf("MSIE")
ie4 = (ms>0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4)
if(ie4)
{
ts=el.style.cssText
el.style.cssText=el.fprolloverstyle
el.fprolloverstyle=ts
}
}
function clickSwapImg(el)
{
if(document.all || document.layers)
{
ts=el.src
el.src=el.lowsrc
el.lowsrc=ts
}
}
//-->