function Slider__(wrapperId,factorArg){
	this.wrapperId = wrapperId;
	var factor = 1;
	var maxfactor = 5;
	if(factorArg!=null) maxfactor = factorArg;	
	var $wrapper = $('.'+wrapperId);
	this.$wrapper = $wrapper;
	$wrapper.css({overflow : 'hidden'});
	this.$items =  $wrapper.children('div.ca-item');
	var itemW = $wrapper.children('div.ca-item:first').width();
	this.isAnimating = false;
	var totalItems	= this.$items.length;
	var position = 1;
	var idxClicked = 0;
//	this.$navPrev		= $wrapper.find('span.ca-nav-prev');
//	this.$navNext		= $wrapper.find('span.ca-nav-next');

	this.init = function() {
		this.$items.each(function(i) {
			$(this).css({
				position	: 'absolute',
				left		: i * itemW + 'px'
			});
			$(this).children().last().children().css({'width' : ((maxfactor-1)*100) + 'px'});			
		});
		$wrapper.css({'width' : (maxfactor*110) + 'px'});
		$wrapper.parent().css({'width' : ((maxfactor)*110) + 'px'});
		$('.ca-nav-prev-alt').click(function() {
			slider__.shiftLeft();
		});
		$('.ca-nav-next-alt').click(function() {
			slider__.shiftRight();
		});
		if(totalItems==0) {
			$wrapper.parent().css({'display' : 'none'});
		}
		if(totalItems<maxfactor) {
			$wrapper.parent().children('.ca-nav').css({'display' : 'none'});
		}
	//	$wrapper.find('span.ca-more').click(function(){
//			slider__.expand($(this));	
//		});
		
		

	}
	
	this.shiftLeft = function() {
		if(slider__.isAnimating)return;
		var $last = slider__.$wrapper.children().last();
		var $first = slider__.$wrapper.children().eq(0);
		slider__.isAnimating = true;
		
		$first.clone(true).css('left',(totalItems)*itemW*factor+'px').appendTo($wrapper);
		//		slider__.$items = slider__.$wrapper.children('div.ca-item');
		
		
		slider__.$wrapper.children('div.ca-item').each(function(i) {
			var $item = $(this);
				$item.animate({'left' : '-=' + (itemW * factor) + 'px'},200,'easeOutExpo',function(){
					slider__.isAnimating = false;
				});
		});
		setTimeout(function(){
			slider__.$wrapper.children('div.ca-item').first().remove();		
		},200);

//		setTimeout(function(){
//				$first.clone(true).css('left',(totalItems-1)*itemW*factor+'px').appendTo($wrapper);
		//		slider__.$items = slider__.$wrapper.children('div.ca-item');
//				slider__.$wrapper.children('div.ca-item').first().remove();
//				slider__.isAnimating = false;
//		}, 500);
	};
	
	this.shiftRight = function() {
		if(slider__.isAnimating)return;
		slider__.isAnimating = true;
		var $first = slider__.$wrapper.children().eq(0);
		var $last = slider__.$wrapper.children().last();

		$last.clone(true).css('left',-itemW*factor+'px').insertBefore($first);
		slider__.$items = slider__.$wrapper.children('div.ca-item');
			slider__.$wrapper.children('div.ca-item').each(function(i) {
				var $item = $(this);
					$item.animate({'left' : '+=' + (itemW * factor ) + 'px'},300,'easeOutExpo',function(){
						slider__.isAnimating = false;					
					});
			});		
			slider__.$wrapper.children('div.ca-item').last().remove();

	};
	
	this.getWinPos = function(val) {
		switch( val ) {
		case 0 			: return 1; break;
		case itemW 		: return 2; break;
		case itemW * 2 	: return 3; break;
		case itemW * 3 	: return 4; break;
		case itemW * 4 	: return 5; break;
		case itemW * 5 	: return 6; break;
		
	}
		
	};
	
	this.contract = function($itemclicked) {
		factor = 1;
		var position = 1;
	//	if(slider__.isAnimating ) return false;
		slider__.isAnimating	= true;
		var $item	= $itemclicked.closest('div.ca-item');
		var openedIdx	= $item.index();
		$item.find('div.ca-content-wrapper').stop().animate({
			width	: '0px'
		}, 300,'easeOutExpo')
		.end()
		.stop()
		.animate({
			left	: itemW * ( position - 1 ) + 'px'
		}, 300,'easeOutExpo', function() {
			slider__.isAnimating	= false;
		});
		
		// show more link
		$wrapper.find('div.ca-item').each(function(i) {
			var $item_	= $(this),
				idx		= $item_.index();
			
			if( idx !== openedIdx ) {
				$item_.find('div.ca-content-wrapper').css({
					width	: '0px'
				})
				.end()
				.css( 'left', ( ( position - 1 ) - ( openedIdx - idx ) ) * itemW + 'px' )
				.show();
				
				// show more link
			}
		});
		
	}
	
	this.expand = function($itemclicked) {
		if( slider__.isAnimating ) return false;
		slider__.isAnimating = true;
		var $item	= $itemclicked.closest('div.ca-item');
		slider__.$items =  $wrapper.children('div.ca-item');
		idxClicked	= $item.index();
		var left = $item.position().left;
		position	= (left/itemW)+1;
		$wrapper.find('div.ca-item').not( $item ).hide();
		factor = maxfactor;		
		slider__.isAnimating	= true;
		$item.find('div.ca-content-wrapper').css( 'left', itemW + 'px' ).stop().animate({
			width	: itemW * (factor-1) + 'px',
			left	: itemW + 'px'
		}, 300,'easeOutExpo')
		.end()
		.stop()
		.animate({
			left	: '0px'
		}, 300,'easeOutExpo', function() {
			var openedIdx	= $item.index();
			
			
			$wrapper.find('div.ca-item').each(function(i) {
				var $item_	= $(this),
					idx		= $item_.index();
				
				if( idx !== idxClicked ) {
					if(idx < idxClicked) {
						$item_.css( 'left', ((totalItems + idx -idxClicked)) * ( itemW * factor ) + 'px' ).show().find('div.ca-content-wrapper').css({
							left	: itemW + 'px',
							width	: itemW * (factor-1) + 'px'
						});
						$item_.clone(true).appendTo($wrapper);
					}else {
						$item_.css( 'left', - ( idxClicked - idx ) * ( itemW * factor ) + 'px' ).show().find('div.ca-content-wrapper').css({
							left	: itemW + 'px',
							width	: itemW * (factor-1) + 'px'
						});
					}
					
					// hide more link
				}

			});

		});
		setTimeout(function(){
			slider__.isAnimating = false;
			for(var i = 0;i<position-1;i++) {
				var $node = $wrapper.children().eq(0);
				$node.remove();
			}
		},400);
	};
	
	
}
