var Portal = new Class({
        
	initialize : function(elem){
		
			// Ajoute la classe portal sur la page portail
			$(document.body).addClass('portal');	
		
			this.elem = elem;
			
            var firstSlide = true;
            var swingDirection = "right";
            
            var next = this.next = this.elem.getElement(".portal-next"); 
            next.addEvent('click',function(){
                swingDirection = "left";
            });
            
            var prev = this.prev = this.elem.getElement(".portal-previous");
            prev.addEvent('click',function(){
                swingDirection = "right";
            });
            
            var items = this.items = this.elem.getElements('.slide'); 
			var slider = this.slider = this.elem.getElement('.slider-portal');
			
            this.portalSlider = new PortalSlider({
                mode: 'horizontal',

                box: slider,
                items: items,
                interval: 10000,
                startItem: 0,
                size: (window.getSize().x),
                autoPlay: false,
                fxOptions: {
                    duration: 1500,
                    transition: Fx.Transitions.Quint.easeOut,
                    wait: false,
                    link:'cancel'
                },
                addButtons: {
                    previous : prev,
                    next: next
                },
                onWalk: function(currentItem,currentHandle){

					currentItem.getElements('.block-portal').each(function(element) {
                                            if(!firstSlide){
						window.setTimeout(function() {
                                                      //  element.removeClass('hackWebkit');
                                                        element.removeClass('swingright0');
                                                        element.removeClass('swingright1');
                                                        element.removeClass('swingright2');
                                                        element.removeClass('swingleft0');
                                                        element.removeClass('swingleft1');
                                                        element.removeClass('swingleft2');
                                                        setTimeout(function() {element.addClass('swing'+swingDirection+Math.floor(Math.random()*3));},10);
						}, 10);
                                            }else{
                                                window.setTimeout(function() {
                                                        element.removeClass('swingright0');
                                                        element.removeClass('swingright1');
                                                        element.removeClass('swingright2');
                                                        element.removeClass('swingleft0');
                                                        element.removeClass('swingleft1');
                                                        element.removeClass('swingleft2');
                                                      //  element.removeClass('hackWebkit');
                                                        setTimeout(function() {/*element.addClass('hackWebkit');*/},10);
						}, 10);
                                            }
					});
                                        
                                        firstSlide = false;
                                        
                                        /*
                                        if(this.currentIndex == (this.items.length)-1){
                                            next.setStyle('display','none');
                                        }else{
                                            next.setStyle('display','block');
                                        }
                                        if(this.currentIndex == 0){
                                            prev.setStyle('display','none');
                                        }else{
                                            prev.setStyle('display','block');
                                        }
                                        */
				}
				
            });			
            
            this.setDiapo();     
            window.addEvent('resize',this.setDiapo.bind(this));
            
            setTimeout(this.setDiapo.bind(this), 100);

	},
        
        setDiapo : function(){
			
			
            
           // this.portalSlider.walk(this.portalSlider.currentItem)
		
            if(window.getSize().y < 720){
                //$('container').setStyle('min-height','800px');
                var heightsize = 800;
            }else{
                var heightsize = window.getSize().y;
            }
            
            var widthsize = window.getScrollSize().x;
            
            var slideItems = this.items;
            var portalContainer = this.elem;
			
			
            /*var paddingSize = (heightsize-$('footer').getSize().y-64-270)/3*2;*/
			var paddingSize = (heightsize-64-270)/2;	
            var nbSlideItem = slideItems.length;
            this.slider.setStyle('width',widthsize*nbSlideItem);
            portalContainer.setStyle('width',widthsize+"px");
            portalContainer.setStyle('top',paddingSize+'px');
            portalContainer.setStyle('display','block');
            
            var e;
            if( e = $('portalNav') ){
            	e.setStyle('left',widthsize/2);
            }

            this.items.setStyle('width','960px');
            this.items.setStyle('padding','0 '+(widthsize-960)/2+'px');
            
            //$$('.portal-video').setStyle('height',heightsize - 64 - $('footer').getSize().y );		
			$$('.portal-video').setStyle('height', heightsize - 64 - $$('.legals')[0].getSize().y );
			
	},
        
        portalPlayer : function( videoUrl ){
		swfobject.embedSWF( rootUrl+'/swf/minimalVideoPlayer.swf' , 'portalVideo', '100%', '100%', '10.0','',
                {videoUrl:videoUrl},
                {bgcolor: "#000000",
		wmode : "opaque"},'');
	}
});

var PortalSlider = new Class({

	initialize: function(params){
		this.items = params.items;
		this.mode = params.mode || 'horizontal';
		this.modes = {horizontal:['left','width'], vertical:['top','height']};
		this.size = params.size || 240;
		this.box = params.box.setStyle(this.modes[this.mode][1],((window.getSize().x)*this.items.length)+'px');
		this.button_event = params.button_event || 'click';
		this.handle_event = params.handle_event || 'click';
		this.onWalk = params.onWalk || null;
		this.currentIndex = null;
		this.previousIndex = null;
		this.nextIndex = null;
		this.interval = params.interval || 5000;
		this.autoPlay = params.autoPlay || false;
		this._play = null;
		this.handles = params.handles || null;
		if(this.handles){
			this.addHandleButtons(this.handles);
		}
		this.buttons = {
			previous: [],
			next: [],
			play: [],
			playback: [],
			stop: []
		};
		if(params.addButtons){
			for(var action in params.addButtons){
				this.addActionButtons(action, $type(params.addButtons[action])=='array' ? params.addButtons[action] : [params.addButtons[action]]);
			}
		}
		this.fx = new Fx.Tween(this.box,$extend((params.fxOptions||{duration:500,wait:false}),{property:this.modes[this.mode][0]}));
		this.walk((params.startItem||0),true,true);
	},

	addHandleButtons: function(handles){
		for(var i=0;i<handles.length;i++){
			handles[i].addEvent(this.handle_event,this.walk.pass([i,true],this));
		}
	},

	addActionButtons: function(action,buttons){
		for(var i=0; i<buttons.length; i++){
			switch(action){
				case 'previous': buttons[i].addEvent(this.button_event,this.previous.pass([true],this)); break;
				case 'next': buttons[i].addEvent(this.button_event,this.next.pass([true],this)); break;
				case 'play': buttons[i].addEvent(this.button_event,this.play.pass([this.interval,'next',false],this)); break;
				case 'playback': buttons[i].addEvent(this.button_event,this.play.pass([this.interval,'previous',false],this)); break;
				case 'stop': buttons[i].addEvent(this.button_event,this.stop.create({bind:this})); break;
			}
			this.buttons[action].push(buttons[i]);
		}
	},

	previous: function(manual){
		this.walk((this.currentIndex>0 ? this.currentIndex-1 : this.items.length-1),manual);
	},

	next: function(manual){
		this.walk((this.currentIndex<this.items.length-1 ? this.currentIndex+1 : 0),manual);
	},

	play: function(interval,direction,wait){
		this.stop();
		if(!wait){
			this[direction](false);
		}
		this._play = this[direction].periodical(interval,this,[false]);
	},

	stop: function(){
		$clear(this._play);
	},

	walk: function(item,manual,noFx){
		if(item!=this.currentIndex){
			this.currentIndex=item;
			this.previousIndex = this.currentIndex + (this.currentIndex>0 ? -1 : this.items.length-1);
			this.nextIndex = this.currentIndex + (this.currentIndex<this.items.length-1 ? 1 : 1-this.items.length);
			if(manual){
				this.stop();
			}
			if(noFx){
				this.fx.cancel().set(((window.getSize().x)*-this.currentIndex)+'px');
			}else{
				this.fx.start((window.getSize().x)*-this.currentIndex);
			}
			if(manual && this.autoPlay){
				this.play(this.interval,'next',true);
			}
			if(this.onWalk){
				this.onWalk((this.items[this.currentIndex] || null), (this.handles && this.handles[this.currentIndex] ? this.handles[this.currentIndex] : null));
			}
		}
	}
	
});
