(function($){
	$.fn.ccviewer = function(options){
	
		var defaults = {
			imageHeight: 111,
			imageWidth: 140,
			numImages: 5,
			speed: 1000,
			leftClickImage: 'images/left.jpg',
			rightClickImage: 'images/right.jpg',
			pause: 5000,
			lightbox: false,
			lightboxClass: null,
			lightboxRel: 'facebox',
			width: 800,
			autoScroll: 'none',
			scrollNum: 'all',
			id: '1'
		};
		options= $.extend(defaults, options);
		
		this.each(function(){
			var $this=$(this);
			var hPos=0;
			//var padding=((options.width/options.numImages)-options.imageWidth)/2;
			var fWidth=options.imageWidth;
			
			var id=options.id;
			//var padding=$('ul.ccviewer li').css('padding-left');
			//console.log(padding);
			//var fWidth=options.imageWidth+padding*2;
			var max=($this.children().length*fWidth)-(options.numImages*fWidth);
			var numImages;
			if(isNumber(options.scrollNum)){
				numImages=options.scrollNum;
			}else if(options.scrollNum=='all'){
				numImages=options.numImages;
			}
			
			$this.wrap('<div id="ccviewer-wrap-'+id+'" class="ccviewer-wrap" />');
			
			$('#ccviewer-wrap-'+id).wrap('<div id="ccviewer-outer-'+id+'" class="ccviewer-wrap2" />');
			
			if(options.leftClickImage!='none'){
				$('#ccviewer-outer-'+id).prepend('<div class="ccviewer-left"><img src="'+options.leftClickImage+'" width="33" /></div>');
			}
			if(options.rightClickImage!='none'){
				$('#ccviewer-outer-'+id).append('<div class="ccviewer-right"><img src="'+options.rightClickImage+'" width="33" /></div>');
			}
			
			$('#ccviewer-outer-'+id+' .ccviewer-left, #ccviewer-outer-'+id+' .ccviewer-right').css({
					'padding-top': options.imageHeight/2+'px'
			});
			
			$('#ccviewer-outer-'+id+' .ccviewer-left').click(function(){
				slideLeftNow('#ccviewer-'+id);	
			});
			
			$('#ccviewer-outer-'+id+' .ccviewer-right').click(function(){
				slideRightNow('#ccviewer-'+id);
			});
			
			if(options.autoScroll=='right'){			
				slideRight('#ccviewer-'+id);
			}else if(options.autoScroll=='left'){
				slideLeft('#ccviewer-'+id);
			}
			
			if(options.lightbox==true){
				$this.children().children('img').wrap(function(){
					var link=$(this).attr('src');
					return '<a href="'+link+'" class="ccviewer-a" />';
				});
				if(options.lightboxClass!=null){
					$('#ccviewer-outer-'+id+' .ccviewer-a').addClass(options.lightboxClass);
				}
				if(options.lightboxRel!=null){
					$('#ccviewer-outer-'+id+' .ccviewer-a').attr('rel',options.lightboxRel);
				}
				$('#ccviewer-outer-'+id+' a[rel*=facebox]').facebox();
			}
			
			$this.children().css({
				//'padding': '0 '+padding+'px'
			});
			
			var navWidth=$('#ccviewer-outer-'+id+' .ccviewer-right').outerWidth()+$('#ccviewer-outer-'+id+' .ccviewer-left').outerWidth();
			
			$('#ccviewer-outer-'+id+' .ccviewer-wrap').css({
				'width': (options.width-navWidth)+'px'
			});
			
			$('#ccviewer-outer-'+id).css({
				'width': options.width+'px'
			});
			
			$('#ccviewer-outer-'+id+' .ccviewer-wrap span').css({
				'width': options.imageWidth+'px'
			});
			
			var colWidth=$('#ccviewer-'+id+' li:eq(0)').outerWidth();
			
						
			function slideRight(){
				setInterval(function(){
					$this.animate({
						'left': '-'+colWidth*(numImages)+'px'
					},options.speed, function(){
						for(var i=1;i<=numImages;i++){
							$this.children(':first-child').appendTo($this);
						}
							$this.css('left',0);
					});
				},options.pause);
			}
			
			function slideRightNow(){
				$('#ccviewer-outer-'+id+' .ccviewer-right').unbind('click');
				$this.animate({
					'left': '-'+colWidth*(numImages)+'px'
				},options.speed, function(){
					for(var i=1;i<=numImages;i++){
						$this.children(':first-child').appendTo($this);
					}
					$this.css('left',0);
					$('#ccviewer-outer-'+id+' .ccviewer-right').bind('click',function(){
						slideRightNow('#ccviewer-outer-'+id);
					});
				});
			}
			
			function slideLeft(){
				setInterval(function(){
					$this.css('left','-'+colWidth*(numImages)+'px');
					for(var i=1;i<=numImages;i++){
						$this.css('left',$this.css('left')-fWidth+'px').children(':last-child').prependTo($this);
					}
					$this.animate({
						'left': 0
					},options.speed, function(){
							$this.css('left',0);
					});
				},options.pause);
			}
			
			function slideLeftNow(){
				$('#ccviewer-outer-'+id+' .ccviewer-left').unbind('click');
				$this.css('left','-'+colWidth*(numImages)+'px');
				for(var i=1;i<=numImages;i++){
					$this.css('left',$this.css('left')-fWidth+'px').children(':last-child').prependTo($this);
				}
				$this.animate({
					'left': 0
				},options.speed, function(){
						$this.css('left',0);
						$('#ccviewer-outer-'+id+' .ccviewer-left').bind('click',function(){
							slideLeftNow('#ccviewer-outer-'+id);
						});
				});
				
			}
			
			function isNumber(o) {
				return typeof o === 'number' && isFinite(o);
			}
		});
	}
})(jQuery);

