(function( $ ){

  var methods = {
    init : function( options ) { 
		var settings = {
			delay								:	3000,
			current								:	0,
			fading								:	false,
			left									:	0,
			with_thumbs					:	false,
			delay_devider					:	2,
			delay_devider_override	:	false
		};
		return this.each(function() {        
			if ( options ) { 
				$(this).extend( settings, options );
			}
			
			settings.slide_width = $(this).find("ul.slides").find("li").width( );
			settings.totale = $(this).find("ul.slides").find("li").size();
			$(this).find("ul.slides").css ( {width: ( settings.slide_width * settings.totale ) } );
		/* Store data */
			$(this).data( 'settings', settings );
		

		/* initially hide the mask */
			$(this).find("div.mask").css( { display:"none" } );
			if ( true == settings.fading ) {
				$(this).find("div.mask").html ( $(this).find("ul.slides li").eq( settings.current ).html (  ) );
				$(this).find("div.mask").css( { display:"block" } );
			}
			
			$(this).followOffset().NMBanner( 'startLoop' );
			
		/* Now lets do the controls */
			
			$(this).find("div.slidepicker a").click(function() {
				var index = $(this).index();
				var settings = $(this).parent().parent().data( 'settings');
				settings.delay_devider_override = 10;
				if (  settings.delay_devider_overrid < 50 ) { settings.delay_devider_overrid = 50;  }
				 $(this).parent().parent().data( 'settings', settings);
				//$(this).parent().parent().find("ul.slides").stop( true, true );
				$(this).parent().parent().find("ul.slides");
				if ( true == settings.fading ) {
				// $(this).parent().parent().find("div.mask").stop( true, true ).delay(150).fadeIn ( 50, function() {
					$(this).parent().parent().find("div.mask").fadeIn ( 50, function() {
						$(this).parent().NMBanner( 'moveTo', index  );
					});
				} else {
					$(this).parent().parent().NMBanner( 'moveTo', index  );
				}
				return false;
			});
			var $this = $(this);
			$(window).blur(function() {
			//	$this.stopTime( 'NMBanner' );
			});
			$(window).focus(function() {
			//	$this.NMBanner( 'startLoop', true );
			});
			
		});
	},
    startLoop : function ( resume ) { 
		/* Starts/resets the timing loop */
		var settings = $(this).data( 'settings');
		if ( !resume ) {
			$(this).NMBanner( 'loopSlides' );
			$(this).everyTime(settings.delay, 'NMBanner', function() {
				$(this).NMBanner( 'loopSlides' );
			});
		} else {
			$(this).stopTime( 'NMBanner' ).NMBanner( 'loopSlides' );
			$(this).everyTime(settings.delay, 'NMBanner' , function() {
				$(this).NMBanner( 'loopSlides' );
			});
		}
	},
    loopSlides : function ( ) { 
		var settings = $(this).data( 'settings');
		if  ( settings.current >= settings.totale ) settings.current = 0;
		settings.left = settings.slide_width * settings.current;
		$(this).data( 'settings', settings ).NMBanner( 'changeMask' ) ;
	},
    changeMask : function (  ) { 
		var settings = $(this).data( 'settings');
		var devider = settings.delay_devider ;
		if ( settings.delay_devider_override  ) {
			devider = settings.delay_devider_override;
			settings.delay_devider_override = false;
		}
		
		if ( true == settings.fading ) {

			$(this).find("ul.slides").animate({left: '-'+settings.left}, 50, 'easeInOutExpo', function() {   
				$(this).parent().find("div.mask").fadeOut (  (settings.delay / devider ),  'easeInOutExpo', function() {   
					var  HTML = $(this).parent().find("ul.slides li").eq( ( settings.current - 1 )  ).html (  );
					$(this).html ( HTML ).css ( { display:"block" } );
				});
			});
		} else  {
			$(this).find("ul.slides").animate({left: '-'+settings.left}, (settings.delay / devider  ), 'easeInOutExpo', function() {   });
		}
		
		settings.current++;
		$(this).data( 'settings', settings ).NMBanner( 'selectThumbnail', settings.current  );
	},
	selectThumbnail : function ( index ) {  
		$(this).find("div.slidepicker a").removeClass ( 'current' ).eq( ( index - 1 ) ).addClass ( 'current' );
	},
	moveTo : function ( index  ) {  
		var settings = $(this).data( 'settings');
		settings.current = index;
		$(this).data( 'settings', settings).NMBanner( 'startLoop', 'restart' );
	}
  };

  
	$.fn.NMBanner = function( method ) {

		//Method calling logic
		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.tooltip' );
		}    

	};
	
})( jQuery );






(function( $ ){
  var methods = {
    init : function( options ) { 
		var this_settings = {
			delay									:	1000,
			min_width							:	1800,
			min_win_width						:	970
		};
		return this.each(function() {        
			if ( options ) { 
				$(this).extend( this_settings, options );
			}
			$(this).addClass ( "followOffset" );
			$(this).data ( 'followOffset_settings', this_settings );
			
			//$(this).everyTime(this_settings.delay, 'followOffset', function() {
			//	$(this).followOffset( 'centerBanner' );
			//});
			$(this).delay(1000).followOffset( 'centerBanner' );
			$(window).resize( function() {
				$(".followOffset").stopTime( 'followOffsetResize' , function() {
						$(this).oneTime( 500, 'followOffsetResize', function() {
							$(this).followOffset( 'centerBanner' );
						});
				});
				//$(".followOffset").delay(1500).followOffset( 'centerBanner' );
			});
			

		});
	}, 
	stopCenter : function (   ) {  
		return this.each(function() {    
			$(this).stopTime( 'followOffset'  );
		});
	},
	centerBanner : function (   ) {  
		return this.each(function() {       
			var settings = $(this).data ( 'followOffset_settings' );
			var bw = $(this).width();
			var bc = bw / 2;
			var ww = $(window).width();
			var dw = $(document).width();
			var pw =  $(this).parent().width();
			
			if ( pw > bw ) {
				bc = pw / 2;
			}
			if ( ww < settings.min_win_width ) {
				ww = settings.min_win_width;
			}
			var wc = ww / 2;
			var offset = Math.round( bc - wc );
			//alert ( bw + ' ' + pw  );
			if ( offset > 0 ) {
				offset = 0 - offset;
			} else if (  offset < 0 ) {
				offset = 0 - offset;
			} else if ( offset == 0  ) {
				//$(this).stopTime( 'followOffset'  );
				//return $(this);
			}
			$(this).stopTime ( 'followOffset' ).stop().animate( { left: +offset }, 500, 'swing', function() {   
				var visibility = $(this).css( 'display');
					//	alert ( visibility  );
					if ( 'none' == visibility ) {
						$(this).fadeIn(  750 );
					}
						$(this).everyTime(settings.delay, 'followOffset', function() {
							$(this).followOffset( 'centerBanner' );
						});
			});
			});
		}
		
		
  };
	$.fn.followOffset = function( method ) {
		//Method calling logic
		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.tooltip' );
		}    
	};
	
})( jQuery );

