codice:
if (document.getElementById && document.getElementsByTagName) {
if (window.addEventListener) window.addEventListener('load', initAnims, false);
else if (window.attachEvent) window.attachEvent('onload', initAnims);
}
function initAnims() {
classChange(document.getElementById('Cbig'),'scriptactive','noscript')
var animElements = document.getElementById('Cbig').getElementsByTagName('div');
for(var i=0; i<animElements.length; i++) {
animElements[i].bgAnim = {
iPos:[0,0],
pUnit:['px','px'],
cFrame:0,
mFrame: 14,
dPos:[0,-200],
mSec:15
}
animElements[i].onfocus = backPosAnimF;
animElements[i].onblur = backPosAnimR;
}
function backPosAnimF() {
doBackPosAnim(this,this.bgAnim,this.bgAnim.cFrame, this.bgAnim.mFrame);
}
function backPosAnimR() {
doBackPosAnim(this,this.bgAnim,this.bgAnim.cFrame, 0);
}
}
function doBackPosAnim(elem,vrH,startFrm,endFrm) {
if (vrH.intID) window.clearInterval(vrH.intID);
var actStep = 0, steps = Math.abs(endFrm - startFrm)+1;
vrH.intID = window.setInterval(
function() {
vrH.cFrame = easeInOut(startFrm,endFrm,steps,actStep,1);
vrH.cPos = [
vrH.iPos[0]+vrH.cFrame*vrH.dPos[0],
vrH.iPos[1]+vrH.cFrame*vrH.dPos[1]
];
elem.style.backgroundPosition = vrH.cPos[0]+vrH.pUnit[0]+' '+vrH.cPos[1]+vrH.pUnit[1];
actStep++;
if (actStep > steps) window.clearInterval(vrH.intID);
}
,vrH.mSec)
}
function doBackPosChange(elem,vrH,startPos,endPos,steps,intervals,powr) {
if (vrH.intID) window.clearInterval(vrH.intID);
var actStep = 0;
vrH.intID = window.setInterval(
function() {
vrH.cPos = [
easeInOut(startPos[0],endPos[0],steps,actStep,powr),
easeInOut(startPos[1],endPos[1],steps,actStep,powr)
];
elem.style.backgroundPosition = vrH.cPos[0]+vrH.pUnit[0]+' '+vrH.cPos[1]+vrH.pUnit[1];
actStep++;
if (actStep > steps) window.clearInterval(vrH.intID);
}
,intervals)
}
function easeInOut(minValue,maxValue,totalSteps,actualStep,powr) {
totalSteps = Math.max(totalSteps,1)
var delta = maxValue - minValue;
var stepp = minValue+(Math.pow(((1 / totalSteps)*actualStep),powr)*delta);
return Math.ceil(stepp)
}
function classChange(elem,addClass,remClass) {
if (!elem.className) elem.className = '';
var clsnm = elem.className;
if (addClass && !clsnm.match(RegExp("\\b"+addClass+"\\b"))) clsnm = clsnm.replace(/(\S$)/,'$1 ')+addClass;
if (remClass) clsnm = clsnm.replace(RegExp("(\\s*\\b"+remClass+"\\b(\\s*))*","g"),'$2');
elem.className=clsnm;
}
function showError(str) {
if (window.opera) opera.postError('|'+str+'|');
else alert('|'+str+'|');
}
come ho già spiegato all'inizio non posso usare il background della textarea per il problema dello scroll in caso di overflow di explorer