Clazz.declarePackage ("JM");
Clazz.load (["JM.Structure"], "JM.Chain", null, function () {
c$ = Clazz.decorateAsClass (function () {
this.model = null;
this.chainID = 0;
this.chainNo = 0;
this.groups = null;
this.groupCount = 0;
this.selectedGroupCount = 0;
Clazz.instantialize (this, arguments);
}, JM, "Chain", null, JM.Structure);
Clazz.makeConstructor (c$, 
function (model, chainID, chainNo) {
this.model = model;
this.chainID = chainID;
this.chainNo = chainNo;
this.groups =  new Array (16);
}, "JM.Model,~N,~N");
Clazz.defineMethod (c$, "getIDStr", 
function () {
return (this.chainID == 0 ? "" : this.chainID < 256 ? "" + String.fromCharCode (this.chainID) : this.model.ms.vwr.getChainIDStr (this.chainID));
});
Clazz.defineMethod (c$, "calcSelectedGroupsCount", 
function (bsSelected) {
this.selectedGroupCount = 0;
for (var i = 0; i < this.groupCount; i++) this.groups[i].selectedIndex = (this.groups[i].isSelected (bsSelected) ? this.selectedGroupCount++ : -1);

}, "JU.BS");
Clazz.defineMethod (c$, "fixIndices", 
function (atomsDeleted, bsDeleted) {
for (var i = 0; i < this.groupCount; i++) this.groups[i].fixIndices (atomsDeleted, bsDeleted);

}, "~N,JU.BS");
Clazz.overrideMethod (c$, "setAtomBits", 
function (bs) {
for (var i = 0; i < this.groupCount; i++) this.groups[i].setAtomBits (bs);

}, "JU.BS");
Clazz.overrideMethod (c$, "setAtomBitsAndClear", 
function (bs, bsOut) {
for (var i = 0; i < this.groupCount; i++) this.groups[i].setAtomBitsAndClear (bs, bsOut);

}, "JU.BS,JU.BS");
});
