function () {
		var center = -this.y + this.wrapperHeight / 2;

		var minorPhase = Math.max(Math.floor(-this.y / this.infiniteElementHeight) - this.infiniteUpperBufferSize, 0),
			majorPhase = Math.floor(minorPhase / this.infiniteLength),
			phase = minorPhase - majorPhase * this.infiniteLength;

		var top = 0;
		var i = 0;
		var update = [];

		//var cachePhase = Math.floor((minorPhase + this.infiniteLength / 2) / this.infiniteCacheBuffer);
		var cachePhase = Math.floor(minorPhase / this.infiniteCacheBuffer);

		while ( i < this.infiniteLength ) {
			top = i * this.infiniteElementHeight + majorPhase * this.infiniteHeight;

			if ( phase > i ) {
				top += this.infiniteElementHeight * this.infiniteLength;
			}

			if ( this.infiniteElements[i]._top !== top ) {
				this.infiniteElements[i]._phase = top / this.infiniteElementHeight;

				if ( this.infiniteElements[i]._phase < this.options.infiniteLimit ) {
					this.infiniteElements[i]._top = top;
					if ( this.options.infiniteUseTransform ) {
						this.infiniteElements[i].style[utils.style.transform] = 'translate(0, ' + top + 'px)' + this.translateZ;
					} else {
						this.infiniteElements[i].style.top = top + 'px';
					}
					update.push(this.infiniteElements[i]);
				}
			}

			i++;
		}

		if ( this.cachePhase != cachePhase && (cachePhase === 0 || minorPhase - this.infiniteCacheBuffer > 0) ) {
			this.options.dataset.call(this, Math.max(cachePhase * this.infiniteCacheBuffer - this.infiniteCacheBuffer, 0), this.options.cacheSize);
		}

		this.cachePhase = cachePhase;

		this.updateContent(update);
	}
function () {
		var center = -this.y + this.wrapperHeight / 2;

		var minorPhase = Math.max(Math.floor(-this.y / this.infiniteElementHeight) - this.infiniteUpperBufferSize, 0),
			majorPhase = Math.floor(minorPhase / this.infiniteLength),
			phase = minorPhase - majorPhase * this.infiniteLength;

		var top = 0;
		var i = 0;
		var update = [];

		
		var cachePhase = Math.floor(minorPhase / this.infiniteCacheBuffer);

		while ( i < this.infiniteLength ) {
			top = i * this.infiniteElementHeight + majorPhase * this.infiniteHeight;

			if ( phase > i ) {
				top += this.infiniteElementHeight * this.infiniteLength;
			}

			if ( this.infiniteElements[i]._top !== top ) {
				this.infiniteElements[i]._phase = top / this.infiniteElementHeight;

				if ( this.infiniteElements[i]._phase < this.options.infiniteLimit ) {
					this.infiniteElements[i]._top = top;
					if ( this.options.infiniteUseTransform ) {
						this.infiniteElements[i].style[utils.style.transform] = 'translate(0, ' + top + 'px)' + this.translateZ;
					} else {
						this.infiniteElements[i].style.top = top + 'px';
					}
					update.push(this.infiniteElements[i]);
				}
			}

			i++;
		}

		if ( this.cachePhase != cachePhase && (cachePhase === 0 || minorPhase - this.infiniteCacheBuffer > 0) ) {
			this.options.dataset.call(this, Math.max(cachePhase * this.infiniteCacheBuffer - this.infiniteCacheBuffer, 0), this.options.cacheSize);
		}

		this.cachePhase = cachePhase;

		this.updateContent(update);
	}
function ( ) { var center = - this . y + this . wrapperHeight / 2 ; var minorPhase = Math . max ( Math . floor ( - this . y / this . infiniteElementHeight ) - this . infiniteUpperBufferSize , 0 ) , majorPhase = Math . floor ( minorPhase / this . infiniteLength ) , phase = minorPhase - majorPhase * this . infiniteLength ; var top = 0 ; var i = 0 ; var update = [ ] ; //var cachePhase = Math.floor((minorPhase + this.infiniteLength / 2) / this.infiniteCacheBuffer); var cachePhase = Math . floor ( minorPhase / this . infiniteCacheBuffer ) ; while ( i < this . infiniteLength ) { top = i * this . infiniteElementHeight + majorPhase * this . infiniteHeight ; if ( phase > i ) { top += this . infiniteElementHeight * this . infiniteLength ; } if ( this . infiniteElements [ i ] . _top !== top ) { this . infiniteElements [ i ] . _phase = top / this . infiniteElementHeight ; if ( this . infiniteElements [ i ] . _phase < this . options . infiniteLimit ) { this . infiniteElements [ i ] . _top = top ; if ( this . options . infiniteUseTransform ) { this . infiniteElements [ i ] . style [ utils . style . transform ] = 'translate(0, ' + top + 'px)' + this . translateZ ; } else { this . infiniteElements [ i ] . style . top = top + 'px' ; } update . push ( this . infiniteElements [ i ] ) ; } } i ++ ; } if ( this . cachePhase != cachePhase && ( cachePhase === 0 || minorPhase - this . infiniteCacheBuffer > 0 ) ) { this . options . dataset . call ( this , Math . max ( cachePhase * this . infiniteCacheBuffer - this . infiniteCacheBuffer , 0 ) , this . options . cacheSize ) ; } this . cachePhase = cachePhase ; this . updateContent ( update ) ; }
TO-DO: clean up the mess
TO - DO : clean up the mess