Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // JavaScript Document
- /*! Copyright (c) 2009 Brandon Aaron (http://brandonaaron.net)
- * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
- * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
- * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
- * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
- *
- * Version: 3.0.2
- *
- * Requires: 1.2.2+
- */
- (function($) {
- var types = ['DOMMouseScroll', 'mousewheel'];
- $.event.special.mousewheel = {
- setup: function() {
- if ( this.addEventListener )
- for ( var i=types.length; i; )
- this.addEventListener( types[--i], handler, false );
- else
- this.onmousewheel = handler;
- },
- teardown: function() {
- if ( this.removeEventListener )
- for ( var i=types.length; i; )
- this.removeEventListener( types[--i], handler, false );
- else
- this.onmousewheel = null;
- }
- };
- $.fn.extend({
- mousewheel: function(fn) {
- return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
- },
- unmousewheel: function(fn) {
- return this.unbind("mousewheel", fn);
- }
- });
- function handler(event) {
- var args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true;
- event = $.event.fix(event || window.event);
- event.type = "mousewheel";
- if ( event.wheelDelta ) delta = event.wheelDelta/120;
- if ( event.detail ) delta = -event.detail/3;
- // Add events and delta to the front of the arguments
- args.unshift(event, delta);
- return $.event.handle.apply(this, args);
- }
- })(jQuery);
- /**
- * @version $Id: $Revision
- * @package jquery
- * @subpackage lofslidernews
- * @copyright Copyright (C) JAN 2010 LandOfCoder.com <@emai:landofcoder@gmail.com>. All rights reserved.
- * @website http://landofcoder.com
- * @license This plugin is dual-licensed under the GNU General Public License and the MIT License
- */
- // JavaScript Document
- (function($) {
- $.fn.lofJSidernews = function( settings ) {
- return this.each(function() {
- // get instance of the lofSiderNew.
- new $.lofSidernews( this, settings );
- });
- }
- $.lofSidernews = function( obj, settings ){
- this.settings = {
- direction : '',
- mainItemSelector : 'li',
- navInnerSelector : 'ul',
- navSelector : 'li' ,
- navigatorEvent : 'click',
- wapperSelector: '.lof-main-wapper',
- interval : 4000,
- auto : true, // whether to automatic play the slideshow
- maxItemDisplay : 3,
- startItem : 0,
- navPosition : 'vertical',
- navigatorHeight : 100,
- navigatorWidth : 310,
- duration : 600,
- navItemsSelector : '.lof-navigator li',
- navOuterSelector : '.lof-navigator-outer' ,
- isPreloaded : true,
- easing : 'easeInOutQuad'
- }
- $.extend( this.settings, settings ||{} );
- this.nextNo = null;
- this.previousNo = null;
- this.maxWidth = this.settings.mainWidth || 600;
- this.wrapper = $( obj ).find( this.settings.wapperSelector );
- this.slides = this.wrapper.find( this.settings.mainItemSelector );
- if( !this.wrapper.length || !this.slides.length ) return ;
- // set width of wapper
- if( this.settings.maxItemDisplay > this.slides.length ){
- this.settings.maxItemDisplay = this.slides.length;
- }
- this.currentNo = isNaN(this.settings.startItem)||this.settings.startItem > this.slides.length?0:this.settings.startItem;
- this.navigatorOuter = $( obj ).find( this.settings.navOuterSelector );
- this.navigatorItems = $( obj ).find( this.settings.navItemsSelector ) ;
- this.navigatorInner = this.navigatorOuter.find( this.settings.navInnerSelector );
- if( this.settings.navPosition == 'horizontal' ){
- this.navigatorInner.width( this.slides.length * this.settings.navigatorWidth );
- this.navigatorOuter.width( this.settings.maxItemDisplay * this.settings.navigatorWidth );
- this.navigatorOuter.height( this.settings.navigatorHeight );
- } else {
- this.navigatorInner.height( this.slides.length * this.settings.navigatorHeight );
- this.navigatorOuter.height( this.settings.maxItemDisplay * this.settings.navigatorHeight );
- this.navigatorOuter.width( this.settings.navigatorWidth );
- }
- this.navigratorStep = this.__getPositionMode( this.settings.navPosition );
- this.directionMode = this.__getDirectionMode();
- if( this.settings.direction == 'opacity') {
- var text = '.lof-main-item-desc';
- this.wrapper.addClass( 'lof-opacity' );
- $(this.slides).css({'opacity':0, 'display':'none'}).eq(this.currentNo).css({'opacity':1, 'display':'block'});
- $(this.wrapper).find(text).slideUp().eq(this.currentNo).slideDown();
- } else {
- var text = '.lof-main-item-desc';
- this.wrapper.css({'left':'-'+this.currentNo*this.maxSize+'px', 'width':( this.maxWidth ) * this.slides.length } );
- $(this.wrapper).find(text).show();
- }
- if( this.settings.isPreloaded ) {
- this.preLoadImage( this.onComplete );
- } else {
- this.onComplete();
- }
- }
- $.lofSidernews.fn = $.lofSidernews.prototype;
- $.lofSidernews.fn.extend = $.lofSidernews.extend = $.extend;
- $.lofSidernews.fn.extend({
- startUp:function( obj, wrapper ) {
- this.navigatorItems.each( function(index, item ){
- $(item).click( function(){
- obj.jumping( index, true );
- obj.setNavActive( index, item );
- } );
- $(item).css( {'height': obj.settings.navigatorHeight, 'width': obj.settings.navigatorWidth} );
- })
- this.navigatorItems.find('img').hover(function(){ $(this).stop().animate({'opacity':0.7},500,'easeInOutQuad') },
- function(){ $(this).animate({'opacity':1},500,'easeInOutSine') } );
- this.registerWheelHandler( this.navigatorOuter, this );
- this.setNavActive(this.currentNo );
- if( this.settings.buttons && typeof (this.settings.buttons) == "object" ){
- this.registerButtonsControl( 'click', this.settings.buttons, this );
- }
- if( this.settings.auto )
- this.play( this.settings.interval,'next', true );
- return this;
- },
- onComplete:function(){
- setTimeout( function(){ $('.preload').fadeOut( 900 ); }, 400 ); this.startUp( this );
- },
- preLoadImage:function( callback ){
- var self = this;
- var images = this.wrapper.find('img');
- var count = 0;
- images.one('load', function() {
- count++;
- if(count == images.length) {
- self.onComplete();
- }
- }).each(function(){
- if(this.complete || (jQuery.browser.msie && parseInt(jQuery.browser.version) >= 6))
- $(this).trigger('load');
- });
- },
- navivationAnimate:function( currentIndex ) {
- if (currentIndex <= this.settings.startItem
- || currentIndex - this.settings.startItem >= this.settings.maxItemDisplay-1) {
- this.settings.startItem = currentIndex - this.settings.maxItemDisplay+2;
- if (this.settings.startItem < 0) this.settings.startItem = 0;
- if (this.settings.startItem >this.slides.length-this.settings.maxItemDisplay) {
- this.settings.startItem = this.slides.length-this.settings.maxItemDisplay;
- }
- }
- this.navigatorInner.stop().animate( eval('({'+this.navigratorStep[0]+':-'+this.settings.startItem*this.navigratorStep[1]+'})'),
- {duration:500, easing:'easeInOutQuad'} );
- },
- setNavActive:function( index, item ){
- if( (this.navigatorItems) ){
- this.navigatorItems.removeClass( 'active' );
- $(this.navigatorItems.get(index)).addClass( 'active' );
- this.navivationAnimate( this.currentNo );
- }
- },
- __getPositionMode:function( position ){
- if( position == 'horizontal' ){
- return ['left', this.settings.navigatorWidth];
- }
- return ['top', this.settings.navigatorHeight];
- },
- __getDirectionMode:function(){
- switch( this.settings.direction ){
- case 'opacity': this.maxSize=0; return ['opacity','opacity'];
- default: this.maxSize=this.maxWidth; return ['left','width'];
- }
- },
- registerWheelHandler:function( element, obj ){
- element.bind('mousewheel', function(event, delta ) {
- var dir = delta > 0 ? 'Up' : 'Down',
- vel = Math.abs(delta);
- if( delta > 0 ){
- obj.previous( true );
- } else {
- obj.next( true );
- }
- return false;
- });
- },
- registerButtonsControl:function( eventHandler, objects, self ){
- for( var action in objects ){
- switch (action.toString() ){
- case 'next':
- objects[action].click( function() { self.next( true) } );
- break;
- case 'previous':
- objects[action].click( function() { self.previous( true) } );
- break;
- }
- }
- return this;
- },
- onProcessing:function( manual, start, end ){
- this.previousNo = this.currentNo + (this.currentNo>0 ? -1 : this.slides.length-1);
- this.nextNo = this.currentNo + (this.currentNo < this.slides.length-1 ? 1 : 1- this.slides.length);
- return this;
- },
- finishFx:function( manual ){
- if( manual ) this.stop();
- if( manual && this.settings.auto ){
- this.play( this.settings.interval,'next', true );
- }
- this.setNavActive( this.currentNo );
- },
- getObjectDirection:function( start, end ){
- return eval("({'"+this.directionMode[0]+"':-"+(this.currentNo*start)+"})");
- },
- fxStart:function( index, obj, currentObj ){
- if( this.settings.direction == 'opacity' ) {
- var text = '.lof-main-item-desc';
- $(text).slideUp(200);
- $(this.slides).stop().animate({opacity:0}, {
- duration: this.settings.duration,
- easing:this.settings.easing,
- complete:function(){
- $(this).css({'display':'none'});
- }
- });
- $(this.slides).eq(index).stop().animate( {opacity:1}, {
- duration: this.settings.duration,
- easing:this.settings.easing,
- step:function(){
- $(this).css({'display':'block'})
- },
- complete:function(){
- $(this).find(text).slideDown(200);
- }
- });
- }else {
- var text = '.lof-main-item-desc';
- $(this.wrapper).find(text).slideUp(200);
- this.wrapper.stop().animate( obj, {
- duration: this.settings.duration,
- easing:this.settings.easing,
- complete:function() {
- $(this).find(text).slideDown(200); } });
- }
- return this;
- },
- jumping:function( no, manual ){
- this.stop();
- if( this.currentNo == no ) return;
- var obj = eval("({'"+this.directionMode[0]+"':-"+(this.maxSize*no)+"})");
- this.onProcessing( null, manual, 0, this.maxSize )
- .fxStart( no, obj, this )
- .finishFx( manual );
- this.currentNo = no;
- },
- next:function( manual , item){
- this.currentNo += (this.currentNo < this.slides.length-1) ? 1 : (1 - this.slides.length);
- this.onProcessing( item, manual, 0, this.maxSize )
- .fxStart( this.currentNo, this.getObjectDirection(this.maxSize ), this )
- .finishFx( manual );
- },
- previous:function( manual, item ){
- this.currentNo += this.currentNo > 0 ? -1 : this.slides.length - 1;
- this.onProcessing( item, manual )
- .fxStart( this.currentNo, this.getObjectDirection(this.maxSize ), this )
- .finishFx( manual );
- },
- play:function( delay, direction, wait ){
- this.stop();
- if(!wait){ this[direction](false); }
- var self = this;
- this.isRun = setTimeout(function() { self[direction](true); }, delay);
- },
- stop:function(){
- if (this.isRun == null) return;
- clearTimeout(this.isRun);
- this.isRun = null;
- }
- })
- })(jQuery)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement