unfortunately the site is all intranet behind firewalls, the code is more than that, but even when i strip it back to the above i still get 2 buttons
dojo.provide("dcc.tool.basemap");
dojo.declare("dcc.tool.basemap", [dijit._Widget], {
    parentcontainer: "",
    load: function (node, map, file)
    {
        this.parentcontainer = node;
        this.map = map;
        this.file= file;
        if (typeof this.contentPane == 'undefined')
        {
            this.contentPane = new dijit.form.Button(
            {
                label: ' Base Map '
            });
            listnerArray.push(dojo.connect(this.contentPane.domNode, "onclick", function ()
            {
                curbmPopup.containernode.OpenPopup();
                height = (((curbmPopup.containernode.countmaps / 3) ) * 75) + 10;
                dojo.byId("bsmapnode").style.height = height + "px";
                dojo.byId("bsmapnode").innerHTML = curbmPopup.containernode.BMHtml;
                // set highlighted base map
                try
                {
                    dojo.query('#bm_' + curbmPopup.containernode.map.basemap.id)[0].style.border = "2px solid gray"
                }
                catch (e)
                {
                }
            }));
        }
        dojo.place(this.contentPane.domNode, node, "first");
        dojo.addClass(this.contentPane.domNode, "claro");
        if (typeof this.dropDown == 'undefined')
        {
            this.dropDown = new dijit.TooltipDialog(
            {
                onClose:  function(){ curLoadedPopup.isOpen = false;},
                content: '<span style="float:right;position :relative; cursor:pointer;" onclick="dijit.popup.close(curbmPopup);"><img src="' + 'image.gif" alt="X" title="Click to close"/></span><br/><center id="bsmapnode"></center>' ,
                style: "width:215px;"
            });
            dojo.addClass(this.dropDown.domNode, "claro");
            this.dropDown.startup();
       }
        this.dropDown.containernode = this;
        curbmPopup = this.dropDown;
        curLoadedPopup = this.dropDown;
        // load basemaps
        this.loadBaseMaps(environmentPath + "dcc_GIS_Config/App_Config/basemaps/"+ this.file, this);
    },
    OpenPopup: function ()
    {
        if (curLoadedPopup.isOpen){
           curLoadedPopup.isOpen = false;
           dijit.popup.close(curLoadedPopup);
        }
        else
        {
           if (typeof curLoadedPopup != 'undefined')
            {
              dijit.popup.close(curLoadedPopup);
            }
        this.popup = dijit.popup.open(
        {
            popup: this.dropDown,
            around: this.contentPane.domNode,
            orient: {
                BL: 'TL'
            }
        });
        curLoadedPopup.isOpen= true;
        curbmPopup = this.dropDown;
        curLoadedPopup = this.dropDown;
      }
    },
    loadBaseMaps: function (jsonpath, node)
    {
        dojo.xhrGet(
        {
            url: jsonpath,
            load: function (response)
            {
                node.BMHtml = "";
                node.countmaps = 0;
                dojo.forEach(response.basemaps, function (entry, index, array)
                {
                    node.BMHtml += '<div id="bm_' + entry.id + '" style=" border:2px solid white; font-size:10px;width :54px;padding:3px; position:relative; float:left; cursor:pointer;" onclick="curbmPopup.containernode.setBaseMap(\'' + entry.URL + '\', \'' + entry.id + '\' , \'' + entry.name + '\' , \'' + entry.type + '\' , \'' + entry.copyright + '\', curbmPopup.containernode.map) ;">  <img width=55 src="' + entry.swatchURL + '"/><center>' + entry.name + '</center></div>';
                    node.countmaps++;
                });
                try
                {
                    dojo.query('#bm_' + curbmPopup.containernode.map.basemap.id)[0].style.border = "2px solid gray"
                }
                catch (e)
                {
                }
                response = null;
                return response;
            },
            error: function (response, ioArgs)
            {
                response = null;
                return response;
            },
            handleAs: "json"
        });
        //this.basemapConfig = this.map.dcc.getJson(jsonpath);
        //return this.basemapConfig;
    },
setBaseMap: function (url, id, name, type, copyright, themap)
 {
  if (typeof themap.basemap == 'undefined')
  {
    this.basemapName = themap._layers[themap.layerIds[0]].id;
    themap.basemap = themap._layers[themap.layerIds[0]];
  }
  if (this.basemapName != name) //if map has changed
  {
   this.basemapId = id;
   this.basemapName = name;
   this.basemapType = type;
   this.url = url;
   this.copyright = copyright;
   // clear highlighted services
   try
   {
    dojo.query('#bm_' + curbmPopup.containernode.map.basemap.id)[0].style.border = "2px solid white"
   }
   catch (e)
   {
   }
   try
   {
    themap.removeLayer(themap.basemap);
   }
   catch (e)
   {
    themap.removeLayer(themap.basemap);
   }
   if (this.basemapType == "ArcGISDynamicMapServiceLayer")
   {
    themap.basemap = new esri.layers.ArcGISDynamicMapServiceLayer(this.url, {
     transparent: true,
     id: id
    });
   }
   else if (this.basemapType == "ArcGISTiledMapServiceLayer")
   {
    themap.basemap = new esri.layers.ArcGISTiledMapServiceLayer(this.url, {
     id: id
    });
   }
   themap.basemap = themap.addLayer(themap.basemap, 0);
   myLayers[0].Layer= themap.basemap;
   myLayers[0].Label = id;
   themap.basemap.url = url;
   themap.basemap.id = id;
   // themap.dcc.layers.basemap.id = id;
   dojo.byId("Copyright").innerHTML = this.copyright;
   //highlight mapservice
   try
   {
    dojo.query('#bm_' + curbmPopup.containernode.map.basemap.id)[0].style.border = "2px solid gray"
   }
   catch (e)
   {
   }
  }
 }
 });