﻿// JavaScript File




function setCicli(showingNum) {
    startPoint=nowIndex;
    if (startPoint>=numNews) {
        startPoint=0
        nowIndex=0
    }
    endPoint=startPoint+showingNum
    if (endPoint>numNews||showingNum==0) {
        endPoint=numNews
    }
    nowIndex+=showingNum;
}

function setDisplay(objectArray,coloreIniziale,coloreFinale,colorOver,attribute) {
    for (i=startPoint;i<endPoint;i++) {
        objectArray[i].style.display="block";
        objectArray[i].style[attribute]=coloreIniziale;
    }
}

function setStepper(coloreIniziale, coloreFinale,ripetizioni) {
    stepper=new Array;
    stC=HexToDec(coloreIniziale);
    edC=HexToDec(coloreFinale);
    bStart=stC%256;
    bEnd=edC%256;
    gStart=((stC-stC%256)/256)%256;
    gEnd=((edC-edC%256)/256)%256;
    rStart=((stC-stC%(256*256))/(256*256));
    rEnd=((edC-edC%(256*256))/(256*256));
    b=bStart-bEnd
    g=gStart-gEnd
    r=rStart-rEnd
    stepper[0]=parseInt(b/ripetizioni);
    stepper[1]=parseInt(g/ripetizioni);
    stepper[2]=parseInt(r/ripetizioni);
    return stepper
}

function init(objectArray, coloreIniziale, coloreFinale,colorOver, duration,attribute) {
    for (i=0;i<numNews;i++) {
        objectArray[i].style.display="none";
        objectArray[i].style[attribute]=coloreIniziale;
        objectArray[i].onmouseover=function() {}
        objectArray[i].onmouseout=function() {}
    }
    setDisplay(objectArray,coloreIniziale,coloreFinale,colorOver,attribute);
    ripetizioni=parseInt(duration/25);
    return ripetizioni;
}


function calculateValue(act,fin,stepper) {
   newVal=act-stepper
   if (stepper>0) {
      if (newVal<fin) {
        newVal=fin
      }
      if (newVal<0) {
        newVal=0
      }
   } else {
      if (newVal>fin) {
        newVal=fin
      }
      if (newVal>255) {
        newVal=255
      }
   }
   return newVal
}


function calculateNextColor(coloreAttuale, coloreFinale, stepper) {

   decColor=HexToDec(coloreAttuale);
   bAtt=decColor%256;
   gAtt=((decColor-b)/256)%256;
   rAtt=((decColor-g*256-b))/(256*256);
   decColor=HexToDec(coloreFinale);
   bFin=decColor%256;
   gFin=((decColor-b)/256)%256;
   rFin=((decColor-g*256-b))/(256*256);
   b=calculateValue(bAtt,bFin,stepper[0])
   g=calculateValue(gAtt,gFin,stepper[1])
   r=calculateValue(rAtt,rFin,stepper[2])
   coloreAttuale=DecToHex(b+g*256+r*256*256);
   return coloreAttuale
}

function fader(objectArray, stepper, numCicli,nomeIntervallo, coloreAttuale,coloreFinale,colorOver,attribute) {
   cicliFader+=1;
   coloreAttuale=calculateNextColor(coloreAttuale, coloreFinale, stepper)
   for (i=startPoint;i<endPoint;i++) {
        objectArray[i].style.display="block";
        objectArray[i].style[attribute]=coloreAttuale;
    }
    if (cicliFader>=numCicli) {
           for (i=startPoint;i<endPoint;i++) {
                objectArray[i].style.display="block";
                objectArray[i].style[attribute]=coloreFinale;
                if (colorOver!="") {
                        objectArray[i].onmouseover=function() {
                            this.style[attribute]=colorOver;
                        }
                        objectArray[i].onmouseout=function() {
                            this.style[attribute]=coloreFinale;
                        }
                }
            }
        cicliFader=0
        clearInterval(nomeIntervallo);
    }
    return coloreAttuale
}

function ciclaFade(showingNum) {

    setCicli(showingNum);

    for (var i in elementi) {
        clearInterval(intervals[i]);
        nowColor[i]=startColor[i];
        cicli[i]=init(elementi[i],startColor[i],endColor[i],rollOverColor[i],1000,styleElement[i]);
        steppers[i]=setStepper(startColor[i], endColor[i], cicli[i]);
        stringa="nowColor["+i+"]=fader(elementi["+i+"],steppers["+i+"],cicli["+i+"], intervals["+i+"], nowColor["+i+"],endColor["+i+"],rollOverColor["+i+"],styleElement["+i+"])"
        intervals[i]=setInterval(stringa,25)
    }

}