Element.addMethods({
	detectClass: function(element, className) {
      return ( document.getElementsByClassName(className, element).length > 0 );
    },
     getElementsByClassName: function(element, className) {
    	var children = ($(element) || document.body).getElementsByTagName('*');
   		return $A(children).inject([], function(elements, child) {
			if (child.className.match(new RegExp("(^|s)" + className + "(s|$)")))
        		elements.push(Element.extend(child));
      		return elements;
    	});
  	},
  	
  	getElementsBySelector: function() {
		var args = $A(arguments), element = args.shift();
		return args.map(function(expression) {
			return expression.strip().split(/s+/).inject([null], function(results, expr) {
			var selector = new Selector(expr);
				return results.map(selector.findElements.bind(selector, element)).flatten();
			});
		}).flatten();
	},
  	
  	toggleClassName: function(element,className) {
		Element[Element.hasClassName(element,className) ? 'removeClassName' : 'addClassName'](element,className);
	},
	
	makeActive: function(element) {
		var childAnchor = $(element).getElementsByTagName('a').item(0);
		if (childAnchor) {
			Event.observe($(element), 'click', function() { document.location = childAnchor.href }, false);
		}
		return;
	} 
	
});