/**
 * @author Nap Allan Lara II
 * DEPENDENCIES: Please note that this needs browser_detect.js to work properly
 * 
 * Current logic is based on this matrix from: http://www.learningjquery.com/2009/03/43439-reasons-to-use-append-correctly
 * 
 *      Current gen Browsers
 *       
 *      FF3         array.join is ~2x faster
 *      Safari 3    array.join ~1.5x faster
 *      Opera 9     += ~3x faster
 *      ie6     array.join ~6x faster
 *      ie7     array.join ~4x faster
 *      
 *      Next gen browsers
 *      
 *      FF3.1       += array.join equal in speed
 *      Chrome      +=  ~1.25x faster
 *      IE8     array.join ~1.6x faster
 *      Webkit      array.join ~2x faster
 */
//assign Friendster namespace
var FS = window.FS || {};

FS.Util = FS.Util || {};

FS.Util.StringBuffer = function(){
    this.strings = [];
    this.realString = '';
    //In Opera and Chrome it is faster to use regular concatenation, while in other browsers it's faster to use arrays
    this.conCatIt = (BrowserDetect.browser === 'Chrome' || BrowserDetect.browser === 'Opera') ? true : false;
};

FS.Util.StringBuffer.prototype = {
    append: function(){
        for (var i = 0, len=arguments.length; i < len; i++) {
            if (this.conCatIt === false) {
                this.strings.push(arguments[i]);
            }
            else {
                this.realString += arguments[i];
            }
        }
        
    },
    toString: function(){
        return (this.conCatIt === false) ? this.strings.join('') : this.realString;
    },
    reset: function(){
        this.strings = [];
        this.realString = '';
    }
};
