﻿/*

	RotationSlider for jQuery(gt Ver 1.3.2) 
	Developped  by Coichiro Aso
	Copyright Codesign.verse 2009　http://codesign.verse.jp/
	Licensed under the MIT license:http://www.opensource.org/licenses/mit-license.php/

J'ai écrit le droit d'auteur, sauf si vous supprimez
Vos invités sont libres de
Toutefois, lorsqu'il est utilisé, je vous remercie à vos propres risques.

-------------------------------------------------------------------------------------------*/

/*note
↑ → = * ↑ ↑ / peut être obtenu par → →.
Les opérateurs sont égaux! "="
$.inArray(value,array)=index
Lorsque vous arrêtez un comportement ou non, la fonction retourne false ensemble? !
------------------------------------------------------------------------------------------*/
(function($){

	$.fn.rotationslider=function(options){

		var defaults={
			radi:3200,
			litradi:10,
			speed:1000
		};

	var options = $.extend(defaults, options);
	var target=$(this);
	var elem=$("li" ,target);
	var ewid=elem.width();
	var ehei=elem.height();
	var clicker=$("div#csb a");
	var iwid=[];
	var ihei=[];
	var xpos=[];
	var ypos=[];
	var mycos=[];
	var mysin=[];
	var myange=[];
	var myscale=[];
	var myopac=[];
	var myzindex=[];
	var step=Math.PI*2/elem.length;
	var offset=0;
	var radi=options.radi;
	var camdist=radi*2;
	var scrz=radi;
	var speed=options.speed;
	var ids=[];
	var trp=0;

		function setimgsize(){
			for(i=0;i<elem.length;i++){
				var elemi=$("img",elem[i]);
				if(elemi.length!=0){
					for(n=0;n<elemi.length;n++){
						iwid[i*10+n]=$(elemi[n]).width();
						ihei[i*10+n]=$(elemi[n]).height();
					}
				}
			}
		}

		function setids(){
			for(i=0;i<elem.length;i++){
				ids[i]="#"+$(elem[i]).attr("id");
			}
		}

		function setpos(spd,chc){

			if(Math.abs(offset)>elem.length-1){
				offset=0
			}

			if(chc=="s" ||chc=="e"){
				offset=offset;
			}else{
				if(chc>=0){
					offset+=1;
				}else if(chc<0){
					offset-=1;
				}
			}

			for(i=0;i<elem.length;i++){
				myange[i]=(i+offset)*step%(Math.PI*2);
				mycos[i]=Math.cos(myange[i]);
				mysin[i]=Math.sin(myange[i]);
				myscale[i]=scrz/(camdist-mycos[i]*radi);
				xpos[i]=mysin[i]*radi*myscale[i]-ewid*myscale[i]/2+target.width()/2;
				ypos[i]=target.height()/2-ehei*myscale[i]/2;
				myzindex[i]=Math.round(20+mycos[i]*10);
				myopac[i]=0.7+mycos[i]*0.3;
			}

			for(i=0;i<elem.length;i++){
				$(elem[i])
					.css("z-index",myzindex[i])
					.animate({
						top:ypos[i],
						left:xpos[i],
						width:ewid*myscale[i],
						height:ehei*myscale[i],
						opacity:myopac[i],
						fontSize:myscale[i]*100+"%"
					},spd);
				var elemi=$("img",elem[i]);	
				if(elemi.length!=0){
					for(n=0;n<elemi.length;n++){
						$(elemi[n])
						.animate({
							width:iwid[i*10+n]*myscale[i],
							height:ihei[i*10+n]*myscale[i]
						},spd,"linear");
					}
				}
			}

		}

		function smalllight(){
			scrz=radi/options.litradi;
			setpos(speed/2,"s");
		}

		function biglight(){
			scrz=radi;
			setpos(speed/2,"e");
		}

		function seteng(n){		
			trp=1;

			smalllight();

			for(i=0;i<Math.abs(n);i++){
				(function(m){

					setTimeout(function(){setpos(speed/Math.abs(n),n);},m*speed/Math.abs(n));
				
				})(i);

			}

			setTimeout(biglight,speed);

		}

		setimgsize();
		biglight();
		setids();

		clicker.click(function(){
			
			if(trp!=1){
				var myid=$.inArray($(this).attr("href"),ids);
				var nowid=$.inArray(0,myange);
				
				if(Math.abs(nowid-myid)>elem.length/2){
					if(nowid>elem.length/2){
						myid=nowid-(myid+elem.length);
					}else if(nowid<=elem.length/2){
						myid=nowid-(myid-elem.length);
					}
				}else{
					myid=nowid-myid;
				}

				seteng(myid);
	
				setTimeout(function(){trp=0;},speed*2);				

				return false;
			}

		});
		
	}

})(jQuery);


