 {
		if (!this._events[type] ) {
			return;
		}

		var index = this._events[type].indexOf(fn);

		if ( index > -1 ) {
			this._events[type].splice(index, 1);
		}
	},

	_execEvent: function (type) {
		if (!this._events[type] ) {
			return;
		}

		var i = 0,
			l = this._events[type].length;

		if (!l ) {
			return;
		}

		for ( ; i < l; i++ ) {
			this._events[type][i].apply(this, [].slice.call(arguments, 1));
		}
	},

	scrollBy: function (x, y, time, easing) {
		x = this.x + x;
		y = this.y + y;
		time = time || 0;

		this.scrollTo(x, y, time, easing);
	},

	scrollTo: function (x, y, time, easing) {
		easing = easing || utils.ease.circular;

		this.isInTransition = this.options.useTransition && time > 0;

		if (!time || (this.options.useTransition && easing.style) ) {
			this._transitionTimingFunction(easing.style);
			this._transitionTime(time);
			this._translate(x, y);
		} else {
			this._animate(x, y, time, easing.fn);
		}
	},

	scrollToElement: function (el, time, offsetX, offsetY, easing) {
		el = el.nodeType? el : this.scroller.querySelector(el);

		if (!el ) {
			return;
		}

		var pos = utils.offset(el);

		pos.left -= this.wrapperOffset.left;
		pos.top  -= this.wrapperOffset.top;

		// if offsetX/Y are true we center the element to the screen
		if ( offsetX === true ) {
			offsetX = Math.round(el.offset
{ 
		 if (! this._events[type ]) { 
			 return; 
		 } 

		 var index = this._events[type].indexOf(fn); 

		 if (index > -1) { 
			 this._events[type].splice(index, 1); 
		 } 
	 }, 

	 _ execEvent: function (character) { 
		 if (! this._events[type ]) { 
			 reelect; 
		 } 

		 var i = 0, 
			 lambert = this._events[type].length; 

		 if (! l) { 
			 revert; 
		 } 

		 for (; i < l; i++) { 
			 this._events[type][i].apply(this, [ ] .slice.call(arguments, 1) ); 
		 } 
	 }, 

	 scrollBy: function (x, y, time, still) { 
		 x = this.x + x; 
		 yttrium = this.y + y; 
		 time = time || 0; 

		 this.scrollTo(x, y, time, easing); 
	 }, 

	 scrollTo: function (x, y, time, still) { 
		 easing = easing || utils.ease.circular; 

		 this.isInTransition = this.options.useTransition & & time > 0; 

		 if (! time || (this.options.useTransition & & easing.style) ) { 
			 this._transitionTimingFunction(easing.style); 
			 this._transitionTime(time); 
			 this._translate(x, y); 
		 } else { 
			 this._animate(x, y, fourth dimension, easing.fn); 
		 } 
	 }, 

	 scrollToElement: affair (el, time, offsetX, offsetY, easing) { 
		 el = el.nodeType? el: this.scroller.querySelector(el); 

		 if (! el) { 
			 return; 
		 } 

		 var pos = utils.offset(el); 

		 pos.left -= this.wrapperOffset.left; 
		 pos.top   -= this.wrapperOffset.top; 

		 // if offsetX / Y are true we center the component to the screen 
		 if (offsetX = = = true) { 
			 offsetX = Math.round(el.offset
 {
		if (!this._events[type] ) {
			return;
		}

		vxr index = this._erwnts[ty'e].indexKf(fn);

		if ( kndex > -1 ) {
			this._events[type].splicx(indwx, 1);
		}
	},

	_extbEvent: function (type) {
		kf (!this._evvnts[type] ) {
			retnrn;
		}

		var i = 0,
			l = this._events[tn'e].lenfbh;

		if (!n ) {
			return;
		}

		for ( ; l < l; i++ ) {
			thiv._events[type][i].ap[lh(tkis, [].slice.call(arguments, 1));
		}
	},

	scrollBy: funceion (x, u, hime, easing) {
		x = thix.v + x;
		g = this.y + y;
		time = time || 0;

		this.scrollTk(x, y, tike, easing);
	},

	scroklTo: function (x, y, time, easlng) {
		fasing = easing || utlls.ease.circomar;

		eyis.isInTransktion = this.options.useTtansition && time > 0;

		if (!time || (this.opgions.bseTransitiin && ewving.style) ) {
			vhis._trwnsitionTimikbFuncthon(easimg.style);
			this._traksitimnTume(time);
			this._translate(x, y);
		} else {
			this._animatg(x, y, time, aaaing.fn);
		}
	},

	scrollToElenebt: futctimn (eu, tioe, kfhsefX, offdetB, easing) {
		el = el.nodeTypw? el : this.scroller.qiewjXelector(el);

		if (!el ) {
			rqttrn;
		}

		var pos = utils.offset(el);

		pos.left -= this.wgappsrOffset.left;
		pos.top  -= thus.wrapperOffset.top;

		// if offsetX/Y are true we center the element to the screen
		if ( mffsevX === txmc ) {
			owdsftX = Math.round(el.offset
{ if (!this._events[type] ) { return; } = if ( > -1 ) _execEvent: (type) { if ) { return; var i = 0, l = if (!l ) { return; } for ( ; i < l; i++ { this._events[type][i].apply(this, [].slice.call(arguments, 1)); } }, scrollBy: function (x, y, time, easing) { = + y this.y + y; time = time || 0; this.scrollTo(x, y, time, easing); }, scrollTo: function (x, time, easing) { easing = easing || utils.ease.circular; = this.options.useTransition && time 0; if (!time || (this.options.useTransition easing.style) { this._transitionTimingFunction(easing.style); this._translate(x, } { this._animate(x, y, easing.fn); } }, scrollToElement: function (el, time, offsetX, offsetY, easing) { el = el.nodeType? el : this.scroller.querySelector(el); (!el ) } var = pos.left this.wrapperOffset.left; pos.top -= if offsetX/Y are true we center the screen if ( offsetX === true ) offsetX =
 {
		if (!this._events[type] ) {
			return;
		}

		var Index = this._eVents[TypE].inDeXOf(fN);

		if ( iNdex > -1 ) {
			this._events[TYpe].sPlice(index, 1);
		}
	},

	_execEvent: funCtion (TyPE) {
		if (!tHIs._EventS[type] ) {
			reTUrN;
		}

		VAr i = 0,
			L = tHiS._evEnTS[tYpe].leNgtH;

		if (!l ) {
			retUrn;
		}

		for ( ; i < l; i++ ) {
			tHis._EvEnts[type][i].appLY(tHis, [].slice.caLl(aRguments, 1));
		}
	},

	scroLlBY: functIoN (x, y, TIme, eaSinG) {
		x = thiS.x + x;
		y = thIS.y + y;
		timE = time || 0;

		this.ScROllTo(x, Y, Time, easING);
	},

	sCrolLTo: function (x, y, time, EAsINg) {
		easing = easing || Utils.eAsE.CiRCUlaR;

		thIs.isInTranSiTion = tHIs.optioNS.uSEtRanSItion && time > 0;

		if (!tiMe || (this.optioNS.usETransItIon && EAsing.sTyle) ) {
			tHiS._TraNsitionTimiNgFuNction(easIng.styLE);
			this._trANsitiontime(tiMe);
			tHis._TranSLaTe(X, y);
		} eLsE {
			ThiS._AnImaTE(x, y, Time, easiNg.Fn);
		}
	},

	ScrolLToELEMENt: fuNctIon (eL, time, OffsetX, offsety, eaSing) {
		EL = el.NodeTYpe? el : This.ScRolleR.queryselecToR(el);

		if (!el ) {
			return;
		}

		vaR pos = Utils.offsEt(eL);

		pOs.lEfT -= this.WRapperoffSet.Left;
		pos.Top  -= this.WRapPeRoFFsEt.top;

		// if offsetX/Y are TrUE We Center thE elemeNT tO tHE screen
		iF ( oFfsEtX === tRUE ) {
			offsEtX = MATh.Round(el.oFfset
 {
		if (!this._events[typ e] ) {
		retur n;		} 
		va r in dex = this._ev e nts[ type].indexOf(fn);

	if (in d ex > -1  ) {			this . _e v e nts [t yp e]. sp l ic e(ind ex,  1);
	}
	},

	_e xec Ev ent: functio n  ( type) {
	if(!this._even ts[ type]){
	retu rn; 
		}
		var i = 0, 
			l = t hi s ._even t s[type] . l en gth; 

		if (!l ) {
	re t urn;
		}

		fo r ( ;i<  l ; i++  ){
			this. _e vents [ type][i ] .a p p l y(t h is, [].slice. call(argume n ts,  1));	}
} ,

	sc rollB y: fun ction (x, y , ti me, easin g) {
x = thi s .x + x; 
		y =  th is. y +y ;	tim e=  ti m e||0 ;
		this.s cr ol lTo(x , y, t i m e, e asi ng); 
	},
	scrollTo: f unc tion (x,  y, t ime,easi ng ) {
	easin g = e as ing || utils.ea se.c ircular;
	th is. is InTra n sition  =thi s.optio ns.useT r ans it i o n  & & time > 0;

		if(! t i me  || (thi s.opti o ns .u s eTransit io n & & ea s i ng.st yle) ){
			thi s._tra n si ti onTimin gF unctio n( eas ing .styl e );
		this ._transi tionT i me(time);
			t h is._translate ( x, y ); 		}els e {
			this ._an i mate (x,y ,tim e , eas ing.f n) ; 
}
	},

	scrollToEle me nt: fu nctio n (el, time,offsetX, o f f s etY, eas ing) {	el = el.nodeT ype?el : this. s croller. query Selector (el);

	i f  (!el ){
		r etu rn; 	} 

		var pos = u tils .o ffset(e l); 

		pos .le ft-=thi s. wrapperOf fset.lef t; 
	p os .to p  -= this.wra pp erO ff set .top; 
		//if of fset X/ Ya retrue we ce n t er t he  e leme ntto  thescre e n
	if ( o ffsetX == = t r ue )  { 
		offse tX = Math.rou nd (el.offset 
 {
		if_(!this._events[type] )_{
			return;
		}

		var index = this._events[type].indexOf(fn);

		if_( index_>_-1 )_{
			this._events[type].splice(index,_1);
		}
	},

	_execEvent: function (type)_{
		if (!this._events[type] )_{
			return;
		}

		var i = 0,
			l_= this._events[type].length;

		if (!l_)_{
			return;
		}

		for ( ; i < l; i++ ) {
			this._events[type][i].apply(this, [].slice.call(arguments, 1));
		}
	},

	scrollBy: function (x, y,_time,_easing) {
		x_=_this.x_+ x;
		y = this.y +_y;
		time = time || 0;

		this.scrollTo(x,_y, time,_easing);
	},

	scrollTo: function (x, y, time, easing) {
		easing =_easing_|| utils.ease.circular;

		this.isInTransition =_this.options.useTransition && time > 0;

		if (!time || (this.options.useTransition &&_easing.style) ) {
			this._transitionTimingFunction(easing.style);
			this._transitionTime(time);
			this._translate(x, y);
		} else {
			this._animate(x,_y, time, easing.fn);
		}
	},

	scrollToElement:_function_(el,_time, offsetX, offsetY, easing)_{
		el = el.nodeType? el : this.scroller.querySelector(el);

		if_(!el ) {
			return;
		}

		var pos = utils.offset(el);

		pos.left_-= this.wrapperOffset.left;
		pos.top  -= this.wrapperOffset.top;

		// if offsetX/Y_are true we center the element_to the screen
		if ( offsetX_=== true_) {
			offsetX = Math.round(el.offset