var steps = 4;
var MonthNames = [TXT_JANUARY,TXT_FEBRUARY,TXT_MARCH,TXT_APRIL,TXT_MAY,TXT_JUNE,TXT_JULY,TXT_AUGUST,TXT_SEPTEMBER,TXT_OCTOBER,TXT_NOVEMBER,TXT_DECEMBER];
var MonthAbbr = [TXT_JAN,TXT_FEB,TXT_MAR,TXT_APR,TXT_MAY_SHORT,TXT_JUN,TXT_JUL,TXT_AUG,TXT_SEP,TXT_OCT,TXT_NOV,TXT_DEC];
var DayAbbr = [TXT_SUN_SHORT,TXT_MON_SHORT,TXT_TUE_SHORT,TXT_WED_SHORT,TXT_THU_SHORT,TXT_FRI_SHORT,TXT_SAT_SHORT];
var getElement = function (id) { return (document.all ? document.all[id] : document.getElementById(id)); }

function MonthChart(id, targetId, labelId){
	this.ID = id;
	this.ChartData = [];
	this.MaxVal = 0;
	this.LabelID = labelId;
	this.TargetID = targetId;

	function drawChart(arr, m, y){
		var container = getElement(this.TargetID);
		if(!container)
			return;
		
		this.ChartData = arr;
		this.setMaxVal();
		
		var html = '';
		html += '<div style="float:left;width:5%;">' + this.getYAxisHtml() + '</div>';
		html += '<div style="float:left;width:94%;">' + this.getChartHtml() + '</div>';
		container.innerHTML = html;
	}
	this.drawChart = drawChart;

	function setMaxVal(){
		this.MaxVal = 0;
		var date = new Date();
		for(var i = 0; i < 12; i++){
			var monthVal = date.getMonth() + '-' + date.getFullYear();
			var item = this.ChartData[monthVal];
			if(item && item.TotalPrice > this.MaxVal)
				this.MaxVal = item.TotalPrice;

			date.setMonth(date.getMonth() + 1);
		}
		
		var power = parseInt((Math.log(this.MaxVal))/(Math.log(10))) - 1;
		var factor = (power == 0 ? 5 : Math.pow(10, power));
		this.MaxVal =  Math.ceil(this.MaxVal/(steps*factor))*(steps*factor);
	}
	this.setMaxVal = setMaxVal;

	function getYAxisHtml(){
		var yAxisHtml = '';
		if(isNaN(this.MaxVal)){ return '&nbsp;'; }
		
		var interval = this.MaxVal/steps;
		for(var i = steps; i > 0; i--){
			var val = parseInt(interval*i);
			yAxisHtml += '<div class="horizBar">' + val + '&nbsp;</div>';
		}
		return yAxisHtml;
	}
	this.getYAxisHtml = getYAxisHtml;

	function getChartHtml(){
		var barHtml = '<table class="chartTable" cellpadding="0" cellspacing=0><tr>';
		var labelHtml = '<table class="labelTable" cellpadding=0 cellspacing=0><tr>';
		var maxHeight = steps*40;
		var date = new Date();
		date.setDate(1);
		for(var i = 0; i < 12; i++){
			var monthVal = date.getMonth() + '-' + date.getFullYear();
			var height = 0;
			var item = this.ChartData[monthVal];
			var barCSS = 'barMonth';
			var barDiv = '&nbsp;';
			var extraProps = '';

			if(item != null){
				height = Math.ceil(maxHeight*(item.TotalPrice/this.MaxVal));
				if(height > 0){
					var monthPath = MonthNames[date.getMonth()] + '-' + date.getFullYear();
					var url = MONTH_GRAPH_TARGET + '.htm';
					url = url.replace('%1', monthPath);
					barDiv = '<div class="' + barCSS + '"';
					barDiv += ' style="height:' + height + 'px;"';
					barDiv += ' onmouseover="showTooltip(this, ' + this.ID + '.GetTooltipHtml(\'' + monthVal + '\'), event)"';
					barDiv += ' onclick="GoToUrl(\'' + url + '\')"></div>';
				}
			}
			
			var labelText = MonthAbbr[date.getMonth()] + '<br>' + date.getFullYear();
			labelHtml += '<td class="labelCell">' + labelText + '</td>';
			barHtml += '<td class="barCell"' + extraProps + '>' + barDiv + '</td>';
			date.setMonth(date.getMonth() + 1);
		}
		
		labelHtml += '</tr></table>';
		barHtml += '</tr></table>';

		return (barHtml + labelHtml);
	}
	this.getChartHtml = getChartHtml;
}

function GoToUrl(url){
	document.location.href = url;
}
