
var rounded_edge_engine={};

rounded_edge_engine.masks = {};
rounded_edge_engine.cache = {};

rounded_edge_engine.masks['3x6'] =
			[
				[0   ,0.3 ,0.85],
				[0.3 ,1   ,1   ],
				[0.85,1   ,1   ],
				[0.85,1   ,1   ],
				[0.3 ,1   ,1   ],
				[0   ,0.3 ,0.85]
			];

rounded_edge_engine.masks['8x8'] =
			[
				[0   ,0   ,0   ,0   ,0.15,0.3 ,0.6 ,0.85],
				[0   ,0   ,0   ,0.3 ,0.85,1   ,1   ,1   ],
				[0   ,0   ,0.3 ,0.85,1   ,1   ,1   ,1   ],
				[0   ,0.3 ,0.85,1   ,1   ,1   ,1   ,1   ],
				[0.15,0.85,1   ,1   ,1   ,1   ,1   ,1   ],
				[0.3 ,0.85,1   ,1   ,1   ,1   ,1   ,1   ],
				[0.6 ,1   ,1   ,1   ,1   ,1   ,1   ,1   ],
				[0.85,1   ,1   ,1   ,1   ,1   ,1   ,1   ]
			];


rounded_edge_engine.masks['5x18'] =
			[
				[0   ,0   ,0.3 ,0.6 ,0.85],
				[0   ,0.25,0.85,1   ,1   ],
				[0.15,0.85,1   ,1   ,1   ],
				[0.6 ,1   ,1   ,1   ,1   ],
				[0.85,1   ,1   ,1   ,1   ],

				[1   ,1   ,1   ,1   ,1   ,1],
				[1   ,1   ,1   ,1   ,1   ,1],
				[1   ,1   ,1   ,1   ,1   ,1],
				[1   ,1   ,1   ,1   ,1   ,1],
				[1   ,1   ,1   ,1   ,1   ,1],
				[1   ,1   ,1   ,1   ,1   ,1],
				[1   ,1   ,1   ,1   ,1   ,1],
				[1   ,1   ,1   ,1   ,1   ,1],

				[0.85,1   ,1   ,1   ,1   ],
				[0.6 ,1   ,1   ,1   ,1   ],
				[0.15,0.85,1   ,1   ,1   ],
				[0   ,0.25,0.85,1   ,1   ],
				[0   ,0   ,0.3 ,0.6 ,0.85]
			];

rounded_edge_engine.masks['spot'] =
			[
				[1   ,1   ,1   ,1   ,1   ,1],
				[1   ,1   ,1   ,1   ,1   ,0],
				[1   ,1   ,1   ,1   ,0   ,0],
				[1   ,1   ,1   ,0   ,0   ,0],
				[1   ,1   ,0   ,0   ,0   ,0],
				[1   ,0   ,0   ,0   ,0   ,0]
			];


rounded_edge_engine.generate = function()
{
	$('div.rounded_edge:not(.done)').each(
		function()
		{
			var params;
			eval("params="+this.innerHTML);

			var mask  = params.mask;
			var color = params.color;
			var dirX  = params.x && params.x=='right' ? -1 : 1;
			var dirY  = params.y && params.y=='bottom' ? -1 : 1;

			var index = ''+mask+color+dirX+dirY;

			var mask = rounded_edge_engine.masks[mask];
			var size = mask[0].length;


			$(this).addClass('done');
			if(typeof(rounded_edge_engine.cache[index])!='undefined')
			{
				this.innerHTML=rounded_edge_engine.cache[index];
				return;
			}
			this.innerHTML='';

			var table = $("<table cellpadding='0' cellspacing='0' style='width:"+size+";'><tbody></tbody></table>").appendTo(this).get(0);
			var tbody = table.firstChild;

			var tr,td;
			var img = (!jQuery.browser.msie || jQuery.browser.version >= '7.0') ? " " : "<img src='"+site_domain+"bin/img/0.gif'/>";

			var rowStart,rowEnd,rowPlus;
			var colStart,colEnd,colPlus;

			if(dirX < 0) {colStart=size-1; colEnd=-1;}
			else         {colStart=0; colEnd=size;}

			if(dirY < 0) {rowStart=mask.length-1; rowEnd=-1;}
			else         {rowStart=0; rowEnd=mask.length;}

			for(var row=rowStart;row!=rowEnd;row+=dirY)
			{
				tr = $("<tr></tr>").appendTo(tbody);

				if(mask[row].length>size)
				{
					if(mask[row][0]==1)
						$("<td style='background-color:"+color+"' colspan='"+size+"'>"+img+"</td>").appendTo(tr);
					else if(mask[row][0])
						$("<td style='background-color:"+color+"' colspan='"+size+"'>"+img+"</td>").appendTo(tr).css({opacity:mask[row][col]});
					else
						$("<td colspan='"+size+"'>"+img+"</td>").appendTo(tr);
				}
				else
				{
					for(var col=colStart;col!=colEnd;col+=dirX)
					{
						if(mask[row][col]==1)
							$("<td style='background-color:"+color+"'>"+img+"</td>").appendTo(tr);
						else if(mask[row][col])
							$("<td style='background-color:"+color+"'>"+img+"</td>").appendTo(tr).css({opacity:mask[row][col]});
						else
							$("<td>"+img+"</td>").appendTo(tr);
					}
				}
			}

			rounded_edge_engine.cache[index] = this.innerHTML;

		}
	);
}

$(document).ready(rounded_edge_engine.generate);


