var frame_rate = 25; var frame_interval; var frame_timer = null; var animatorInitialized = false; var movers = new Array(); var faders = new Array(); var players = new Array(); var img_series = new Array(); function init_animator()
{ if(!animatorInitialized)
{ frame_interval = 1000/frame_rate; if(frame_timer==null)
frame_timer=setInterval("run_animator()",frame_interval); animatorInitialized = true;}
}
function run_animator()
{ scroll_imagebar(); if(movers.length != 0) run_mover(); if(faders.length != 0) run_fader(); if(players.length != 0) run_player();}
function stop_animator()
{ if(frame_timer!=null)
clearInterval(frame_timer);}
function run_mover()
{ for (var i=0; i<movers.length; i++)
{ if(movers[i].delayFrames<=0)
{ movers[i].xpos += movers[i].dx; movers[i].ypos += movers[i].dy; movers[i].xsize += movers[i].dWidth; movers[i].ysize += movers[i].dHeight; movers[i].style.left = Math.round(movers[i].xpos); movers[i].style.top = Math.round(movers[i].ypos); movers[i].style.width = Math.round(movers[i].xsize); movers[i].style.height = Math.round(movers[i].ysize); movers[i].moveFrames--;}
else
{ movers[i].delayFrames--;}
}
remove_finished_elements(movers, 'move');}
function run_fader()
{ for (var i=0; i<faders.length; i++)
{ if(faders[i].delayFrames<=0)
{ faders[i].opacity += faders[i].dOpacity; if (browser.isIE)
faders[i].filters.item('alpha').opacity = Math.round(faders[i].opacity); else
faders[i].style.opacity = faders[i].opacity; faders[i].fadeFrames--;}
else
{ faders[i].delayFrames--;}
}
remove_finished_elements(faders, 'fade');}
function run_player()
{ for (var i=0; i<players.length; i++)
{ if(players[i].delayFrames<=0)
{ if(players[i].currFramePerImage == players[i].framesPerImage)
{ var x = players[i].images.length - players[i].playFrames; players[i].src = players[i].images[x].src; if(browser.isIE && browser.version >= 5.5 && browser.version < 7)
{ players[i].filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = players[i].images[x].src;}
players[i].playFrames--; players[i].currFramePerImage=0;}
else
{ players[i].currFramePerImage++;}
}
else
{ players[i].delayFrames--;}
}
remove_finished_elements(players, 'play');}
function move_element(id, x, y, width, height, delay, time)
{ var element = document.getElementById(id); for(var i=0; i<movers.length; i++)
{ if(movers[i]==element)
movers[i].moveFrames = 0;}
var nr = movers.push(element); nr--; if(movers[nr])
{ movers[nr].xpos = movers[nr].offsetLeft; movers[nr].ypos = movers[nr].offsetTop; movers[nr].xsize = movers[nr].offsetWidth; movers[nr].ysize = movers[nr].offsetHeight; movers[nr].delayFrames = Math.ceil(delay/frame_interval); movers[nr].moveFrames = Math.ceil(time/frame_interval); if(movers[nr].moveFrames != 0)
{ movers[nr].dx = (x - movers[nr].xpos)/movers[nr].moveFrames; movers[nr].dy = (y - movers[nr].ypos)/movers[nr].moveFrames; movers[nr].dWidth = (width - movers[nr].xsize )/movers[nr].moveFrames; movers[nr].dHeight = (height - movers[nr].ysize)/movers[nr].moveFrames;}
}
}
function fade_element(id, opacity, delay, time)
{ var element = document.getElementById(id); for(var i=0; i<faders.length; i++)
{ if(faders[i]==element)
faders[i].fadeFrames = 0;}
var nr = faders.push(element); nr--; if(faders[nr])
{ if (!browser.isIE)
opacity = opacity/100; faders[nr].style.visibility = 'visible'; faders[nr].opacity = parseFloat(getStyle(id,'opacity')); faders[nr].delayFrames = Math.ceil(delay/frame_interval); faders[nr].fadeFrames = Math.ceil(time/frame_interval); if(faders[nr].fadeFrames != 0)
faders[nr].dOpacity = (opacity - faders[nr].opacity)/faders[nr].fadeFrames;}
}
function play_element(id, dir, ext, nr_images, nr_frames_per_image, delay)
{ var element = document.getElementById(id); for(var i=0; i<players.length; i++)
{ if(players[i]==element)
{ players[i].playFrames = 0;}
}
var nr = players.push(element); nr--; if(players[nr])
{ players[nr].framesPerImage = nr_frames_per_image; players[nr].currFramePerImage = 0; players[nr].playFrames = nr_images; players[nr].delayFrames = Math.ceil(delay/frame_interval); players[nr].images = new Array(); for(var i=0; i<nr_images; i++)
{ players[nr].images[i] = new Image(); if(i<10)
players[nr].images[i].src = dir+"/frame0"+i+"."+ext; else
players[nr].images[i].src = dir+"/frame"+i+"."+ext;}
}
}
function remove_finished_elements(elements,type)
{ var nr_shift = 0; var nr_frames = 0; for(var i=0; i<elements.length; i++)
{ if(type == 'move')
nr_frames = elements[i].moveFrames; else if (type == 'fade')
nr_frames = elements[i].fadeFrames; else if (type == 'play')
nr_frames = elements[i].playFrames; if(nr_frames <= 0)
{ nr_shift++; if(type == 'fade')
{ if (browser.isIE)
var end_opacity = elements[i].filters.item('alpha').opacity; else
var end_opacity = 100*elements[i].style.opacity; if(Math.round(end_opacity) <= 10)
elements[i].style.visibility = 'hidden';}
}
else if(nr_shift > 0)
elements[i - nr_shift] = elements[i];}
if(nr_shift > 0)
elements.splice(elements.length - nr_shift, nr_shift);}
function getStyle(id,styleProp)
{ var x = document.getElementById(id); if(x.currentStyle)
var y = x.currentStyle[styleProp]; else if(window.getComputedStyle)
var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp); return y;}
