
var Stage = new Class({

	Implements: Options,

	options: {
		duration: 'normal',
		durationHide: 'normal',
		transition: Fx.Transitions.Quad.easeOut,
		transitionHide: Fx.Transitions.Quad.easeOut,
		autoPlay: true,
		buttonOffsetX: 0,
		buttonOffsetY: 0
	},

	stage: null,
	playerUrl: null,
	flash: {},
	current: null,

	initialize: function(stage, playerUrl, options) {
		if (!stage) {
			throw 'first parameter is missing '
				+ '(you have to provide a stage element)';
		}
		if (!playerUrl) {
			throw 'second parameter is missing '
				+ '(you have to provide an url to the flash player)';
		}
		this.stage = stage;
		this.playerUrl = playerUrl;
		this.setOptions(options);
	},

	showVideo: function(name) {
		var flash = this.flash[name].toElement();
		this.stage.grab(flash, 'after');
		/*flash.setStyles({
			'position': 'absolute',
			'top': '50%',
			'left': '50%',
			'margin': '-320px 0 0 -542px'
		});*/
		this.current = flash;

		if ($('button-trailer')) {
			$('button-trailer').setStyle('visibility', 'hidden');
		}
	},

	setVideo: function(name, video) {
		var swiff = new Swiff(this.playerUrl, {
			id: name,
			width: 1084,
			height: 610,
			params: {
				wMode: 'transparent'
			},
			vars: {
				videoPath: video,
				autoPlay: this.options.autoPlay,
				buttonOffsetX: this.options.buttonOffsetX,
				buttonOffsetY: this.options.buttonOffsetY
			},
			callBacks: {
				showElements: this.showElements.bind(this),
				hideElements: this.hideElements.bind(this)
			}
		});
		this.flash[name] = swiff;
	},

	hideElements: function() {
		$('main').set('morph', {
			duration: this.options.durationHide,
			transition: this.options.transitionHide
		}).morph({
			'width': 1084
		});
		
		if ($('button-trailer')) {
			$('button-trailer').setStyle('visibility', 'visible');
		}
		
		this.stage.setStyle('visibility', 'hidden');
	},

	showElements: function() {
		$('main').set('morph', {
			duration: this.options.duration,
			transition: this.options.transition
		}).morph({
			'width': $(document).getSize().x
		});
				
		//this.current.dispose();
		this.stage.setStyle('visibility', 'visible');
	}

});

