/*
Script: roundedcorners.js

Authors:
	Sam Birch

License:
	MIT-style license.

*/
var RoundedCorners = new Class({
							  
	getOptions: function(){
		return {
			radius: 20,
			cls: 'box',
			overlay: false
		};
	},

	initialize: function(box, options){
		this.setOptions(this.getOptions(), options);
		
		this.box = $(box);
		//alert(this.box.getStyle('width').toInt())
		this.container = new Element('div').setStyles({
			position: 'relative',
			width: this.box.getStyle('width').toInt()+this.box.getStyle('paddingLeft').toInt()+this.box.getStyle('paddingRight').toInt()+'px',
			height: this.box.getStyle('height').toInt()+this.box.getStyle('paddingTop').toInt()+this.box.getStyle('paddingBottom').toInt()+'px',
			margin: this.box.getStyle('margin')
		}).injectBefore(this.box).adopt(this.box);
		
		if(window.ie){
			this.container.setStyle('height', this.box.getStyle('height'));
		}
		
		this.box.setStyles({
			position: 'absolute',
			top: '0px',
			left: '0px',
			margin: '0px',
			border: 'none',
			background: 'none',
			zIndex: 2
		});
		
		this.cornerContainer = new Element('div').setStyles({
			position: 'absolute',
			top: '0px',
			left: '0px',
			zIndex: 1
		}).injectAfter(this.box);
		
		if(this.options.overlay){
			this.cornerContainer.setStyle('zIndex', 3);
		}
		
		var num = 0;
		
		//top
		this.topLeft = new Element('div').addClass(this.options.cls+'TopLeft').addClass(this.options.cls+'Float').setStyles({
			width: this.options.radius+'px',
			height: this.options.radius+'px'
		}).injectInside(this.cornerContainer);
		
		this.top = new Element('div').addClass(this.options.cls+'Top').addClass(this.options.cls+'Float').setStyles({
			width: this.container.getStyle('width').toInt()-(this.options.radius*2)+'px'
		}).injectInside(this.cornerContainer);
		this.top.setStyle('height', (this.options.radius-this.top.getStyle('borderTopWidth').toInt())+'px');
		
		this.topRight = new Element('div').addClass(this.options.cls+'TopRight').addClass(this.options.cls+'Float').setStyles({
			width: this.options.radius+'px',
			height: this.options.radius+'px'
		}).injectInside(this.cornerContainer);
		
		//middle
		num = this.container.getStyle('height').toInt()-(this.options.radius*2);
		if(num < 0){num=0}
		
		this.middleLeft = new Element('div').addClass(this.options.cls+'MiddleLeft').addClass(this.options.cls+'Float').setStyles({
			height: num+'px'
		}).injectInside(this.cornerContainer);
		this.middleLeft.setStyle('width', (this.options.radius-this.middleLeft.getStyle('borderLeftWidth').toInt())+'px');
		
		this.middle = new Element('div').addClass(this.options.cls+'Middle').addClass(this.options.cls+'Float').setStyles({
			width: this.container.getStyle('width').toInt()-(this.options.radius*2)+'px',
			height: num+'px'
		}).injectInside(this.cornerContainer);
		
		this.middleRight = new Element('div').addClass(this.options.cls+'MiddleRight').addClass(this.options.cls+'Float').setStyles({
			height: num+'px'
		}).injectInside(this.cornerContainer);
		this.middleRight.setStyle('width', (this.options.radius-this.middleRight.getStyle('borderRightWidth').toInt())+'px');
		
		//bottom
		this.bottomLeft = new Element('div').addClass(this.options.cls+'BottomLeft').addClass(this.options.cls+'Float').setStyles({
			width: this.options.radius+'px',
			height: this.options.radius+'px'
		}).injectInside(this.cornerContainer);
		
		this.bottom = new Element('div').addClass(this.options.cls+'Bottom').addClass(this.options.cls+'Float').setStyles({
			width: this.container.getStyle('width').toInt()-(this.options.radius*2)+'px'
		}).injectInside(this.cornerContainer);
		this.bottom.setStyle('height', (this.options.radius-this.bottom.getStyle('borderBottomWidth').toInt())+'px');
		
		this.bottomRight = new Element('div').addClass(this.options.cls+'BottomRight').addClass(this.options.cls+'Float').setStyles({
			width: this.options.radius+'px',
			height: this.options.radius+'px'
		}).injectInside(this.cornerContainer);
	}

});
RoundedCorners.implement(new Events);
RoundedCorners.implement(new Options);


Window.addEvent('domready', function(){
	new RoundedCorners('roundedContent', {radius: 49});

});