var LeQueb_iui = new Class({
	
	Implements: [Options, Events],
	options: {
		debug: true,
		pageSpeed: 500
	},
	
	initialize: function() {
		this.log("Class initialized");
		
		scrollTo(0,1);
		this.winSize = $(document.body).getSize();
		this.pageNum = 1;
		//window.location.href = '#page_1';
		
		// Check if it is the Adobe Air version runing
		this.air = navigator.userAgent.test("AdobeAIR");
		(this.air==true)?this.winSize.x=(this.winSize.x-15):'';
		
		// $('mainHeader').addEvent("mousedown",function() {
		// 	nativeWindow.startMove();
		// }.bind(this));
		
		if(this.air==true) {
			
		}
		
		// Check the orientation of the device and call the distributeContent() function
		$('pagesWrap').setStyle('width',this.winSize.x);
		$('pagesSile').setStyle('width',this.winSize.x);
		window.onorientationchange = function(){this.distributeContent();}.bind(this);
		
		// Add events to the elements of the dl
		$$('dl dd').each(function(ddEl) {
			ddEl.addEvent('click',function(e) {
				e.preventDefault();
				this.movePage(ddEl.getElement('h3 > a').get('href'),'forward');
			}.bind(this));
			var acteurEl = ddEl.getElements('.acteurs');
			newText = acteurEl.get('html').toString();
			newText = newText.truncate(90,' ','...');
			acteurEl.set('html',newText);
		},this);
		
		// Add events for the nav buttons
		$('btnBack').addEvent('click',function(e) {
			e.preventDefault();
			this.movePage('','backward');
		}.bind(this));
		$('btnBack').setStyle('display','none');
		$('btnMenu').addEvent('click',function() {
			this.toggleOverLayMenu(1);
		}.bind(this));
		// Ad events for all the overLayMenu icons
		$$('#menuOverLay ul li a').each(function(a) {
			if(!a.hasClass('homeBtn')) {
				a.addEvent('click',function(e) {
					e.preventDefault();
					this.movePage(a.getProperty('href'),'forward');
				}.bind(this));
			}
		},this);
		
		// Instantiate the fx's
		this.pageSlideFx = new Fx.Tween('pagesSile', {duration: this.options.pageSpeed});
		this.smoothScroll = new Fx.Scroll($(document.body),{duration: 800});
		
		// Track the finger touch on start
		document.body.ontouchstart = function(e) {
			this.startTouchX = e.touches[0].pageX;
			this.startTouchY = e.touches[0].pageY;
		}.bind(this)
		// Track the finger touch on end
		document.body.ontouchend = function(e) {
			this.endTouchX = e.changedTouches[0].pageX;
			this.endTouchY = e.changedTouches[0].pageY;
			this.log("this.startTouchX: "+this.startTouchX+" :: this.endTouchX: "+this.endTouchX)
			if((this.startTouchX < this.endTouchX) && (this.startTouchY-this.endTouchY < 5) && (this.startTouchY-this.endTouchY > -5) && this.pageNum>1) {
				this.movePage('','backward');
			}
		}.bind(this)
		
		// Add event for the select's
		$$('#mainDropDownWrap select').each(function(selectEL) {
			selectEL.addEvent('change',function(e) {
				this.movePage(selectEL.value,'forward');
			}.bind(this));
		}.bind(this));
		
		// Add the loading wheel and hide it
		this.loadingDiv = new Element('div',{
			'id':'loadingDiv',
			'style': 'position:absolute; z-index:99999; top:0; left:0; display:block; width:100%; height:100%; background:#000; -webkit-border-radius:6px; opacity:0.8;'
		}).inject(document.body);
		this.loadingWheel = new Element('img',{
			'id':'loadingWheel',
			'style':'display:block; margin:40px auto 0 auto; width:32px; height:32px;',
			'src':'/lib/images/ajax-loader-apple-b.gif'
		}).inject(this.loadingDiv);
		this.loadingDiv = this.loadingDiv.dispose();
		
		this.setLoadMoreLink();
		
		if(window.location.hash) {
			this.movePage(window.location.hash.substr(2),'forward');
		}
		
		// Add eventlisterner for the history
		// this.hashHistory = [];
		// this.historyTimer = (function(){this.watchHash()}).bind(this).periodical(500);
		
	},
	
	// watchHash: function() {
	// 	this.currHash = window.location.hash;
	// 	if(this.hashHistory.indexOf(this.currHash)) {
	// 		this.hashHistory.pop();
	// 		console.log("Back pop"+this.hashHistory);
	// 	}
	// 	if(this.currHash!='' && this.prevHash!=this.currHash) {
	// 		this.hashHistory.push(this.currHash);
	// 		console.log(this.hashHistory);
	// 		//this.movePage('','backward');
	// 		this.prevHash = window.location.hash;
	// 	}
	// },
	
	distributeContent: function() {
		this.log("window.orientation: "+window.orientation);
		this.winSize.x = 320;
		
		if(window.orientation==0) {
			this.winSize.x = 320;
		} else {
			this.winSize.x = 480;
		}
		
		$('pagesWrap').setStyle('width',this.winSize.x);
		$('pagesSile').setStyles({
			'width': this.winSize.x * this.pageNum,
			'margin-left': -this.winSize.x * (this.pageNum-1)
		});
		$$('.page').setStyle('width',this.winSize.x);
		
	},
	
	toggleOverLayMenu: function(state) {
		if(state==1) {
			$('menuOverLayBg').setStyle('display','block');
			$('menuOverLay').setStyle('display','block');
		} else {
			$('menuOverLayBg').setStyle('display','none');
			$('menuOverLay').setStyle('display','none');
		}
	},
	
	movePage: function(link,side) {
		this.log("Move page (Link: "+link+" > side: "+side+" pageNum: "+this.pageNum+")");
		this.toggleOverLayMenu(0);
		(this.jsonRequest? this.jsonRequest.cancel():'');
		
		switch(side) {
			case 'forward':
				
				// Some DOM manipulation
				$('pagesSile').setStyle('width',this.winSize.x * (this.pageNum * 2));
				var newPage = new Element('div', {'class':'page', 'id':'page#'+(this.pageNum+1), 'style':'display:block;'}).inject($('pagesSile'));
				$$('.page').setStyle('width',this.winSize.x);
				
				// Load the JSON, build the DOM & inject it
				this.jsonRequest = new Request.JSON({
					url: link,
					encoding: 'iso-8859-1',
					onRequest: function() {
						
					}.bind(this),
					onSuccess: function(jsonObj) {
						//this.log(jsonObj);
						
						switch(jsonObj.pageType) {
							case 'dl':
								this.makeDL(jsonObj);
							break;
							case 'filmInfos':
								this.makeFilmInfos(jsonObj);
							break;
							case 'cinemaInfos':
								this.makeCinemaInfos(jsonObj);
							break;
							case 'ul':
								this.makeUL(jsonObj);
							break;
						}
						
						this.pageSlideFx.onComplete = function() {
							window.location.href = '#'+this.pageNum+link;
							this.fireLoadingWheel('off');
						}.bind(this)
						this.pageSlideFx.start('margin-left',$('pagesSile').getStyle('margin-left').toInt(),-this.winSize.x * this.pageNum);
						
						this.pageNum++;
						//this.distributeContent();
						this.manageBackButton();
					}.bind(this),
					onFailure: function(responseJSON, responseText) {
						this.fireLoadingWheel('off');
						alert("Une erreur c'est produite!\n La connexion n'as pu ce faire. \n\nVeuillez recommener.");
					}.bind(this)
				},this);
				
				// Fire the fireLoadingWheel() function
				this.fireLoadingWheel('on');
				this.smoothScroll.onComplete = function() {
					this.jsonRequest.get();
				}.bind(this)
				this.smoothScroll.toTop();
				
			break;
			case 'backward':
				this.pageNum--;
				this.pageSlideFx.onComplete = function() {
					window.location.href = '#'+this.pageNum+link;
					$('page#'+(this.pageNum+1)).dispose();
					$('pagesSile').setStyles({
						'width': $('pagesSile').getStyle('width').toInt() - this.winSize.x
					});
					this.manageBackButton();
					
				}.bind(this)
				this.pageSlideFx.start('margin-left',$('pagesSile').getStyle('margin-left').toInt(),$('pagesSile').getStyle('margin-left').toInt() + this.winSize.x);
				
			break;
		}
		
	},
	
	makeDL: function(jsonObj) {
		
		var innerTopEl = new Element('div', {'class': 'innerTop'}).inject('page#'+(this.pageNum+1));
		var index = this.pageNum;
		new Element('span', {'html': jsonObj.pageTitle}).inject(innerTopEl);
		
		var innerContentEl = new Element('div', {'class': 'innerContent'}).inject('page#'+(this.pageNum+1));
		var dlEl = new Element('dl', {'class': 'dl'+(jsonObj.pageClass=='top10'?' top10':'')}).inject(innerContentEl);
		
		jsonObj.array.each(function(jsonElements,index) {
			var ddEl = new Element('dd', {
				'class': 'dd followArrow',
				'events': {
					'click': function(e) {
						e.preventDefault();
						this.movePage(jsonObj.followLink+'?q='+jsonElements.uid,'forward');
					}.bind(this)
				}
			}).inject(dlEl);
			var imgEl = new Element('img', {'src':jsonElements.img, 'class': 'img', 'width':90, 'height':131}).inject(ddEl);
			var infosEl = new Element('div', {
				'class': 'infos num'+(index+1),
				'href': jsonObj.followLink+'?q='+jsonElements.uid
			},this).inject(ddEl);
			var h3El = new Element('h3', {'class': 'h3'}).inject(infosEl);
			var aEl = new Element('a', {'class': 'a', 'href':jsonObj.followLink+'?q='+jsonElements.uid,'html':jsonElements.titre}).inject(h3El);
			var ratingStarsWrapEl = $('pagesWrap').getElement('.ratingStarsWrap').clone().inject(infosEl);
			ratingStarsWrapEl.getElement('.starsBg').setStyle("left",(jsonElements.rating*10)-100+'%');
			jsonElements.acteurs = jsonElements.acteurs.truncate(90,' ','...');
			var acteursEl = new Element('span', {'class': 'acteurs','html':jsonElements.acteurs}).inject(infosEl);
			//var dateEl = new Element('span', {'class': 'date','html':'Date de sortie: '+jsonElements.date}).inject(infosEl);
			var ddEl = new Element('div', {'class': 'clearer','html':'&nbsp;'}).inject(dlEl);
		},this);
		
		if(typeof(jsonObj.moreLink)!='undefined') {
			if (jsonObj.nbFilmReste != '0'){
				var loadMoreEl = new Element('div', {'class': 'loadMore'}).inject(dlEl);
				new Element('a', {
					'href': jsonObj.moreLink+'?q='+jsonObj.pageNum,
					'html':'Les '+jsonObj.nbFilmReste+' prochaines ...',
					'events': {
						'click': function(e) {
							e.preventDefault();
							this.loadMore(jsonObj.moreLink+'?q='+jsonObj.pageNum,loadMoreEl);
						}.bind(this)
					}
				}).inject(loadMoreEl);
			}
		}
		
	},
	
	makeFilmInfos: function(jsonObj) {
		
		var innerTopEl = new Element('div', {'class': 'innerTop'}).inject('page#'+(this.pageNum+1));
		var index = this.pageNum;
		new Element('span', {'html': jsonObj.pageTitle}).inject(innerTopEl);
		
		var innerContentEl = new Element('div', {'class': 'innerContent'}).inject('page#'+(this.pageNum+1));
		var dlEl = new Element('dl', {'class': 'dl'}).inject(innerContentEl);
		
		jsonObj.filmInfos.each(function(jsonElements,index) {
			var ddEl = new Element('dd', {
				'class': 'dd'
			}).inject(dlEl);
			var imgEl = new Element('img', {'src':jsonElements.img, 'class': 'img', 'width':90, 'height':131}).inject(ddEl);
			if(jsonObj.followLink!="NULL") {
				var infosEl = new Element('div', {
					'class': 'infos',
					'href': jsonObj.followLink+'?q='+jsonElements.uid
				},this).inject(ddEl);
			} else {
				var infosEl = new Element('div', {
					'class': 'infos'
				},this).inject(ddEl);
			}
			
			var h3El = new Element('h3', {'class': 'h3'}).inject(infosEl);
			var aEl = new Element('a', {'class': 'a', 'href':jsonObj.followLink+'?q='+jsonElements.uid+'&l='+jsonElements.langue,'html':jsonElements.titre}).inject(h3El);
			var ratingStarsWrapEl = $('pagesWrap').getElement('.ratingStarsWrap').clone().inject(infosEl);
			ratingStarsWrapEl.getElement('.starsBg').setStyle("left",(jsonElements.rating*10)-100+'%');
			
			var dateEl = new Element('span', {'class': 'date inlineInfo','html':'<strong>Sortie le:</strong>'+jsonElements.date}).inject(infosEl);
			var genreEl = new Element('span', {'class': 'genre inlineInfo','html':'<strong>Genre:</strong>'+jsonElements.genre}).inject(infosEl);
			var classementEl = new Element('span', {'class': 'classement inlineInfo','html':'<strong>Classement:</strong>'+jsonElements.classement}).inject(infosEl);
			var anneeEl = new Element('span', {'class': 'annee inlineInfo','html':'<strong>Année:</strong>'+jsonElements.annee}).inject(infosEl);
			var dureeEl = new Element('span', {'class': 'duree inlineInfo','html':'<strong>Durée:</strong>'+jsonElements.duree}).inject(infosEl);
			
			var innerPaddingEl = new Element('div', {'class': 'innerPadding'}).inject(ddEl);
			var realiseParEl = new Element('span', {'class': 'realisePar inlineInfo','html':'<h4>Réalisé par</h4>'+jsonElements.realisePar}).inject(innerPaddingEl);
			var compagnieEl = new Element('span', {'class': 'compagnie inlineInfo','html':'<h4>Compagnie</h4>'+jsonElements.compagnie}).inject(innerPaddingEl);
			var genreEl = new Element('h4', {'html':'Liens'}).inject(innerPaddingEl);
			var liensEl = new Element('div', {'class': 'liens'}).inject(innerPaddingEl);
			jsonElements.liens.each(function(linkEl) {
				var aEl = new Element('a', {'class': 'a', 'href':linkEl.url, 'html':linkEl.titre, 'target': '_new'}).inject(liensEl);
			});
			
			var synopsisEl = new Element('p', {'class': 'synopsis','html':'<h4>Synopsis</h4>'+jsonElements.synopsis}).inject(innerPaddingEl);
			var acteursEl = new Element('span', {'class': 'acteurs','html':'<h4>Distribution</h4>'+jsonElements.acteurs}).inject(innerPaddingEl);
			// var horaireEl = new Element('span', {'class': 'horaire','html':'<h4>Horaire</h4>'+jsonElements.horaire}).inject(innerPaddingEl);
			var ddEl = new Element('div', {'class': 'clearer','html':'&nbsp;'}).inject(innerPaddingEl);
			
			// DropDown des versions de films
			if(jsonElements.versions.length>0 && jsonElements.versions[0].texte!='NULL') {
				
				var innerTopEl = new Element('div', {'class': 'innerTop'}).inject('page#'+(this.pageNum+1));
				new Element('span', {'html': 'Horaire pour la version:'}).inject(innerTopEl);
				var innerContentEl = new Element('div', {'class': 'innerContent whiteBg'}).inject('page#'+(this.pageNum+1));
				
				var selectEl = new Element('select', {'name':'versionsSelect','id':'versionsSelect'}).inject(innerContentEl);
				selectEl.addEvent('change',function(e) {
					this.movePage('/lib/inc/filmInfos.inc.php?'+selectEl.value,'forward');
				}.bind(this));
				jsonElements.versions.each(function(versionsEl,index) {
					if(index==0) {
						new Element('option', {'text':versionsEl.texte,'value':versionsEl.valeur,'selected':'selected'}).inject(selectEl);
					} else {
						new Element('option', {'text':versionsEl.texte,'value':versionsEl.valeur}).inject(selectEl);
					}
				});
			} else {
				
				var innerTopEl = new Element('div', {'class': 'innerTop'}).inject('page#'+(this.pageNum+1));
				new Element('span', {'html': 'Horaire'}).inject(innerTopEl);
				
			}
			
		},this);
		
		// var innerTopEl = new Element('div', {'class': 'innerTop'}).inject('page#'+(this.pageNum+1));
		// var index = this.pageNum;
		// new Element('span', {'html': 'Horaire'}).inject(innerTopEl);
		
		var innerContentEl = new Element('div', {'class': 'innerContent unCinema'}).inject('page#'+(this.pageNum+1));
		var dlEl = new Element('dl', {'class': 'dl'}).inject(innerContentEl);
		
		jsonObj.cinemaInfos.each(function(jsonElements,index) {
			
			//var ddEl = new Element('dd', {'class': 'dd'}).inject(dlEl);
			var ddEl = new Element('dd', {
				'class': 'dd followArrow',
				'events': {
					'click': function(e) {
						e.preventDefault();
						this.movePage(jsonElements.followLink+'?q='+jsonElements.uid,'forward');
					}.bind(this)
				}
			}).inject(dlEl);
			var innerPaddingEl = new Element('div', {'class': 'innerPadding'}).inject(ddEl);
			new Element('h3', 	{'class': 'nom','html'					:jsonElements.nom}).inject(innerPaddingEl);
			new Element('span', {'class': 'chaine','html'				:jsonElements.chaine}).inject(innerPaddingEl);
			//new Element('span', {'class': 'nomVille','html'				:jsonElements.nomVille}).inject(innerPaddingEl);
			var imgWrapEl = new Element('div',{'class':'imgWrap'}).inject(innerPaddingEl);
			if(jsonElements.acces_handicape=='oui')
				new Element('img', {'src': 'http://www.legrandecran.ca/lib/images/icones/wheel.gif'}).inject(imgWrapEl);
			if(jsonElements.malentendant=='oui')
				new Element('img', {'src': 'http://www.legrandecran.ca/lib/images/icones/ear.gif'}).inject(imgWrapEl);
			if(jsonElements.stationnement_payant=='oui')
				new Element('img', {'src': 'http://www.legrandecran.ca/lib/images/icones/parking.gif'}).inject(imgWrapEl);
			if(jsonElements.metro!='') {
				new Element('img', {'src': 'http://www.legrandecran.ca/lib/images/icones/metro.gif'}).inject(imgWrapEl);
				new Element('a', {'class':'metroLink', 'href':'#', 'html':jsonElements.metro}).inject(imgWrapEl);
			}
			new Element('span', {'class': 'horaireInline','html':jsonElements.horaire}).inject(innerPaddingEl);
			new Element('span', {'class':'adresse', 'html':'<a href="http://maps.google.com/maps?f=q&q='+jsonElements.adresseUrl+'&z=14" target="_new">'+jsonElements.adresse+'</a>'}).inject(innerPaddingEl);
			new Element('span', {'class':'adresse', 'html':jsonElements.ville}).inject(innerPaddingEl);
				
			var telEl = new Element('span', {'class':'tel', 'html':'tél.: '}).inject(innerPaddingEl);
			new Element('a',{'href':'tel:'+jsonElements.telephone, 'html':jsonElements.telephone}).inject(telEl);
		},this);
		
	},
	
	makeCinemaInfos: function(jsonObj) {
		
		var innerTopEl = new Element('div', {'class': 'innerTop'}).inject('page#'+(this.pageNum+1));
		var index = this.pageNum;
		new Element('span', {'html': jsonObj.pageTitle}).inject(innerTopEl);
		
		var innerContentEl = new Element('div', {'class': 'innerContent unCinema'}).inject('page#'+(this.pageNum+1));
		var dlEl = new Element('dl', {'class': 'dl'}).inject(innerContentEl);
		
		jsonObj.cinemaInfos.each(function(jsonElements,index) {
			var ddEl = new Element('dd', {'class': 'dd'}).inject(dlEl);
			var innerPaddingEl = new Element('div', {'class': 'innerPadding'}).inject(ddEl);
			new Element('h3', 	{'class': 'nom','html'					:jsonElements.nom}).inject(innerPaddingEl);
			new Element('span', {'class': 'chaine','html'				:jsonElements.chaine}).inject(innerPaddingEl);
			//new Element('span', {'class': 'nomVille','html'				:jsonElements.nomVille}).inject(innerPaddingEl);
			var imgWrapEl = new Element('div',{'class':'imgWrap'}).inject(innerPaddingEl);
			if(jsonElements.acces_handicape=='oui')
				new Element('img', {'src': 'http://ft1.legrandecran.ca/lib/images/icones/wheel.gif'}).inject(imgWrapEl);
			if(jsonElements.malentendant=='oui')
				new Element('img', {'src': 'http://ft1.legrandecran.ca/lib/images/icones/ear.gif'}).inject(imgWrapEl);
			if(jsonElements.stationnement_payant=='oui')
				new Element('img', {'src': 'http://ft1.legrandecran.ca/lib/images/icones/parking.gif'}).inject(imgWrapEl);
			if(jsonElements.metro!='') {
				new Element('img', {'src': 'http://ft1.legrandecran.ca/lib/images/icones/metro.gif'}).inject(imgWrapEl);
				new Element('a', {'class':'metroLink', 'href':'#', 'html':jsonElements.metro}).inject(imgWrapEl);
			}
			new Element('span', {'class':'adresse', 'html':'<a href="http://maps.google.com/maps?f=q&q='+jsonElements.adresseUrl+'&z=14" target="_new">'+jsonElements.adresse+'</a>'}).inject(innerPaddingEl);
				
			var telEl = new Element('span', {'class':'tel', 'html':'tél.: '}).inject(innerPaddingEl);
			new Element('a',{'href':'tel:'+jsonElements.telephone, 'html':jsonElements.telephone}).inject(telEl);
		},this);
		
		if(jsonObj.filmList.length>0) {
			var innerTopEl = new Element('div', {'class': 'innerTop'}).inject('page#'+(this.pageNum+1));
			var index = this.pageNum;
			new Element('span', {'html': jsonObj.filmListPageTitle}).inject(innerTopEl);
		
			var innerContentEl = new Element('div', {'class': 'innerContent'}).inject('page#'+(this.pageNum+1));
			var dlEl = new Element('dl', {'class': 'dl'+(jsonObj.pageClass=='top10'?' top10':'')}).inject(innerContentEl);
		
				jsonObj.filmList.each(function(jsonElements,index) {
					var ddEl = new Element('dd', {
						'class': 'dd followArrow num'+(index+1),
						'events': {
							'click': function(e) {
								e.preventDefault();
								this.movePage(jsonElements.followLink+'?q='+jsonElements.uid+'&l='+jsonElements.langue,'forward');
							}.bind(this)
						}
					}).inject(dlEl);
					var imgEl = new Element('img', {'src':jsonElements.img, 'class': 'img', 'width':90, 'height':131}).inject(ddEl);
					var infosEl = new Element('div', {
						'class': 'infos filmCinema',
						'href': jsonElements.followLink+'?q='+jsonElements.uid+'&l='+jsonElements.langue
					},this).inject(ddEl);
					var h3El = new Element('h3', {'class': 'h3'}).inject(infosEl);
					var aEl = new Element('a', {'class': 'a', 'href':jsonElements.followLink+'?q='+jsonElements.uid+'&l='+jsonElements.langue,'html':jsonElements.titre}).inject(h3El);
					var ratingStarsWrapEl = $('pagesWrap').getElement('.ratingStarsWrap').clone().inject(infosEl);
					ratingStarsWrapEl.getElement('.starsBg').setStyle("left",(jsonElements.rating*10)-100+'%');

					var genreEl = new Element('span', {'class': 'genre inlineInfo','html':'<strong>Genre:</strong>'+jsonElements.genre}).inject(infosEl);
					var dureeEl = new Element('span', {'class': 'duree inlineInfo','html':'<strong>Durée:</strong>'+jsonElements.duree}).inject(infosEl);

					var innerPaddingEl = new Element('div', {'class': 'innerPadding'}).inject(ddEl);
					var acteursEl = new Element('span', {'class': 'acteurs','html':jsonElements.acteurs}).inject(innerPaddingEl);
					var horaireEl = new Element('span', {'class': 'horaireInline','html':jsonElements.horaire}).inject(innerPaddingEl);
					//var dateEl = new Element('span', {'class': 'date','html':'Date de sortie: '+jsonElements.date}).inject(infosEl);
					var ddEl = new Element('div', {'class': 'clearer','html':'&nbsp;'}).inject(innerPaddingEl);
				},this);
		}
		
	},
	
	makeUL: function(jsonObj) {
		
	},
	
	loadMore: function(link,divEl) {
		
		// Load the JSON, build the DOM & inject it
		this.jsonRequest = new Request.JSON({
			url: link,
			encoding: 'iso-8859-1',
			onRequest: function() {
				this.moreLoadingDiv = new Element('div',{
					'id':'moreLoadingDiv',
					'style': 'position:absolute; z-index:99999; top:0; left:0; display:block; width:100%; height:100%; background:#000; -webkit-border-bottom-left-radius:6px; -webkit-border-bottom-right-radius:6px; opacity:0.8;'
				}).inject(divEl);
				this.loadingWheel = new Element('img',{
					'id':'loadingWheel',
					'style':'display:block; margin:18px auto 0 auto; width:32px; height:32px;',
					'src':'/lib/images/ajax-loader-apple-b.gif'
				}).inject(this.moreLoadingDiv);
			}.bind(this),
			onSuccess: function(jsonObj) {
				//this.log(jsonObj);
				
				this.moreLoadingDiv = this.moreLoadingDiv.dispose();
				
				dlEl = divEl.getParent('dl');
				var loadMoreDiv = divEl.dispose();
				
				jsonObj.array.each(function(jsonElements,index) {
					var ddEl = new Element('dd', {
						'class': 'dd followArrow num'+(index+1),
						'events': {
							'click': function(e) {
								e.preventDefault();
								this.movePage(jsonObj.followLink+'?q='+jsonElements.uid,'forward');
							}.bind(this)
						}
					}).inject(dlEl);
					var imgEl = new Element('img', {'src':jsonElements.img, 'class': 'img', 'width':90, 'height':131}).inject(ddEl);
					var infosEl = new Element('div', {
						'class': 'infos',
						'href': jsonObj.followLink+'?q='+jsonElements.uid
					},this).inject(ddEl);
					var h3El = new Element('h3', {'class': 'h3'}).inject(infosEl);
					var aEl = new Element('a', {'class': 'a', 'href':jsonObj.followLink+'?q='+jsonElements.uid,'html':jsonElements.titre}).inject(h3El);
					var ratingStarsWrapEl = $('pagesWrap').getElement('.ratingStarsWrap').clone().inject(infosEl);
					ratingStarsWrapEl.getElement('.starsBg').setStyle("left",(jsonElements.rating*10)-100+'%');
					jsonElements.acteurs = jsonElements.acteurs.truncate(90,' ','...');
					var acteursEl = new Element('span', {'class': 'acteurs','html':jsonElements.acteurs}).inject(infosEl);
					//var dateEl = new Element('span', {'class': 'date','html':'Date de sortie: '+jsonElements.date}).inject(infosEl);
					var ddEl = new Element('div', {'class': 'clearer','html':'&nbsp;'}).inject(dlEl);
				},this);
				if (jsonObj.nbFilmReste != '0'){
					var loadMoreEl = new Element('div', {'class': 'loadMore'}).inject(dlEl);
					new Element('a', {
						'href': jsonObj.moreLink+'?q='+jsonObj.pageNum,
						'html':'Les '+jsonObj.nbFilmReste+' prochaines ...',
						'events': {
							'click': function(e) {
								e.preventDefault();
								this.loadMore(jsonObj.moreLink+'?q='+jsonObj.pageNum,loadMoreEl);
							}.bind(this)
						}
					}).inject(loadMoreEl);
				}
				
			}.bind(this),
			onFailure: function(responseJSON, responseText) {
				this.fireLoadingWheel('off');
				alert("Une erreur c'est produite!\n La connexion n'as pu ce faire. \n\nVeuillez recommener.");
			}.bind(this)
		},this).get();
		
	},
	
	setLoadMoreLink: function() {
		$$('.loadMore').each(function(divEl) {
			divEl.addEvent('click',function(e) {
				e.preventDefault();
				this.loadMore(divEl.getElement('a').getProperty('href'),divEl);
			}.bind(this));
		}.bind(this));
	},
	
	fireLoadingWheel: function(action) {
		this.log('fireLoadingWheel: '+action)
		if(action=='on') {
			var pageSize = $('page#'+this.pageNum).getSize();
			this.loadingDiv.inject('page#'+this.pageNum);
			this.loadingDiv.setStyles({
				'width': pageSize.x - 16,
				'height': pageSize.y,
				'left': 8
			});
		} else {
			this.loadingDiv = this.loadingDiv.dispose();
		}
	},
	
	manageBackButton: function() {
		(this.pageNum>1) ? $('btnBack').setStyle('display','block') : $('btnBack').setStyle('display','none');
	},
	
	log: function(text) {
		if (this.options.debug && window.console) console.log(text);
	}
	
});

String.implement({
	/**
	 * String.truncate(max, atChar, trail)
	 *
	 * ++All parameters are optional.
	 * @param max = (integer) maximum length of truncated string. Defaults to 100 chars.
	 * @param atChar = (string) truncate at the last index of this string. If not found, just truncates to max length.
	 *				   If null, does not search and truncates to max length.
	 * @param trail = (string) what you want appended to the end of the returned string
	 *
	 * @author Michael Fuery, Fuery Solutions, Inc. http://www.fuerysolutions.com/
	 *
	 * +Requires MooTools Core 1.2.2
	 */
	truncate:function(max, atChar, trail){
		var s = this.trim();
		if(s.length<1) {return ''};
		if(!$defined(max)) var max = 90;
		else max = max.toInt();
		if(!$defined(atChar)) var atChar=' '; // break at space
		else if(atChar == null) var atChar=false;
		if(!$defined(trail)) var trail = '...';
		if(s.length > max) {
			var i=0;
			s = s.slice(0,max);
			if(atChar){
				if((i = s.lastIndexOf(atChar)) != -1){
					s = s.substring(0, i);
				}else{
					s = s.substring(0, max);
				}
			}
			s += trail;
		}
		return s;
	}
});