
Element.addMethods({
    appendText: function(element, text) {
        text = document.createTextNode(text);     
        element.appendChild(text);     
        return $(element);  
    },
    appendChildren: function(element, arguments){
        for (var argl = 0; argl < arguments.length; argl++) 
        if (arguments[argl]) element.appendChild(arguments[argl]);    
    },
    nestChildren: function(element, arguments){
        var domChain = new Element('th').appendText('foo');
        for (var i = 0; i < arguments.length - 1 ; i++){
            arguments[i+1].appendChild(arguments[i]);
            domChain = arguments[i+1];
        }
        element.appendChild(domChain);
    },
	ancestor: function(element, stopPoint) {
    	element = $(element);
    	var thisNode = false;
		if (isNaN(stopPoint)){
			while (element = element.parentNode)
				if ( (element.nodeType == 1) && (element.tagName == stopPoint || element.className.indexOf(stopPoint) > -1))
					return element;	
		}else{
   			var i = 0; stopPoint = parseInt(stopPoint);
			while (element = element.parentNode){
				i ++;  if ( i == stopPoint ) return element;
			}
		}
    	return thisNode;
  	}
	
});

String.prototype.trim = function(){
	return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
};

Array.prototype.remove = function(from, to){
  this.splice(from,
    !to ||
    1 + to - from + (!(to < 0 ^ from >= 0) && (to < 0 || -1) * this.length));
  return this.length;
};
