/* searchDateFilter Graph functions */

// Maximum d'une année
function getMaxforMonths(months, nbMonths) {
  var month = months[0];
  var Max = month.value;
  for(var i=1; i < nbMonths ; i++) {		
		month = months[i];	
		if (parseInt(month.value)>Max) Max = month.value;	
	}
	 
  return Max;
 }
 
 // Maximum de l'ensemble des résultats
function getMax(years, nbYears) {
  var year = years[0];
  
  var months = year.months;				
  var nbMonths = months.length;
  var Max = getMaxforMonths(months, nbMonths);
  for(var i=1; i < nbYears ; i++) {	
		year = years[i];

		months = year.months;				
		nbMonths = months.length;
		if (parseInt(getMaxforMonths(months, nbMonths))>Max) Max = getMaxforMonths(months, nbMonths);	

	} 
  
  return Max;
  
 }
 
function getSearchDateResults(sUrl){	
	var barChart = document.getElementById('searchDateFilter_barChart');		
	var sInnerHTML = '';
	var sBackgroundYear = '';		
	var sScaleMonthValue = '';
	var leftCursor=0;	
		
	var years = searchDateList.SearchDateResults.list.years
	var nbYears = years.length	
	gSize = 76 * nbYears + nbYears; // 76px * nombre d'années			
	var width =  gSize + 3;	// Ajustement de la taille du contrôle sur la bordure d'un bloc année	
	Dom.setStyle('searchDateFilter_barChart', 'width', width + 'px'); 
	var maxValue = getMax(years, nbYears);
	var sYearClass = 'year';
	for(var i=0; i < nbYears ; i++) {				
		year = years[i];
		if (i%2) {
			sBackgroundYear = "#fff";
		}
		else {
			sBackgroundYear = "#fff8ee";
		}
		
		// TODO : correction de la largeur de la dernière année problème d'affichage sour Firefox à amméliorer
		if (i==5) {
			sYearClass = 'lastyear';
		}
		
		// start year div											
		sInnerHTML += '<div id="year-' + year.label + '" class="' + sYearClass + '" style="background-color:'  + sBackgroundYear  + ';left:' + leftCursor + 'px;">';
		sInnerHTML += '<span id="year-' + year.label+ '-label" class="yearlabel" style="left:' + leftCursor + 'px;">' + year.label + '</span>';				
		leftCursor += 4; // marge gauche première barre d'une année				
		var months = year.months;				
		var nbMonths = months.length;				
		var scaleMonthValue = 0;
		for(var j=0; j < nbMonths ; j++) {		
			month = months[j];				
			scaleMonthValue = Math.floor(month.value*54/maxValue); // Mise à l'échelle par rapport à la hauteur max du contrôle			
			if (scaleMonthValue != 0) {
				sScaleMonthValue = ';height : ' + scaleMonthValue + 'px;';								
			}
			else {
				sScaleMonthValue = ';height :0px;display:none;';					
			}
			// month bar value	
			sMonthBarLabel = month.label + " : " + month.value;			
			sInnerHTML += '<img id="year-' + year.label + '-month-' + eval(j+1) + '" src="/widgets/searchDateFilter/img/bar.jpg" class="month" style="bottom:0;left:' + leftCursor + 'px' + sScaleMonthValue + '"/>';
			Event.addListener('year-' + year.label + '-month-' + eval(j+1), 'mousemove', show_Info);
			Event.addListener('year-' + year.label + '-month-' + eval(j+1), 'mouseout', hide_Info);
			if (j != nbMonths - 1) {
				leftCursor += 6;					
			}		
			else {
				leftCursor += 3;					
			}
		}
	leftCursor += 4; // marge gauche dernière barre d'une année
	// end year div											
	sInnerHTML += '</div>';	
	}	
	// rendu dans la zone de graph
	barChart.innerHTML = sInnerHTML;
	
}

// gestion Info Bulle
Event.addListener('searchDateFilter_slider_left', 'mousemove', show_Info);
Event.addListener('searchDateFilter_slider_left', 'mouseout', hide_Info);

function getMonthDisplayLabels (value) {
	var results = new Array();	
	var dateList = searchDateList.SearchDateResults.list
	var yearValue = Math.floor(value / 78); // rapport à la taille en pixel d'une année
	var monthValue = Math.floor((value % 78)/6); // reste du rapport à l'année rapporté sur la taille en pixel d'un mois 	
	// Contrôles des extremmités	
	if (yearValue > dateList.years.length - 1) { 
		yearValue = dateList.years.length - 1;		
	}
	if (yearValue < 0) { 
		yearValue = 0;
	}
	
	if (monthValue > dateList.years[yearValue].months.length - 1) { 
		monthValue = dateList.years[yearValue].months.length - 1;
	}
	if (monthValue < 0) {
		monthValue = 0;	
	}

	results[0] = dateList.years[yearValue].months[monthValue].label;
	results[1] = dateList.years[yearValue].months[monthValue].value;
		
	return results;
}


function setMonthTo3Chars (sMonth) { // TODO : A revoir pour récuperer directement la valeur du mois dans le jSON du litéral de la page
	 var sMonthNumber = '';
	 switch (sMonth) {	 
		case '01' :
			sMonthNumber = 'jan';
			break;
		case '02' :
			sMonthNumber = 'fev';
			break;
		case '03' :
			sMonthNumber = 'mar';
			break;
		case '04' :
			sMonthNumber = 'avr';
			break;
		case '05' :
			sMonthNumber = 'mai';
			break;
		case '06' :
			sMonthNumber = 'jui';
			break;						
		case '07' :
			sMonthNumber = 'jul';
			break;
		case '08' :
			sMonthNumber = 'aou';
			break;
		case '09' :
			sMonthNumber = 'sep';
			break;
		case '10' :
			sMonthNumber = 'oct';
			break;		
		case '11' :
			sMonthNumber = 'nov';
			break;				
		case '12' :
			sMonthNumber = 'dec';
			break;				
	 }
	 return sMonthNumber;
	 
}

function show_Info(e) {			
	var shift; // Décalage du graph par rapport au bord gauche de l'écran
	var mousePosX; //Position de la souris à l'écrans + l'éventuel scroll	
	var value; // Valeur de la postion dans le graph
	var tltPosX; // Position de l'info bulle
	var sTabDisplay = new Array();
	var sDisplayLabel=''; // valeur du mois à afficher 
	var sDisplayValue=''; // nombre de résultats du mois à afficher
	
	Dom.setStyle('searchDateFilter_Info','visibility', 'visible');
	shift = Dom.getX('searchDateFilter_graphic');	
	mousePosX = e.clientX + document.body.scrollLeft;
	value = mousePosX - shift;
	tltPosX = mousePosX;
	sTabDisplay = getMonthDisplayLabels(value);
	sDisplayLabel = setMonthTo3Chars(sTabDisplay[0]);
	sDisplayValue = sTabDisplay[1];
	var monthLabel = document.getElementById('monthLabel');
	var monthValue = document.getElementById('monthValue');
	monthLabel.innerHTML = sDisplayLabel;
	monthValue.innerHTML = ' : ' + sDisplayValue + ' res.';
		
	//if (value > 388) {
	//	tltPosX -= value - 388; // Correction pour éviter le dépassement du contrôle sur la droite
	//}
	
	Dom.setX('searchDateFilter_Info', tltPosX - 12);

}

function hide_Info() {	
	Dom.setStyle('searchDateFilter_Info','visibility', 'hidden');
}

