// border-radius
// Jonah Fox
// MIT Licensed
// Use like : $(".myClass").borderRadius() will attempt to apply curved corners as per the elements -moz-border-radius attribute
// Good:
// - supports textured forgrounds and backgrounds
// - maintains layouts
// - very easy to use
// - IE6 and IE7
// Bad:
// - not fluid. Reapply if the dimensions change
// - only supports rounding all corners
// - no hover
// - no Opera

;(function($){

      if($.browser.msie && document.namespaces["v"] == null) {
          document.namespaces.add("v", "urn:schemas-microsoft-com:vml");
              var ss = document.createStyleSheet().owningElement;
                  ss.styleSheet.cssText = "v\\:*{behavior:url(#default#VML);}"
                    }

                      function RR(o) {
                          var html = '<div class="ie_border_radius" style="position: absolute; left: 0px; top: 0px; z-index: -1; width:' + (o.width) + "px;height:" + (o.height) + 'px;">'
                              html += '<v:roundrect arcsize="' + o.arcSize + '" strokecolor="' + o.strokeColor + '" strokeweight="' + o.strokeWeight + '" style="behavior: url(#default#VML); position:absolute; antialias: true; width:' + (o.width) + "px;height:" + (o.height) + 'px;' + "" + '" >';
                                  html += '<v:fill color="' + o.fillColor + '" src="' + o.fillSrc + '" type="tile" style="behavior: url(#default#VML);" />';
                                      html += '</v:roundrect>';
                                          html += "</div>"
                                                
                                          return html;
                                            }

                                              $.fn.borderRadius = !$.browser.msie ? function() {} : function(options){

                                                 var options = options || {}
                                                    
                                                       return this.each(function() {
                                                                   
                                                                   var opts = {}
                                                                           
                                                                   if(this._border_radius_opts) {
                                                                        opts = this._border_radius_opts
                                                                             $(this).find(".ie_border_radius").remove();
                                                                                  }
                                                                                          else
                                                                                                  {
                                                                                                       opts.strokeColor = this.currentStyle.borderColor;
                                                                                                            opts.strokeWeight = this.currentStyle.borderWidth;

                                                                                                                 opts.fillColor = this.currentStyle.backgroundColor;
                                                                                                                      opts.fillSrc = this.currentStyle.backgroundImage.replace(/^url\("(.+)"\)$/, '$1');

                                                                                                                           this.style.border = 'none'; // perhaps add onto padding?
                                                                                                                                this.style.background = 'transparent';
                                                                                                                                     this._border_radius_opts = opts
                                                                                                                                          }

                                                            opts.width = $(this).outerWidth()
                                                                   opts.height = $(this).outerHeight()
                                                                       
                                                                        var r = options.radius || parseInt( this.currentStyle['-ie-border-radius'] || this.currentStyle['-moz-border-radius'] || this.currentStyle['moz-border-radius'] );

                                                                 opts.arcSize = Math.min( r / Math.min(opts.width, opts.height), 1);
                                                                    
                                                                         this.innerHTML += RR(opts);
                                                                                 
                                                                                 if(this.currentStyle.position != "absolute")
                                                                                             this.style.position = "relative";
                                                                                           
                                                                                      
                                                                                         this.style.zoom = 1; // give it a layout
                                                                                               });
                                                           }
})(jQuery);

