
(function($) {
  $.fn.roundimg = function(s) {
    var c = {cnr: 10, brdr: 0, clr: '0000FF', tl: 1, tr: 1, bl: 1 ,br: 1};
    if (s) $.extend(c, s);
    this.each(function() {
      $(this).load(function () {
        if ($.browser.msie) {
  		    RImgIE(this,c.cnr,c.brdr,c.clr,c.tl,c.tr,c.bl,c.br);
  		  } else {
          RImg(this,c.cnr,c.brdr,c.clr,c.tl,c.tr,c.bl,c.br);
        }
  		}).attr('src',$(this).attr('src'));
    });
    return this;
  };
})(jQuery);


if ($.browser.msie) {
	if (document.namespaces['v']==null) {
		var e=["shape","shapetype","group","background","path","formulas","handles","fill","stroke","shadow","textbox","textpath","imagedata","line","polyline","curve","roundrect","oval","rect","arc","image"],s=document.createStyleSheet(); 
		for (var i=0; i<e.length; i++) { s.addRule("v\\:"+e[i],"behavior: url(#default#VML);"); } document.namespaces.add("v","urn:schemas-microsoft-com:vml");
	} 
}

function roundedCorners(ctx,width,height,radius,lt,rt,lb,rb) {
	ctx.beginPath(); ctx.moveTo(0,radius);
	if (lb==1) { ctx.lineTo(0,height-radius); ctx.quadraticCurveTo(0,height,radius,height); } else { ctx.lineTo(0,height); }
	if (rb==1) { ctx.lineTo(width-radius,height); ctx.quadraticCurveTo(width,height,width,height-radius); } else { ctx.lineTo(width,height); }
	if (rt==1) { ctx.lineTo(width,radius); ctx.quadraticCurveTo(width,0,width-radius,0); } else { ctx.lineTo(width,0); }		
	if (lt==1) { ctx.lineTo(radius,0); ctx.quadraticCurveTo(0,0,0,radius); } else { ctx.lineTo(0,0); }		
	ctx.closePath();
}

function RImgIE(image,cnr,iborder,color,tl,tr,bl,br) {
	var object, canvas, display, context = '';
	var maxdim = 0, mindim = 0, i, j, child, tmp = '';
	object = image.parentNode; 
	maxdim = Math.min(image.width,image.height)/2;
	mindim = (cnr==0?10:cnr);
	radius = Math.min(maxdim,mindim);
	iborder = Math.min(iborder,2);
	display = (image.currentStyle.display.toLowerCase()=='block')?'block':'inline-block';
	vml = document.createElement(['<var style="zoom:1;overflow:hidden;display:' + display + ';width:' + image.width + 'px;height:' + image.height + 'px;padding:0;">'].join(''));
	flt = image.currentStyle.styleFloat.toLowerCase();
	display = (flt=='left'||flt=='right')?'inline':display;
	var path = "m 0," + radius; 
	if (bl==1) {path += " l 0," + (image.height-radius) + " qy " + radius + "," + image.height; } else { path += " l 0," + image.height; }
	if (br==1) {path += " l " + (image.width-radius) + "," + image.height + " qx " + image.width + "," + (image.height-radius); } else {path += " l " + image.width + "," + image.height; }
	if (tr==1) {path += " l " + image.width + "," + radius + " qy " + (image.width-radius) + ",0"; } else { path += " l " + image.width + ",0"; }	
	if (tl==1) {path += " l " + radius + ",0 qx 0," + radius; } else {path += " l 0,0"; }	
	path += " x e"; data = '<v:shape strokeweight="'+iborder+'px" stroked="'+(iborder>0?"t":"f")+'" strokecolor="#'+color+'" filled="t" fillcolor="#ffffff" coordorigin="0,0" coordsize="' + image.width + ',' + image.height + '" path="' + path + '" style="zoom:1;margin:-1px 0 0 -1px;padding: 0;display:' + display + ';width:' + image.width + 'px;height:' + image.height + 'px;"><v:fill src="' + image.src + '" type="frame" /></v:shape>';
	vml.innerHTML = [data].join('');
	vml.style.cssText = image.style.cssText;
	vml.style.visibility = 'visible';
	vml.src = image.src; vml.alt = image.alt;
	if (image.id!='') vml.id = image.id;
	if (image.title!='') vml.title = image.title;
	if (image.getAttribute('onclick')!='') vml.setAttribute('onclick',image.getAttribute('onclick'));
	image.insertAdjacentElement('BeforeBegin',vml);
	image.style.display = 'none';
	image.parentNode.removeChild(image);
}

function RImg(image,cnr,brdr,color,tl,tr,bl,br) {
	var object, canvas, context = '';
	var maxdim = 0, mindim = 0, i, j, child, tmp = '';
	object = image.parentNode; 
	canvas = document.createElement('canvas');
	if (canvas.getContext) {
		canvas.style.cssText = image.style.cssText;
		canvas.style.height = image.height+'px';
		canvas.style.width = image.width+'px';
		canvas.height = image.height;
		canvas.width = image.width;
		canvas.src = image.src; canvas.alt = image.alt;
		if (image.id!='') canvas.id = image.id;
		if (image.title!='') canvas.title = image.title;
		if (image.getAttribute('onclick')!='') canvas.setAttribute('onclick',image.getAttribute('onclick'));
		maxdim = Math.min(canvas.width,canvas.height)/2;
		mindim = (cnr==0?10:cnr);
		cnr = Math.min(maxdim,mindim);
		brdr = Math.min(brdr*2,cnr);
		context = canvas.getContext("2d");
		object.replaceChild(canvas,image);
		context.clearRect(0,0,canvas.width,canvas.height);
		globalCompositeOperation = "source-in";
		roundedCorners(context,canvas.width,canvas.height,cnr,tl,tr,bl,br);
		context.clip();
		context.fillStyle = 'rgba(0,0,0,0)';
		context.fillRect(0,0,canvas.width,canvas.height);
		context.drawImage(image,0,0,canvas.width,canvas.height);
		if (brdr>0) {
			roundedCorners(context,canvas.width,canvas.height,cnr,tl,tr,bl,br);
			context.strokeStyle = '#'+color;
			context.lineWidth = iborder;
			context.stroke(); 
		}
		canvas.style.visibility = 'visible';
		if (image.parentNode) {
		  image.parentNode.removeChild(image);
		}
	}
}

