/*
---
description: BorderRadius - Mootools plugin to round corners
license: MIT-style license.
authors: 
    - Bui Minh Long (http://minhlong139.plus.vn/) (minhlong139@gmail.com)    
requires:
    core/1.2.3: '*'    
provides: [Element, Elements, $, $$]
...
*/
var BorderRadius=new Class({Implements:[Options],options:{radiusTopLeft:0,radiusTopRight:0,radiusTop:0,radiusBottomLeft:0,radiusBottomRight:0,radiusBottom:0,radius:0,borderWidth:null,borderStyle:null,borderColor:null,parentBgColor:"#fff",css3:true,wrapperClass:"border-radius-wrapper",key:"border-radius-lDwEgapDpDOIasdlWERSDFxclvkjs234oiSDFSDFsadg@#$098t356sgdlfgjsDFGS@dsfgkyoire"},borderRadier:{},initialize:function(b,a){this.element=b;this.initOptions(a);this.build()},initOptions:function(a){var c=JSON.decode(this.element.getProperty("options"));a=$merge(c,a);this.setOptions(a);var b=this.element.getParent().getStyle("background-color");b=b=="transparent"?this.options.parentBgColor:b;this.options.borderWidth=this.options.borderWidth==null?parseInt(this.element.getStyle("border-top-width")):this.options.borderWidth;this.options.borderStyle=this.options.borderStyle==null?this.element.getStyle("border-top-style"):this.options.borderStyle;this.options.borderStyle=this.options.borderStyle=="none"?"solid":this.options.borderStyle;this.options.borderColor=this.options.borderColor==null?this.element.getStyle("border-top-color"):this.options.borderColor;if(a.radius){this.setOptions({radiusBottomLeft:a.radius,radiusTopLeft:a.radius,radiusBottomRight:a.radius,radiusTopRight:a.radius})}if(a.radiusTop){this.setOptions({radiusTopLeft:a.radiusTop,radiusTopRight:a.radiusTop})}if(a.radiusBottom){this.setOptions({radiusBottomLeft:a.radiusBottom,radiusBottomRight:a.radiusBottom})}["radiusBottomLeft","radiusTopLeft","radiusBottomRight","radiusTopRight"].each(function(d){if(a[d]){this.options[d]=a[d]}}.bind(this));this.setOptions({parentBgColor:b})},build:function(){if(this.element.hasClass(this.options.key)){return}this.element.addClass(this.options.key);if(this.options.css3){if(!this.buildByCss3()){this.fixCss3()}}else{this.fixCss3()}},wrap:function(){var b=Math.max(parseInt(this.element.getStyle("padding-top")),this.options.radiusTop);if(b>=this.options.radiusTop){b-=this.options.radiusTop}this.paddingTop=b;var c=Math.max(parseInt(this.element.getStyle("padding-bottom")),this.options.radiusBottom);if(c>=this.options.radiusBottom){c-=this.options.radiusBottom}this.paddingBottom=c;var a={padding:this.element.getStyle("padding"),"padding-top":b,"padding-bottom":c,display:"block"};this.wrapper=new Element("div",{"class":this.options.wrapperClass});this.wrapper.innerHTML=this.element.innerHTML;this.element.innerHTML="";this.wrapper.setStyles(a).inject(this.element.setStyle("padding",0),"bottom")},fixCss3:function(){this.wrap();var f=false;var h={top:{left:this.options.radiusTopLeft,right:this.options.radiusTopRight},bottom:{left:this.options.radiusBottomLeft,right:this.options.radiusBottomRight}};if(this.options.borderWidth>0){this.element.setStyle("border","none");f=true;var p={"border-width":this.options.borderWidth,"border-style":this.options.borderStyle,"border-color":this.options.borderColor,"background-color":this.element.getStyle("background-color")};if(this.options.radiusBottomLeft!=0||this.options.radiusBottomRight!=0){p["border-bottom"]="none"}if(this.options.radiusTopLeft!=0||this.options.radiusTopRight!=0){p["border-top"]="none"}this.wrapper.setStyles(p)}for(var b in h){var c=new Element("div").setStyles({display:"block"});c.inject(this.element,b);this.borderRadier[b]=c;for(var g=0;g<Math.max(h[b].left,h[b].right);g++){var o=Math.round(Math.sqrt(Math.max(h[b].left*h[b].left-g*g,0)));var j=Math.floor(Math.sqrt(Math.max(h[b].left*h[b].left-g*g,0)));var d=Math.round(Math.sqrt(Math.max(h[b].right*h[b].right-g*g,0)));var a=Math.floor(Math.sqrt(Math.max(h[b].right*h[b].right-g*g,0)));var l=h[b].left==0?0:Math.max(h[b].left-o,0);var m=h[b].right==0?0:Math.max(h[b].right-d,0);var n={display:"block",overflow:"hidden",height:1,position:"relative","border-color":this.options.parentBgColor,"border-style":"solid","border-left-width":l,"border-right-width":m,"border-top-width":0,"border-bottom-width":0,"background-color":this.element.getStyle("background-color")};var q={height:1,"border-color":this.options.parentBgColor,"border-style":this.options.borderStyle,"border-width":"0px 1px"};var k={height:1,"border-color":this.options.borderColor,"border-style":this.options.borderStyle,"border-width":"0px "+this.options.borderWidth+"px","border-top-width":g>=Math.max(h[b].left,h[b].right)-this.options.borderWidth?this.options.borderWidth:0};var e=(new Element("div",{"class":g})).setStyles(n).inject(c,b);if(f){(new Element("div")).setStyles(k).inject(e)}}}this.autoResize()},autoResize:function(){var b=0;for(var c in this.borderRadier){b+=this.borderRadier[c].getSize().y}var a=this.element.getSize().y-b-this.paddingTop-this.paddingBottom;if(a>0){this.wrapper.setStyle("height",a)}},buildByCss3:function(){if(this.checkBorderRadius()){var a={gecko:{"-moz-border-radius-topleft":this.options.radiusTopLeft,"-moz-border-radius-topright":this.options.radiusTopRight,"-moz-border-radius-bottomleft":this.options.radiusBottomLeft,"-moz-border-radius-bottomright":this.options.radiusBottomRight},webkit:{"-webkit-border-top-left-radius":this.options.radiusTopLeft,"-webkit-border-top-right-radius":this.options.radiusTopRight,"-webkit-border-bottom-left-radius":this.options.radiusBottomLeft,"-webkit-border-bottom-right-radius":this.options.radiusBottomRight}};if(a[Browser.Engine.name]){this.element.setStyles(a[Browser.Engine.name]);return true}}return false},checkBorderRadius:function(){var b=document.documentElement,a;if(b&&(a=b.style)){return(typeof a.borderRadius=="string"||typeof a.MozBorderRadius=="string"||typeof a.WebkitBorderRadius=="string"||typeof a.KhtmlBorderRadius=="string")}return null}});Element.implement({borderRadius:function(a){var b=new BorderRadius(this,a);this.store("br",b);return b}});

