Element.addMethods({
	detectClass: function(element, className) {
      console.info("hello! I'm in detectClass");
      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;
    	});
  	},
  	
  	toggleClassName: function(element,className) {
		Element[Element.hasClassName(element,className) ? 'removeClassName' : 'addClassName'](element,className);
	}
});

var Iterators = function() {
  var tags = "div p span ul ol li span form input select textarea h1 h2 h3 h4 h5 h6 dl dt em strong";
  var methods = {};
  $A(tags.split(' ')).each(function(tag) {
    methods["each" + tag.charAt(0).toUpperCase() + tag.substring(1)] = function(element, iterator) {
      element = $(element);
      element.cleanWhitespace();
      $A(element.getElementsByTagName(tag)).each(iterator);
    }
  });

  Element.addMethods(methods);
}();

