/*
---------------------------------------------------------------------------------------------------

ROUND CORNERS LIBRARY

Contains the pixel generator and cornerData

---------------------------------------------------------------------------------------------------
*/


// RC DIV PROPERTIES
// collect the div properties
function CC_rcDivProperties(div) {
	// content
	divContent				= div.innerHTML;

	// id
	divID					= div.id;

	// border colors
	divBorderColorLeft		= format_colour(div.style.borderLeftColor);
	divBorderColorRight		= format_colour(div.style.borderRightColor);
	divBorderColorTop		= format_colour(div.style.borderTopColor);
	divBorderColorBottom	= format_colour(div.style.borderBottomColor);

	// background image
	divBackgroundImage		= div.style.backgroundImage;
	divBackgroundRepeat		= div.style.backgroundRepeat;

	// size
	divWidth				= parseInt(div.style.width.substr(0,div.style.width.length-2));
	divHeight				= parseInt(div.style.height.substr(0,div.style.height.length-2));

	// border size
	divBorderSizeLeft		= div.style.borderLeftWidth.substr(0,div.style.borderLeftWidth.length-2);
	divBorderSizeRight		= div.style.borderRightWidth.substr(0,div.style.borderRightWidth.length-2);
	divBorderSizeTop		= div.style.borderTopWidth.substr(0,div.style.borderTopWidth.length-2);
	divBorderSizeBottom		= div.style.borderBottomWidth.substr(0,div.style.borderBottomWidth.length-2);

	// padding
	divPaddingLeft			= div.style.paddingLeft.substr(0,div.style.paddingLeft.length-2);
	divPaddingRight			= div.style.paddingRight.substr(0,div.style.paddingRight.length-2);
	divPaddingTop			= div.style.paddingTop.substr(0,div.style.paddingTop.length-2);
	divPaddingBottom		= div.style.paddingBottom.substr(0,div.style.paddingBottom.length-2);

	// font
	divFontFamily			= div.style.fontFamily;
	divFontSize				= div.style.fontSize.substr(0,div.style.fontSize.length-2);

	// existant
	if(div.style.color != '') {divFontColor = format_colour(div.style.color);} else {divFontColor = '';}
	if(div.style.backgroundColor != '') {divBackgroundColor = format_colour(div.style.backgroundColor);} else {divBackgroundColor = '';}

	return 'rcID_E'+divBorderColorLeft+'_B'+divBackgroundColor+'_I'+divBackgroundImage+'_H'+divHeight;
}


// RC PIXEL
// This actually generates pixels and racks (div containers with backgrounds). It determines also background position based on dimensions
function CC_rcPixel(top, left, width, height, color, reversed_alpha, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes) {

	// calculate alpha
	if (reversed_alpha != false) {

		alpha = 100 - reversed_alpha;

		if (alpha < 10) {
			alpha = '0'+alpha;
		}
	} else {
		alpha = 99;
	}

	// setup background image
	if (backgroundImage != '' && left != 'left' && left != 'right') {

		background = 'background-image: '+backgroundImage+'; background-repeat: '+backgroundRepeat+'; background-position: ';

		// calculate position
		switch (orientation) {
			case 1:
				bgLeft		= left - borderSizes[1];
				bgTop		= top - borderSizes[3];

				background += '-'+bgLeft+' -'+bgTop+';';
			break;

			case 2:
				bgLeft		= divWidth - cornerMax - borderSizes[1];
				bgTop		= top - borderSizes[3];

				background += '-'+bgLeft+' -'+bgTop+';';
			break;

			case 3:
				if(divHeight == undefined || isNaN(divHeight)) {
					background = '';
				} else {
					bgLeft		= left - borderSizes[1];
					bgTop		= divHeight - (cornerMax - top) - borderSizes[3];

					background += '-'+bgLeft+' -'+bgTop+';';
				}
			break;

			case 4:
				if(divHeight == undefined || isNaN(divHeight)) {
					background = '';
				} else {
					bgLeft		= divWidth - cornerMax - borderSizes[1];
					bgTop		= divHeight - (cornerMax - top) - borderSizes[3];

					background += '-'+bgLeft+' -'+bgTop+';';
				}
			break;
		}

	} else {
		background = '';
	}


	// setup pixel
	if (left != 'left' && left != 'right') {
		// pixel is maybe a rack
		px = '<div style="width: '+width+'px; height: '+height+'px; position: absolute; background-color: '+color+'; opacity: .'+alpha+'; filter: alpha(opacity='+alpha+'); top: '+top+'px; left: '+left+'px; '+background+'">';

		// pixel is a rack if reversed_alpha is false
		if (reversed_alpha != false) {
			px += '<!-- --></div>';
		}

	} else {

		// pixel is a normal pixel
		px = '<div style="width: '+width+'px; height: '+height+'px; background-color: '+color+'; opacity: .'+alpha+'; filter: alpha(opacity='+alpha+'); float: '+left+';"><!-- --></div>';
	}

	cornerCount++;

	return px;
}



// RC LIBRARY
// Library seting up a round corner based on orientation and maxcorner
function CC_rcLibrary(cornerSize, borderColor, innerColor, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerMax, borderSizes) {

	// setup
	cornerArray = '';

	// substract
	if (cornerSize == false) {
		substract = 0;
	} else {
		if (cornerSize > 2){
			substract = cornerSize;
		} else {
			substract = 2;
		}
	}

	// difference
	cornerAdd = cornerMax - substract;

	// check orientation and create settings
	switch(orientation) {
		case 1:
			top_r	= 1;
			top_m	= 0;

			left_r	= 1;
			left_m	= 0;
			left_w	= 0;

			topAdd	= 0;
			leftAdd	= 0;

			side	= 'left';
		break;

		case 2:
			top_r	= 1;
			top_m	= 0;

			left_r	= -1;
			left_m	= substract - 1;
			left_w	= -1;

			topAdd	= 0;
			leftAdd = cornerAdd;

			side	= 'right';
		break;

		case 3:
			top_r	= -1;
			top_m	= substract - 1;

			left_r	= 1;
			left_m	= 0;
			left_w	= 0;

			topAdd	= cornerAdd;
			leftAdd = 0;

			side	= 'left';
		break;

		case 4:
			top_r	= -1;
			top_m	= substract - 1;

			left_r	= -1;
			left_m	= substract - 1;
			left_w	= -1;

			topAdd	= cornerAdd;
			leftAdd = cornerAdd;

			side	= 'right';
		break;
	}


	switch(cornerSize) {

		case false: // only background
			cornerArray += CC_rcPixel((0*top_r)+top_m, 0, 0+cornerAdd, 0+cornerAdd, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, substract, cornerMax, borderSizes);
			cornerArray += '</div>';
		break;

		case 0: // only top
			cornerArray += CC_rcPixel((0*top_r)+top_m+topAdd, 0, 2+cornerAdd, 1, borderColor, 1);

			cornerArray += CC_rcPixel((1*top_r)+top_m, 0, 2+cornerAdd, 1+cornerAdd, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, substract, cornerMax, borderSizes);
			cornerArray += '</div>';
		break;

		case 1: // only left
			cornerArray += CC_rcPixel(0, (0*left_r)+left_m+leftAdd, 1, 2+cornerAdd, borderColor, 1);

			cornerArray += CC_rcPixel(0, (1*left_r)+left_m+(0*left_w), 1+cornerAdd, 2+cornerAdd, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, substract, cornerMax, borderSizes);
			cornerArray += '</div>';
		break;

		case 2: // top and left
			cornerArray += CC_rcPixel((0*top_r)+top_m+topAdd, (0*left_r)+left_m+leftAdd, 1, 1, borderColor, 20);
			cornerArray += CC_rcPixel((0*top_r)+top_m+topAdd, (1*left_r)+left_m, 1+cornerAdd, 1, borderColor, 1);

			cornerArray += CC_rcPixel((1*top_r)+top_m, (0*left_r)+left_m+leftAdd, 1, 1+cornerAdd, borderColor, 1);
			cornerArray += CC_rcPixel((1*top_r)+top_m, (1*left_r)+left_m+(0*left_w), 1+cornerAdd, 1+cornerAdd, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
			cornerArray += '</div>';
		break;



		case 5:
			cornerArray += CC_rcPixel((0*top_r)+top_m+topAdd, (1*left_r)+left_m+leftAdd, 1, 1, borderColor, 87);
			cornerArray += CC_rcPixel((0*top_r)+top_m+topAdd, (2*left_r)+left_m+leftAdd, 1, 1, borderColor, 41);
			cornerArray += CC_rcPixel((0*top_r)+top_m+topAdd, (3*left_r)+left_m+leftAdd, 1, 1, borderColor, 22);
			cornerArray += CC_rcPixel((0*top_r)+top_m+topAdd, (4*left_r)+left_m, 1+cornerAdd, 1, borderColor, 1);

			cornerArray += CC_rcPixel((1*top_r)+top_m+topAdd, (0*left_r)+left_m+leftAdd, 1, 1, borderColor, 87);
			cornerArray += CC_rcPixel((1*top_r)+top_m+topAdd, (1*left_r)+left_m+leftAdd, 1, 1, borderColor, 35);
			cornerArray += CC_rcPixel((1*top_r)+top_m+topAdd, (2*left_r)+left_m+(2*left_w), 3+cornerAdd, 1, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 48);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 78);
			cornerArray += '</div>';

			cornerArray += CC_rcPixel((2*top_r)+top_m+topAdd, (0*left_r)+left_m+leftAdd, 1, 1, borderColor, 41);
			cornerArray += CC_rcPixel((2*top_r)+top_m+topAdd, (1*left_r)+left_m+(3*left_w), 4+cornerAdd, 1, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 48);
			cornerArray += '</div>';

			cornerArray += CC_rcPixel((3*top_r)+top_m+topAdd, (0*left_r)+left_m+leftAdd, 1, 1, borderColor, 22);
			cornerArray += CC_rcPixel((3*top_r)+top_m+topAdd, (1*left_r)+left_m+(3*left_w), 4+cornerAdd, 1, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 78);
			cornerArray += '</div>';

			cornerArray += CC_rcPixel((4*top_r)+top_m, (0*left_r)+left_m+leftAdd, 1, 1+cornerAdd, borderColor, 1);
			cornerArray += CC_rcPixel((4*top_r)+top_m, (1*left_r)+left_m+(3*left_w), 4+cornerAdd, 1+cornerAdd, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
			cornerArray += '</div>';
		break;


		case 10:
			cornerArray += CC_rcPixel((0*top_r)+top_m+topAdd, (5*left_r)+left_m+leftAdd, 1, 1, borderColor, 78);
			cornerArray += CC_rcPixel((0*top_r)+top_m+topAdd, (6*left_r)+left_m+leftAdd, 1, 1, borderColor, 51);
			cornerArray += CC_rcPixel((0*top_r)+top_m+topAdd, (7*left_r)+left_m+leftAdd, 1, 1, borderColor, 28);
			cornerArray += CC_rcPixel((0*top_r)+top_m+topAdd, (8*left_r)+left_m+leftAdd, 1, 1, borderColor, 11);
			cornerArray += CC_rcPixel((0*top_r)+top_m+topAdd, (9*left_r)+left_m, 1+cornerAdd, 1, borderColor, 1);

			cornerArray += CC_rcPixel((1*top_r)+top_m+topAdd, (3*left_r)+left_m+leftAdd, 1, 1, borderColor, 86);
			cornerArray += CC_rcPixel((1*top_r)+top_m+topAdd, (4*left_r)+left_m+leftAdd, 1, 1, borderColor, 47);
			cornerArray += CC_rcPixel((1*top_r)+top_m+topAdd, (5*left_r)+left_m+leftAdd, 1, 1, borderColor, 22);
			cornerArray += CC_rcPixel((1*top_r)+top_m+topAdd, (6*left_r)+left_m+(3*left_w), 4+cornerAdd, 1, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 48);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 72);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 89);
			cornerArray += '</div>';

			cornerArray += CC_rcPixel((2*top_r)+top_m+topAdd, (2*left_r)+left_m+leftAdd, 1, 1, borderColor, 79);
			cornerArray += CC_rcPixel((2*top_r)+top_m+topAdd, (3*left_r)+left_m+leftAdd, 1, 1, borderColor, 31);
			cornerArray += CC_rcPixel((2*top_r)+top_m+topAdd, (4*left_r)+left_m+(5*left_w), 6+cornerAdd, 1, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 53);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 91);
			cornerArray += '</div>';

			cornerArray += CC_rcPixel((3*top_r)+top_m+topAdd, (1*left_r)+left_m+leftAdd, 1, 1, borderColor, 86);
			cornerArray += CC_rcPixel((3*top_r)+top_m+topAdd, (2*left_r)+left_m+(7*left_w), 8+cornerAdd, 1, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 31);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 69);
			cornerArray += '</div>';

			cornerArray += CC_rcPixel((4*top_r)+top_m+topAdd, (1*left_r)+left_m+leftAdd, 1, 1, borderColor, 47);
			cornerArray += CC_rcPixel((4*top_r)+top_m+topAdd, (2*left_r)+left_m+(7*left_w), 8+cornerAdd, 1, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 53);
			cornerArray += '</div>';

			cornerArray += CC_rcPixel((5*top_r)+top_m+topAdd, (0*left_r)+left_m+leftAdd, 1, 1, borderColor, 78);
			cornerArray += CC_rcPixel((5*top_r)+top_m+topAdd, (1*left_r)+left_m+leftAdd+(8*left_w), 9+cornerAdd, 1, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 22);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 91);
			cornerArray += '</div>';

			cornerArray += CC_rcPixel((6*top_r)+top_m+topAdd, (0*left_r)+left_m+leftAdd, 1, 1, borderColor, 51);
			cornerArray += CC_rcPixel((6*top_r)+top_m+topAdd, (1*left_r)+left_m+(8*left_w), 9+cornerAdd, 1, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 49);
			cornerArray += '</div>';

			cornerArray += CC_rcPixel((7*top_r)+top_m+topAdd, (0*left_r)+left_m+leftAdd, 1, 1, borderColor, 28);
			cornerArray += CC_rcPixel((7*top_r)+top_m+topAdd, (1*left_r)+left_m+(8*left_w), 9+cornerAdd, 1, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 72);
			cornerArray += '</div>';

			cornerArray += CC_rcPixel((8*top_r)+top_m+topAdd, (0*left_r)+left_m+leftAdd, 1, 1, borderColor, 11);
			cornerArray += CC_rcPixel((8*top_r)+top_m+topAdd, (1*left_r)+left_m+(8*left_w), 9+cornerAdd, 1, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
				cornerArray += CC_rcPixel(0, side, 1, 1, borderColor, 89);
			cornerArray += '</div>';

			cornerArray += CC_rcPixel((9*top_r)+top_m, (0*left_r)+left_m+leftAdd, 1, 1+cornerAdd, borderColor, 1);
			cornerArray += CC_rcPixel((9*top_r)+top_m, (1*left_r)+left_m+(8*left_w), 9+cornerAdd, 1+cornerAdd, innerColor, false, orientation, backgroundImage, backgroundRepeat, divWidth, divHeight, cornerSize, cornerMax, borderSizes);
			cornerArray += '</div>';
		break;
	}

	return cornerArray;
}




