(function($) {
	$.fn.cassisFlowBox = function( options) {
		this.each(function() {
			if ($('.flowBoxInner div').length <= 1) {
				return( false);
			}
			var opts = $.extend( {}, $.fn.cassisFlowBox.defaults, options);
			$.data( this, 'options', opts);
			// update element styles
			setNavi( this);
			$(this).mouseover( stop).mouseout( start);
//			$this.mouseout();
		});
		setInterval( function() {
			$('.flowBox').each( function() {
				var opt = $.data( this, 'options');
				$(this).cassisFlowBoxChange( opt.current+1);
			})
		}, $.fn.cassisFlowBox.defaults.interval);
		return( this);
	}
	
	function start() {
		$.data( this, 'options').run = true;
	}
	
	function stop() {
		$.data( this, 'options').run = false;
	}
	
	function setNavi( o) {
		var opt = $.data( o, 'options');
		var navi = '<ul class="flowBoxNavi">';
		navi += '<li><a href="#" class="prev">&lt;</a></li>';
		for (var i=0; i<$('.flowBoxInner div', o).length; i++) {
			navi += '<li><a href="#" title="'+(i+1)+'">'+(i+1)+'</a></li>';
		}
		navi += '<li><a href="#" class="next">&gt;</a></li>';
		navi += '</ul>';
		$(o).append( navi);
		$('.flowBoxNavi a[title]', o).click( function() { $(this.parentNode.parentNode.parentNode).cassisFlowBoxChange( parseInt(this.title)-1, true);return( false);});
		$('.flowBoxNavi a.prev', o).click( function() { $(this.parentNode.parentNode.parentNode).cassisFlowBoxPrev();return( false);});
		$('.flowBoxNavi a.next', o).click( function() { $(this.parentNode.parentNode.parentNode).cassisFlowBoxNext();return( false);});
		$('.flowBoxNavi li:eq(1)', o).addClass( 'active');
	}
	
	$.fn.cassisFlowBoxPrev = function() {
		var b = $(this).get(0);
		var opt = $.data( b, 'options');
		$(this).cassisFlowBoxChange( opt.current-1, true);
	}
	$.fn.cassisFlowBoxNext = function() {
		var b = $(this).get(0);
		var opt = $.data( b, 'options');
		$(this).cassisFlowBoxChange( opt.current+1, true);
	}
	$.fn.cassisFlowBoxChange = function( show, force) {
		var m = 0;
		var b = $(this).get(0);
		var opt = $.data( b, 'options');
		if (!opt.run && !force) {
			return( true);
		}
		var items = this.find( '.flowBoxInner div');
		if (show < 0) {
//			alert( show);
			show = items.length-1;
		}
		show = show % items.length;
		for (var i=0; i<show; i++) {
			m += items.width();
		}
		$('.flowBoxInner', b).animate( {marginLeft:(-1*m)+'px'}, 400);
		opt.current = show;
		$( '.flowBoxNavi li.active', b).removeClass( 'active');
		$( '.flowBoxNavi li:eq('+(opt.current+1)+')', b).addClass( 'active');
		return( false);
	}
	
	$.fn.cassisFlowBox.defaults = {
    	current: 0,
    	run:true,
    	interval:5000
  };
})(jQuery);


$(document).ready( function() { $('.flowBox').cassisFlowBox()});
