Element.implement({
	addShadow: function(options) {
//	$('productpage-center').setStyle('visibility','hidden');
//	$('product-picture').setStyle('display','none');
		if (!options) options = '';
		var borderRight = !options.borderRight ? 7 : options.borderRight;
		var borderBottom = !options.borderBottom ? 8 : options.borderBottom;
		var borderMax = Math.max(borderRight, borderBottom);
		var scaleX = (borderRight>borderBottom) ? 1 : borderRight/borderBottom;
		var scaleY = (borderBottom>borderRight) ? 1 : borderBottom/borderRight;
		var color = !options.color ? '0,0,0' : options.color;
		var opacityStart = !options.opacityStart ? 0.2 : options.opacityStart;
		var top = this.getPosition().y;
		var left = this.getPosition().x;
		var width = this.getSize().x;
		var height = this.getSize().y;
//		var canvas = new Element('canvas', {'style': 'position:absolute;z-index:'+ this.getStyle('zIndex') +';margin-top:'+ borderBottom +'px;margin-left:'+ borderRight +'px;', 'width': width + 'px', 'height': height + 'px'});


var el = document.createElement('canvas');

		var canvas = $(el).setStyles({'position':'absolute','z-index': this.getStyle('zIndex'),'margin-top':borderBottom +'px','margin-left': borderRight +'px'}).setProperties({'height':height,'width':width});
		canvas.inject(this, 'before');
		this.shadow = canvas;

		if (!canvas.getContext){
			return;
//			el = G_vmlCanvasManager.initElement(el);
//			var ctx = el.getContext('2d');
//			ctx.globalAlpha = opacityStart;
		}
		else{
			var ctx = canvas.getContext('2d');
		}
			ctx.save();
			var gradX = ctx.createLinearGradient(borderRight, 0, 0, 0);
			gradX.addColorStop(0, 'rgba('+color+','+opacityStart+')');
			gradX.addColorStop(1, 'transparent');
			ctx.fillStyle = gradX;
			ctx.fillRect(0, borderBottom, borderRight, height - borderBottom*2);
			ctx.restore();

			ctx.save();
			ctx.translate(width - borderRight,0);
			var gradX = ctx.createLinearGradient(0, 0, borderRight, 0);
			gradX.addColorStop(0, 'rgba('+color+','+opacityStart+')');
			gradX.addColorStop(1, 'transparent');
			ctx.fillStyle = gradX;
			ctx.fillRect(0, borderBottom, borderRight, height - borderBottom*2);
			ctx.restore();

			ctx.save();
			ctx.translate(borderRight,0);
			var gradX = ctx.createLinearGradient(0, borderBottom, 0, 0);
			gradX.addColorStop(0, 'rgba('+color+','+opacityStart+')');
			gradX.addColorStop(1, 'transparent');
			ctx.fillStyle = gradX;
			ctx.fillRect(0, 0, width - borderRight*2, borderBottom);
			ctx.restore();

			ctx.save();
			ctx.translate(borderRight,height-borderBottom);
			var gradX = ctx.createLinearGradient(0, 0, 0, borderBottom);
			gradX.addColorStop(0, 'rgba('+color+','+opacityStart+')');
			gradX.addColorStop(1, 'transparent');
			ctx.fillStyle = gradX;
			ctx.fillRect(0, 0, width - borderRight*2, borderBottom);
			ctx.restore();

			ctx.save();
			ctx.translate(width - borderRight, height - borderBottom);
			var gradZ = ctx.createRadialGradient(0,0,0,0,0,borderMax);
			gradZ.addColorStop(0, 'rgba('+color+','+opacityStart+')');
			gradZ.addColorStop(1, 'transparent');
			ctx.fillStyle = gradZ;
			ctx.scale(scaleX,scaleY);
			ctx.fillRect(0, 0, borderMax,borderMax);
			ctx.restore();

			ctx.save();
			ctx.translate(0,0);
			var gradZ = ctx.createRadialGradient(borderMax,borderMax,0,borderMax,borderMax,borderMax);
			gradZ.addColorStop(0, 'rgba('+color+','+opacityStart+')');
			gradZ.addColorStop(1, 'transparent');
			ctx.fillStyle = gradZ;
			ctx.scale(scaleX,scaleY);
			ctx.fillRect(0, 0, borderMax,borderMax);
			ctx.restore();

			ctx.save();
			ctx.translate(0,height - borderBottom);
			var gradZ = ctx.createRadialGradient(borderMax,0,0,borderMax,0,borderMax);
			gradZ.addColorStop(0, 'rgba('+color+','+opacityStart+')');
			gradZ.addColorStop(1, 'transparent');
			ctx.fillStyle = gradZ;
			ctx.scale(scaleX,scaleY);
			ctx.fillRect(0, 0, borderMax,borderMax);
			ctx.restore();

			ctx.save();
			ctx.translate(width - borderRight,0);
			var gradZ = ctx.createRadialGradient(0,borderMax,0,0,borderMax,borderMax);
			gradZ.addColorStop(0, 'rgba('+color+','+opacityStart+')');
			gradZ.addColorStop(1, 'transparent');
			ctx.fillStyle = gradZ;
			ctx.scale(scaleX,scaleY);
			ctx.fillRect(0, 0, borderMax,borderMax);
			ctx.restore();

	}
});























