﻿function StringBuilder() {
    this.tmp = new Array();
}
StringBuilder.prototype.append = function(value) {
    this.tmp.push(value);
    return this;
}
StringBuilder.prototype.clear = function() {
    tmp.length = 0;
}
StringBuilder.prototype.toString = function() {
    return this.tmp.join("");
}
String.format = function() {

    if (arguments.length == 0)

        return null;

    var str = arguments[0];

    for (var i = 1; i < arguments.length; i++) {

        var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm');

        str = str.replace(re, arguments[i]);

    }

    return str;

}
String.prototype._indexOf = String.prototype.indexOf;
String.prototype.indexOf = function() {
    if (typeof (arguments[arguments.length - 1]) != 'boolean')
        return this._indexOf.apply(this, arguments);
    else {
        var bi = arguments[arguments.length - 1];
        var thisObj = this;
        var idx = 0;
        if (typeof (arguments[arguments.length - 2]) == 'number') {
            idx = arguments[arguments.length - 2];
            thisObj = this.substr(idx);
        }
        var re = new RegExp(arguments[0], bi ? 'i' : '');
        var r = thisObj.match(re);
        return r == null ? -1 : r.index + idx;
    }
}
String.prototype.getQuery = function(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = this.substr(this.indexOf("\?") + 1).match(reg);
    if (r != null) return unescape(r[2]); return null;
}
