/* This JavaScript originally by Balamurugan S, 2005. sbalamurugan @ hotmail.com */

function pie_chart(definitely, maybe, noeffect) {
	var p = new pie();
	p.add("Definitely", definitely);
	p.add("Maybe", maybe);
	p.add("No Effect", noeffect);
	p.render("pieCanvas", "Pie Graph")
}

function pie() {
	this.ct = 0;
	this.data = new Array();
	this.x_name = new Array();
	this.max = 0;
	this.c_array = new Array();
	this.c_array[0] = "#FF0000";
	this.c_array[1] = "#00FF00";
	this.c_array[2] = "#0000FF";
	this.c_array[3] = "#FF00FF";
	this.c_array[4] = "#00FFFF";
	this.c_array[5] = "#FFFF00";

	this.add = function(x_name, value) {
		this.x_name.push(x_name);  
		this.data.push(parseInt(value,10));
		this.max += parseInt(value,10);
	}

	this.fillArc = function(x, y, r, st_a, en_a, jg)  {
    	var number_of_steps = en_a - st_a ;
    	var angle_increment = 2 * Math.PI / number_of_steps;
	    var xc = new Array();
    	var yc = new Array();
	    st_r = st_a*Math.PI / 180;
    	en_r = en_a*Math.PI / 180;
   
	    for (angle = st_r; angle <= en_r; angle += angle_increment) {
        	if(en_r < angle + angle_increment)
            	angle = en_r;
			 var y2 = Math.sin(angle) * r ;
        	 var x2 = Math.cos(angle) * r ;
	    	 xc.push(x+x2);
    	     yc.push(y-y2);
        }
		xc.push(x);
    	yc.push(y);
    	jg.fillPolygon(xc, yc);
  	}

	this.render = function(canvas, title) {
		var jg = new jsGraphics(canvas);
		var r  = 40; // radius
		var sx = 200;
		var sy = 200;
		var hyp = 64; // Distance of labels from centre of pie
		jg.setColor("#D0D0D0"); // Shadow colour
		jg.fillEllipse(sx+5-r, sy+5-r, 2*r, 2*r); // Shadow
		var st_angle = 90;
		for(i = 0; i<this.data.length; i++) {
			var angle = Math.round(this.data[i]/this.max*360);
			var pc = Math.round(this.data[i]/this.max*100);
			jg.setColor(this.c_array[i]);
			this.fillArc(sx, sy, r, st_angle, st_angle+angle, jg);
			var ang_rads = (st_angle+(angle/2))*2*Math.PI/360;
			var my  = Math.sin(ang_rads) * hyp;
			var mx  = Math.cos(ang_rads) * hyp;
			st_angle += angle;
			mxa = (mx < 0 ? 50 : 0);
			jg.setFont("Verdana",9);
			//jg.setColor("#000000");
			jg.drawString(this.x_name[i]+"("+pc+"%"+")",sx+mx-mxa,sy-my);
		}
		//jg.setColor("cyan");
		//jg.drawEllipse(sx-r, sy-r, 2*r, 2*r);
		jg.paint();
	}
}