--Do not remove this if you are using--
Original Author: Remiz Rahnas
Original Author URL: http://www.htmlremix.com
Published date: 2008/09/24

Changes by Nick Fetchak:
- IE8 standards mode compatibility
- VML elements now positioned behind original box rather than inside of it - should be less prone to breakage
Published date : 2009/11/18


<public:attach event="ondocumentready" onevent="oncontentready('v08vnSVo78t4JfjH')" />
<script type="text/javascript">

// findPos() borrowed from http://www.quirksmode.org/js/findpos.html
function findPos(obj) {
	var curleft = curtop = 0;

	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}

	return({
		'x': curleft,
		'y': curtop
	});
}

function oncontentready(classID) {
  if (this.className.match(classID)) { return(false); }

	if (!document.namespaces.v) { document.namespaces.add("v", "urn:schemas-microsoft-com:vml"); }

	var isDisplayNone = false;
	var isDisplayNoneParentElement = false;
	if (this.style.display == 'none') {
		this.element.style.display = 'block';
		var isDisplayNone = true;
	} else {
		var parentElement = this.element;

	    while (parentElement) {
	       if (parentElement.style && parentElement.style.display == 'none') {
				parentElement.style.display = 'block';
				var isDisplayNone = true;
	            isDisplayNoneParentElement = parentElement;

	       }
	    if ('BUTTON' == this.element.nodeName && !parentElement.style) {
	    //alert(this.element.innerHTML);
	    //alert(isDisplayNoneParentElement);
	    }
	     parentElement = parentElement.parentNode
	    }
	}

	this.className = this.className.concat(' ', classID);
	var arcSize = Math.min(parseInt(this.currentStyle['-moz-border-radius'] ||
	                                this.currentStyle['-webkit-border-radius'] ||
	                                this.currentStyle['border-radius'] ||
	                                this.currentStyle['-khtml-border-radius']) /
	                       Math.min(this.offsetWidth, this.offsetHeight), 1);
	var fillColor = this.currentStyle.backgroundColor;
	var orgBorderColor = this.style.borderColor;
	var fillImage = this.currentStyle.backgroundImage;
	var fillSrc = this.currentStyle.backgroundImage.replace(/^url\("(.+)"\)$/, '$1');
	var strokeColor = this.currentStyle.borderColor;
	var strokeWeight = parseInt(this.currentStyle.borderWidth);
	var stroked = 'true';
	if (isNaN(strokeWeight)) {
		strokeWeight = 0;
		strokeColor = fillColor;
		stroked = 'false';
	}

	this.style.background = 'transparent';
	this.style.borderColor = 'transparent';

	// Find which element provides position:relative for the target element (default to BODY)
	var el = this;
	var limit = 100, i = 0;
	while ((typeof(el) != 'unknown') && (el.currentStyle.position != 'relative') && (el.tagName != 'BODY')) {
		el = el.parentElement;
		i++;
		if (i >= limit) { return(false); }
	}
	var el_zindex = parseInt(el.currentStyle.zIndex);
	if (isNaN(el_zindex)) { el_zindex = 0; }
	//alert('got tag '+ el.tagName +' with pos '+ el.currentStyle.position);

	var rect_size = {
		'width': this.offsetWidth - strokeWeight,
		'height': this.offsetHeight - strokeWeight
	};
	try {
		var el_pos = findPos(el);
	} catch(e) {
	// alert(e.description);
	}
	var this_pos = findPos(this);
	this_pos.y = this_pos.y + (0.5 * strokeWeight) - el_pos.y;
	this_pos.x = this_pos.x + (0.5 * strokeWeight) - el_pos.x;

if ('input-text required-entry v08vnSVo78t4JfjH' == this.element.className) {
//alert(this.element.style.visibility);
// for (k in this.element.style) {
// 	alert(k + ' == ' + this.element.style[k]);
// }
}

	var rect = document.createElement('v:roundrect');
	rect.arcsize = arcSize +'px';
	rect.strokecolor = strokeColor;
	rect.strokeWeight = strokeWeight +'px';
	rect.stroked = stroked;
	rect.style.display = 'block';
	rect.style.position = 'absolute';
	rect.style.top = this_pos.y +'px';
	rect.style.left = this_pos.x +'px';
	try {
		rect.style.width = rect_size.width +'px';
		rect.style.height = rect_size.height +'px';
	} catch (e) {
		rect.style.width = '254px';
		rect.style.height = '21px';
	}
	
	rect.style.antialias = true;
	rect.style.zIndex = parseInt(element.style.zIndex || 0) - 5;


		var fill = document.createElement('v:fill');
		fill.color = fillColor;
		fill.src = fillSrc;
		fill.type = 'tile';
		fill.className = 'vml_border_radius_fill';
		if (fillImage == 'none' && (fillColor == 'transparent' || fillColor == 'none')) {
			fill.opacity = 'progid:DXImageTransform.Microsoft.Alpha(Opacity='+ parseFloat(1 * 100) +')';
		}
		rect.appendChild(fill);

	if (this.element.className.indexOf('change-hover-color-light-green') != -1) {
		this.element.onmouseover = function() { rect.strokecolor = '#e4eeae'; }
		this.element.onmouseout = function() { rect.strokecolor = strokeColor; }
		this.element.onmouseover = function() { rect.fillColor = '#e4eeae'; }
		this.element.onmouseout = function() { rect.fillColor = fillColor; }
	}
	
	if (this.element.className.indexOf('menu-round') != -1) {
		this.element.onmouseover = function() { rect.strokecolor = '#7961ab'; }
		this.element.onmouseout = function() { rect.strokecolor = strokeColor; }
		this.element.onmouseover = function() { rect.fillColor = '#ffffff'; }
		this.element.onmouseout = function() { rect.fillColor = fillColor; }
	}
	
	if (this.element.className.indexOf('add-to-links') != -1) {
		this.element.onmouseover = function() { rect.strokecolor = '#cee54b'; }
		this.element.onmouseout = function() { rect.strokecolor = strokeColor; }
	}

	element.radiusElement = rect;
	el.appendChild(rect);

try {
	var css = el.document.createStyleSheet();
	css.addRule("v\\:roundrect", "behavior: url(#default#VML)");
	css.addRule("v\\:fill", "behavior: url(#default#VML)");
} catch (e) {
	

}
	


	isIE6 = /msie|MSIE 6/.test(navigator.userAgent);
	// IE6 doesn't support transparent borders, use padding to offset original element
	if (isIE6 && (strokeWeight > 0)) {
		this.style.borderStyle = 'none';
		this.style.paddingTop = parseInt(this.currentStyle.paddingTop || 0) + strokeWeight;
		this.style.paddingBottom = parseInt(this.currentStyle.paddingBottom || 0) + strokeWeight;
	}

	if (typeof(window.rounded_elements) == 'undefined') {
		window.rounded_elements = new Array();

		if (typeof(window.onresize) == 'function') { window.previous_onresize = window.onresize; }
		window.onresize = window_resize;
	}
	this.element.vml = rect;
	window.rounded_elements.push(this.element);

	if (isDisplayNone) {
		if (isDisplayNoneParentElement) {
		isDisplayNoneParentElement.style.display = 'none';
		} else {
			this.style.display = 'none';
		}
		var isDisplayNone = false;
	}

}

function window_resize() {
	if (typeof(window.rounded_elements) == 'undefined') { return(false); }

	for (var i in window.rounded_elements) {
		var el = window.rounded_elements[i];

        try {
		  var strokeWeight = parseInt(el.currentStyle.borderWidth);
		} catch (e) {
		//	alert(e.description);
			strokeWeight = 0;
		}
		
		
		if (isNaN(strokeWeight)) { strokeWeight = 0; }

		var parent_pos = findPos(el.vml.parentNode);
		var pos = findPos(el);
		pos.y = pos.y + (0.5 * strokeWeight) - parent_pos.y;
		pos.x = pos.x + (0.5 * strokeWeight) - parent_pos.x;

		el.vml.style.top = pos.y +'px';
		el.vml.style.left = pos.x +'px';
	}

	if (typeof(window.previous_onresize) == 'function') { window.previous_onresize(); }
}
</script>

