/**
 * Utility to create 9 sliced block elements like forms, divs etc.
 * @author Rytis Alekna
 */
( function ($) {
	
	/**
	 * 
	 * @param {Object} target where to apply 9 slice rect
	 */
	$.fn.ra9sliceRect = function ( target, options ) {
		
		var opt = {
			
			slicedBoxClass		: 'raSlicedBox',
			
			topLeftClass		: 'raTopLeftSlice',
			
			topRightClass		: 'raTopRightSlice',
			
			middleLeftClass		: 'raMiddleLeftSlice',
			
			contentSliceClass	: 'raContentSlice',
			// content itself
			middleRightClass	: 'raMiddleRightSlice',
			
			bottomLeftClass		: 'raBottomLeftSlice',
			
			bottomRightClass	: 'raBottomRightSlice'
			
		}
		
		var target = target;
		
		opt = $.extend( opt, options);
		
		function generate( value ) {
			var wraper = $('<div class=\'' + opt.slicedBoxClass + '\'>\n' +
			'<div class=\'' +
			opt.topLeftClass +
			'\'>\n' +
			'<div class=\'' +
			opt.topRightClass +
			'\'></div>\n' +
			'</div>' +
			'<div class=\'' +
			opt.middleLeftClass +
			'\'>\n' +
			'<div class=\'' +
			opt.middleRightClass +
			'\'>\n' +
			'<div class=\'' +
			opt.contentSliceClass +
			'\'>\n' +
			
			// leave space for actual content
			
			'</div>\n' +
			'</div>\n' +
			'</div>\n' +
			'<div class=\'' +
			opt.bottomLeftClass +
			'\'>\n' +
			'<div class=\'' +
			opt.bottomRightClass +
			'\'></div>\n' +
			'</div>' +
			'</div>');
			
			$('.' + opt.contentSliceClass, wraper ).append( $(value).clone().removeClass(target) );
			// wraper.width( $( value ).width() + parseInt( $( '.' + opt.middleLeftClass, wraper ).css( 'padding-left' ) ) + parseInt( $( '.' + opt.middleRightClass, wraper ).css( 'padding-right' ) ) + ( $.browser.msie ? 15 : 0 ) );
			
			
			return wraper;
			
		}
		
		$( target ).each(
			function() {
				$(this).replaceWith(generate(this));
				// $(this).css( 'width', $( this ).width() + parseInt( $( '.' + opt.middleLeftClass, this ).css( 'padding-left' ) ) + parseInt( $( '.' + opt.middleRightClass, this ).css( 'padding-right' ) ) + ( $.browser.msie ? 15 : 15 ) )
			}
		)
		
		return this;
		
	}
	
	
})(jQuery)

