var canvas = new Class({
  ctx: function(element){
    // ie
    if (typeof G_vmlCanvasManager != 'undefined')
    {
      G_vmlCanvasManager.initElement($(element));
    }
    return $(element).getContext('2d');
  },
  rounded: function(param){
    var rt     = 0;
    var rb     = 0;
    var ctx    = param.ctx;
    var x      = param.x;
    var y      = param.y;
    var height = param.height;
    var width  = param.width;
    var radius = param.radius[0];
    
    var color = param.color.hexToRgb(true); 
    var r     = color[0];
    var g     = color[1];
    var b     = color[2];

    if (param.radius[1]){rt = param.radius[0];}
    if (param.radius[2]){rb = param.radius[0];}

    ctx.fillStyle = 'rgba('+r+','+g+','+b+','+param.opacity+')';

    if (param.gradient)
    {
      var lingrad = ctx.createLinearGradient(0,0,0,height);

      lingrad.addColorStop(0, 'rgba(74,74,74,1)');
      lingrad.addColorStop(1, 'rgba(0,0,0,1)');
      // lingrad.addColorStop(0.8, 'rgba(0,0,0,1)');
      // lingrad.addColorStop(0.8, 'rgba(0,0,0,'+param.opacity+')');
      // lingrad.addColorStop(1, 'rgba(255,255,255,0)');
      ctx.fillStyle = lingrad;
    }

    ctx.beginPath();
    ctx.moveTo(x,y+radius);

    ctx.lineTo(x,y+height-radius);
    ctx.quadraticCurveTo(x,y+height,x+rb,y+height);
    ctx.lineTo(x+width-radius,y+height);
    ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-rb);
    ctx.lineTo(x+width,y+radius);
    ctx.quadraticCurveTo(x+width,y,x+width-rt,y);
    ctx.lineTo(x+radius,y);
    ctx.quadraticCurveTo(x,y,x,y+rt);

    ctx.fill();
  },
  triangl: function (param){
    var flip = 1;
    if (param.flip)
    {
      flip = -1;
    }
    var color = param.color.hexToRgb(true); 
    var r     = color[0];
    var b     = color[1];
    var g     = color[2];
    
    ctx = param.ctx;
    ctx.beginPath();
    ctx.moveTo(param.x, param.y);
    ctx.lineTo((param.x+(param.size/2)), (param.y-(param.size/2)*flip));
    ctx.lineTo(param.x+param.size, param.y);
    ctx.closePath();
    ctx.fillStyle = 'rgba('+r+','+g+','+b+','+param.opacity+')';
    ctx.fill();
  }
});
