// Versions
// 1.0 Primera versiķ amb grāfics

//*************************************************************************
// Fa visible una imatge en una posiciķ relativa a un objecte
//*************************************************************************

function superposaImg(imatge, on, x, y)
{
	var left = x;
	var top = y;
	var element = on;
	while (element) {
		left += element.offsetLeft;
		top += element.offsetTop;
		element = element.offsetParent;
	}
	imatge.style.left = left + 'px';
	imatge.style.top = top + 'px';
	imatge.style.display = 'block';
}

function amagaImg(img)
{
	var imatge = document.getElementById(img);
	if (!imatge) return;
	imatge.style.display = 'none';
}


//*************************************************************************
// Posa una imatge superposada a la tira d'imatges
// 	img: l'identificador de la imatge
//	graus: la posiciķ horitzontal, on es posa el centre de la imatge
//	alt: l'altura dins el dibuix del centre de la imatge
//*************************************************************************

function mostraImgMini(img, graus, alt)
{
	var imatge = document.getElementById(img);
	var on = document.getElementById('IWC_0');
	if (!imatge || !on) return;
	// aquests cālculs estan basats en una amplada total de 893 píxels, un desplaįament de 25 i l'est a la posiciķ 25 + 389	
	var x = 25 + Math.floor(893.0 * ((graus + 63.6) % 360) / 360.0) - Math.floor(imatge.width / 2);
	var y = alt - Math.floor(imatge.height / 2)
	//superposaImg(imatge, on, x, y);
}

//*************************************************************************
// Centra un objecte dins un altre o dins la pantalla
//*************************************************************************

function centraObj(dins, fora, mida)
{
	if (!dins)
		return;
	var ampleFora = (fora ? (fora.width || fora.clientWidth) : screen.availWidth);
	var ampleDins = mida || dins.width || dins.clientWidth;
	if (ampleDins >= ampleFora)
		return;
	dins.style.position = 'relative';
	dins.style.left = Math.floor((ampleFora - ampleDins) / 2) + 'px';
}

//*************************************************************************
// Informaciķ sobre l'hora d'una māxima o una mínima
//*************************************************************************

$(document).ready(function() {
	$('.mostrahora').cluetip({ showTitle: false, splitTitle: '|', width: 'auto', positionBy: 'mouse', cluetipClass: 'sonjuny' });
});

//*************************************************************************
// Creaciķ de grāfics
//*************************************************************************

var origenGrafic;
var funcionsGrafics = [];
funcionsGrafics['linies1'] = graficLinies1;

function preparaGrafic(objectes)
{
	origenGrafic = objectes[0].id;
	return true;
}

function dibuixaGraficEvt(evt)
{
	var idGrafic = "#cluetip-inner #g0_" + dadesGrafics[origenGrafic].tipus;
	var grafic = $(idGrafic);
	grafic.empty();
	svgManager._nextId = 0; // Next ID for a SVG root
	svgManager._svgs = []; // List of SVG roots indexed by ID
	svgManager._settings = []; // Settings to be remembered per SVG object:
	grafic.svg();
	dibuixaGraficNom(origenGrafic);
}

// Dibuixa un grāfic
function dibuixaGraficNom(nomGrafic)
{
	var dades = dadesGrafics[nomGrafic];
	var idGrafic = "#cluetip-inner #g0_" + dades.tipus;
	var svg = svgManager.getSVGFor(idGrafic);
	if (!svg) {
		setTimeout("dibuixaGraficNom('" + nomGrafic + "')", 10);
		return;
	}
	funcionsGrafics[dades.tipus](dades, svg);
}

// Dibuixa un grāfic d'una variable
function graficLinies1(dades, svg)
{
	svg.graph.noDraw().title(dades.titol).
		addSeries('valors', dades.valors, 'lightblue', 'blue', 3).
		chartFormat('lightyellow', 'gray').
		gridlines({stroke: 'gray', stroke_dasharray: '2,2'}, 'gray');
	var etis = [];
	for(i=0; i<dades.temps.length; i++)
		etis.push(dades.temps[i],'','','','','','','');
	svg.graph.xAxis.title('temps').scale(0, dades.valors.length - 1).
		ticks(8, 1).labels(etis);
	svg.graph.yAxis.title(dades.variable).scale(dades.minim, dades.maxim).ticks(dades.ticks);
	svg.graph.legend.settings({fill: 'lightgoldenrodyellow', stroke: 'gray'});
	svg.graph.legend.show(0).area([0.2, 0.9, 0.8, 0.995]);
	svg.graph.series()[0].format('lightblue');
	svg.graph.noDraw().chartArea([0.1, 0.1, 0.9, 0.8]).chartType('line', {}).redraw();	
}

$(document).ready(function() {
	// $.getScript("/meteo/dbmeteo.php?opc=grafics", function() {
		$('.agrafic').cluetip({ onShow: dibuixaGraficEvt, onActivate: preparaGrafic, local: true, showTitle: false, activation: 'hover', width: 'auto', positionBy: 'mouse', arrows: false, cluetipClass: 'jtip' });
	// });
});
