(function() {
	// regex cache
    var patterns = {
        PX_VALUE: /([0-9]+)(px)?$/i
    };
	var Dom = YAHOO.util.Dom;
	IRIS.util.Dom = {
		stripPx: function( value ) {
			if( patterns.PX_VALUE.exec(value) ) {
				return parseInt(RegExp.$1);
			}
		},
		moveToCenter: function( el ) {
			var parent = el.parentNode;
			el.style.position = 'relative';
			el.style.top = (parent.offsetHeight / 2) - (el.offsetHeight / 2);
			el.style.left = (parent.offsetWidth / 2) - (el.offsetWidth / 2);
		},
		fillParent: function( el ) {
			var parent = el.parentNode;
			el.style.width = parent.offsetWidth + "px";
			el.style.height = parent.offsetHeight + "px";
			console.dir(el.style);
		},
		getParentsByTagName: function( el, tagName, limit ) {
			var parent = el.parentNode, rv = [];
			tagName = tagName.toUpperCase();
			while( parent && (!limit || (limit > rv.length)) ) {
				if( parent.tagName.toUpperCase() == tagName ) {
					rv[rv.length] = parent;
				}
				parent = parent.parentNode;
			}
			return rv;
		},
		getParentsByClassName: function( el, className, limit ) {
			var parent = el.parentNode, rv = [], i;
			while( parent && (!limit || (limit > rv.length)) ) {
				if( typeof className == 'object' ) {
					for( i = 0; i < className.length; i++ ) {
						if( Dom.hasClass(parent, className[i]) ) {
							rv[rv.length] = parent;
							break;
						}
					}
				}
				else if( Dom.hasClass(parent, className) ) {
					rv[rv.length] = parent;
				}
				parent = parent.parentNode;
			}
			return rv;
		},
		getChildrenByTagName: function( el, tagName, limit ) {
			var i, child, rv = [];
			tagName = tagName.toUpperCase();
			for( i = 0; (i < el.childNodes.length) && (!limit || (limit > rv.length)); i++ ) {
				child = el.childNodes[i]
				if( child.tagName && (child.tagName.toUpperCase() == tagName) ) {
					rv[rv.length] = el.childNodes[i];
				}
			}
			return rv;
		}
	}
}());

