function draw_rectangle(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16) 
{
	var c = document.getElementById(param1).getContext("2d");
	var x 		= param2;
	var y 		= param3;
	var w 		= param4;
	var h 		= param5;
	var radius 	= param6;
	var lw 		= param7;
	var lclr 	= param8;
	var la 		= param9/100;
	var fclr 	= param10;
	var fa 		= param11/100;
	
	var stroke 	= true;
	var fill 	= true;
	var inner 	= (param16 == null) ? false : true;
	
	if (lw == 0 || lw == null || la == 0 || la == null) 
	{
		stroke = false;
	}
	if (fa == 0 || fa == null ) 
	{
		fill = false;
	}
	
	x 			= lw/2;
	y 			= lw/2;
	w 			= w - (lw);
	h 			= h - (lw);
	
	var opa 	= parseFloat(param15);
	var sox 	= param12;
	var soy 	= param13;
	var sb 		= param14;
	
	if (c) 
	{
		c.beginPath();
		c.moveTo(x + radius, y);
		c.lineTo(x + w - radius, y);
		c.quadraticCurveTo(x + w, y, x + w, y + radius);
		c.lineTo(x + w, y + h - radius);
		c.quadraticCurveTo(x + w, y + h, x + w - radius, y + h);
		c.lineTo(x + radius, y + h);
		c.quadraticCurveTo(x, y + h, x, y + h - radius);
		c.lineTo(x, y + radius);
		c.quadraticCurveTo(x, y, x + radius, y);
		c.closePath();  
		 
		//alert("hex " + fclr);
		var fhr = hexToR(fclr);
		var fhg = hexToG(fclr);
		var fhb = hexToB(fclr);
		
		var frgba = "rgba("+fhr+","+fhg+","+fhb+","+fa+")";
		c.fillStyle = frgba;
		
		c.shadowOffsetX = sox;
		c.shadowOffsetY = soy;
		c.shadowBlur    = sb;
		var srgba = "rgba("+0+","+0+","+0+","+opa+")";
		c.shadowColor   = srgba;
		
		
		if (fill)
		{
			c.fill();
		}  
		
		c.shadowColor = "transparent";
		c.lineWidth = lw;
		
		c.lineJoin = "round";
		if(radius == 0)
		{
			c.lineJoin = "miter";
		}
		
		var lhr = hexToR(lclr);
		var lhg = hexToG(lclr);
		var lhb = hexToB(lclr);
		var lrgba = "rgba("+lhr+","+lhg+","+lhb+","+la+")";
		c.strokeStyle = lrgba;
		
		if (stroke) 
		{
			c.stroke();
		}
	}
}
