function drawBubble(x, y, radius, text)
{
	var left = x - radius;
	var right = x + radius;
	var top = y - radius;
	var bottom = y + radius;
	var width = right - left;
	var height = bottom - top;

   jg.setColor("#FFCDB2");
   jg.fillEllipse(left,top,width,height);  
  // jg.setColor("#C8AAAA");
  // jg.drawEllipse(left,top,width,height);  
}

function drawMyText( x, y, radius, text, mysize )
{
	var textWidth = 120;
   jg.drawStringRect(text,x-(textWidth/2),y-5,textWidth,"center");
}


function drawTextBubble( x, y, radius, text, mysize )
{
    drawMyText( x,y,radius, "<a class=\"bubble\" href=\"related.php?base=" + text + "\">" + text + "</a>");
}

function drawBubble2( x, y, radius, text, mysize )
{
	//jg.setFont("Arial, Helvetica, sans-serif",mysize,Font.PLAIN);  
	drawBubble( x,y,radius, "<a class=\"bubble\" href=\"related.php?base=" + text + "\">" + text + "</a>");
}

function drawBubbleGoogle( x, y, radius, text, mysize )
{
	//jg.setFont("Arial, Helvetica, sans-serif","12px",Font.PLAIN);  
	drawBubble( x,y,radius, "<a class=\"bubble\" href=\"http://www.google.com/search?q=" + text + "\">" + text + "</a>");
	drawMyText(x,y,radius, "<a class=\"bubble\" href=\"http://www.google.com/search?q=" + text + "\">" + text + "</a>");
}

function drawLine( x1, y1, x2, y2 )
{
	jg.setColor("#FFCDB2");
	jg.drawLine( x1, y1, x2, y2 );
}

Array.prototype.avg = function() {
var av = 0;
var cnt = 0;
var len = this.length;
for (var i = 0; i < len; i++) {
var e = +this[i];
if(!e && this[i] !== 0 && this[i] !== '0') e--;
if (this[i] == e) {av += e; cnt++;}
}
return av/cnt;
}
Array.prototype.max = function(){
    return Math.max.apply( Math, this );
};
	
Array.prototype.min = function(){
    return Math.min.apply( Math, this );
};

function log10(x) { return Math.log(x)/Math.log(10) } 

function myDrawFunction(n, p2, sim, sizeval)
{
	var root2 = 1.41421356;

	var i=0;

	var avgSize = p2.avg();
	var averageradius = 45;

    var minr = 35;
	var maxr = 80;
	var minp2 = p2.min();
	var maxp2 = p2.max();

	var slope;
	
	if (minp2 != maxp2)
		slope = (maxr - minr)/(maxp2 - minp2);
	else
		slope = 0;
			
	var yint = minr - slope*minp2;

	var radiusArr = new Array ();
	var radiusArr2 = new Array();
	for( i=0; i<p2.length; i++ )
	{
		if (slope != 0)
			radiusArr[i] = Math.round(p2[i] * slope + yint);
		else
			radiusArr[i] = 50;
			
		if( i > 0)
		{
			radiusArr2[i-1] = radiusArr[i];
		}
	}
    
	var maxRadius = radiusArr.max();
	
	if( radiusArr2.length > 0 )
	{
		maxRadius = radiusArr2.max();
	}

	var closeRadius = radiusArr[1];
	if( radiusArr.length >= 4 )
	{
		closeRadius = Math.max(closeRadius,radiusArr[3]);
	}
	else if( radiusArr.length == 3 )
	{
		closeRadius = Math.max(closeRadius,radiusArr[2]);
	}
	
	var minDist = 5 + radiusArr[0] + closeRadius;
    
	var maxDist = 200;

	if( minDist > maxDist )
	{
		minDist = maxDist;
	}

	var max_sim = sim.max();

	var d1 = new Array ();
	for(i=0; i<sim.length; i++ )
	{
       d1[i] = ((maxDist-minDist)/(-max_sim))*sim[i] + maxDist;
	}

	var centerx = 275;
	var centery = 250;

	var sides = new Array();
	for( i = 0; i<d1.length; i++ )
	{
	   sides[i] = d1[i] / root2;
	}

	// draw lines
	if( d1.length >= 2 )
		drawLine( centerx, centery, centerx - d1[1], centery );

	if( d1.length >= 3 )
		drawLine( centerx, centery, centerx - sides[2], centery  - sides[2] );

	if( d1.length >= 4 )
		drawLine( centerx, centery, centerx, centery - d1[3] );

	if( d1.length >= 5 )
		drawLine( centerx, centery, centerx + sides[4], centery - sides[4] );

	if( d1.length >= 6 )
		drawLine( centerx, centery, centerx + d1[5], centery );

	if( d1.length >= 7 )
		drawLine( centerx, centery, centerx + sides[6], centery + sides[6] );

	if( d1.length >= 8 )
		drawLine( centerx, centery, centerx, centery + d1[7]);

	if( d1.length >= 9 )
		drawLine( centerx, centery, centerx - sides[8], centery + sides[8] );	

	if( d1.length >= 2 )
		drawBubble2(centerx - d1[1], centery, radiusArr[1], n[1], sizeval[1]);

	if( d1.length >= 3 )
		drawBubble2(centerx - sides[2], centery  - sides[2], radiusArr[2], n[2], sizeval[2]);

	if( d1.length >= 4 )
		drawBubble2(centerx, centery - d1[3], radiusArr[3], n[3], sizeval[3]);

	if( d1.length >= 5 )
		drawBubble2(centerx + sides[4], centery - sides[4], radiusArr[4], n[4], sizeval[4]);

	if( d1.length >= 6 )
		drawBubble2(centerx + d1[5], centery, radiusArr[5], n[5], sizeval[5]);

	if( d1.length >= 7 )
		drawBubble2(centerx + sides[6], centery + sides[6], radiusArr[6], n[6], sizeval[6]);

	if( d1.length >= 8 )
		drawBubble2(centerx, centery + d1[7], radiusArr[7], n[7], sizeval[7]);

	if( d1.length >= 9 )	
		drawBubble2(centerx - sides[8], centery + sides[8], radiusArr[8], n[8], sizeval[8]);
		
				
	if( d1.length >= 2 )
		drawTextBubble(centerx - d1[1], centery, radiusArr[1], n[1], sizeval[1]);

	if( d1.length >= 3 )
		drawTextBubble(centerx - sides[2], centery  - sides[2], radiusArr[2], n[2], sizeval[2]);

	if( d1.length >= 4 )
		drawTextBubble(centerx, centery - d1[3], radiusArr[3], n[3], sizeval[3]);

	if( d1.length >= 5 )
		drawTextBubble(centerx + sides[4], centery - sides[4], radiusArr[4], n[4], sizeval[4]);

	if( d1.length >= 6 )
		drawTextBubble(centerx + d1[5], centery, radiusArr[5], n[5], sizeval[5]);

	if( d1.length >= 7 )
		drawTextBubble(centerx + sides[6], centery + sides[6], radiusArr[6], n[6], sizeval[6]);

	if( d1.length >= 8 )
		drawTextBubble(centerx, centery + d1[7], radiusArr[7], n[7], sizeval[7]);

	if( d1.length >= 9 )	
		drawTextBubble(centerx - sides[8], centery + sides[8], radiusArr[8], n[8], sizeval[8]);
		
    // center bubble
	drawBubbleGoogle(centerx, centery, radiusArr[0], n[0], sizeval[0] ); 
		
	jg.paint();
}
