// 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	    	: 'opacity',			mainItemSelector    : 'li',			navInnerSelector	: 'ul',			navSelector  		: 'li' ,			navigatorEvent		: 'click',			wapperSelector: 	'.lof-main-wapper',			interval	  	 	: 10000,			auto			    : true, // whether to automatic play the slideshow			maxItemDisplay	 	: 4,			startItem			: 0,			navPosition			: 'vertical', 			navigatorHeight		: 105,			navigatorWidth		: 200,			duration			: 2000,			navItemsSelector    : '.lof-navigator li',			navOuterSelector    : '.lof-navigator-outer' ,			isPreloaded			: true,			easing				: 'easeInOutSine'		}			$.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') {			this.wrapper.addClass( 'lof-opacity' );			$(this.slides).css('opacity',0).eq(this.currentNo).css('opacity',1);		} else { 			this.wrapper.css({'left':'-'+this.currentNo*this.maxSize+'px', 'width':( this.maxWidth ) * this.slides.length } );		}				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 ) {			seft = this;			this.navigatorItems.each( function(index, item ){				$(item).click( function(){					seft.jumping( index, true );					seft.setNavActive( index, item );									} );				$(item).css( {'height': seft.settings.navigatorHeight, 'width':  seft.settings.navigatorWidth} );			})			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( );		},		preLoadImage:function(  callback ){			var self = this;			var images = this.wrapper.find( 'img' );				var count = 0;			images.each( function(index,image){ 				if( !image.complete ){				  					image.onload =function(){						count++;						if( count >= images.length ){							self.onComplete();						}					}					image.onerror =function(){ 						count++;						if( count >= images.length ){							self.onComplete();						}						}				}else {					count++;					if( count >= images.length ){						self.onComplete();					}					}			} );		},		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' ) { 					$(this.slides).stop().animate({opacity:0}, {duration: this.settings.duration, easing:this.settings.easing} );					$(this.slides).eq(index).stop().animate( {opacity:1}, {duration: this.settings.duration, easing:this.settings.easing} );				}else {					this.wrapper.stop().animate( obj, {duration: this.settings.duration, easing:this.settings.easing} );				}			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)
