// Original code from http://www.fu2k.org/alex/css/test/Corners.mhtml
// and adapted by ps@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.bottomClasses = ['se', 'sw'];

// Bottom classes (working inside out)
roundedCorners.topClasses = ['ne', 'nw'];

// 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 HTML content of the element we found
                var inner = document.getElementsByTagName(roundedCorners.targetedElements[elem]).item(i).innerHTML;

                // Generate new content (actually wrapping the current content)
                inner = generateCorners(inner);

                // Write that back into the element
                document.getElementsByTagName(roundedCorners.targetedElements[elem]).item(i).innerHTML = inner;
            }
        }
    }
 }

// Add top/bottom divs to the value
function generateCorners(value) {
    
    // Generate top divs (nw, ne)
    var top = elemWrap('span', '&nbsp;', roundedCorners.topClasses[0]) + elemWrap('span', '&nbsp;', roundedCorners.topClasses[1]);
    
    // Generate bottom divs (sw, se)
    var bottom = elemWrap('span', '&nbsp;', roundedCorners.bottomClasses[0]) + elemWrap('span', '&nbsp;', roundedCorners.bottomClasses[1])

    // Wrap around the value
    return top + value + bottom;
    
}

 
// Add function to onload handler
addEvent('onload', window, setCorners);
