var checkboxList = new Array();
var radioList = new Array();

bkLib.onDomLoaded(function() {
	var checkboxes = document.getElementsByTagName('input');
	for(var i=0;i<checkboxes.length;i++) {
		if(checkboxes[i].getAttribute('type').toLowerCase() == "checkbox") {
			checkboxList.push(new checkbox(checkboxes[i]));
		} else if(checkboxes[i].getAttribute('type').toLowerCase() == "radio") {
			radioList.push(new radio(checkboxes[i]));
		}
	}
});

function findCheckbox(name) {
	for(var i=0;i<checkboxList.length;i++) {
		if(checkboxList[i].name == name)
			return checkboxList[i];
	}
}

var radio = bkClass.extend({
	construct : function(elm) {
		this.isOn = false;

		this.img = new bkElement('img').setAttributes({src : 'images/checkbox.gif'}).setStyle({marginRight : '10px'}).appendBefore(elm);
		
		$BK(this.img.parentNode.parentNode).addEvent('click',this.toggle.closure(this));
		
		elm.style.display = 'none';
		this.elm = elm;
		this.name = elm.id;
	
		if(elm.checked) {
			this.toggle();
		}

	},

	toggle : function() {
		for(var i=0;i<radioList.length;i++) {
			if(radioList[i] != this && radioList[i].elm.name == this.elm.name && radioList[i].isOn) {
				radioList[i].toggle();
			}
		}

		this.isOn = !this.isOn;
		this.img.setAttributes({src : 'images/checkbox'+ ((this.isOn) ? '-on' : '') + '.gif'});
		
		this.elm.parentNode.parentNode.style.backgroundColor = (this.isOn) ? '#f6f6f6' : '';
		var radio = document.getElementsByTagName('input');

		this.elm.checked = this.isOn;
	}

});

var checkbox = radio.extend({
	
	toggle : function() {
		this.isOn = !this.isOn;
		this.img.setAttributes({src : 'images/checkbox'+ ((this.isOn) ? '-on' : '') + '.gif'});
		
		this.elm.parentNode.parentNode.style.backgroundColor = (this.isOn) ? '#f6f6f6' : '';
		
		this.elm.checked = this.isOn;
		if(this.isOn) {
			var deps = dep[this.name];
			for(var i=0;i<deps.length;i++) {
				var cb = findCheckbox(deps[i]);
				if(cb && !cb.isOn) cb.toggle();
			}
		} else {
			for(var i=0;i<checkboxList.length;i++) {
				if(bkLib.inArray(dep[checkboxList[i].name],this.name)) {
					if(checkboxList[i].isOn) checkboxList[i].toggle();
				}
			}
		}
	}
	
});
