You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
682 lines
15 KiB
JavaScript
682 lines
15 KiB
JavaScript
<!--
|
|
// See KB article about changing this dynamic HTML
|
|
dynamicanimAttr = "dynamicanimation"
|
|
animCancel = "skipanim"
|
|
fpanimationPrefix = "fpAnim"
|
|
animateElements = new Array()
|
|
timeout = -1
|
|
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")
|
|
var macness = navigator.appVersion.indexOf("Macintosh")
|
|
|
|
ie4 = (ms>0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4)
|
|
ns6 = false
|
|
if(!ie4)
|
|
{
|
|
if((navigator.appName == "Netscape") &&
|
|
(parseInt(navigator.appVersion.substring(0, 1)) >= 5))
|
|
{
|
|
ns6=true
|
|
doc_els=document.getElementsByTagName('*')
|
|
}
|
|
else 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
|
|
{
|
|
scrollOffsetTop=window.pageYOffset
|
|
docHeight=window.innerHeight
|
|
docWidth=window.innerWidth
|
|
if (ns6)
|
|
{
|
|
elprops=el.style
|
|
elW=100
|
|
elH=el.offsetHeight
|
|
}
|
|
else{
|
|
elprops=el
|
|
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
|
|
|
|
if(macness < 0)
|
|
elprops.clip="rect(0 0 0 0)"
|
|
}
|
|
else if (!ie4)
|
|
{
|
|
if (ns6)
|
|
{
|
|
elprops.clip="rect(0 0 0 0)"
|
|
}
|
|
else{
|
|
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)
|
|
{
|
|
if (ns6)
|
|
{
|
|
elprops.clip="rect(0 0 0 0)"
|
|
}
|
|
else{
|
|
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(0<=timeout)
|
|
{
|
|
window.clearTimeout(timeout);
|
|
timeout = -1
|
|
|
|
currentElement=0
|
|
}
|
|
|
|
if(outEffect)
|
|
timeout = window.setTimeout("animate(1);", speed, "Javascript")
|
|
else
|
|
timeout = window.setTimeout("animate(0);", speed, "Javascript")
|
|
}
|
|
}
|
|
function offsetLeft(el)
|
|
{
|
|
if(ie4 || ns6)
|
|
{
|
|
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 || ns6)
|
|
{
|
|
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{
|
|
if (ns6)
|
|
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)
|
|
{
|
|
if (ns6)
|
|
{
|
|
postop = elprops.top
|
|
posleft = elprops.left
|
|
str="position:absolute;top:"+postop+";left:"+posleft+";clip:rect(0px " + step/steps*el.offsetWidth + "px "+el.offsetHeight+"px 0px)";
|
|
el.setAttribute("style",str);
|
|
}
|
|
else
|
|
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{
|
|
if (ns6)
|
|
{
|
|
postop = elprops.top
|
|
posleft = elprops.left
|
|
str="position:absolute;top:"+postop+";left:"+posleft+";clip:rect(0px "+ el.offsetWidth + "px " +step/steps*el.offsetHeight+"px 0px)";
|
|
el.setAttribute("style",str);
|
|
}
|
|
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)
|
|
{
|
|
if (ns6)
|
|
{
|
|
postop = elprops.top
|
|
posleft = elprops.left
|
|
str="position:absolute;top:"+postop+";left:"+posleft+";clip:rect(0px "+ el.offsetWidth/2*(1+step/steps) + "px "+el.offsetHeight+"px "+el.offsetWidth/2*(1-step/steps)+"px)";
|
|
el.setAttribute("style",str);
|
|
}
|
|
else{
|
|
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 = Math.ceil(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(0<=timeout)
|
|
{
|
|
window.clearTimeout(timeout)
|
|
timeout = -1
|
|
}
|
|
|
|
if(animOut)
|
|
timeout = window.setTimeout("animate(1);", speed, "Javascript")
|
|
else
|
|
timeout = 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;
|
|
var newStyle=el.style.cssText+";"+el.fprolloverstyle;
|
|
el.style.cssText=newStyle
|
|
}
|
|
}
|
|
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
|
|
}
|
|
}
|
|
//-->
|