
var AdvCheckGroup = function(id){
	this.id = id;
	this._elm = null;
	this._items = new Array();
	this._selector = null;
	
	this.init = function(){
		var a, ctrl = this, check;

		this._elm = document.getElementById(this.id);
		a = this._elm.getElementsByTagName('label');

		for(var i=0;i<a.length;i++){
			if(a[i].className == 'checkAll'){
				this._selector = a[i];
				
				Events.attachEvent(a[i],'click',function(e){
					ctrl.handleSelectorMC(e);
				});
			}
			else{
				this._items[this._items.length] = a[i];
				check = this._parseCheckbox(a[i]);
				
				Events.attachEvent(a[i],'click',function(e){
					ctrl.handleItemMC(e);
				});
				
				Events.attachEvent(check,'click',function(e){
					ctrl.handleItemMC(e);
				});
			}
		}
	}
	
	this.handleItemMC = function(e){
		var t = e.getTarget();
		var check = this._parseCheckbox(t);

		if((check.checked && check == t) || (!check.checked && check != t)){
			this.uncheckItem(this._selector);
		}
	}
	
	this.handleSelectorMC = function(e){
		var t = e.getTarget();
		var check = this._parseCheckbox(t);
		
		if(check.checked){
			for(var i=0;i<this._items.length;i++){
				this.uncheckItem(this._items[i]);
			}
		}
	}
	
	this.checkItem = function(item){
		var check = this._parseCheckbox(item);
		check.checked = true;
	}
	
	this.uncheckItem = function(item){
		var check = this._parseCheckbox(item);
		check.checked = false;
	}
	
	this._parseCheckbox = function(item){
		return (item.type == 'checkbox')?item:item.parentNode.parentNode.getElementsByTagName('input')[1];
	}
	
	this.init();
}