/* * jQuery fadingBox - v1.0 * http://tamerayd.in/jquery-fadingbox * * Written by TAMER AYDIN - http://tamerayd.in * * This work is licensed under the Creative Commons Attribution 3.0 Unported License. * To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ * or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. */(function( $ ){    var count = 0;    var settings = new Array();	var methods = {		init : function( options ) {            return this.each(function() {                count++;                var $this = $(this);                if ($this.attr('id')==='') {                    $this.attr('id','fadingBox'+count);                }                var fadingBoxSettings = {                    autofade : false,                    autofadetime : 3000,                    navigation : true,                    navigationholder : '',                    fadespeed : "fast",                    trigger : ''                };                if (options) {                    $.extend(fadingBoxSettings,options);                }                var $settings = settings[$this.attr('id')] = fadingBoxSettings;                if (!isNaN($settings.fadespeed) && $settings.fadespeed > $settings.autofadetime/2) {                    $settings.fadespeed = $settings.autofadetime/2;                }                                $this.css('overflow','hidden');                //$this.children('li').css({'width':$this.width(),'height':$this.height(),'overflow':'hidden'});                $this.children('li:first').addClass('active');                if ($settings.navigation===true) {                    var navLinks = '<div class="control prevBtn"><a class="fadingBoxNavigation prev" rel="'+$this.attr('id')+'" href="javascript:;">Previous</a></div><div class="control nextBtn"><a class="fadingBoxNavigation next" rel="'+$this.attr('id')+'" href="javascript:;">Next</a></div>';                    if ($settings.navigationholder==='')                        $this.parent('div').after(navLinks);                    else                        $($settings.navigationholder).append(navLinks);                    $('a.fadingBoxNavigation.prev[rel='+$this.attr('id')+']').bind('click.fadingbox', function() {$this.fadingbox('prev');});                    $('a.fadingBoxNavigation.next[rel='+$this.attr('id')+']').bind('click.fadingbox', function() {$this.fadingbox('next');});                }                if ($settings.autofade===true) {                    $this.addClass('autoFade');                    $settings.trigger = setInterval(function() {$this.fadingbox('next');}, $settings.autofadetime);                }            });		},        prev : function () {            return this.each(function() {                if (!$(this).hasClass('inAction'))                    methods.fade({'element':$(this),'direction':'prev'});            });        },        next : function () {            return this.each(function() {                if (!$(this).hasClass('inAction'))                    methods.fade({'element':$(this),'direction':'next'});            });        },        fade : function ( properties ) {            var fElement = $(properties.element);            var fItems = fElement.children('li');            var fActiveItem = fElement.children('li.active');            var fItemImage;                        if (fElement.hasClass('autoFade')) {                clearInterval(settings[fElement.attr('id')].trigger);                settings[fElement.attr('id')].trigger = setInterval(function() {fElement.fadingbox('next');}, settings[fElement.attr('id')].autofadetime);            }            fElement.addClass('inAction');            fItems.removeClass('active');            switch (properties.direction) {                case 'prev':                    if (fActiveItem.index()===0)                        fElement.children('li:eq('+(fItems.size()-1)+')').addClass('active');                    else                        fActiveItem.prev().addClass('active');                    fItemImage = fElement.children('li.active').children('img');                    break;                default:                    if (fActiveItem.index()===fItems.size()-1)                        fElement.children('li:first').addClass('active');                    else                        fActiveItem.next().addClass('active');                    fItemImage = fElement.children('li.active').children('img');                    break;            }            if (fItemImage.length!==0)                    fElement.css('background-image','url('+fItemImage.attr('src')+')');            fItems.fadeOut(settings[fElement.attr('id')].fadespeed,function() {                fElement.children('li:first').css('margin-top','-'+(fElement.children('li.active').index())*fElement.height()+'px');                fItems.fadeIn(settings[fElement.attr('id')].fadespeed,function() {                    fElement.removeClass('inAction');                    fElement.css('background-image','url('+fItemImage.attr('src')+')');                });            });                    }	};	$.fn.fadingbox = function( method ) {		if ( methods[method] ) {			return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));		} else if ( typeof method === 'object' || ! method ) {			return methods.init.apply( this, arguments );			} else {			$.error( 'Method ' +  method + ' does not exist on jquery.fadingbox!' );		}	};	})( jQuery );
