/*
Willian Vieira - 21/12/2009
Dependências
	jquery - www.jquery.com
	google visualization - http://code.google.com/intl/pt-BR/apis/visualization/documentation/gallery/
	

Configuracao JSON
Ex.:
{
	columns:[
		{name:'dataCotacao', type:'string'},
		{name:'Dolar', type:'number'},
		{name:'Cobre', type:'number'},
		{name:'Zinco', type:'number'}
	],rows:[
		['ter',1.705,0,3.6],
		['qua',2.54,1.025,2.058],
		['qui',1.002,3.684,10.088]
	], 
	description:'Consulta Equivalente ao mês de dezembro'
}*/

google.load('visualization', '1', {packages:['corechart']});
var GraficoGoogle = {	
	data:'',
	getData : function(idTipoCotacao,intervalo,fn){				
		
		if(typeof(intervalo)=='object'){
			data = {
				acao:'getCotacaoGrafico',
				dataInicial : intervalo.dataInicial,
				dataFinal : intervalo.dataFinal,
				idTipoCotacao : idTipoCotacao
			}	
		}else{
			data = {
				acao:'getCotacaoGrafico',
				intervalo : intervalo, 
				idTipoCotacao:idTipoCotacao
			}
		}

		$.ajax({
			url:'modules/cotacaoOficial/cotacaoOficial.modules.ajax.asp',
			data:data,
			type:'POST',
			dataType:'json',
			success : function(retorno){
				GraficoGoogle.data = eval(retorno);												
				if(typeof(fn)=='function') fn.call();					
			}
		})
	},
	/*
	periodo : string ->acao a ser passada para o ajax
	titulo : string  -> titulo do grafico
	idEl : string	-> id da div onde o grafico vai renderizar
	*/
	carregaGrafico : function(intervalo,titulo,idEl,idTipoCotacao){
		$('#'+idEl).html('<table align="center" height="300"><tr><td><img src="imagens/carregando.gif" alt="Carregando Gráfico." /></td></tr></table>');
		var minPointScale = 0;
		var maxPointScale = 0;
		GraficoGoogle.getData(idTipoCotacao,intervalo,
			
			function(){				
				if(GraficoGoogle.data.columns.length>0){
					$('#'+idEl).html('');
					//criar o grafico.
					var data = new google.visualization.DataTable();
					//criar as colunas.
					for(i=0;i<GraficoGoogle.data.columns.length;i++){
						data.addColumn(GraficoGoogle.data.columns[i].type,titulo);	
					}
					//especifica a quantidade registros.
					data.addRows(GraficoGoogle.data.rows.length);
					//preenche os dados.
					
					for(i=0;i<GraficoGoogle.data.rows.length;i++){
						for(n=0;n<GraficoGoogle.data.rows[i].length;n++){							
							data.setValue(i,n,GraficoGoogle.data.rows[i][n]);
							var currentPoint = GraficoGoogle.data.rows[i][1];							
							minPointScale = (minPointScale == 0) ? currentPoint : (currentPoint < minPointScale ) ? currentPoint : minPointScale;
							maxPointScale = (maxPointScale == 0) ? currentPoint : (currentPoint > maxPointScale ) ? currentPoint : maxPointScale;
						}
					}
					
					if (idTipoCotacao == 1) {
						var divisor = 0.5;
						var tituloLateral = 'R$';
					} else {
						var divisor = 100;
						var tituloLateral = 'US$/ton';
					}

					restoMaxPointScale = maxPointScale%divisor;
					restoMinPointScale = minPointScale%divisor;

					if (restoMaxPointScale > 0) {
						maxPointScale = maxPointScale+(divisor-restoMaxPointScale);
					} else if (restoMaxPointScale == 0) {
						maxPointScale = maxPointScale+divisor;
					}
					
					if (restoMinPointScale > 0) {
						minPointScale = minPointScale-restoMinPointScale;
					} else if (restoMinPointScale == 0 && minPointScale != 0) {
						minPointScale = minPointScale-divisor;
					}

				GraficoGoogle.data.description = GraficoGoogle.data.description.replace("#1", "Período");
				GraficoGoogle.data.description = GraficoGoogle.data.description.replace("#2", "à");

				//renderiza					
				var chart = new google.visualization.LineChart(document.getElementById(idEl));				
				var opt = {cht: 'lc', chds:'0,160', annotationColumns:[{column:2, size:12, type:'flag', priority:'high'},]};
				var opt2 =	{
						width: 650, 
						height: 300,
						colors:['#FFAE00'],
						vAxis: {maxValue: maxPointScale, minValue: minPointScale},
						//min: (minPointScale),
						axisBackgroundColor:'#fff',
						//max:(maxPointScale),
						lineSize:2,
//						axisFontSize:13,
						showCategories:false,
//						legendFontSize:13,
						legendFontSize:20,
						title:titulo,
						titleY:tituloLateral,
						titleX:GraficoGoogle.data.description,
						hAxis: {textColor: '#FFFFFF'},
						legend:'none',
						enableTooltip : true,
						showRowNumber: false,
						vAxis: {logScale: true},
						pointSize:0
					}
				
				$('#'+idEl).fadeIn(1200);
				//configurações
				chart.draw(
					data, 
					opt2
				);				

				}else{
					$('#'+idEl).html('<strong>Não existem dados para gerar gráfico.</strong>').css('text-align','center').css('padding','20px');
				}				
				
			}
		);		
	}
}

