﻿// Original code from http://www.fu2k.org/alex/css/test/Corners.mhtml
// and adapted by ps@nomensa.com
// modified again by th@nomensa.com

// Avoid conflicts, use local object for all properties
var roundedCorners = new Object();

// Classes to apply rounded corners to
roundedCorners.targetedClasses = ['sidebox', 'rounded', 'box'];

// Elements we want to check for the right class
roundedCorners.targetedElements = ['div', 'dd', 'ul', 'li', 'h2', 'fieldset', 'form', 'a', 'strong', 'span'];

// Top classes (working inside out)
roundedCorners.topClasses = ['ne', 'nw'];

// Bottom classes (working inside out)
roundedCorners.bottomClasses = ['se', 'sw'];

// Add the rounded corners to all classes specified in targetedClasses
function setCorners() {

	// Temp ignore Mac IE 5.2
	if (navigator.userAgent.indexOf("MSIE") != -1
        && navigator.userAgent.indexOf("Mac") != -1
        && parseFloat(navigator.appVersion.split("MSIE")[1]) >= 5) { return; }

	// Inspect every targeted element in the DOM
	for (var elem = 0; elem < roundedCorners.targetedElements.length; elem++) {

		for (var i = 0; i < document.getElementsByTagName(roundedCorners.targetedElements[elem]).length; i++) {

			// Get its class (if present)
			var className = document.getElementsByTagName(roundedCorners.targetedElements[elem]).item(i).className;

			// flag to check we have a match
			var found = false;

			// Check all classes we are interested in
			for (var c = 0; c < roundedCorners.targetedClasses.length; c++) {

				// Does the className have multiple classes ??
				var tokens = className.split(" ");

				// Loop through tokenised class value (if any)
				for (var t = 0; t < tokens.length; t++) {
					if (roundedCorners.targetedClasses[c] == tokens[t]) {
						found = true;
						break;
					}
				}
			}

			if (found) {
				// Fetch the current element we found
				var targetObject = document.getElementsByTagName(roundedCorners.targetedElements[elem]).item(i);

				// Generate top divs
				var cornerne = document.createElement("span");
				cornerne.className = roundedCorners.topClasses[0];
				cornerne.innerHTML = "&nbsp;";
				var cornernw = document.createElement("span");
				cornernw.className = roundedCorners.topClasses[1];
				cornernw.innerHTML = "&nbsp;";

				// Generate bottom divs
				var cornerse = document.createElement("span");
				cornerse.className = roundedCorners.bottomClasses[0];
				cornerse.innerHTML = "&nbsp;";
				var cornersw = document.createElement("span");
				cornersw.className = roundedCorners.bottomClasses[1];
				cornersw.innerHTML = "&nbsp;";

				// Add top corners before content
				targetObject.insertBefore(cornernw, targetObject.firstChild);
				targetObject.insertBefore(cornerne, targetObject.firstChild);

				// Add bottom corners after content
				targetObject.appendChild(cornerse);
				targetObject.appendChild(cornersw);
			}
		}
	}
}

// Add function to onload handler
addEvent('onload', window, setCorners);
