// $Id: roundedButtons.js 2217 2008-10-31 10:28:10Z ftp-dbuzz $
//
// Add rounded corners to buttons - include this JavaScript file in the header.html
// for sites that want to use rounded buttons across the entire site.

function goButtonCorners (element, disabled) {
	if (element.tagName == 'BUTTON') {
		var span  = '<span>' + element.innerHTML + '</span>';
		element.innerHTML = span;
	} else if (element.tagName == 'INPUT') {
		var span = document.createElement('span');
		if (disabled) {
			span.className = 'buttonAppendageDisabled';
		} else {
			span.className = 'buttonAppendage';
		}

		// Handle buttons that are possibly floated
		var classes = element.className.split(' ');
		if (classes.length > 1) {
			var regEx = /(inputTypeSubmitDisabled|inputTypeSubmitRounded)/;
			var elementClass = new Array;
			var newElementClass = new Array;
			for (var i=0; i<classes.length; i++) {
				if (classes[i].match(regEx)) {
					elementClass.push(classes[i]);
				} else {
					newElementClass.push(classes[i]);
				}
			} 
			newElementClass = newElementClass.join(' ');
			elementClass = elementClass.join(' ');
			var wrap = document.createElement('div');
			wrap.className = newElementClass;
			element.className = elementClass;
			element.parentNode.replaceChild(wrap, element);
			wrap.appendChild(element);
			PN = wrap.parentNode;
		}

		insertAfter(span, element);
	}
}

// Swap the CSS class of a specific element so the CSS rules
// for round and square buttons don't conflict
function swapClass (element, oldClass, newClass) {
	if (element.className) {
		var classes = element.className.split(' ');
		for (var i=0; i<classes.length; i++) {
			if (classes[i] == oldClass) {
				classes[i] = newClass;
			}
		} 
		element.className = classes.join(' ');
	} else {
		element.className = newClass;
	}
}

function buttonRounder (e, type) {
	switch (type) {
		case 1: // e = tag name of multiple elements
			var elements = document.getElementsByTagName(e);
			for (var i = 0; i < elements.length; i++) {
				var element = elements[i];
				if (element && (element.type == 'submit' || element.type == 'button')) {
					// Switch to disabled class if button is disabled
					var disabled = false;
					if (element.tagName == 'INPUT' && element.disabled) {
						disabled = true;
						swapClass (element, 'inputTypeSubmit', 'inputTypeSubmitDisabled');
					} else if (element.tagName == 'INPUT') {
						swapClass (element, 'inputTypeSubmit', 'inputTypeSubmitRounded');
					} else if (element.tagName == 'BUTTON') {
						swapClass (element, '', 'roundedButton');
					}
					goButtonCorners(element, disabled);
				}
			}
			break;

		case 2: // e = id of single element
			var element = document.getElementById(e);
			if (element) {
				goButtonCorners(element);
			}
			break;
	}
}

function roundedButtonsInit () {
	buttonRounder ("input", 1);
	buttonRounder ("button", 1);
}

addEvent(window,'load',function () {
    roundedButtonsInit();
});
