/**
*
* trailer-toggler.js 
* (simple vimeo "moogaloop"-player with toggler functionality)
*
* built by Simon Jockers, 2010/04/10
* requires mootools framework v1.11 (http://docs111.mootools.net/)
* makes use of the moogaloop API (http://vimeo.com/api/docs/moogaloop)
*    
*/

var videoPlayer = false; // will be initialised with a reference to the moogaloop-player

function vimeoPlayerLoaded( swf_id ){ // to be called by the moogaloop-player
	videoPlayer = $( swf_id );	
}

var trailerToggler = new Class({

	options: {
		container: false,
		toggleButton: false,
		openText: false, 
		closeText: false
	},

	open: false,
	elementToToggle : false,
	toggler : false,
	slider : false,
	toggleFade : false,	
	fade : false,
	logoFade : false,
	headline : false,
	videoWrapper : false,
	ratio : false,
	offset : false,	
	
	initialize: function(options){
		
		if (swfobject.hasFlashPlayerVersion("9.0.18")) {
			this.setOptions(options);					
			this.initVideoPlayer();
		}
		
		// if flash 9 isn't present or the container not available, exit script: 
		else return;
		if ( !this.options.container ) return; 
		
		this.fade = new Fx.Style(this.options.container, 'opacity', {duration:700});			
		this.elementToToggle = $(this.options.container);				
		
		this.toggler = $E('a', this.options.toggleButton );
		this.toggler.setText( this.options.openText );
		this.toggler.addEvent('click', this.onTogglerClick.bind(this) );
		this.toggleFade = new Fx.Style(this.toggler, 'opacity', {duration:200});		
		
		$(this.elementToToggle).setStyle('opacity', '0');
		this.slider = new Fx.Slide(this.options.container, {
			duration: 700,
			onComplete: function(){	
				this.toggleFade.start(0,1);	
			}.bind(this)		
		});
		this.slider.hide();				
	},
		
	onWindowResize: function(event) {
		var outerHeight = Number(this.elementToToggle.getSize().size.y);			
		this.slider.wrapper.setStyle( 'height', outerHeight );
	},
	
	onTogglerClick: function(event) {	

		new Event(event).preventDefault();
		this.toggleFade.hide();

		var scrollUp = new Fx.Scroll( window, {
			duration: 300, 
			onComplete: function(){			
				this.toggler.injectInside( $(this.options.toggleButton) );
				this.fade.start(1, 0);	
				this.slider.toggle();
				this.toggler.setText( this.options.openText );	
				window.removeEvents('resize');									
			}.bind(this)
		});
		
		var scrollDown = new Fx.Scroll( window, {
			duration: 300, 
			onComplete: function(){
				this.fade.start(0, 1);	
				this.slider.toggle();
				this.toggler.injectAfter(this.headline);
				this.toggler.setText( this.options.closeText );					
				window.addEvent('resize', this.onWindowResize.bind(this) );
				if (videoPlayer) {
					videoPlayer.api_setVolume(50);
				}							
			}.bind(this)
		});		
		
		if ( this.open ) {				
			if (videoPlayer) {
				videoPlayer.api_setVolume(0);				
				videoPlayer.api_pause();
				videoPlayer.api_seekTo(0);				
			}
			this.open = false;
			scrollUp.scrollTo( 0, 0 );
			} 
		
		else {
			if (videoPlayer) {
				videoPlayer.api_setVolume(0);				
				videoPlayer.api_play();				
			}
			scrollDown.scrollTo( 0, 200 );	
			this.open = true;							
		}
		
		this.toggler.toggleClass("closeToggler");		
		
	},

	initVideoPlayer: function() {
		
		var video_id = 9644501;
		var swf_id = 'moogaloop';	

		// building the html-wrapper, quick and dirty:
		this.toggler = new Element('div').injectTop( $('content') );						
		this.videoWrapper = new Element('div').injectTop( this.toggler );
		this.headline = new Element('h2').injectTop( this.toggler );				
		var innerWrapper = new Element('div').injectTop( this.videoWrapper );
		var player = new Element('div').injectTop( innerWrapper );
		this.toggler.id = 'trailer';		
		this.videoWrapper.addClass('videoWrapper');
		this.headline.setText( 'Offizieller Trailer' );		
		player.id = swf_id;

		// flash embed:
		var flashvars = {
	        clip_id: video_id,
	        show_portrait: 0,
	        show_byline: 0,
	        show_title: 0,
			color: 'FFCC00',
			js_api: 1, // required in order to use the Javascript API
			js_onLoad: 'vimeoPlayerLoaded',
			js_swf_id: 'moogaloop'			
	    };
	
		var params = {
			allowscriptaccess: 'always',
			allowfullscreen: 'true',
			wmode: 'transparent' 
		};
		
		var attributes = {};
			
		swfobject.embedSWF("http://vimeo.com/moogaloop.swf", swf_id, "600", "450", "9.0.0","expressInstall.swf", flashvars, params, attributes);
			
	}

});

trailerToggler.implement(new Events() );
trailerToggler.implement(new Options() );

