AVE.roundedCorners = (function(){
	function _createRow(outerClass) {
		var outer = document.createElement('div');
		$(outer).addClassName(outerClass);
		var innerTop = document.createElement('div');
		outer.insert(innerTop);

		return outer;
	}

	return {
		round: function(element) {
			// remove classname if it's been rounded so it doesn't happen again.
			$(element).removeClassName('rounded');
			var div = new Element('div').addClassName('ave-dynamic-rounding');
			var wrapper = $(element).wrap(div);
			if(element.hasClassName('border')) wrapper.addClassName('ave-rounded-border');
			
			if(element.hasClassName('no-shadow')) wrapper.addClassName('no-shadow');
			wrapper.style.position = 'relative';	// relativize() causes IE6 error
			
			var margins = $w('marginTop marginRight marginBottom marginLeft');
			margins.each(function(m){
				wrapper.style[m] = $(element).getStyle(m);
				$(element).style[m] = 0;
			});
			
			if(!arguments[1] || (arguments[1].toUpperCase() != "TOP" && arguments[1].toUpperCase() != "BOTTOM")) {
				wrapper.insert({
					top: _createRow('ave-rounded-top')
					}).insert({
						bottom: _createRow('ave-rounded-bottom')
					});
			} else {
				if(arguments[1].toUpperCase() == "TOP") {
						wrapper.insert({
							top: _createRow('ave-rounded-top')
							});
				}
				
				if(arguments[1].toUpperCase() == "BOTTOM") {
						wrapper.insert({
							bottom: _createRow('ave-rounded-bottom')
							});
				}
			}

			return wrapper;
		}
	};
})();

Element.addMethods({
  round: AVE.roundedCorners.round
});

Event.observe(window,'load',function() {
	$$('.rounded').invoke('round');
	});
