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

ROUND CORNERS

Checks all divs with the RC[***] class at onload

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

// corner count
var cornerCount = 0;


// ROUND CORNERS
/* Collects all divs containing the class RC[], with options between brackets. It takes the border color and content of the div and creates a new container with the rounded div.

options:	c*		- cornersize in px, double the radius
			cTL*	- topleft cornersize exception
			cTR*	- topright cornersize exception
			cBL*	- bottomleft cornersize exception
			cBR*	- bottomright cornersize exception
*/
function CC_roundCorners() {

	// collect all divs needing corners
	var divs = document.getDivsByClassName('RC');

	var cachedBoxes	= new Array();


	// for each div in the array
	for(x = 0; x < divs.length; x++){

		// setup
		var cornerSizes				= new Array();
		var cornerColors			= new Array();
		var borderSizes				= new Array();
		var cornerMax				= 0;


		// DIV PROPERTIES
		CC_rcDivProperties(divs[x]);


		// empty the div
		divs[x].style.border			= '';
		divs[x].style.backgroundColor	= '';
		divs[x].style.backgroundImage	= '';
		divs[x].style.padding			= '0px';
		divs[x].innerHTML				= '';


		// correct border size
		if (divBorderSizeLeft == ''){
			divBorderSizeLeft	= 0;
			borderSizes[1]		= 0;
		} else {
			divBorderSizeLeft	= 1;
			borderSizes[1]		= 1;
		}

		if (divBorderSizeRight == ''){
			divBorderSizeRight	= 0;
			borderSizes[2]		= 0;
		} else {
			divBorderSizeRight	= 1;
			borderSizes[2]		= 1;
		}

		if (divBorderSizeTop == ''){
			divBorderSizeTop	= 0;
			borderSizes[3]		= 0;
		} else {
			divBorderSizeTop	= 1;
			borderSizes[3]		= 1;
		}

		if (divBorderSizeBottom == ''){
			divBorderSizeBottom = 0;
			borderSizes[4]		= 0;
		} else {
			divBorderSizeBottom = 1;
			borderSizes[4]		= 1;
		}


		// DIV CLASS SETTINGS
		var divClasses				= divs[x].className.split(' ');

		// find the settings class
		for(c = 0; c < divClasses.length; c++) {
			if (divClasses[c].substr(0, 2) == 'RC') {
				divSettings			= divClasses[c].slice(3, -1);
				divSettings			= divSettings.split(',');

				// check the settings
				for (s = 0; s < divSettings.length; s++) {

					// default corner
					if (divSettings[s].substr(0,1) == 'c' && !isNaN(parseInt(divSettings[s].substr(1,2)))) {
						cornerSizes[0] = parseInt(divSettings[s].slice(1,divSettings[s].length));

							if(cornerSizes[0] < 2) {
								cornerSizes[0] = 2;
							}

							if (borderSizes[3] == 0) {
								cornerColors[1] = divBorderColorLeft;
							} else {
								cornerColors[1] = divBorderColorTop;
							}

								// open color
								if(cornerSizes[0] <= 2) {
									if(borderSizes[3] == 0) {
										cornerSizes[1] = 1;
									}
									if(borderSizes[1] == 0) {
										cornerSizes[1] = 0;
									}
									if(borderSizes[3] == 0 && borderSizes[1] == 0) {
										cornerSizes[1] = false;
									}
								}


							if (borderSizes[3] == 0) {
								cornerColors[2] = divBorderColorRight;
							} else {
								cornerColors[2] = divBorderColorTop;
							}

								// open corner
								if(cornerSizes[0] <= 2) {
									if(borderSizes[3] == 0) {
										cornerSizes[2] = 1;
									}
									if(borderSizes[2] == 0) {
										cornerSizes[2] = 0;
									}
									if(borderSizes[3] == 0 && borderSizes[2] == 0) {
										cornerSizes[2] = false;
									}
								}


							if (borderSizes[4] == 0) {
								cornerColors[3] = divBorderColorLeft;
							} else {
								cornerColors[3] = divBorderColorBottom;
							}

								// open corner
								if(cornerSizes[0] <= 2) {
									if(borderSizes[4] == 0) {
										cornerSizes[3] = 1;
									}
									if(borderSizes[1] == 0) {
										cornerSizes[3] = 0;
									}
									if(borderSizes[4] == 0 && borderSizes[1] == 0) {
										cornerSizes[3] = false;
									}
								}


							if (borderSizes[4] == 0) {
								cornerColors[4] = divBorderColorRight;
							} else {
								cornerColors[4] = divBorderColorBottom;
							}

								// open corner
								if(cornerSizes[0] <= 2) {
									if(borderSizes[4] == 0) {
										cornerSizes[4] = 1;
									}
									if(borderSizes[2] == 0) {
										cornerSizes[4] = 0;
									}
									if(borderSizes[4] == 0 && borderSizes[2] == 0) {
										cornerSizes[4] = false;
									}
								}
					}


					// for each corner
					switch(divSettings[s].substr(0,3)) {
						case'cTL':	cornerSizes[1]	= parseInt(divSettings[s].slice(3,divSettings[s].length));

							if(cornerSizes[1] < 2) {
								cornerSizes[1] = 2;
							}

								// colors
								if (borderSizes[3] == 0) {
									cornerColors[1]		= divBorderColorLeft;
								} else {
									cornerColors[1]		= divBorderColorTop;
								}

								// open corner
								if(cornerSizes[1] <= 2) {
									if(borderSizes[3] == 0) {
										cornerSizes[1] = 1;
									}
									if(borderSizes[1] == 0) {
										cornerSizes[1] = 0;
									}
									if(borderSizes[3] == 0 && borderSizes[1] == 0) {
										cornerSizes[1] = false;
									}
								}
						break;
						case'cTR':	cornerSizes[2]	= parseInt(divSettings[s].slice(3,divSettings[s].length));

							if(cornerSizes[2] < 2) {
								cornerSizes[2] = 2;
							}

								// colors
								if (borderSizes[3] == 0) {
									cornerColors[2]		= divBorderColorRight;
								} else {
									cornerColors[2]		= divBorderColorTop;
								}

								// open corner
								if(cornerSizes[2] <= 2) {
									if(borderSizes[3] == 0) {
										cornerSizes[2] = 1;
									}
									if(borderSizes[2] == 0) {
										cornerSizes[2] = 0;
									}
									if(borderSizes[3] == 0 && borderSizes[2] == 0) {
										cornerSizes[2] = false;
									}
								}
						break;
						case'cBL':	cornerSizes[3]	= parseInt(divSettings[s].slice(3,divSettings[s].length));

							if(cornerSizes[3] < 2) {
								cornerSizes[3] = 2;
							}

								// colors
								if (borderSizes[4] == 0) {
									cornerColors[3]		= divBorderColorLeft;
								} else {
									cornerColors[3]		= divBorderColorBottom;
								}

								// open corner
								if(cornerSizes[3] <= 2) {
									if(borderSizes[4] == 0) {
										cornerSizes[3] = 1;
									}
									if(borderSizes[1] == 0) {
										cornerSizes[3] = 0;
									}
									if(borderSizes[4] == 0 && borderSizes[1] == 0) {
										cornerSizes[3] = false;
									}
								}
						break;
						case'cBR':	cornerSizes[4]	= parseInt(divSettings[s].slice(3,divSettings[s].length));

							if(cornerSizes[4] < 2) {
								cornerSizes[4] = 2;
							}

								// colors
								if (borderSizes[4] == 0) {
									cornerColors[4]		= divBorderColorRight;
								} else {
									cornerColors[4]		= divBorderColorBottom;
								}

								// open corner
								if(cornerSizes[4] <= 2) {
									if(borderSizes[4] == 0) {
										cornerSizes[4] = 1;
									}
									if(borderSizes[2] == 0) {
										cornerSizes[4] = 0;
									}
									if(borderSizes[4] == 0 && borderSizes[2] == 0) {
										cornerSizes[4] = false;
									}
								}
						break;
					}
				}
			}
		}


		// check if all corners are set and fill with default, then check if it is the biggest corner
		for(c = 0; c < 5; c++) {
			if (cornerSizes[c] == undefined){
				cornerSizes[c] = cornerSizes[0];
			}

			if (cornerSizes[c] > cornerMax) {
				cornerMax = cornerSizes[c];
			}
		}


		// ORIGINAL DIV SIZE MODS / POSITIONING
		if(!isIE) {
			if (divPaddingLeft != '') {
				divWidth				+= parseInt(divPaddingLeft);
			}

			if(divPaddingRight != '') {
				divWidth				+= parseInt(divPaddingRight);
			}

			if(divPaddingTop != '') {
				divHeight				+= parseInt(divPaddingTop);
			}

			if(divPaddingBottom != '') {
				divHeight				+= parseInt(divPaddingBottom);
			}


			if(borderSizes[1] != 0) {
				divWidth				+= borderSizes[1];
			}

			if(borderSizes[2] != 0) {
				divWidth				+= borderSizes[2];
			}

			if(borderSizes[3] != 0) {
				divHeight				+= borderSizes[3];
			}

			if(borderSizes[4] != 0) {
				divHeight				+= borderSizes[4];
			}

			// correct size
			divs[x].style.width			= divWidth;
			divs[x].style.height		= divHeight;
		}


		// plus/minus one
		var plus_oneX				= cornerMax + borderSizes[1];
		var minus_oneX				= cornerMax - borderSizes[1];

		var plus_oneY				= cornerMax + borderSizes[3];
		var minus_oneY				= cornerMax - borderSizes[3];

		// lineWidth/Height
		var lineWidth				= divWidth - (cornerMax*2);
		var lineHeight				= divHeight - (cornerMax*2);

		// top or bottom border 'empty', change lineheight (mostly tab suport)
		if (cornerSizes[1] == 1 && cornerSizes[2] == 1){
			lineHeight				+= cornerMax;
		}

		if (cornerSizes[3] == 1 && cornerSizes[4] == 1){
			lineHeight				+= cornerMax;
		}


		// content position
		var contentWidth			= divWidth - divPaddingLeft - divPaddingRight - borderSizes[1] - borderSizes[2];
		var contentOffsetLeft		= divPaddingLeft;
		var contentOffsetTop		= divPaddingTop - minus_oneY;
		var contentOffsetBottom		= divPaddingBottom - cornerMax + borderSizes[3] + borderSizes[4];

		// offsets
		var rightCornerPos			= divWidth - cornerMax;
		var bottomOffset			= divHeight - plus_oneY;

		// borders/padding (browser dependent)
		if (!isIE) {
			var topBorderSize			= cornerMax - borderSizes[3];
			var bottomBorderSize		= cornerMax - borderSizes[4];
			var horizontalBorderSize	= divWidth - borderSizes[1] - borderSizes[2];
		} else {
			var topBorderSize			= cornerMax;
			var bottomBorderSize		= cornerMax;
			var horizontalBorderSize	= divWidth;
		}


		// BACKGROUND POSITIONING
		if (divBackgroundImage != '') {
			// background is an image
			var backgroundTop		= 'background-image: '+divBackgroundImage+'; background-position: -'+minus_oneX+' 0; background-repeat: '+divBackgroundRepeat+';';
			var backgroundMiddle	= 'background-image: '+divBackgroundImage+'; background-position: 0 -'+minus_oneY+'; background-repeat: '+divBackgroundRepeat+';';
			var backgroundBottom	= 'background-image: '+divBackgroundImage+'; background-position: -'+minus_oneX+' -'+bottomOffset+'; background-repeat: '+divBackgroundRepeat+';';
		} else {
			var backgroundTop			= '';
			var backgroundMiddle		= '';
			var backgroundBottom		= '';
		}


		// EMPTY BORDER COLORS
		if(borderSizes[3] == '') {
			divBorderColorTop			= divBackgroundColor;
		}

		if(borderSizes[4] == '') {
			divBorderColorBottom		= divBackgroundColor;
		}

		if(borderSizes[1] == '') {
			divBorderColorLeft			= divBackgroundColor;
		}

		if(borderSizes[2] == '') {
			divBorderColorRight			= divBackgroundColor;
		}




		// GENERATE CORNERS
		var cornerTopLeft			= CC_rcLibrary(cornerSizes[1], cornerColors[1], divBackgroundColor, 1, divBackgroundImage, divBackgroundRepeat, divWidth, divHeight, cornerMax, borderSizes);

		var cornerTopRight			= CC_rcLibrary(cornerSizes[2], cornerColors[2], divBackgroundColor, 2, divBackgroundImage, divBackgroundRepeat, divWidth, divHeight, cornerMax, borderSizes);

		var cornerBottomLeft		= CC_rcLibrary(cornerSizes[3], cornerColors[3], divBackgroundColor, 3, divBackgroundImage, divBackgroundRepeat, divWidth, divHeight, cornerMax, borderSizes);

		var cornerBottomRight		= CC_rcLibrary(cornerSizes[4], cornerColors[4], divBackgroundColor, 4, divBackgroundImage, divBackgroundRepeat, divWidth, divHeight, cornerMax, borderSizes);




		// START THE RESULT
		corneredDiv = '<span style="font-size: 0px; line-height: 0px; display: none;">.</span>';


		// set the top
		corneredDiv	+= '<div style="position: relative; top: 0px; left: 0px; width: '+divWidth+'px; height: '+cornerMax+'px;">';

			corneredDiv	+= '<div style="position: absolute; width: '+cornerMax+'px; height: '+cornerMax+'px; top: 0px; left: 0px; line-height: 0px; font-size: 0px;">'+cornerTopLeft+'</div>';

			corneredDiv	+= '<div style="position: absolute; top: 0px; left: '+cornerMax+'px; width: '+lineWidth+'px; height: '+topBorderSize+'px; border-top: '+borderSizes[3]+'px solid '+divBorderColorTop+'; line-height: 0px; font-size: 0px; background-color: '+divBackgroundColor+'; '+backgroundTop+'"><!-- --></div>';

			corneredDiv	+= '<div style="position: absolute; width: '+cornerMax+'px; height: '+cornerMax+'px; top: 0px; left: '+rightCornerPos+'px; line-height: 0px; font-size: 0px;">'+cornerTopRight+'</div>';

		corneredDiv	+= '</div>';


		// set the middle
		corneredDiv	+= '<div style="position: relative; top: 0px; left: 0px; width: '+horizontalBorderSize+'px; height: '+lineHeight+'px; border-left: '+borderSizes[1]+'px solid '+divBorderColorLeft+'; border-right: '+borderSizes[2]+'px solid '+divBorderColorRight+'; background-color: '+divBackgroundColor+'; '+backgroundMiddle+'">';

			corneredDiv += '<div style="width: '+contentWidth+'px; left: '+contentOffsetLeft+'px; top: '+contentOffsetTop+'px;  position: relative; font-size: '+divFontSize+'px; font-family: '+divFontFamily+'; color: '+divFontColor+'; padding-bottom: '+contentOffsetBottom+';">'+divContent+'</div>';

		corneredDiv += '</div>';


		// set the bottom
		corneredDiv	+= '<div style="position: relative; top: 0px; left: 0px; width: '+divWidth+'px; height: '+cornerMax+'px;">';

			corneredDiv	+= '<div style="position: absolute; width: '+cornerMax+'px; height: '+cornerMax+'px; top: 0px; left: 0px; line-height: 0px; font-size: 0px;">'+cornerBottomLeft+'</div>';

			corneredDiv	+= '<div style="position: absolute; top: 0px; left: '+cornerMax+'px; width: '+lineWidth+'px; height: '+bottomBorderSize+'px; border-bottom: '+borderSizes[4]+'px solid '+divBorderColorBottom+'; line-height: 0px; font-size: 0px; background-color: '+divBackgroundColor+'; '+backgroundBottom+'"><!-- --></div>';

			corneredDiv	+= '<div style="position: absolute; width: '+cornerMax+'px; height: '+cornerMax+'px; top: 0px; left: '+rightCornerPos+'px; line-height: 0px; font-size: 0px;">'+cornerBottomRight+'</div>';

		corneredDiv	+= '</div>';


		divs[x].innerHTML = corneredDiv;

	}

//	alert(cornerCount);
}





