/**************************************************************************************************/
/***************************                          CONFIGURAZIONE                         ******************************/
/**************************************************************************************************/
var tempo_rotazione_scroller=4000;  				//  tempo di rotazione degli scroller in millisecondi
var tempo_rotazione_scroller_small=2000;			//  tempo di rotazione degli scroller di secondo livello in millisecondi
var tempo_refresh=300000;						//  tempo di refresh delle informazioni in millisecondi
var imgPath = "/static/images/sezioni/";
var xmlFilePath = "/static/application/ticker/roller.xml";
/**************************************************************************************************/
var tickerCurrentTab=1;
var tickerTabNumber=-1;
var smallScrollersData=new Array();
var scrollers=new Array();
var timeoutIds=new Array();
function getTickerItemHTML(dati,idStr){
	var ret='',str,strAnd;
	var goalSize,goalSetNum,goalSize1,goalSize2;
	var i,j,k;
	var cont,goals,goalsAnd,conts,obj;
	var info_1,info_2;
	var tdParziale1,tdParziale2;
	
	retObj=new Object();
	retObj.smallScrollersIds=new Array();
	retObj.smallScrollersData=new Object();
	
	if ($(dati).attr('info_1')!=null && $(dati).attr('info_1')=='Parziale'){
		tdParziale1='<td class="td20">&nbsp;&nbsp;(Risultato&nbsp;parziale)</td>\n';
		tdParziale2='<td class="td20">&nbsp;</td>\n';
	} else {
		tdParziale1='';
		tdParziale2='';
	}
	
	// Casi 1 e 2
	if ($(dati).attr('layout')=='Scores'){
		ret+='<div class="ticker_caso_1">\n';
		ret+='<table>\n';
		
		// determino il massimo del numero dei gol delle due squadre
		goalSize1=$(dati).find('event[row=1]').size();
		goalSize2=$(dati).find('event[row=2]').size();
		if (goalSize1>goalSize2)
			goalSize=goalSize1;
		else
			goalSize=goalSize2;
		// determino il numero di righe di 4 goal
		goalSetNum=(goalSize - (goalSize % 4))/4;
		if ((goalSize % 4)>0)
			goalSetNum++;
		
		ret+=getTickerItemHTML_riga(dati,1,'home',idStr,retObj,tdParziale1,goalSetNum,goalSize);
		ret+=getTickerItemHTML_riga(dati,2,'away',idStr,retObj,tdParziale2,goalSetNum,goalSize);
		
		ret+='</table>'
		ret+='</div>\n';
	}
	// Caso 3
	if ($(dati).attr('layout')=='Sets'){
		if ($(dati).attr('info_1')!=null)
			info_1=$(dati).attr('info_1');
		else
			info_1='';
		if ($(dati).attr('info_2')!=null)
			info_2=$(dati).attr('info_2');
		else
			info_2='';
		ret+='<div class="ticker_caso_3">\n';
		ret+='<table>\n';
		ret+='	<tr>\n';
		if (info_1!='' || info_2!=''){
			ret+='		<td class="ticker_titolo">'+info_1+'</td>\n';
			ret+='		<td class="td20">&nbsp;</td>\n';
		}
		ret+='		<td class="ticker_titolo">'+$(dati).find('home').text()+'</td>\n';
		ret+='		<td class="td10">&nbsp;</td>\n';
		ret+='		<td class="ticker_titolo">'+$(dati).find('home').attr('score')+'</td>\n';
		ret+='		<td class="td15">&nbsp;</td>\n';
		ret+='		<td>\n';
		str='';
		$(dati).find('event[type^=Home Score Set]').each(function(){
			str+='<div class="ticker_risultatiSet">'+$(this).text()+'</div>\n';
		});			
		ret+=str;
		ret+='		</td>\n';
		ret+=tdParziale1;
		ret+='	</tr>\n';
		ret+='	<tr>\n';
		if (info_1!='' || info_2!=''){
			ret+='		<td class="ticker_titolo">'+info_2+'</td>\n';
			ret+='		<td class="td20">&nbsp;</td>\n';
		}
		ret+='		<td class="ticker_titolo">'+$(dati).find('away').text()+'</td>\n';
		ret+='		<td class="td10">&nbsp;</td>\n';
		ret+='		<td class="ticker_titolo">'+$(dati).find('away').attr('score')+'</td>\n';
		ret+='		<td class="td15">&nbsp;</td>\n';
		ret+='		<td>\n';
		str='';
		$(dati).find('event[type^=Away Score Set]').each(function(){
			str+='<div class="ticker_risultatiSet">'+$(this).text()+'</div>\n';
		});			
		ret+=str;
		ret+='		</td>\n';
		ret+=tdParziale2;
		ret+='	</tr>\n';
		ret+='</table>';
		ret+='</div>\n';
	}
	// Caso 4
	if ($(dati).attr('layout')=='News'){
		ret+='<div class="ticker_caso_4">\n';
		ret+='<table>\n';
		ret+='	<tr>\n';
		ret+='		<td class="ticker_titolo">'+$(dati).find('header').text()+'</td>\n';
		ret+=tdParziale1;
		ret+='	</tr>\n';
		ret+='	<tr>\n';
		ret+='		<td class="ticker_desc">'+$(dati).find('body').text()+'</td>\n';
		ret+=tdParziale2;
		ret+='	</tr>\n';
		ret+='</table>';
		ret+='</div>\n';
	}
	
	retObj.html=ret;
	
	return retObj;
}

function getTickerItemHTML_riga(dati,numRiga,nomeRiga,idStr,retObj,tdParziale,goalSetNumMax,goalSizeMax){
	var ret='',str,strAnd;
	var goalSize,goalSetNum;
	var i,j,k;
	var cont,goals,goalsAnd,conts,obj;
	var info_1,info_2;
	
	ret+='  <tr>\n';
	ret+='		<td class="ticker_titolo">'+$(dati).find(nomeRiga).text()+'</td>\n';
	ret+='		<td class="td10">&nbsp;</td>\n';
	ret+='		<td class="ticker_titolo">'+$(dati).find(nomeRiga).attr('score')+'</td>\n';
	ret+='		<td class="td20">&nbsp;</td>\n';
	// se in questa riga o nell'altra ci sono pił di 4 gol devo inserire un nuovo scroller...
	goalSize=$(dati).find('event[row='+numRiga+']').size();
	//if (goalSize>4) {
	if (goalSetNumMax>1) {
		goalSetNum=(goalSize - (goalSize % 4))/4;
		if ((goalSize % 4)>0)
			goalSetNum++;
		//... creo il div che conterrą lo small scroller
		//console.log("CREO SMALL SCROLLER: "+idStr);
		str='<div class="ticker_scrollerSmall" id="scrollerSmall'+idStr+'_'+(numRiga-1)+'">\n';
		k=0;
		//... creo l'array con i contenuti dello small scroller
		cont=new Array();
		//... e lo riempio con righe di 4 segnature o meno
		//for(i=0;i<goalSetNum;i++){
		for(i=0;i<goalSetNumMax;i++){
			goals='';
			goalsAnd='';
			//for(j=0;j<4 && k<goalSize;j++){
			for(j=0;j<4 && k<goalSizeMax;j++){
				//console.log('--->['+k+']('+$(dati).find('event[row='+numRiga+']:eq('+k+')').size()+')'+$(dati).find('event[row='+numRiga+']:eq('+k+')').text());
				if ($(dati).find('event[row='+numRiga+']:eq('+k+')').size()>0){
					goals+=goalsAnd+$(dati).find('event[row='+numRiga+']:eq('+k+')').text();
					goalsAnd=', ';
				}
				k++;
			}
			cont.push('<p>'+goals+'</p>');
		}
		//... inserisco nella lista degli array di contenuti degli small scrollers quello appena creato
		retObj.smallScrollersData['scrollerSmall'+idStr+'_'+(numRiga-1)]=cont;
		//... inserisco l'id dello small scroller nella lista
		retObj.smallScrollersIds.push('scrollerSmall'+idStr+'_'+(numRiga-1));
		str+='</div>\n';
	} else {
	// altrimenti riporto solo i goal separati da virgola
		str='';
		strAnd='';
		$(dati).find('event[row='+numRiga+']').each(function(){
			str+=strAnd+$(this).text();
			strAnd=', ';
		});
	}
	ret+='		<td class="ticker_goal">'+str+'</td>\n';
	ret+=tdParziale;
	ret+='	</tr>\n';
	
	return ret;
}

function popolaSlider(){
	var panelContainer,sliderWrap;
	var loadingHtml;
	
	sliderWrap=jQuery("div.ticker_slider-wrap");
	// 1) preparo l'ambiente ad un nuovo ticker
	svuota();
	// 2) visualizzo messaggio di loading
	loadingHtml='<div id="slider1" class="ticker_csw">\n';
	loadingHtml+='<div class="ticker_panelContainer">\n';
	loadingHtml+='<div class="ticker_loading">\n';
	loadingHtml+='<div style="width:65px;">\n';
	loadingHtml+='<span style="float:left;">Loading...</span>\n';
	loadingHtml+='<span style="float:left;"><img src="'+imgPath+'ajax-loader.gif" alt="loading..." /></span>\n';
	loadingHtml+='</div>\n';
	loadingHtml+='</div>\n';
	loadingHtml+='</div>\n';
	loadingHtml+='</div>\n';	
	sliderWrap.html(loadingHtml);	
	
	panelContainer=jQuery("div.ticker_panelContainer");
	var d = new Date();
	var t = d.getTime();
	
	// <div class="panel" title="SERIE A B0">
	//	<div class="ticker_wrapper">
	//		<div class="caso_1">
	// 3) carico l'XML con i dati e creo tutti gli oggetti/elementi necessari
	$.ajax({
		type: "GET",
	   	url: xmlFilePath+"?seed="+t,
	   	dataType: "xml",
	   	success: function(xml){
	   		var currCategory='';
	   		var ii=0,jj=0,j;
	   		var pausecontents=new Array();
	   		var itemHtml,obj;
	   		var div,contenuti,scrollersId,divNew;
	   		panelContainer.empty();
	   		// Ciclo su tutti gli elementi "data" del file xml
		    	$(xml).find('data').each(function(indice){
		    		var newDiv,newDiv2;
		    		var scroller;
		    		var pausecontent;
		    		var scrollersId,div,contenuti,scroller;
		    		// se si tratta di una nuova categoria ...
		    		if (currCategory!=$(this).attr('category')){
		    			//... creo il div che costituirą il panel di questa categoria
		    			newDiv=document.createElement('div');
		    			$(newDiv).addClass('ticker_panel');
		    			$(newDiv).attr('title',$(this).attr('category'));
		    			newDiv2=document.createElement('div');
		    			$(newDiv2).addClass('ticker_wrapper');
		    			newDiv2.onfocus=function(){this.blur()};
		    			$(newDiv).append(newDiv2);
		    			//... e lo appendo al panelcontainer
		     			panelContainer.append(newDiv);
		     			//... creo l'array che conterrą i contenuti del panel
		     			pausecontent=new Array();
		     			//... creo lo scroller che farą "girare" i contenuti passandogli un array vuoto --> sarą settato correttamente dopo
					scroller=new pausescroller(newDiv2,pausecontent, "pscroller"+ii, "ticker_scrollerBig", tempo_rotazione_scroller);
					//... inserisco lo scroller nella lista di quelli che saranno successivamente inizializzati
					scrollers.push(scroller);
		     			//... inserisco l'array dei contenuti nell'apposita lista da cui saranno prelevati successivamente per inizializzare opportunamente gli scroller
		     			pausecontents[ii]=pausecontent;
		     			jj=0;
		     			
		     			currCategory=$(this).attr('category');
		     			ii++;
	     			}
	     			// per ogni elemento "data" ottengo l'html ed, eventualmente, i dati del sottoscroller dei marcatori
	     			itemHtml=getTickerItemHTML(this,(ii-1)+'_'+jj);
	     			pausecontents[ii-1][jj]=itemHtml.html;
	     			// se l'item inserito ha degli small scrollers li memorizzo per poi inizializzarli opportunamente
	     			if (itemHtml.smallScrollersIds.length>0) {
	     				//console.log("L'Item "+ii+'-'+jj+" contiene small scrollers:"+itemHtml.smallScrollersIds);
	     				obj=new Object();
	     				obj.smallScrollersIds=itemHtml.smallScrollersIds;
	     				obj.smallScrollersData=itemHtml.smallScrollersData;
	     				smallScrollersData.push(obj);
	     			}
	     			jj++;
		    	});//chiusura each data
		    	tickerTabNumber=scrollers.length;
		    	// Inizializzo gli scroller Big
		    	for(jj=0;jj<scrollers.length;jj++){
		    		scrollers[jj].content=pausecontents[jj];
		    		scrollers[jj].initialize();
		    		scrollers[jj].daVedere=scrollers[jj].content.length;
		    	}
		    	scrollers[0].daVedere=scrollers[0].content.length-1;
		    	// Inizializzo gli scroller small
		    	for(i=0;i<smallScrollersData.length;i++){
		    		for(j=0;j<smallScrollersData[i].smallScrollersIds.length;j++){
		    			scrollersId=smallScrollersData[i].smallScrollersIds[j];
		    			div=$("#"+scrollersId);
		    			contenuti=smallScrollersData[i].smallScrollersData[scrollersId];
		    			scroller=new pausescroller(div,contenuti, "pscroller"+scrollersId, "ticker_scrollerSmall", tempo_rotazione_scroller_small);
		    			scroller.initialize(scrollersId);
		    		}
		    	}

	    		jQuery("div#slider1").codaSlider();
	   	}
	});
	// 4) triggero il ripopolamento
	setTimeout(function(){popolaSlider()}, tempo_refresh);
}

// elimina ogni elemento/oggetto legato al ticker
function svuota(){
	var panelContainer,sliderWrap;
	var i;
	// svuota il div contenitore del ticker
	sliderWrap=jQuery("div.ticker_slider-wrap");
	sliderWrap.empty();
	// elimina gli scrollers
	for(i=0; i<scrollers.length;i++){
		scrollers[i]=null;
	}
	// elimina i timeout ancora attivi
	for(i=0; i<timeoutIds.length;i++)
		clearTimeout(timeoutIds[i]);
	scrollers=new Array();
	timeoutIds=new Array();
	smallScrollersData=new Array();
	tickerCurrentTab=1;
	tickerTabNumber=-1;
	codaSliderVarJ=0;
}

