//String prototype supplements
String.prototype.trim = function () {
    return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"); 
};
String.prototype.supplant = function (o) { 
    return this.replace(/{([^{}]*)}/g, 
        function (a, b) {  
            var r = o[b];
            return typeof r === "string" ? 
                r : a; 
        }
    ); 
};

//Inspiration from Dustin Diaz/Ross Harmes' Pro JavaScript Design Patterns
Function.prototype.addMethod = function(name, fn) { 
    if(typeof(name) === "string") {  
        this.prototype[name] = fn; 
    } else { 
        var i, aliasCount = name.length;
        for(i = 0; i < aliasCount; i++) { 
            var alias = name[i];
            this.prototype[alias] = fn; 
        }
    }
    return this;
};