/// <summary>
    /// Generates the uploaders, saves them to the hastable and returns ClientID of the first uploader
    /// which should be visible when "Add file" link is clicked.
    /// </summary>
    private void GenerateUploaders()
    {
        string availableUploaders = "";
        string visibleUploaders   = "";

        // Maximum visible field at the begenning is the smaller number of those two
        int stillVisible = Math.Min(mMaxUploadFields, mDefaultUploadFields);

        for (int i = 0; i < mMaxUploadFields; i++)
        {
            // Create new panel and put it to page
            Panel pnlUploader = new Panel();
            pnlUploaders.Controls.Add(pnlUploader);

            CMSFileUpload uploader = new CMSFileUpload();
            pnlUploader.Controls.Add(uploader);
            uploadersList.Add(uploader);

            pnlUploader.Controls.Add(new LiteralControl("&nbsp;&nbsp;"));

            HyperLink lnkRemove = new HyperLink();
            lnkRemove.Text        = strRemove;
            lnkRemove.CssClass    = "NewItemLink";
            lnkRemove.NavigateUrl = "#";
            lnkRemove.Attributes.Add("onclick", "removeFile('" + pnlUploader.ClientID + "', '" + uploader.ClientID + "'); return false;");
            pnlUploader.Controls.Add(lnkRemove);

            // Set correct visibility
            if (stillVisible > 0)
            {
                pnlUploader.Attributes.Add("style", "display: block;");
                visibleUploaders += ", '" + pnlUploader.ClientID + "'";
                stillVisible--;
            }
            else
            {
                availableUploaders += ", '" + pnlUploader.ClientID + "'";
                pnlUploader.Attributes.Add("style", "display: none;");
            }
        }

        visibleUploaders   = visibleUploaders.Trim(',');
        availableUploaders = availableUploaders.Trim(',');

        // Initialize JS variables
        ltlScript.Text += ScriptHelper.GetScript(
            "var addLinkElemPanel = document.getElementById('" + pnlAdd.ClientID + "');\n" +
            "var addLinkElem = document.getElementById('" + lnkAdd.ClientID + "'); \n\n" +
            "var strAddAnotherFile = '" + GetString("fileuploader.addanotherfile") + "'; \n" +
            "var strAttachFile = '" + GetString("fileuploader.attachfile") + "'; \n\n" +
            "var uploadersVisible = new Array(" + visibleUploaders + "); \n" +
            "var uploadersAvailable = new Array(" + availableUploaders + "); \n\n" +
            "reorderUploaders(); \n\n");
    }
    /// <summary>
    /// Generates the uploaders, saves them to the hastable and returns ClientID of the first uploader
    /// which should be visible when "Add file" link is clicked.
    /// </summary>
    private void GenerateUploaders()
    {
        string availableUploaders = "";
        string visibleUploaders = "";

        // Maximum visible field at the begenning is the smaller number of those two
        int stillVisible = Math.Min(mMaxUploadFields, mDefaultUploadFields);

        for (int i = 0; i < mMaxUploadFields; i++)
        {
            // Create new panel and put it to page
            Panel pnlUploader = new Panel();
            pnlUploaders.Controls.Add(pnlUploader);

            CMSFileUpload uploader = new CMSFileUpload();
            pnlUploader.Controls.Add(uploader);
            uploadersList.Add(uploader);

            pnlUploader.Controls.Add(new LiteralControl("&nbsp;&nbsp;"));

            HyperLink lnkRemove = new HyperLink();
            lnkRemove.Text = strRemove;
            lnkRemove.CssClass = "NewItemLink";
            lnkRemove.NavigateUrl = "#";
            lnkRemove.Attributes.Add("onclick", "removeFile('" + pnlUploader.ClientID + "', '" + uploader.ClientID + "'); return false;");
            pnlUploader.Controls.Add(lnkRemove);

            // Set correct visibility
            if (stillVisible > 0)
            {
                pnlUploader.Attributes.Add("style", "display: block;");
                visibleUploaders += ", '" + pnlUploader.ClientID + "'";
                stillVisible--;
            }
            else
            {
                availableUploaders += ", '" + pnlUploader.ClientID + "'";
                pnlUploader.Attributes.Add("style", "display: none;");
            }
        }

        visibleUploaders = visibleUploaders.Trim(',');
        availableUploaders = availableUploaders.Trim(',');

        // Initialize JS variables
        ltlScript.Text += ScriptHelper.GetScript(
            "var addLinkElemPanel = document.getElementById('" + pnlAdd.ClientID + "');\n" +
            "var addLinkElem = document.getElementById('" + lnkAdd.ClientID + "'); \n\n" +
            "var strAddAnotherFile = " + ScriptHelper.GetLocalizedString("fileuploader.addanotherfile") + "; \n" +
            "var strAttachFile = " + ScriptHelper.GetLocalizedString("fileuploader.attachfile") + "; \n\n" +
            "var uploadersVisible = new Array(" + visibleUploaders + "); \n" +
            "var uploadersAvailable = new Array(" + availableUploaders + "); \n\n" +
            "reorderUploaders(); \n\n");
    }