/*

AUTEUR: BRovito  
DATE: 2008-11-19
NOTES: requiert js Mootools (version 1.2.1 ou plus) [ voir: /lib/v3/inc/head.html ] 
       requiert js Console Audio-Video 
*/


//window.addEvent('load', function() { /// mootools
oSrc.addOnLoad( function() { /// objet oSrc
	oBax.embedConsole();
	oBax.getList( oBax.getInitListIndex() );
	oBax.setInitListIdPrefix( oBax.getInitListIndex() );
	oBax.setInitMediaLI( oBax.getInitListIndex() );
	oBax.truncListTitle();
});



var Class_Bax = new Class({
	
/*// PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/ */ 
/*// \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/ */ 
/*// \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/*/ 
		isPageTest : (document.location.href.indexOf('lib/bax/v1/test')!=-1)?1:0,
		
		isUseTrace : 0, /// debugger
		
		isInit : 1, /*// voir this.getListe() */
		
		isDefaultExtrait : 0, /*// voir this.setInitListIndex() */
		
		sTabIdPrefix : "BaxTab",
		sConsoleId : "BaxConsoleInst",
		aListUrl: null/*["", "/ppage3/lib/v3.1/inc/bax/001-_test_bax_aujourdhui.shtml",
						"/ppage3/lib/v3.1/inc/bax/endirect.inc",
						"/ppage3/lib/v3.1/inc/bax/001-_test_bax_integrales.shtml",
						"/ppage3/lib/v3.1/inc/bax/top10.inc"]*/,  /*// defaut */
		sCurrTabId : null,
		nCurrListIndex : null,
		sCurrListId : null,
		nCurrMediaLI: null,  /*// defaut */
		sStatsId : "", /*// modifiée dans getList_viaCSS() */
		
		nInitListIndex : 1,  /*// defaut */
		aInitConsoleParams : new Array(),
	
	initialize: function(){
		},
		

/*// PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/  */ 
/*// \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/ */ 
/*// \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/*/ 

	setInitConsoleParams : function(_sUrlMedia, _sUrlTeaser, _sTxtTeaser, _sListIdPrefix, _sNote, _nPositionLI){ 
			
			var _o = {"urlMedia":_sUrlMedia,"urlTeaser":_sUrlTeaser,"txtTeaser":_sTxtTeaser,"listIdPrefix":_sListIdPrefix, "note":_sNote, "positionLI":((_nPositionLI==undefined)?1:_nPositionLI)}
			
			this.aInitConsoleParams.push(_o);
			//alert("aInitConsoleParams - index " + (this.aInitConsoleParams.length-1) + ": " + this.aInitConsoleParams[this.aInitConsoleParams.length-1].note);
			
			
		},

	setArrayUrlList: function(_aUrl)	{
			if(aListUrl==null) this.aListUrl = _aUrl;
		},
	
	setInitListIndex: function(_nListIndex /*position de la liste(onglet) dans la BAX  si on utilise this.getList_ViaCss(), ou l'index dans this.aListUrl si on utilise this.getList_ViaAjax()*/){ /// cette méthode est appelée par le fichier "config" d'une BAX [voir baxModDocDefaut.xsl et l'exemple :/nouvelles/bax/2008/11/17/003-ppage-config.shtml]
				_nListIndex = parseInt(_nListIndex);
				
				if ( (_nListIndex==0 /* [voir: baxModDocDefaut.xsl] */ ) && (this.aInitConsoleParams[0].note.indexOf("[zone:@@@]")== -1) ) { /// si on veut forcer/afficher l'extrait dans l'index 0 du tableau this.aInitConsoleParams [voir /lib/bax/bax.asp], si non, on prend le premier extrait de la liste choisi dans le fichier config de la BAX [voir baxModDocDefaut.xsl et l'exemple:/nouvelles/bax/2008/11/17/003-ppage-config.shtml]
					this.isDefaultExtrait=1; // mettre en commentaire pour l'instant (phase 1 de la BAX)
				}else if (_nListIndex>=1 && _nListIndex<=4){ // parceque, pour l'instant, on peut afficher que 4 onglet max.
					this.nInitListIndex = _nListIndex;
				}
		},
		
	getInitListIndex : function(){
			return this.nInitListIndex;
		},
		
		
	setInitListIdPrefix : function (_nListIndex){
			this.sCurrListId =  this.aInitConsoleParams[ _nListIndex ].listIdPrefix;
		},
	setInitMediaLI : function (_nListIndex){
			if ( !this.isDefaultExtrait ){ 
				this.setMediaLI( this.sCurrListId+"LI_", this.aInitConsoleParams[ _nListIndex ].positionLI );
			}
		},
		
	getList : function(_nListIndex /*position de a liste(onglet) dans la BAX  si on utilise this.getList_ViaCss(), ou l'index dans this.aListUrl si on utilise this.getList_ViaAjax()*/){
			this.trace("----------- [DéBUT] getList() -> "+this.nCurrListIndex + " -----------");
			this.trace("isInit (liste): " + this.isInit);
			
			if( this.nCurrListIndex!=_nListIndex || this.nCurrListIndex==null){
				this.nCurrListIndex = _nListIndex;
				this.getList_ViaCss();
				//this.getList_ViaAjax();
			}
			
			this.isInit=0;
			this.trace("isInit (liste): " + this.isInit);
			this.trace("----------- [FIN] getList() ----------------------");
			return false;
		},
		
	getPage : function ( _nDirection, _sListIdPrefix,_nTotalPages, _isReset){
		/// NOTE: il y\a un max. de 14 pages par liste ( max.40 parListe / min.3 parPage = 13.1, donc, 14) [voir: déclaration de width pour la class div.list dans bax.css]
			var myScrollFx = new Fx.Scroll(_sListIdPrefix , {duration:300});
			var _nNewBtn;
			var _nOldBtn;
			var _nNewPage;
			var _nOldPage;
			var _sCustomProp = "currpage";
			var _nCurrPage = parseInt( $(_sListIdPrefix).getProperty(_sCustomProp) );
			var _nPageW = 300; /// [voir déclaration width de la classe ul.pageX dans bax.css]

			
			if (_nDirection == -1){ /// reset /* voir appel à getPage() dans getList_ViaCss() */
				/*_nOldBtn = 1;
				_nNewBtn = 2;
				_nOldPage = _nCurrPage; 
				_nNewPage = 1; */
			}else if (_nDirection == 1){ /// précédent
				_nOldBtn = (_nCurrPage==2) ? 1 : -1;
				_nNewBtn = (_nCurrPage==_nTotalPages) ? 2 : -1;
				_nOldPage = (_nCurrPage>1) ? (_nCurrPage) : -1; 
				_nNewPage = (_nCurrPage>1) ? (_nCurrPage-1) : 1; 
				
				/// stats
		    	this.CT( "Lien_audiovideo_precedent" );
				
			}else if (_nDirection == 2){ /// suivant
				_nOldBtn =(_nCurrPage==(_nTotalPages-1)) ? 2 : -1;
				_nNewBtn = (_nCurrPage==1) ? 1 : -1;
				_nOldPage = (_nCurrPage<_nTotalPages) ? _nCurrPage : -1; 
				_nNewPage = (_nCurrPage<_nTotalPages) ? (_nCurrPage+1) : _nTotalPages; 
				
				/// stats
		    	this.CT( "Lien_audiovideo_suivant" );
			}
			
			if (_nOldPage!=-1) $(_sListIdPrefix).setProperty(_sCustomProp, _nNewPage);
			
			this.trace( "getPage() -> page " +_nNewPage + " de " + _nTotalPages + " [ancienne page=" + _nOldPage + "]"  );	
	
	
			/// ancien bouton 
				if (_nOldBtn != -1){
					var _btn = $(_sListIdPrefix +_nOldBtn+"_Btn"); 
					this.toggleClassActif(_btn,false);
				}
			/// nouveau bouton 
				if (_nNewBtn != -1){
					_btn = $(_sListIdPrefix + _nNewBtn +"_Btn");
					this.toggleClassActif(_btn);
				}
			///ancienne et nouvelle page	
				if( this.isPageTest ){
				}else{
					if (_nOldPage!=-1){
						if(_isReset){ /* voir appel à getPage() dans getList_ViaCss() */
						  /*	
							this.trace("getPage() -> reset");
							myScrollFx.parentScope = this; /// add custom prop to obj
							myScrollFx.addEvent('complete', function(){ 
								this.parentScope.resetCurrList();
								this.parentScope.doGetList_ViaCss();
							});
							myScrollFx.toLeft();
							*/
						}else{
						/// animation : version 1 -> show/hide
							/*
							$(_sListIdPrefix+ _nOldPage).style.display= "none"; 
							$(_sListIdPrefix+ _nNewPage).style.display="block";
							*/
						/// animation : version 2 ->  slide gauche/droite
							if(_nDirection==2){
								var nCalculation = (_nPageW*_nOldPage);
								myScrollFx.start(nCalculation,0);
								this.trace("getPage() -> toRight() : " + nCalculation  );
							}else if(_nDirection==1){
								var nCalculation =  (_nOldPage==2) ? 0 : (_nPageW*_nNewPage)-_nPageW ;
								myScrollFx.start( nCalculation, 0);
								this.trace("getPage() -> toLeft() : " +  nCalculation );
							}
						}
					}
				}
				
		},
		
	getMedia : function(_sMediaLIIdPrefix, _nPosition, _sUrlMedia ){
			/// état LI
				this.setMediaLI(_sMediaLIIdPrefix, _nPosition); 
			/// code console
				callFromObj(this.sConsoleId, null, 'pause'); 
				callFromObj(this.sConsoleId, null, 'changeMedia', {urlMedia: _sUrlMedia}); 
			/// stats
		    	this.CT( this.sStatsId + "_lien" + _nPosition );/// aller chercher le class name du <li> (parentNode du <a>)
		},
		
/*// PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/ */ 
/*// \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/ */ 
/*// \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/*/ 
	CT : function(clicAction){
		
		/// statsToClics() dans global_x.x.js
			var strProfil = "";
			var strUrl = document.location.href.toString().toLowerCase();
			if ((strUrl=="http://www.radio-canada.ca") || (strUrl=="http://www.radio-canada.ca/") || (strUrl=="http://www.radio-canada.ca/index.shtml")) {
				strProfil = 'Clics_Ppage'
			}else if ((strUrl=="http://beta.radio-canada.ca") || (strUrl=="http://beta.radio-canada.ca/") || (strUrl=="http://beta.radio-canada.ca/index.shtml")){
			 	strProfil = 'Clics_Ppage_beta'
			}else if ((strUrl.indexOf("/nouvelles/index.shtml") != -1) || (strUrl.indexOf("/nouvelles/") == strUrl.length - 11) || (strUrl.indexOf("/lib/v1/inc/ticker/nouvelles.html") != -1)) {
				strProfil = "PA_nouvelles";
			}else if((strUrl.indexOf("/sports/index.shtml") != -1) || (strUrl.indexOf("/sports/") == strUrl.length - 8) || (strUrl.indexOf("/lib/v1/inc/ticker/sports.html") != -1)) {
				strProfil = "PA_sport";
			}else if((strUrl.indexOf("/arts-spectacles/index.shtml") != -1) || (strUrl.indexOf("/arts-spectacles/") == strUrl.length - 17) || (strUrl.indexOf("/lib/v1/inc/ticker/arts-spectacles.html") != -1)) {
				strProfil = "PA_arts";
			}else{
				///
			}
			
			this.trace("CT() -> clicAction = " + clicAction);
			
			if (strUrl.indexOf("sports/hockey") == -1) {
				statsToClics(
					'clic_action', clicAction, 
					'WT.ti', clicAction, 
					'WT.clic', strProfil 
					);
			}
		},
		
	trace : function(_s){
		if(this.isUseTrace)  oSrc.alert("BAX", _s);
	},
	
	
	toggleClassActif : function(_o, isActif ){
			if ($defined(_o)) {
				if (isActif == false){	
					_o.className = "a";
				}else{	
					_o.className =  "actif";
				}
			}
		},
		
	setMediaLI : function(_sMediaLIIdPrefix, _nPosition){
			var _sLIIdSuffix = "LI_";
			if (_sMediaLIIdPrefix!=null){
				/// ancien LI 
				if (this.nCurrMediaLI!=null){
					var _li = $( this.sCurrListId + _sLIIdSuffix + this.nCurrMediaLI ); 
					this.toggleClassActif(_li,false);
					this.trace("setMediaLI() -> ancien media LI = "  + this.sCurrListId + _sLIIdSuffix +  this.nCurrMediaLI);
				}else{
					this.trace("setMediaLI() -> ancien media LI = null");
				}
				
				/// nouveau LI 
					_li = $( _sMediaLIIdPrefix+(_nPosition.toString()) );
					this.toggleClassActif(_li);
				    this.trace("setMediaLI() -> nouveau media LI = " + _sMediaLIIdPrefix+_nPosition );
				
				/// vars
					this.nCurrMediaLI= _nPosition;
					this.sCurrListId= _sMediaLIIdPrefix.split( _sLIIdSuffix )[0];
			}
		},
	
	getList_ViaAjax: function(){
			if ( this.aListUrl!=null && (this.aListUrl instanceof Array) ){
				/// mootools
				var _oAjax = new Request({
								method: 'get', 
								url: this.aListUrl[ parseInt(this.nCurrListIndex) ], 
								headers: {'Accept': 'text/javascript, text/html, application/xml, text/xml,*/*'},
								encoding: "utf-8",
								onSuccess :  function(responseText, responseXML){ 
												/// nouvelle liste
													$("BaxLists").innerHTML = responseText;
											}
								});
					_oAjax.send();
			/// vars
				/// à faire [voir: doGetList_ViaCss]
			/// nouveau onglet / nouvelle liste
				/// à faire [voir: doGetList_ViaCss]
			/// stats
				/// à faire [voir: doGetList_ViaCss]
			}
		},
	resetCurrList : function(){
			this.toggleClassActif( $(this.sCurrTabId) , false);
			$(this.sCurrTabId+"_List").style.display = "none";
		},
		
	doGetList_ViaCss : function(_isInit){
		/// vars
			this.sCurrTabId = this.sTabIdPrefix + this.nCurrListIndex;
			this.trace("doGetList_ViaCss() -> sCurrTabId = " + this.sCurrTabId);
		/// nouveau onglet / nouvelle liste	
			this.toggleClassActif( $(this.sCurrTabId) );
			$(this.sCurrTabId+"_List").style.display = "block";
		
		/// stats
		   this.sStatsId = "Audio-vidéo_" + $(this.sCurrTabId).getParent().className;
		   if ( !this.isInit){
		   	this.CT( this.sStatsId );/// aller chercher le class name du <li> (parentNode du <a>)
		   }
		},
	
	getList_ViaCss : function(){
			/// ancien onglet / ancienne liste
			if(this.sCurrTabId!=null){
				this.trace("getList_ViaCss() -> RESET ancienne liste : "+ this.sCurrTabId);
					
					
					//this.getPage(-1,this.sCurrListId, 1, true); /// use transition to reset to page 1
					/// on appel getPage() ou les deux mthodes qui suivent:
					this.resetCurrList();
					this.doGetList_ViaCss();
				
			}else{
				this.trace("getList_ViaCss() -> ancienne List = null" );
				this.doGetList_ViaCss();
			}
			
		},

	embedConsole : function(){ 
			var _oInit = this.aInitConsoleParams[ ((this.isDefaultExtrait)?0:this.nInitListIndex) ];
			if (_oInit.urlMedia!=""){
				$('BaxConsole').innerHTML = srcAV_get(
						{
							idExt : this.sConsoleId,
							urlMedia : _oInit.urlMedia, ///String du ou des médias à jouer. Peut en contenir plusieurs, séparer par des virgule
							urlTeaser : _oInit.urlTeaser,  /// Si autoStart est à False, mettre ici le path d'un image qui sera présent avant que le clip commence. C'est image ne doit pas contenir de bouton play, il sera ajouter automatiquement par la console
							txtTeaser : _oInit.txtTeaser,  /// Si autoStart est à False, mettre ici le path d'un image qui sera présent avant que le clip commence. C'est image ne doit pas contenir de bouton play, il sera ajouter automatiquement par la console
							data : false, ///Est-ce que le block Data en dessous du clip est présent?
							autoStart : false, ///Est-ce que le clip part au chargement de la page?
							updateHistory : false, 
							showTeaserFin : false, 
							lang : "fr", /// Pour mettre ne anglais : en pour français ne pas metre ce param ou bien mettre fr
							GUI : "embedSrcMini",
							isTransparent:true,
							isLight: true /// pour avoir que version "streamlined" du player (image teaser initiale sans barre de contrôles ni l'entête "audio-vidéo")
						}
					);
			} /// code console
			$('BaxConsole').innerHTML += _oInit.note;	
		},
		
	truncListTitle : function(){ ///trunc le titre au 100 characteres
		$$("#BaxLists a").each(function(oElem,i){
			var s = oElem.innerHTML;
			if (s.length>100){
				s=s.substr(0,100);
				s = s.substr(0,s.length -  s.split("").reverse().join("").indexOf(" ")-1);
				oElem.innerHTML=s.substr(0,s.length-1)+s.substr(s.length-1,1).replace(",","").replace("-","").replace(":","").replace(".","")+"...";
			}
		});
	},
	
	getFAQ : function(){
		oSrc.popup('http://www.radio-canada.ca/apropos/aide/faq/aide_rep.asp?IDQuestion=109&IDSection=6', 'SRC_AV', 'toolbar=no,location=yes,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=800,height=400');
	}
	
});

var oBax = new Class_Bax();