function ColumnShowHide(gridController, elPicker, selColSimpleDialogContainer) {
    // Shows dialog, creating one when necessary
    var showDlg = function(e) {
        YAHOO.util.Event.stopEvent(e);

        var myDataTable = gridController.getDataTable();
        if (gridController.getfillNewColumnsInDialog()) {
            // Populate Dialog
            // Using a template to create elements for the SimpleDialog
            var allColumns = myDataTable.getColumnSet().keys;
            //var elPicker = YAHOO.util.Dom.get("dt-dlg-picker");
            var elTemplateCol = document.createElement("div");
            YAHOO.util.Dom.addClass(elTemplateCol, "dt-dlg-pickercol");
            var elTemplateKey = elTemplateCol.appendChild(document.createElement("span"));
            YAHOO.util.Dom.addClass(elTemplateKey, "dt-dlg-pickerkey");
            var elTemplateBtns = elTemplateCol.appendChild(document.createElement("span"));
            YAHOO.util.Dom.addClass(elTemplateBtns, "dt-dlg-pickerbtns");

            var onclickObj = { fn: handleButtonClick, obj: this, scope: false };

            // Create one section in the SimpleDialog for each Column
            var elColumn, elKey, elButton, oButtonGrp;
            for (var i = 0, l = allColumns.length; i < l; i++) {
                var oColumn = allColumns[i];

                // Use the template
                elColumn = elTemplateCol.cloneNode(true);

                // Write the Column key
                elKey = elColumn.firstChild;
                elKey.innerHTML = oColumn.label;

                // Create a ButtonGroup
                oButtonGrp = new YAHOO.widget.ButtonGroup({
                    id: "buttongrp" + i,
                    name: oColumn.getKey(),
                    container: elKey.nextSibling
                });
                oButtonGrp.addButtons([
                            { label: "Show", value: "Show", checked: ((!oColumn.hidden)), onclick: onclickObj },
                            { label: "Hide", value: "Hide", checked: ((oColumn.hidden)), onclick: onclickObj }
                        ]);

                elPicker.appendChild(elColumn);
            }
            gridController.setfillNewColumnsInDialog(false);
        }
        myDlg.show();
    };

    var hideDlg = function(e) {
      this.hide();
      gridController.saveState();
    };

    var handleButtonClick = function(e, oSelf) {
        var sKey = this.get("name");
        if (this.get("value") === "Hide") {
            // Hides a Column
            gridController.hideColumn(sKey);
        }
        else {
            // Shows a Column
            gridController.showColumn(sKey);
        }
    };

    // Create the SimpleDialog
    YAHOO.util.Dom.removeClass("dt-dlg", "inprogress");
    var myDlg = new YAHOO.widget.SimpleDialog(selColSimpleDialogContainer, {
        width: "30em",
        height: "30em",
        visible: false,
        modal: true,
        buttons: [{ text: "Close", handler: hideDlg }],
        fixedcenter: true,
        draggable: true,
        constrainToViewport: true
    });
    myDlg.render();
    
    // Hook up the SimpleDialog to the link
    //YAHOO.util.Event.addListener("dt-options-link", "click", showDlg, this, true);
    YAHOO.util.Event.addListener("selectColumns", "click", showDlg, this, true);
    
};
