﻿//Type.registerNamespace("Megasoft78"); - removed as dependent on asp.net
namespace('Megasoft78');

    Megasoft78.StringBuilderEx = function()
    {
        this._buffer = new Array();
        this._index = 0;
        this._parameters = new Array();
        this._indexParams = 0;
    }

    Megasoft78.StringBuilderEx.prototype =
    {
        append : function StringBuilderEx$append(text)
        {
            this._buffer[this._index] = text;
            this._index++;
        },
        
        appendFormat : function StringBuilderEx$appendFormat(pattern)
        {
            var args = this._convertToArray(arguments).slice(1);
            
            this._buffer[this._index]=pattern.replace(/\{(\d+)\}/g, 
                function(pattern, index)
                {
                    return args[index].toString();
                });
                
            this._index++;
        },

        appendFormatEx : function StringBuilderEx$_appendFormatEx(pattern)
        {
            var args = this._convertToArray(arguments).slice(1);
            
            for (var t=0,len=args.length;t<len;t++)
            {
                this._parameters[this._indexParams]=args[t];
                this._indexParams++;
            }

            this._buffer[this._index]=pattern;
            this._index++;
        },
        
        _convertToArray : function StringBuilderEx$_convertToArray(arguments)
        {
            if (!arguments) 
                return new Array();

            if (arguments.toArray)
                return arguments.toArray();

            var len = arguments.length 
            var results = new Array(len);

            while (len--)
            {
                results[len] = arguments[len];
            }

            return results;
        },

        toString : function StringBuilderEx$toString()
        {
            var values = this._buffer.join("").split('?');
            var tempBuffer = new Array();
            var tempIndex = 0;
            
            for (var t=0,len=values.length;t<len;t++)
            {
                tempBuffer[tempIndex]=values[t];
                tempIndex++;
                tempBuffer[tempIndex]=this._parameters[t];
                tempIndex++;
            }
        
            var retVal = tempBuffer.join("");
            
            return retVal;
        }
    };
    
//    Megasoft78.StringBuilderEx.registerClass("Megasoft78.StringBuilderEx");
//    
//    if (typeof (Sys) != "undefined")
//    {    
//        Sys.Application.notifyScriptLoaded();    
//    }



