function AttributesControlList () {
	/**
	 * @var AttributeControlList
	 */
	this.objNext = null;
	/**
	 * @var AttributeControl
	 */
	this.objControl = null;
	
	/**
	 * Add a tab to the list
	 * @param AttributeControl objControl
	 * @return bool
	 */
	this.addControl = function(objControl) {
		if (this.objControl == null){
			this.objControl = objControl;
			return true;
		}
		if (this.objNext == null){
			this.objNext = new AttributesControlList();
		}
		return this.objNext.addControl(objControl);
	}
	
	this.getUrlParam = function (){
		if (this.objNext == null){
			return this.objControl.getUrlParam();
		}
		return this.objControl.getUrlParam() + this.objNext.getUrlParam();	
	}
	
	this.resetState = function (){
		if (this.objNext == null){
			return this.objControl.resetState();
		}
		return (this.objControl.resetState() && this.objNext.resetState());
	}
	
	this.updateControls = function (){
		if (this.objNext == null){
			return this.objControl.updateControls();
		}
		return (this.objControl.updateControls() && this.objNext.updateControls());
	}
	
	this.changeState = function (intControlId, mixNewState){
		if (this.objControl.changeState(intControlId, mixNewState)){
			return true;
		}
		if (this.objNext != null){
			return this.objNext.changeState(intControlId, mixNewState);
		}
		return false;
	}
	
	this.updateState = function (intAttributeId, intAttributeValue){
		if (this.objControl.updateState(intAttributeId, intAttributeValue)){
			return true;
		}
		if (this.objNext != null){
			return this.objNext.updateState(intAttributeId, intAttributeValue);
		}
		return false;
	}
	
	this.getState = function (intControlId){
		var mixState = this.objControl.getState(intControlId);
		if (mixState != null){
			return mixState;
		}
		if (this.objNext != null){
			return this.objNext.getState(intControlId);
		}
		return null;
	}
	
	this.getAttributeId = function (intControlId){
		var intAttributeId = this.objControl.getAttributeId(intControlId);
		if (intAttributeId != null){
			return intAttributeId;
		}
		if (this.objNext != null){
			return this.objNext.getAttributeId(intControlId);
		}
		return null;
	}
	
	this.getParent = function (intControlId){
		var intParent = this.objControl.getParent(intControlId);
		if (intParent != null){
			return intParent;
		}
		if (this.objNext != null){
			return this.objNext.getParent(intControlId);
		}
		return null;
	}
	
	this.getValue = function (intControlId){
		var intValue = this.objControl.getValue(intControlId);
		if (intValue != null){
			return intValue;
		}
		if (this.objNext != null){
			return this.objNext.getValue(intControlId);
		}
		return null;
	}
	
	this.hideDependent = function (intParentId, intParentValue){
		this.objControl.hideDependent(intParentId, intParentValue);
		if (this.objNext != null){
			this.objNext.hideDependent(intParentId, intParentValue);
		}
	}
	
	this.hideDependentFilters = function (intParentId, intParentValue){
		this.objControl.hideDependentFilters(intParentId, intParentValue);
		if (this.objNext != null){
			this.objNext.hideDependentFilters(intParentId, intParentValue);
		}
	}
	
	this.showDependent = function (intParentId, intParentValue){
		this.objControl.showDependent(intParentId, intParentValue);
		if (this.objNext != null){
			this.objNext.showDependent(intParentId, intParentValue);
		}
	}
	
	this.hideDependentByAttributeId = function (intAttributeId){
		this.objControl.hideDependentByAttributeId(intAttributeId);
		if (this.objNext != null){
			this.objNext.hideDependentByAttributeId(intAttributeId);
		}
	}
	
	this.getHtml = function (){
		if (this.objNext == null){
			return this.objControl.getHtml();
		}
		return (this.objControl.getHtml() + this.objNext.getHtml());
	}
	
	this.isEmpty = function (){
		if (this.objControl.isVisible()){
			return false;
		}
		if (this.objNext != null){
			return this.objNext.isEmpty();
		}
		return true;
	}
	
	this.hasActiveFilters = function (){
		if (this.objControl.hasActiveFilters()){
			return true;
		}
		if (this.objNext != null){
			return this.objNext.hasActiveFilters();
		}
		return false;
	}
	
	this.getFiltersCount = function (){
		if (this.objNext != null){
			return 1 + this.objNext.getFiltersCount();
		}
		return 1;
	}
	
	this.getInactiveFiltersCount = function (){
		var intCnt = (this.objControl.isActive() ? 0 : 1);
		if (this.objNext != null){
			return intCnt + this.objNext.getInactiveFiltersCount();
		}
		return intCnt;
	}
	
	
	this.rebuildFilters = function (strGroupId){
		this.objControl.rebuildFilters(strGroupId);
		if (this.objNext != null){
			return this.objNext.rebuildFilters(strGroupId);
		}
		return true;
	}
	
	this.build = function (){
		this.objControl.build();
		if (this.objNext != null){
			this.objNext.build();
		}
	}
	
	this.dump = function (){
		return (this.objControl==null?'':this.objControl.dump())+(this.objNext==null?'':this.objNext.dump());
	}
}