function drawRectangle(a,b){a.beginPath();a.moveTo(b.x+b.corners[0],b.y);a.lineTo(b.x+b.width-b.corners[1],b.y);a.quadraticCurveTo(b.x+b.width,b.y,b.x+b.width,b.y+b.corners[1]);a.lineTo(b.x+b.width,b.y+b.height-b.corners[2]);a.quadraticCurveTo(b.x+b.width,b.y+b.height,b.x+b.width-b.corners[2],b.y+b.height);a.lineTo(b.x+b.corners[3],b.y+b.height);a.quadraticCurveTo(b.x,b.y+b.height,b.x,b.y+b.height-b.corners[3]);a.lineTo(b.x,b.y+b.corners[0]);a.quadraticCurveTo(b.x,b.y,b.x+b.corners[0],b.y)}function drawPointer(b,a,c){switch(a){case"top":b.moveTo(c.x+(Math.round(c.width/2-c.size[0]/2)),c.y);b.lineTo(c.x+(Math.round(c.width/2)),c.y-c.size[1]);b.lineTo(c.x+(Math.round(c.width/2+c.size[0]/2)),c.y);b.lineTo(c.x+(Math.round(c.width/2-c.size[0]/2)),c.y);break;case"bottom":b.moveTo(c.x+(Math.round(c.width/2-c.size[0]/2-c.shiftx)),c.height+c.y);b.lineTo(c.x+(Math.round(c.width/2)-c.shiftx),c.height+c.y+c.size[1]);b.lineTo(c.x+(Math.round(c.width/2+c.size[0]/2-c.shiftx)),c.height+c.y);b.lineTo(c.x+(Math.round(c.width/2-c.size[0]/2-c.shiftx)),c.height+c.y);break;case"left":b.moveTo(c.x,(Math.round(c.height/2+c.size[0]/2)));b.lineTo(c.x-c.size[1],(Math.round(c.height/2)));b.lineTo(c.x,(Math.round(c.height/2-c.size[0]/2)));b.lineTo(c.x,(Math.round(c.height/2+c.size[0]/2)));break;case"right":b.moveTo(c.width-c.x,(Math.round(c.height/2+c.size[0]/2)));b.lineTo(c.width-c.x+c.size[1],(Math.round(c.height/2)));b.lineTo(c.width-c.x,(Math.round(c.height/2-c.size[0]/2)));b.lineTo(c.width-c.x,(Math.round(c.height/2+c.size[0]/2)));break}}function drawCloseButton(b,a,d,c){b.beginPath();b.moveTo(a,d);b.arc(a,d,c-1,0,Math.PI*2,true);b.fillStyle=getRGBA([106,106,106,1]);b.fill();b.strokeStyle=getRGBA([106,106,106,1]);b.stroke();b.lineWidth=2.3;b.beginPath();b.strokeStyle=getRGBA([42,42,42,1]);b.moveTo(a-3,d-3);b.lineTo(a+3,d+3);b.stroke();b.beginPath();b.moveTo(a+3,d-3);b.lineTo(a-3,d+3);b.stroke()}function getRGBA(a){if(a.length==3){return"rgba("+a.join(", ")+", 1)"}if(a.length==4){return"rgba("+a.join(", ")+")"}return null}var ICanvas=new Class({options:{x:0,y:0,width:100,height:100,zindex:0,className:"icanvas",corners:[5,5,5,5],bodyStartColor:[255,255,255,1],bodyStopColor:[255,255,255,1],gradientMode:"vertical",border:0,borderStartColor:[240,240,240,1],borderStopColor:[240,240,240,1],glow:0,glowColor:[0,0,0],innerGlow:0,innerGlowStartColor:[255,255,255,1],innerGlowStopColor:[255,255,255,0.1],shadow:0,shadowColor:[0,0,0],header:0,headerBorder:0,headerBorderStartColor:[240,240,240,1],headerBorderStopColor:[240,240,240,1],headerBodyStartColor:[255,255,255,1],headerBodyStopColor:[255,255,255,1],pointer:"none",pointerSize:[0,0],pointerShiftX:0},Implements:[Events,Options],initialize:function(){var d=Array.link(arguments,{options:Object.type});this.setOptions(d.options||{});this.canvas=new Canvas({"class":this.options.className,height:this.options.height,width:this.options.width,styles:{position:"absolute",left:this.options.x,top:this.options.y}});var a=this.canvas.getContext("2d");if(this.options.shadow>0){this.drawShadow(a)}if(this.options.header>0){if(this.options.headerBorder>0){this.drawHeader(a,this.options.shadow,0,false,this.options.headerBorderStartColor,this.options.headerBorderStopColor)}this.drawHeader(a,(this.options.shadow+this.options.border),this.options.border,false,this.options.headerBodyStartColor,this.options.headerBodyStopColor);if(this.options.innerGlow>0){this.drawHeader(a,this.options.shadow+1,0,true,this.options.innerGlowStartColor,this.options.innerGlowStopColor)}var c=(this.options.width-(this.options.shadow+this.options.border)-7-4);var b=(this.options.y+(this.options.shadow+this.options.border)+7+4);if(this.options.pointer=="top"){b=b+this.options.pointerSize[1]}drawCloseButton(a,c,b,7.5);if(this.options.border>0){this.drawBody(a,this.options.shadow,this.options.header,0,this.options.borderStartColor,this.options.borderStopColor,true)}this.drawBody(a,(this.options.shadow+this.options.border),this.options.header,this.options.border,this.options.bodyStartColor,this.options.bodyStopColor,false)}else{if(this.options.border>0){this.drawBody(a,this.options.shadow,0,0,this.options.borderStartColor,this.options.borderStopColor,true)}this.drawBody(a,(this.options.shadow+this.options.border),0,0,this.options.bodyStartColor,this.options.bodyStopColor,false)}return this.canvas},drawShadow:function(j){var d=[0,0,0,0];var f=0;var e=0;switch(this.options.pointer){case"top":d[0]=this.options.pointerSize[1];e=d[0];break;case"right":d[1]=this.options.pointerSize[0];f=d[1];break;case"bottom":d[2]=this.options.pointerSize[1];e=0-d[0];break;case"left":this.options.header,d[3]=this.options.pointerSize[0];f=d[3];break}for(var c=0;c<=this.options.shadow;c++){var g=this.options.shadow-c+this.options.corners[0];this.options.shadowColor[3]=0.001*Math.pow(c+1,1.7);drawRectangle(j,{x:this.options.x+c+d[3],y:this.options.y+c+d[0],width:this.options.width-c*2-d[1]-d[3],height:this.options.height-c*2-d[0]-d[2],corners:[g,g,g,g]});if(this.options.pointer!="none"){var b=this.options.height;var a=this.options.x+f+c;if(this.options.pointer=="top"||this.options.pointer=="bottom"){b=this.options.height-this.options.pointerSize[1]-c*2}if(this.options.pointer=="right"){a=this.options.x+f-c}drawPointer(j,this.options.pointer,{x:a,y:this.options.y+e+c,width:this.options.width-c*2,height:b,size:this.options.pointerSize,shiftx:this.options.pointerShiftX})}var h;if(getRGBA(this.options.bodyStartColor)!=getRGBA(this.options.bodyStopColor)){if(this.options.gradientMode=="vertical"){h=j.createLinearGradient((this.options.x+c+d[3]),(this.options.y+c+d[0]),(this.options.x+c+d[3]),(this.options.height-c*2-d[0]-d[2]))}else{h=j.createLinearGradient((this.options.x+c+d[3]),(this.options.y+c+d[0]),(this.options.width-c*2-d[1]-d[3]),(this.options.width-c*2-d[1]-d[3]))}h.addColorStop(0,getRGBA(this.options.shadowColor));h.addColorStop(1,getRGBA(this.options.shadowColor))}else{h=getRGBA(this.options.shadowColor)}j.fillStyle=h;j.fill()}},drawBody:function(l,d,k,h,e,c,a){var b=[d,d,d,d];var i=0;var g=0;switch(this.options.pointer){case"top":b[0]=b[0]+this.options.pointerSize[1]+this.options.header;g=b[0];k=0;break;case"right":b[1]=b[1]+this.options.pointerSize[0];i=b[1];break;case"bottom":b[2]=b[2]+this.options.pointerSize[1];g=0-b[2];break;case"left":b[3]=b[3]+this.options.pointerSize[0];i=b[3];break}var f=[0,0,0,0];if(this.options.header>0){f=[0,0,this.options.corners[2],this.options.corners[3]]}else{f=this.options.corners}drawRectangle(l,{x:this.options.x+b[3],y:this.options.y+b[0]+k-h,width:this.options.width-b[1]-b[3],height:this.options.height-b[0]-b[2]-k+h,corners:f});if(this.options.pointer!="none"){if(this.options.header==0){drawPointer(l,this.options.pointer,{x:this.options.x+i,y:this.options.y+g,width:this.options.width,height:this.options.height,size:this.options.pointerSize,shiftx:this.options.pointerShiftX})}else{if(this.options.pointer!="top"){drawPointer(l,this.options.pointer,{x:this.options.x+i,y:this.options.y+g,width:this.options.width,height:this.options.height,size:this.options.pointerSize,shiftx:this.options.pointerShiftX})}}}var j;if(a){if(getRGBA(this.options.bodyStartColor)!=getRGBA(this.options.bodyStopColor)){if(this.options.gradientMode=="vertical"){j=l.createLinearGradient((this.options.x+b[3]),(this.options.y+b[0]),(this.options.x+b[3]),(this.options.height-b[0]-b[2]))}else{j=l.createLinearGradient((this.options.x+b[3]),(this.options.y+b[0]),(this.options.width-b[1]-b[3]),(this.options.width-b[1]-b[3]))}j.addColorStop(0,getRGBA(e));j.addColorStop(1,getRGBA(c))}else{j=getRGBA(e)}l.fillStyle=j}else{if(getRGBA(e)!=getRGBA(c)){if(this.options.gradientMode=="vertical"){j=l.createLinearGradient((this.options.x+b[3]),(this.options.y+b[0]),(this.options.x+b[3]),(this.options.height-b[0]-b[2]))}else{j=l.createLinearGradient((this.options.x+b[3]),(this.options.y+b[0]),(this.options.width-b[1]-b[3]),(this.options.width-b[1]-b[3]))}j.addColorStop(0,getRGBA(e));j.addColorStop(1,getRGBA(c))}else{j=getRGBA(e)}l.fillStyle=j}l.fill()},drawHeader:function(j,d,g,b,e,c){var a=[d,d,d,d];if(this.options.pointer=="top"){a[0]=a[0]+this.options.pointerSize[1]}var f=[this.options.corners[0],this.options.corners[1],0,0];var i=this.options.header-g;if(b){i=this.options.innerGlow}drawRectangle(j,{x:this.options.x+a[3],y:this.options.y+a[0],width:this.options.width-a[1]-a[3],height:i,corners:f});if(this.options.pointer=="top"){drawPointer(j,this.options.pointer,{x:this.options.x,y:this.options.y+a[0],width:this.options.width,height:this.header,size:this.options.pointerSize,shiftx:this.options.pointerShiftX})}var h;if(this.options.gradientMode=="vertical"){h=j.createLinearGradient((this.options.x+a[3]),(this.options.y+a[0]),(this.options.x+a[3]),(this.options.y+a[0]+i))}else{h=j.createLinearGradient((this.options.x+a[3]),(this.options.y+a[0]),(this.options.width-a[1]-a[3]),(this.options.y+a[0]))}h.addColorStop(0,getRGBA(e));h.addColorStop(1,getRGBA(c));j.fillStyle=h;j.fill()}});var ICanvasElement=new Class({Implements:[Events,Options],Extends:ICanvas,initialize:function(){var a=Array.link(arguments,{element:$defined,options:Object.type});this.element=a.element;if(!["relative","absolute","fixed"].contains(this.element.getStyle("position"))){this.element.setStyle("position","relative")}if(!a.options.width){a.options.width=this.element.getSize().x}if(!a.options.height){a.options.height=this.element.getSize().y}if(!this.element.hasClass("bn")){this.element.addClass("bn")}this.canvas=this.parent(a.options);this.canvas.inject(this.element,"bottom");return this}});Element.implement({ICanvasElement:function(a){var b=function(){new ICanvasElement(this,a)}.bind(this);if(Browser.Engine.trident4){b.delay(100,this)}else{b()}return this}});