/cody/learning-zone/website-templates/ideal-interior-design-free-bootstrap-website-template/js/jquery.cslider.js
(function( $, undefined ) {			/*	 * Slider object.	 */	$.Slider 				= function( options, element ) {			this.$el	= $( element );				this._init( options );			};		$.Slider.defaults 		= {		current		: 0, 	// index of current slide		bgincrement	: 50,	// increment the bg position (parallax effect) when sliding		autoplay	: false,// slideshow on / off		interval	: 4000  // time between transitions    };		$.Slider.prototype 	= {		_init 				: function( options ) {						this.options 		= $.extend( true, {}, $.Slider.defaults, options );						this.$slides		= this.$el.children('div.da-slide');			this.slidesCount	= this.$slides.length;						this.current		= this.options.current;						if( this.current < 0 || this.current >= this.slidesCount ) {							this.current	= 0;						}						this.$slides.eq( this.current ).addClass( 'da-slide-current' );						var $navigation		= $( '<nav class="da-dots"/>' );			for( var i = 0; i < this.slidesCount; ++i ) {							$navigation.append( '<span/>' );						}			$navigation.appendTo( this.$el );						this.$pages			= this.$el.find('nav.da-dots > span');			this.$navNext		= this.$el.find('span.da-arrows-next');			this.$navPrev		= this.$el.find('span.da-arrows-prev');						this.isAnimating	= false;						this.bgpositer		= 0;						this.cssAnimations	= Modernizr.cssanimations;			this.cssTransitions	= Modernizr.csstransitions;						if( !this.cssAnimations || !this.cssAnimations ) {								this.$el.addClass( 'da-slider-fb' );						}						this._updatePage();						// load the events			this._loadEvents();						// slideshow			if( this.options.autoplay ) {							this._startSlideshow();						}					},		_navigate			: function( page, dir ) {						var $current	= this.$slides.eq( this.current ), $next, _self = this;						if( this.current === page || this.isAnimating ) return false;						this.isAnimating	= true;						// check dir			var classTo, classFrom, d;						if( !dir ) {							( page > this.current ) ? d = 'next' : d = 'prev';						}			else {							d = dir;						}							if( this.cssAnimations && this.cssAnimations ) {								if( d === 'next' ) {									classTo		= 'da-slide-toleft';					classFrom	= 'da-slide-fromright';					++this.bgpositer;								}				else {									classTo		= 'da-slide-toright';					classFrom	= 'da-slide-fromleft';					--this.bgpositer;								}								this.$el.css( 'background-position' , this.bgpositer * this.options.bgincrement + '% 0%' );						}						this.current	= page;						$next			= this.$slides.eq( this.current );						if( this.cssAnimations && this.cssAnimations ) {							var rmClasses	= 'da-slide-toleft da-slide-toright da-slide-fromleft da-slide-fromright';				$current.removeClass( rmClasses );				$next.removeClass( rmClasses );								$current.addClass( classTo );				$next.addClass( classFrom );								$current.removeClass( 'da-slide-current' );				$next.addClass( 'da-slide-current' );							}						// fallback			if( !this.cssAnimations || !this.cssAnimations ) {								$next.css( 'left', ( d === 'next' ) ? '100%' : '-100%' ).stop().animate( {					left : '0%'				}, 1000, function() { 					_self.isAnimating = false; 				});								$current.stop().animate( {					left : ( d === 'next' ) ? '-100%' : '100%'				}, 1000, function() { 					$current.removeClass( 'da-slide-current' ); 				});							}						this._updatePage();					},		_updatePage			: function() {					this.$pages.removeClass( 'da-dots-current' );			this.$pages.eq( this.current ).addClass( 'da-dots-current' );				},		_startSlideshow		: function() {					var _self	= this;						this.slideshow	= setTimeout( function() {								var page = ( _self.current < _self.slidesCount - 1 ) ? page = _self.current + 1 : page = 0;				_self._navigate( page, 'next' );								if( _self.options.autoplay ) {									_self._startSlideshow();								}						}, this.options.interval );				},		page				: function( idx ) {						if( idx >= this.slidesCount || idx < 0 ) {							return false;						}						if( this.options.autoplay ) {							clearTimeout( this.slideshow );				this.options.autoplay	= false;						}						this._navigate( idx );					},		_loadEvents			: function() {						var _self = this;						this.$pages.on( 'click.cslider', function( event ) {								_self.page( $(this).index() );				return false;							});						this.$navNext.on( 'click.cslider', function( event ) {								if( _self.options.autoplay ) {									clearTimeout( _self.slideshow );					_self.options.autoplay	= false;								}								var page = ( _self.current < _self.slidesCount - 1 ) ? page = _self.current + 1 : page = 0;				_self._navigate( page, 'next' );				return false;							});						this.$navPrev.on( 'click.cslider', function( event ) {								if( _self.options.autoplay ) {									clearTimeout( _self.slideshow );					_self.options.autoplay	= false;								}								var page = ( _self.current > 0 ) ? page = _self.current - 1 : page = _self.slidesCount - 1;				_self._navigate( page, 'prev' );				return false;							});						if( this.cssTransitions ) {							if( !this.options.bgincrement ) {										this.$el.on( 'webkitAnimationEnd.cslider animationend.cslider OAnimationEnd.cslider', function( event ) {												if( event.originalEvent.animationName === 'toRightAnim4' || event.originalEvent.animationName === 'toLeftAnim4' ) {														_self.isAnimating	= false;												}												});									}				else {									this.$el.on( 'webkitTransitionEnd.cslider transitionend.cslider OTransitionEnd.cslider', function( event ) {											if( event.target.id === _self.$el.attr( 'id' ) )							_self.isAnimating	= false;											});								}						}					}	};		var logError 			= function( message ) {		if ( this.console ) {			console.error( message );		}	};		$.fn.cslider			= function( options ) {			if ( typeof options === 'string' ) {						var args = Array.prototype.slice.call( arguments, 1 );						this.each(function() {							var instance = $.data( this, 'cslider' );								if ( !instance ) {					logError( "cannot call methods on cslider prior to initialization; " +					"attempted to call method '" + options + "'" );					return;				}								if ( !$.isFunction( instance[options] ) || options.charAt(0) === "_" ) {					logError( "no such method '" + options + "' for cslider instance" );					return;				}								instance[ options ].apply( instance, args );						});				} 		else {					this.each(function() {							var instance = $.data( this, 'cslider' );				if ( !instance ) {					$.data( this, 'cslider', new $.Slider( options, this ) );				}			});				}				return this;			};	})( jQuery );