/**
 * @author Diego
 */
var blocchiSuPagina = Array();
var iterazioni = 99;

_.extend('gestioneBlocchi', {
	startup: function(){
		var items = _._class('welcome-block-item', 'rss-container', 'div');
		for(var i = 0; i<items.length; i++) blocchiSuPagina.push(items[i].id);
		iterazioni = blocchiSuPagina.length - 1;
	}
});

function decodificaDimensioneBlocco(sz){
	switch(sz){
		case 'S': return 'rss-items-small';
		case 'M': return 'rss-items-medium';
		case 'L': return 'rss-items-big';
		case 'B': return 'rss-items-biggest';
	}
}
	
function blocchiToObjects(count){

	// Leggo cosa è stao attribuito come classe all'elemento
	for(var i=0; i< blocchiSuPagina.length; i++){
		if(blocchiSuPagina[i] !=''){
			var _id = blocchiSuPagina[i];
			var c = 'B';
			if(_.DOM.hasClass(_id, 'rss-items-big')) c='L';
			if(_.DOM.hasClass(_id, 'rss-items-medium')) c='M';
			if(_.DOM.hasClass(_id, 'rss-items-small')) c='S';
			
			blocchiSuPagina[i] = { id: _id, size: c };
		}else{
			blocchiSuPagina[i] = null;
		}
	}
	
	blocchiSuPagina = _.Array.purge(blocchiSuPagina);
}
	
function definisciSequenzaBlocchi(){
	/*
	 Definisco la distribuzione degli elementi secondo questo schema:

	 	B = L+S = S+L = M+M= S+S+S
	
			B = Biggest
			L = Large
			M = Medium
			S = Small
	*/
	var sequenza = '';
	var lastBlocco = null;
	var blocco = null;	 
	var bloccoPrec = null;
	for(var i=0; i<blocchiSuPagina.length; i++){
		bloccoPrec = blocco; 
		blocco = blocchiSuPagina[i];
		sequenza += blocco.size;
		switch(sequenza){
			case 'LL':
				if(bloccoPrec!=null){
					// Converto il primo in biggest e riparto dal successivo
					bloccoPrec.size ='B';
					sequenza = '';
					i=i-1;
				}
				break;
			case 'LS':
			case 'SL':
			case 'SSS':
			case 'MM': 
			case 'B':
				// Sono i casi corretti
				sequenza = '';
				break;
			case 'MS':
				// Se c'è un blocco Medium + Small lo small diventa medium
				blocco.size ='M';
			case 'SM':
				if(bloccoPrec!=null){
					
					// Se c'è un blocco Small + Medium lo small diventa medium
					bloccoPrec.size ='M';
					sequenza = '';
				}
				break;
			case 'SSM':
			case 'SSB':
			case 'SSL':
				// Sono casi antipatici
				blocchiSuPagina[i-2].size = 'M';
				blocchiSuPagina[i-1].size = 'M';
				i = i-1;
				sequenza = '';
				break;
			case 'LM':
			case 'ML':
			case 'MB':
				blocchiSuPagina[i-1].size='B';
				sequenza = '';
				i = i -1;
				break;
		} 
	}
	
	if(sequenza=='SS' || sequenza == 'SM' || sequenza == 'MS'){
		bloccoPrec.size = 'M';
		blocco.size = 'M';
	}
	if(sequenza.length==1) blocco.size = 'B';
	
}

function aggiungiSpan(dopoId, dimensioneUltimoBlocco){
	// Devo aggiungere uno span di separazione
	var span = _.DOM.createOnDocument('span', null, dopoId);
	_.DOM.appendClass(span, 'empty-clear-row');
	if (dimensioneUltimoBlocco == 'B'){ 
		_.DOM.setStyle(dopoId, {
			height: 'auto'
		});
		
		var e = _._class('rss-info', dopoId)[0];
		_.DOM.setStyle(e, {
			height: 'auto'
		});
	}
		

}

function adattaBlocchi(count){
	blocchiToObjects(count);
	definisciSequenzaBlocchi();
	
	var sequenza = '';
	for(var i=0; i<blocchiSuPagina.length; i++){
		var blocco =blocchiSuPagina[i];
		sequenza += blocco.size;
		_.DOM.removeClass(blocco.id, decodificaDimensioneBlocco('S'));
		_.DOM.removeClass(blocco.id, decodificaDimensioneBlocco('M'));
		_.DOM.removeClass(blocco.id, decodificaDimensioneBlocco('L'));
		_.DOM.removeClass(blocco.id, decodificaDimensioneBlocco('B'));
		
		_.DOM.appendClass(blocco.id, decodificaDimensioneBlocco(blocco.size));
		if(sequenza == 'B' || sequenza =='LS' || sequenza == 'SL' || sequenza == 'MM' || sequenza == 'SSS'){
			aggiungiSpan(blocco.id,blocco.size);
			sequenza = '';
		}
	}
	if(sequenza == 'B' || sequenza =='LS' || sequenza == 'SL' || sequenza == 'MM' || sequenza == 'SSS'){
		aggiungiSpan(blocco.id,blocco.size);
		sequenza = '';
	}
	
}

function disponiBlocchi(id, count){
	if(count==0 && _.rssReader._rss[id].hideIfEmpty){
		for(var i=0; i<blocchiSuPagina.length; i++)
			if(blocchiSuPagina[i]==id) blocchiSuPagina[i]= '';
	} 

	iterazioni -= 1;
	if(iterazioni == 0){
		
		var elementiVisibili=0;
		for(var i=0; i<blocchiSuPagina.length; i++)
			if(blocchiSuPagina[i]!=''){
				elementiVisibili+=1;
			}
		adattaBlocchi(elementiVisibili);
		if(_.DOM.hasClass('welcome-gallery', 'rss-items-biggest')){
			// Cambio e metto 8 immagini per pagina
			
			_.rssReader._rss['welcome-gallery'].itemsPerPage = 8;
			_.rssReader.readPage('welcome-gallery', 1);
			_.DOM.setStyle('gallery-info', {width: '605px'});
		}
		_.Tooltips.startup();
	}
}
