var extendElement = {
     /* gets element's ancestor with specified tagname/classname **/
     getAncestor: function(element, s){
       	var ancestors = element.ancestors();
		var type = "tagName";
		if (s.substring(0,1)==".") {
			type = "className";
			s = s.substring(1,s.length);
		} 
		var oRegExp = new RegExp("(\\b)" + s + "(\\b)");
		var result = false;
		find(result); 
		return result;
		
		function find(o) { 
			for (var i=0; i<ancestors.length; i++) { 
				if (oRegExp.test((type=="tagName")? ancestors[i].tagName : ancestors[i].className)) {  
					result = ancestors[i]; 
					break;
				}  
			}  
		}
    },
    
    /* gets element's direct children with specified tagname/classname **/	
    getChildren: function(element, s) {
		var children = element.childElements();
		var type = (s.substring(0,1)==".") ? "className" : "tagName";
		s = s.replace(/\./,"");
		var oRegExp = new RegExp("(\\b)" + s + "(\\b)");
		var results = [];
	
		children.each(function($_) {
        	if (oRegExp.test((type=="tagName")? $_.tagName : $_.className)) results.push($_);
       	}); 
		 
		return results;
	}
}
Element.addMethods(extendElement);

 
	 
