

function Switcher() {}

Switcher.SECTOR_DEFAULT         = 1;
Switcher.SECTOR_MIN             = 0;
Switcher.SECTOR_MAX             = 1000;

Switcher.ADMIN_SECTOR           = 0;
Switcher.GUEST_SECTOR           = 1000;
Switcher.USER_SECTOR            = 100;

Switcher.widgets = new Array;
Switcher.sectors = new Array;

Switcher.currentSector = Switcher.GUEST_SECTOR;

Switcher.createSector = function(sector) {
        if(sector<Switcher.SECTOR_MIN || sector>Switcher.SECTOR_MAX) return;
        Switcher.sectors[sector] = new Array;
        return Switcher.sectors[sector];
};

Switcher.addWidget2Sector = function(sector, widget) {
        if(sector<Switcher.SECTOR_MIN || sector>Switcher.SECTOR_MAX) return;
        if(widget==undefined) return;

        if(Switcher.sectors[sector] == undefined) // If sector not found, create it.
                 Switcher.createSector(sector);

        var wid = Switcher.widgets.indexOf(widget);
        if(wid == -1) {
               Switcher.widgets.push(widget);
               Switcher.sectors[sector].push(Switcher.widgets.length-1);
        } else {
               if(Switcher.sectors[sector].indexOf(wid) == -1) {
                       Switcher.sectors[sector].push(wid);
               }
        }
        //if(Switcher.currentSector != sector) widget.disconnect();
        //else widget.connect();
        
        if(Switcher.checkSector(Switcher.currentSector, wid) == true) widget.connect();
        else widget.disconnect();
        
        if(Switcher.currentSector == sector) widget.connect();
};

Switcher.checkSector = function(sector, wid) {
        if(Switcher.sectors[sector] == undefined) return false;
        for(var i=0; i<Switcher.sectors[sector].length; i++)
             if(Switcher.sectors[sector][i] == wid)
                    return true;
        return false;
};

Switcher.switchSector = function(sector, switchType) {
        if(sector<Switcher.SECTOR_MIN || sector>Switcher.SECTOR_MAX) return;

        if(Switcher.currentSector == sector) // Sector is on.
                 return;

        if(Switcher.sectors[sector] == undefined)
              return; // Sector not found.

        for(var i=0; i<Switcher.widgets.length; i++) {
              if(Switcher.checkSector(sector, i) == true) {
                       Switcher.widgets[i].connect();
                       GDebugPort.debug(Switcher.widgets[i] + " = connect");
              }
              else {
                       Switcher.widgets[i].disconnect();
                       GDebugPort.debug(Switcher.widgets[i] + " = disconnect");
              }
        }
        Switcher.currentSector = sector;
};
