// 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'];

// Elements we want to check for the right class
roundedCorners.targetedElements = ['div', 'dd', 'ul', 'li', 'h2', 'fieldset', 'form'];

// 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);
