var gAncho=0;
var gAlto=0;
var gColors=["#66FFFF", "#FF66FF", "#FFFF66", "#FF6666", "#66FF66", "#6666FF"];
var anchoBase=120;
var altoBase=15;
var gMin=0, gMax=0;
var gEtiquetas=0;
var gClases=0;

function generaEspacioGrafico(divCapa, ancho, alto){
	var jg=null;
	var capa=document.getElementById(divCapa);
	
	gAncho=0;
	gAlto=0;
	anchoBase=120;
	altoBase=15;
	gMin=0;
	gMax=0;
	gEtiquetas=0;
	gClases=0;
	
	
	gAncho=parseInt(ancho);
	gAlto=parseInt(alto);
	
	capa.style.width=ancho + "px";
	capa.style.height=alto + "px";
	capa.style.backgroundColor="#FFFFFF";
	capa.style.overflow="hidden";
	jg=new jsGraphics(divCapa);
	jg.setPrintable(false);
	
	jg.setColor("#cccccc");
	jg.setStroke(1);
	jg.drawRect(0,0,parseInt(ancho)-1,parseInt(alto)-1);
	
	jg.paint();	
	return jg;
}

function generaClasesGrafico(jg, arregloClases){
	
	jg.setFont("arial","10px",Font.PLAIN);
	
	// Crea rectangulo clases
	jg.setColor("#eeeeee");
	jg.fillRect(gAncho-anchoBase-5,altoBase-10,anchoBase,gAlto-(altoBase-10)*2);
	jg.setColor("#cccccc");
	jg.setStroke(1);
	jg.drawRect(gAncho-anchoBase-5,altoBase-10,anchoBase,gAlto-(altoBase-10)*2);
	
	gClases=arregloClases.length;
	for(var i=0;i<arregloClases.length;i++){
		// Crea rectangulo por clase
		jg.setColor(gColors[i%gColors.length]);
		jg.fillRect(gAncho-anchoBase,altoBase+25*i,10,10);
		jg.setColor("#666666");
		jg.setStroke(1);
		jg.drawRect(gAncho-anchoBase,altoBase+25*i,10,10);
		jg.setColor("#000000");
		jg.drawStringRect(arregloClases[i],gAncho-anchoBase+15,altoBase+25*i,anchoBase-20,"left");
	}

	jg.paint();	

}

function generaGraficoXY(jg, arregloDatos, arregloEtiquetas, nombreDatos, tipo, escala, grilla){
		// tipo 1=lineas, 2=barra
	for(var i=0;i<arregloDatos.length;i++){
		for(var j=0;j<arregloDatos[i].length;j++){
				if (i==0 && j==0) {gMin=arregloDatos[i][j];  gMax=arregloDatos[i][j];}
				if (gMin>arregloDatos[i][j]) gMin=arregloDatos[i][j];
				if (gMax<arregloDatos[i][j]) gMax=arregloDatos[i][j];
		}
		if (gEtiquetas<j) gEtiquetas=j;
	}
	if (tipo!=1 && gMin>0 && gMax>0)  gMin=0;
	if (tipo!=1 && gMin<0 && gMax<0)  gMax=0;
	
	if (gMin<gMax) {gMin=gMin-(gMax-gMin)*0.1; gMax=gMax+(gMax-gMin)*0.1;}
	
	// Crea rectangulo datos
	jg.setColor("#eeeeee");
	jg.fillRect(5,5,gAncho-anchoBase-15,gAlto-(altoBase-10)*2);
	jg.setColor("#cccccc");
	jg.setStroke(1);
	jg.drawRect(5,5,gAncho-anchoBase-15,gAlto-(altoBase-10)*2);
	
	var datosL=50, datosT=30, datosW=gAncho-anchoBase-30-40, datosH=gAlto-(altoBase-5)*2-30;

	// marca separación etiquetas
	jg.setColor("#bbbbbb");
	for(var i=0;i<gEtiquetas;i++){
		if (i<(gEtiquetas-1))
			jg.drawLine(datosL+((datosW)/gEtiquetas)*(i+1),datosT,datosL+(datosW/gEtiquetas)*(i+1),datosT+datosH);
		if (tipo==1)
			jg.drawLine(datosL+((datosW)/gEtiquetas)*(i+1)-datosW/gEtiquetas/2,datosT,datosL+(datosW/gEtiquetas)*(i+1)-datosW/gEtiquetas/2,datosT+datosH);
	}
	
	// marca grilla horizontal
	var factorX=Math.abs(datosH/(gMax-gMin));
	var escalaX=escala*factorX;
	var ceroX=datosT+datosH-(0-gMin)*factorX;
	if (ceroX<=(datosT+datosH)){
		var posX=ceroX;
		var valorX=0;
		while (posX<=(datosT+datosH)){
			if (posX>=datosT){
				jg.setColor("#bbbbbb");
				jg.drawLine(datosL,posX,datosL+datosW,posX);
				jg.setColor("#000000");
				jg.drawStringRect(transDecimal(parseFloat(parseInt(valorX*100))/100,".",","),datosL-45,posX-5,datosL-10,"right");
			}
			posX+=grilla*factorX;
			valorX-=grilla/escala;
		}
	}
	if (ceroX>=datosT){
		var posX=ceroX;
		var valorX=0;
		while (posX>=datosT){
			if (posX<=(datosT+datosH)){
				jg.setColor("#bbbbbb");
				jg.drawLine(datosL,posX,datosL+datosW,posX);
				jg.setColor("#000000");
				jg.drawStringRect(transDecimal(parseFloat(parseInt(valorX*100))/100,".",","),datosL-45,posX-5,40,"right");
			}
			posX-=grilla*factorX;
			valorX+=grilla/escala;
		}
	}
	var anchoEtiqueta=datosW/gEtiquetas;
	var anchoDatos=datosW*0.8/gEtiquetas/gClases;
	var espacioEtiqueta=datosW*0.1/gEtiquetas;

	// Pinta datos en barra
	if (tipo!=1){
		for(var i=0;i<arregloDatos.length;i++){
			for(var j=0;j<arregloDatos[i].length;j++){
				
		
				jg.setColor(gColors[i%gColors.length]);
				
				if (ceroX>=(ceroX-arregloDatos[i][j]*factorX)) // positivo
					jg.fillRect(datosL+j*anchoEtiqueta+espacioEtiqueta+i*anchoDatos,ceroX-arregloDatos[i][j]*factorX,anchoDatos,Math.abs(arregloDatos[i][j]*factorX));
				else // negativo
					jg.fillRect(datosL+j*anchoEtiqueta+espacioEtiqueta+i*anchoDatos,ceroX,anchoDatos,Math.abs(arregloDatos[i][j]*factorX));
				jg.setColor("#666666");
				
				if (ceroX>=(ceroX-arregloDatos[i][j]*factorX)) // positivo
					jg.drawRect(datosL+j*anchoEtiqueta+espacioEtiqueta+i*anchoDatos,ceroX-arregloDatos[i][j]*factorX,anchoDatos,Math.abs(arregloDatos[i][j]*factorX));
				else // negativo
					jg.drawRect(datosL+j*anchoEtiqueta+espacioEtiqueta+i*anchoDatos,ceroX,anchoDatos,Math.abs(arregloDatos[i][j]*factorX));

				jg.setColor("#000000");
				jg.drawStringRect(transDecimal(parseFloat(parseInt(arregloDatos[i][j]*100/escala))/100,".",",") , datosL+j*anchoEtiqueta+espacioEtiqueta+i*anchoDatos, ceroX-(arregloDatos[i][j]/2)*factorX-7*i, anchoDatos, "center");
			}
		}
	}
	
	// Pinta datos con lineas
	if (tipo==1){
		for(var i=0;i<arregloDatos.length;i++){
			for(var j=0;j<arregloDatos[i].length;j++){
				if (j>0){
					jg.setStroke(5);
					jg.setColor("#666666");
					jg.drawLine(datosL+anchoEtiqueta/2+anchoEtiqueta*(j-1), ceroX-arregloDatos[i][j-1]*factorX, datosL+anchoEtiqueta/2+anchoEtiqueta*(j), ceroX-arregloDatos[i][j]*factorX);
					jg.setStroke(3);
					jg.setColor(gColors[i%gColors.length]);
					jg.drawLine(datosL+anchoEtiqueta/2+anchoEtiqueta*(j-1), ceroX-arregloDatos[i][j-1]*factorX, datosL+anchoEtiqueta/2+anchoEtiqueta*(j), ceroX-arregloDatos[i][j]*factorX);
				}
				jg.setColor("#000000");
				jg.drawStringRect(transDecimal(parseFloat(parseInt(arregloDatos[i][j]*100/escala))/100,".",",") , datosL+anchoEtiqueta*j, ceroX-arregloDatos[i][j]*factorX-15, anchoEtiqueta, "center");
			}
		}
	}

	
	// muestra ejes
	jg.setStroke(1);
	jg.setColor("#000000");
	if (gMax>=0 || gMin<=0){
		jg.drawLine(datosL,ceroX,datosL+datosW,ceroX);
	}

	if (escala!=1)
		jg.drawStringRect(nombreDatos + " x" + transDecimal(escala,".",","),datosL-30,datosT-25, 60,"center");
	else
		jg.drawStringRect(nombreDatos,datosL-30,datosT-25, 60,"center");
		
	jg.drawLine(datosL,datosT,datosL,datosT+datosH);
	
	if (ceroX>(datosT+datosH) || ceroX<datosT) ceroX=(datosT+datosH);
	jg.setFont("arial","11px",Font.BOLD);
	for(var i=0;i<gEtiquetas;i++){
		jg.drawStringRect(arregloEtiquetas[i],datosL+i*anchoEtiqueta,ceroX+3,anchoEtiqueta,"center");
	}
	jg.paint();	

}
