/*
 * widgetCarousel.js
 *
 * A utility for generating the components of a widget carousel
 * Returns a UrlPlaylistManager that can be used to populate the carousel playlist and gain
 * access to playlist controls
 */
 
 function createCarouselPane(manager,width){
	var list = manager.playlist;
	var pane = new Pane(list.id);
	pane.addMouseOver(function(){pane.engage()});
	pane.addMouseOut(function(){pane.disengage()});
	pane.addEngage(function(){list.pause()});
	pane.addDisengage(function(){list.resume()});
	manager.pane=pane;
	
	var leftAnim = new Animation();

	//old moving left
	var leftOldSlide = new Sequence();
	leftOldSlide.start = 0;
	leftOldSlide.end = -width;
	leftOldSlide.duration = 1000;
	leftOldSlide.min=0.5;
	leftOldSlide.ease = Easing['easeBothStrong'];
	leftOldSlide.callback = function(){
		if(pane.oldContent){
			pane.oldContent.style.left = "-"+width+"px";
		}
	};
	leftOldSlide.handler = function(val){
		val = Math.round(val);
		if(pane.oldContent){
			pane.oldContent.style.left = val+"px";
		}
		return val;
	};
	leftAnim.addSequence(0,leftOldSlide);

	//new moving left
	var leftNewSlide = new Sequence();
	leftNewSlide.start = width;
	leftNewSlide.end = 0;
	leftNewSlide.duration = 1000;
	leftNewSlide.min=0.5;
	leftNewSlide.ease = Easing['easeBothStrong'];
	leftNewSlide.init = function(){
		if(pane.content){
			pane.content.style.left=width+"px";
		}	
		if(pane.content && pane.content.parentNode != pane.viewport){
			pane.viewport.appendChild(pane.content);
		};
	};
	leftNewSlide.handler = function(val){
		val = Math.round(val);
		pane.content.style.left = val+"px";
		return val;
	};
	leftNewSlide.callback = function(){
		pane.content.style.left = "0px";
	}
	leftAnim.addSequence(0,leftNewSlide);

	var rightAnim = new Animation();

	//old moving right
	var rightOldSlide = new Sequence();
	rightOldSlide.start = 0;
	rightOldSlide.end = width ;
	rightOldSlide.duration = 1000;
	rightOldSlide.min=0.5;
	rightOldSlide.ease = Easing['easeBothStrong'];
	rightOldSlide.handler = function(val){
		val = Math.round(val);
		if(pane.oldContent){
			pane.oldContent.style.left = val+"px";
		}
		return val;
	};
	rightOldSlide.callback = function(){
		if(pane.oldContent){
			pane.oldContent.style.left = width+"px";
		}
	};
	rightAnim.addSequence(0,rightOldSlide);

	//new moving right
	var rightNewSlide = new Sequence();
	rightNewSlide.start = -width;
	rightNewSlide.end = 0;
	rightNewSlide.duration = 1000;
	rightNewSlide.min=0.5;
	rightNewSlide.ease = Easing['easeBothStrong'];
	rightNewSlide.init = function(){
		if(pane.content){
			pane.content.style.left="-"+width+"px";
		}	
		if(pane.content && pane.content.parentNode != pane.viewport){
			pane.viewport.appendChild(pane.content);
		};
	};
	rightNewSlide.handler = function(val){
		val = Math.round(val);
		pane.content.style.left = val+"px";
		return val;
	};
	rightNewSlide.callback = function(){
		pane.content.style.left = "0px";
	}
	rightAnim.addSequence(0,rightNewSlide);
	
	pane['leftAnim']=leftAnim;
	pane['rightAnim']=rightAnim;
	pane['quickAnim']=new Animation();
	return pane;
 }
 
 function createCarouselManager(id){
	var list = new Playlist(id);
	list.setPreload(true);
	var manager = new UrlPlaylistManager(list);
	return manager;
 }
