﻿function VisualCheckbox(/*string*/ divIdClientId, /*string*/ imageId, /*string*/ valueFieldId)
{
	this.UncheckedImage = "";
	this.CheckedImage = "";

	var _div = document.getElementById(divIdClientId);
	var _image = document.getElementById(imageId);
	var _valueField = document.getElementById(valueFieldId);
	var _events = new Array();
	
	this.Container = _div;
	this.IsActive = (_valueField.value == "true");

	this.ApplyStyle = function(container)
	{
	};
	
	this.ApplyCheckedStyle = function(container)
	{
	};
	
	this.AddChangedListener = function(/* object */ obj, /* function */ delegate)
	{
		_events.push([obj, delegate]);
	}

	this.Toggle = function()
	{
		if (this.IsActive)
			this.Deactivate();
		else
			this.Activate();
			

	}

	this.Activate = function()
	{
		if (!this.IsActive)
		{
			this.IsActive = true;
			this.RaiseChangedEvent();
		}
		_image.src = this.CheckedImage;
		_valueField.value = "true";
		
		this.ApplyCheckedStyle(this.Container);
	};
	
	this.Deactivate = function()
	{
		if (this.IsActive)
		{
			this.IsActive = false;
			this.RaiseChangedEvent();
		}
		_image.src = this.UncheckedImage;
		_valueField.value = "false";

		this.ApplyStyle(this.Container);
	};
	
	function _raiseChangedEvent()
	{
		for (var i = 0; i < _events.length; i++)
		{
			_events[i][1].apply(_events[i][0], new Array(this));
		}
	}
	this.RaiseChangedEvent = _raiseChangedEvent;
}

function deactivateGroup(groupName, activeCheckbox)
{
	for (var i = 0; i < window['_radioButtonGroup' + groupName].length; i++)
	{
		if (activeCheckbox!= window[window['_radioButtonGroup' + groupName][i]])
			window[window['_radioButtonGroup' + groupName][i]].Deactivate();
	}
}