var Init = new Class({

	callbacks : [],

	initialize : function() {
		// window.addEvent("domready", this.run.bind(this));
		/*
		 * var docScr = this.docScr = new Fx.Scroll( window, { offset: { x: 0,
		 * y: -64 } }).toElement('hideMenu');
		 */
	},

	add : function(cb) {
		this.callbacks.push(cb);
	},

	run : function() {
		while (cn = this.callbacks.shift()) {
			cn();
		}
	}
});

Init.domready = new Init();
window.addEvent('domready', Init.domready.run.bind(Init.domready));

Init.facebook = new Init();
// window.addEvent('domready' , Init.domready.run.bind(this));

var LinkDiv = new Class({

	initialize : function(classElement) {

		$$(classElement).addEvent('click', function(e) {
			e.stop();
			e.preventDefault();
			var a = this.getElement("a");
			return Nav.handleClick(a);
		});
	}
});

var LinkDivBlank = new Class({

	initialize : function(classElement) {
		$$(classElement).addEvent('click', function() {
			var a = this.getElement("a");
			window.open(a);
		});
	}
});

var CubeGrid = new Class({
	initialize : function() {
		$$('.cube-grid-item').each(function(el) {
			
			if( el.retrieve("cubeinit") == 1 ) {
				return;
			}
			
			if (Browser.ie6 || Browser.ie7 || Browser.ie8) {
				if (e = el.getElement("figcaption")) {
					e.setStyle('display', 'none');
				}
				// alert(this.getElement("figcaption").getStyle());
			}
			el.addEvent('mouseenter', function() {
				if (Browser.ie6 || Browser.ie7 || Browser.ie8) {
					if (e = this.getElement("figcaption")) {
						e.setStyle('display', 'block');
					}
				} else {
					var fadeIn = new Fx.Tween(this.getElement("figcaption"), {
						duration : '250',
						property : 'height'
					});
					fadeIn.start(160);
				}
				
			});
			el.addEvent('click', function( e ) {
				e.stop();
				e.preventDefault();
				
				var a = el.getElement("a");
				Nav.handleClick(a);
				// a.fireEvent("click");
				// UrlHandler.simulateClick(url);
				// document.location.href=this.getElement("a").get("href");
			});
			el.addEvent('mouseleave', function() {
				if (Browser.ie6 || Browser.ie7 || Browser.ie8) {
					if (e = this.getElement("figcaption")) {
						e.setStyle('display', 'none');
					}
				} else {
					var fadeOut = new Fx.Tween(this.getElement("figcaption"), {
						duration : '450',
						property : 'height'
					});
					fadeOut.start(0);
				}
			});
			
			el.store( "cubeinit" , 1 );
		});
	}
});

var FlashEmbed = {
	embed : function(swf, id, w, h, version, vars, attributes, params) {
		if (!params) {
			params = FlashEmbed.params;
		}
		swfobject.embedSWF(swf, id, w, h, version, vars, attributes, params);
	},

	params : {
		bgcolor : "#000000",
		wmode : "transparent"
	}

}

/*
 * var BlockPlayer = new Class({
 * 
 * initialize : function( swf ){ Flash.embed(swf, "flashBlockPlayer", "960",
 * "540", "10.0.0");
 * 
 *  },
 * 
 * start : function( ){ this.videoSlider = new Slider({ mode: 'horizontal',
 * 
 * box: $('videosSlider'), items: $$('#videosSlider .block3videos'), interval:
 * 10000, startItem: 0, size: 480, autoPlay: true, fxOptions: { duration: 1000,
 * transition: Fx.Transitions.Quint.easeOut, wait: false }, addButtons: { next:
 * $$('.slide-next-button') } });
 * 
 * $$('.playbutton').each(function(el){ el.addEvent('click',function(){ var
 * videoId=this.get('id');
 * $('videosSlider').getElements('figure').each(function(figureEl){
 * figureEl.removeClass('current'); })
 * this.getParent('figure').addClass('current');
 * $('flashBlockPlayer').getChildren('video').addClass('hidden');
 * $('flashBlockPlayer').getChildren('video').each(function(videoEl){videoEl.pause()});
 * $('flashBlockPlayer').getChildren('#'+videoId).removeClass('hidden');
 * 
 * }); });
 *  }
 * 
 * });
 */

/*
 * var VideoPlayer = new Class({ initialize : function(swf){ Flash.embed( swf ,
 * "flashPlayer", "100%", "100%", "10.0.0"); } });
 */

var MP3Player = new Class({

	currentTrack : -1,
	tracks : [],

	initialize : function(id, autoplay) {
		this.id = id;
		this.elem = $("mp3_" + id);
		this.autoplay = autoplay;

		this.playlistSlider = new Slideshow({
			mode : 'vertical',

			box : $('playlistSlider_' + id),
			items : $$('#playlistSlider_' + id + ' .block3audio'),
			interval : 10000,
			startItem : 0,
			size : 135,
			autoPlay : false,
			fxOptions : {
				duration : 800,
				transition : Fx.Transitions.Quint.easeOut,
				wait : false,
				link : 'cancel'
			},
			addButtons : {
				next : $$('.mp3_' + id + ' .playlist-next-button')
			}
		});

		this.player(id);
	},

	player : function(id) {

		var me = this;

		var tracksclass = ".audiotrack";
		this.tracks = this.elem.getElements(tracksclass);
		this.tracks.addEvent('click', function() {
			me.play(this);
		});

		var slider = $('progressbarCont' + id);
		new Slider(slider, slider.getElement('.pcursor'), {
			range : [ 1, 100 ],
			initialStep : 14,
			onChange : function(value) {
				Sound.clickPosition(value);
			}
		});

		$('playbutton' + id).addEvent('click', function() {
			if (me.currentTrack != '-1') {
				Sound.playPause();
			} else {
				me.start();
			}

		});

		$('prevbutton' + id).addEvent('click', function() {
			if (me.currentTrack != '-1') {
				if (me.currentTrack == '0') {
					me.play(me.tracks[me.tracks.length - 1]);
				} else {
					me.play(me.tracks[me.currentTrack - 1]);
				}
			}
		});

		$('nextbutton' + id).addEvent('click', function() {
			if (me.currentTrack != '-1') {
				if (me.currentTrack >= me.tracks.length - 1) {
					me.start();
				} else {
					me.play(me.tracks[me.currentTrack + 1]);
				}
			}
		});

		this.prepare(this.tracks[0]);

		if (this.autoplay)
			this.start();

	},

	start : function() {
		this.play(this.tracks[0]);
	},

	prepare : function(track) {
		var srctrack = track.get('data-src');
		this.tracks.removeClass('current');
		track.addClass('current');
		var audioclass = track.get('id');
		var tracksplit = audioclass.split('_');
		var trackid = parseInt(tracksplit[1]);
		// console.log(this.elem);
		this.elem.getElement('.trackidbutton').set('html', trackid + 1);
		var tracktitle = track.getElement('.audio-title').get('text');
		this.elem.getElement('.tracktitle').set('html', tracktitle);
		var trackartist = track.getElement('.audio-artist').get('text');
		this.elem.getElement('.trackartist').set('html', trackartist);

		this.duration = parseInt(track.getElement(".audio-duration")
				.get('text'));
		this.elem.getElement(".playtotal").set('text',
				this.secondsToHms(this.duration));

		return srctrack;

	},

	play : function(track) {
		var srctrack = this.prepare(track);
		this.currentTrack = this.tracks.indexOf(track);

		VideoPlayer.pause();
		Sound.play(srctrack);

	},

	pause : function() {
		Sound.pause();
	},

	secondsToHms : function(d) {
		d = Number(d);
		var h = Math.floor(d / 3600);
		var m = Math.floor(d % 3600 / 60);
		var s = Math.floor(d % 3600 % 60);
		return ((h > 0 ? h + ":" : "")
				+ (m > 0 ? (h > 0 && m < 10 ? "0" : "") + m + ":" : "0:")
				+ (s < 10 ? "0" : "") + s);
	},

	progress : function(current, total) {
		var progresspourcent = current / total * 100;
		this.elem.getElement('#progressbar').setStyle('width',
				progresspourcent + '%');

		this.elem.getElement('#playcurrent').set('html',
				this.secondsToHms(current / 1000));
		// this.elem.getElement('#playtotal').set('html',secondsToHms(total/1000));
	}

});

var PopinEmbed = new Class({
	initialize : function(button, langue, market) {

		$$('#' + button + ' .embedShare').addEvent(
				'click',
				function(event) {
					event.stopPropagation();
					$('popinEmbed').setStyle('display', 'block');
					var videoId = this.get('data-src');
					var pageId = this.get('id').substr(1);
					var videoWidth = parseInt( this.get('data-width'));
					var videoHeight = parseInt( this.get('data-height'));
					var ratio = videoWidth / videoHeight;
					var embedWidth = 480;
					var embedHeight = Math.floor( embedWidth / ratio );
					
					var embedUrl = '<iframe width="'+embedWidth+'px" height="'+embedHeight+'px" src="'
							+"http://" + document.location.host + '/' + langue + '/' + market + '/embed/'
							+ videoId + '/' + pageId
							+ '" frameborder="0" allowfullscreen></iframe>';
					$('embedUrlField').set('value', embedUrl);
					var shareVideoUrl =  "http://" + document.location.host + '/' + langue + '/' + market
							+ '/video/' + videoId + '/' + pageId;
					$('shareUrlField').set('value', shareVideoUrl);
					var shareFB = 'http://www.facebook.com/sharer.php?u='
							+ encodeURIComponent(shareVideoUrl);
					$('shareFbButton').set('data-src', shareFB);
				});

		$('embedUrlField').addEvent('click', function() {
			$('embedUrlField').select();
		});

		$('shareUrlField').addEvent('click', function() {
			$('shareUrlField').select();
		});

		$('shareFbButton').addEvent(
				'click',
				function() {
					var sharehref = $('shareFbButton').get('data-src');
					window.open(sharehref, 'sharer',
							'toolbar=0,status=0,width=626,height=436');
				});

		$('closePopinEmbed').addEvent('click', function() {
			$('popinEmbed').setStyle('display', 'none');
		});

	}
});

var PopinFooter = new Class(
		{
			initialize : function(button) {

				$$('.popin-footer-button').addEvent('click', function(event) {
					
					event.stop();
					event.preventDefault();
					
					$('popinFooter').setStyle('display', 'block');
					
					$$('.popin-content').setStyle('display', 'none');
					$('popinBox').removeClass('popin-big');
					
					var w = null;
					
					if (this.hasClass('popin-terms')) {
						w = $('popinTerms');	
					} else if (this.hasClass('popin-privacy')) {
						w = $('popinPrivacy')
					} else if (this.hasClass('popin-contact')) {
						$('popinBox').addClass('popin-big');
						w = $('popinContact'); 
					} else if (this.hasClass('popin-newsletter')) {
						w = $('popinNewsletter');
					}
					
					w.setStyle( "display" , "block" );
					w.load( this.get('href') );
					
				});

				$(document.body).addEvent('click:relay(.close-popin)', function() {
					$('popinFooter').setStyle('display', 'none');
				});

				
			},

			update : function() {

				// rien de particulier a initialiser dans les commentaires

			}

			
		});

var PopinMusicStore = new Class({
	initialize : function(button) {

		$$('.buy_' + button).addEvent('click', function(event) {
			event.stopPropagation();
			$('popinMusicStore').setStyle('display', 'block');

			var ituneslink = this.get('data-itunes');
			if (ituneslink) {
				$('ituneslink').setStyle('display', 'inline');
				$('ituneslink').set('href', ituneslink);
			} else {
				$('ituneslink').setStyle('display', 'none');
			}

			var amazonlink = this.get('data-amazon');
			if (amazonlink) {
				$('amazonlink').setStyle('display', 'inline');
				$('amazonlink').set('href', amazonlink);
			} else {
				$('amazonlink').setStyle('display', 'none');
			}

			var fnaclink = this.get('data-fnac');
			if (fnaclink) {
				$('fnaclink').setStyle('display', 'inline');
				$('fnaclink').set('href', fnaclink);
			} else {

				$('fnaclink').setStyle('display', 'none');
			}
		});

		$('closePopinMusicStore').addEvent('click', function() {
			$('popinMusicStore').setStyle('display', 'none');
		});

	}
});

var PopinMail = new Class(
		{

			initialize : function( elem ) {
				this.elem = elem;
				elem.getElement('.closePopin').addEvent('click', function() {
					elem.setStyle('display', 'none');
				});

				this.form = elem.getElement('.emailform');
				
				this.url = this.form.get('action');

				this.senderEmail = elem.getElement('.senderEmail');
				this.friendEmail = elem.getElement('.friendEmail');
				this.messageInput = elem.getElement('.textareaComment');

				
				this.form.addEvent("submit", this.submit.bind(this));

				this.req = new Request({
					method : 'post',
					url : this.url
				});
				this.req.addEvent("success", this.success.bindWithEvent(this));
				this.req.addEvent("exception", this.exception
						.bindWithEvent(this));
				this.req.addEvent("failure", this.failure.bindWithEvent(this));
			},

			setPage : function(sharedId) {
				$$('.popinEmailButton').addEvent('click', function() {
					// $('sharedId').set('value',sharedId);
					sharedId = this.get('data-page');
					$('sharedId').set('value', sharedId);
					$$('.popinEmail').setStyle('display', 'block');	
				});


			},

			update : function() {

				// rien de particulier a initialiser dans les commentaires

			},

			submit : function(e) {
				//alert('there!!!!');
				if (e) {
					e.preventDefault();
				}

				if (this.verif()) {
					this.post();
				} else {
					this.elem.getElement('.popin_response_error').setStyle('display', '');
					this.displayResponse();
				}
			},

			displayResponse : function() {
				this.elem.getElement('.popin_response_post').setStyle("display", "none");
			},

			verif : function() {

				this.elem.getElement('.popin_response_error_mail').setStyle("display", "none");
				this.elem.getElement('.popin_response_error_mail_valid')
						.setStyle("display", "none");

				var isOk = true;
				var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

				if (this.senderEmail) {
					if (this.senderEmail.get("value") == '') {
						this.elem.getElement('.popin_response_error_mail').setStyle("display", "");
						isOk = false;
					} else {
						if (!filter.test(this.senderEmail.get("value"))) {
							this.elem.getElement('.popin_response_error_mail_valid').setStyle(
									"display", "");
							isOk = false;
						}
					}
				}

				if (this.friendEmail) {
					if (this.friendEmail.get("value") == '') {
						this.elem.getElement('.popin_response_error_mail').setStyle("display", "");
						isOk = false;
					} else {
						if (!filter.test(this.friendEmail.get("value"))) {
							this.elem.getElement('.popin_response_error_mail_valid').setStyle(
									"display", "");
							isOk = false;
						}
					}
				}

				return isOk;
			},

			post : function() {
				this.elem.getElement('.popin_response_error').setStyle('display', 'none');
				this.req.send({
					data : this.form
				});
			},

			success : function(html) {

				this.elem.getElement('.popin_response_post').setStyle("display", "");
				this.elem.getElement('.textareaMessage').set('value', '');
			},

			exception : function(e) {

			},

			failure : function(e) {

			}
		});

var GPDownload = function(elem) {
	var form = elem.getElement("form");
	var email = form.getElement("input[name='newsletterEmail']");
	var country = form.getElement("select[name='newsletterCountry']");
	var optin = form.getElement("input[name='newsletterCheckbox']");
	var button = elem.getElement(".download-button");
	
	var scr ;
	scr = function(){
		/*Nav.body.removeEvent("pageDisplay", scr);
		
		var fx = new Fx.Scroll(Nav.body , {
			offset : { x: 0 , y : -80 }
		});
		
		fx.toElement( elem );*/
	}
	Nav.body.addEvent("pageDisplay" , scr);

	var messages = {
		ok : elem.getElement(".newsletter_response_post"),
		required : elem.getElement(".newsletter_response_error"),
		noEmail : elem.getElement(".newsletter_response_error_mail"),
		invalidEmail : elem.getElement(".newsletter_response_error_mail_valid")
	}

	var check = function(display) {

		display = (display === true);
		var e = email.get('value');
		var c = country.get('value');
		var o = optin.get('checked');
		Object.each(messages, function(m) {
			m.setStyle("display", "none");
		})
		button.addClass("disabled");

		if (!e.trim()) {
			if (display)
				messages.noEmail.setStyle("display", "block");
			return false;
		}
		if (!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/
				.test(e)) {
			if (display)
				messages.invalidEmail.setStyle("display", "");
			return false;
		}
		if ((c == 0) || !o) {
			if (display)
				messages.required.setStyle("display", "");
			return false;
		}

		messages.ok.setStyle("display", "block");
		button.removeClass("disabled");
		return true;

	}

	button.addEvent("click", function() {
		if (check(true)) {
			form.submit();
		}
	});

	email.addEvent("keyup", check);
	country.addEvent("change", check);
	optin.addEvent("change", check);

}


var FacebookPopin = function( elem ){

	var delay = 45000;
	var cookieName = 'facebook-popin-done' ;
	var cookieOptions = {
		duration : 99
	};

	var close = function(e){
		if( e ){
			e.stop();
			e.preventDefault();
		}
		elem.addClass("hidden");
		Cookie.write( cookieName , 1 , cookieOptions );
	}
	var open = function(){
		elem.removeClass("hidden");	
	}
	var start = function(){
		//if( !Cookie.read(cookieName) ){
			setTimeout( open , delay );
		//}
	}

	elem.addEvent("click:relay(a.close-popin)" , close );
	elem.addEvent("mouseenter" , function(){
		elem.addClass("hover");
	} );
	elem.addEvent("click:relay(.popin-in)" , function(){
		var href = elem.getElement(".fb-like-box").get('data-href');
		window.open(href);
	} );

	return {
		start : start
	};

}
