/****************************************************************************************************
																						Framework JAVASCRIPT
																							KaCheckBoxField.js

															Copyright KAHILOA (http://www.kahiloa.com)


	Version 1.0 (29/09/2003) : Version initiale

****************************************************************************************************/


/* Variable applicative indiquant que la classe KaCheckBoxField a été chargée */
_KaCheckBoxField_Loaded = true;

function KaCheckBoxField() {

	// Déclaration des champs
	this.fNbCheckboxMustBeChecked = null;
	
	
	/****************************************************************************************************
		this.setNbCheckboxMustBeChecked = function setNbCheckboxMustBeChecked(pNbCheckboxMustBeChecked)
		Méthode d'affectation du champ fNbCheckboxMustBeChecked
	*/
	this.setNbCheckboxMustBeChecked = function setNbCheckboxMustBeChecked(/*Number*/pNbCheckboxMustBeChecked) {
		if ((typeof(pNbCheckboxMustBeChecked) == 'number') && (pNbCheckboxMustBeChecked != null))
			this.fNbCheckboxMustBeChecked = parseInt(pNbCheckboxMustBeChecked);
	}


	/****************************************************************************************************
		this.getNbCheckBox = function getNbCheckBox()
		Méthode qui renvoie le nombre de cases à cocher du composant
		En sortie :
			Le nombre de cases à cocher du composant
	
		Version       Date         			Auteur        Navigateurs                	Description des modifications
		---------   ----------------  -----------   --------------------------    --------------------------------------------------
			1.0         29/09/2003     		OLD        IE4+ et Netscape3+      		Code original
	*/
	this.getNbCheckBox = function getNbCheckBox() {
		var vNbCheckBox = 0;
		
		if (typeof(this.fComponent) != 'undefined')  {
			if (typeof(this.fComponent.length) == 'undefined')  { 
				// Une seule case à cocher
				vNbCheckBox = 1;
			}
			else {
				// Plusieurs cases à cocher
				vNbCheckBox = this.fComponent.length;
			}
		}
		
		return vNbCheckBox;
	}


	// Initialisation de l'objet KaCheckBoxField
	this.init(arguments);
}

if (_KaField_Loaded) {
	/* Héritage de l'objet KaField */
	KaCheckBoxField.prototype = new KaField();
	//KaCheckBoxField.prototype.constructor = KaCheckBoxField;
	KaCheckBoxField.superclass = KaField.prototype;
}
else
	alert('** KaCheckBoxField : La classe KaField n\'est pas chargée !');


/*
	Constructeur de la classe KaCheckBoxField
*/
KaCheckBoxField.prototype.init = function(/*Array*/pArguments) {
	// Appel à la méthode de la super classe
	//KaCheckBoxField.superclass.init.call(this, pArguments);
	KaCheckBoxField_init(this, pArguments);
}


/*
	Méthode de DEBUG
*/
KaCheckBoxField.prototype.debug = function() {
	// Appel à la méthode de la super classe
	//KaCheckBoxField.superclass.debug.call(this);
	KaCheckBoxField_debug(this);
}


/*
	Méthode de vérification du champ
*/
KaCheckBoxField.prototype.check = function() {
	var vCheckOK = KaCheckBoxField_check(this);
	
	return vCheckOK;
}



/****************************************************************************************************
	Méthode qui retourne le nombre de cases à cocher qui sont cochées.
	En sortie :
		Le nombre de checkbox du composant cochées

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					29/09/2003 			OLD							IE5+ et Netscape6+				Code original
*/
KaCheckBoxField.prototype.getNbCheckboxChecked = function() {
	var vNbCheckboxChecked = 0;

	if (typeof(this.fComponent) != 'undefined')  {
		var vCheckboxNb = this.getNbCheckBox();

		if (vCheckboxNb == 1)  {
			// Une seule case à cocher
			if (this.fComponent.checked) 
				vNbCheckboxChecked++;
		}
		else {
			// Plusieurs cases à cocher
			for (var vCheckboxNum = 0; vCheckboxNum < vCheckboxNb; vCheckboxNum++) {
				if (this.fComponent[vCheckboxNum].checked)
					vNbCheckboxChecked++;
			}
		}
	}
	
	return vNbCheckboxChecked;
}


/****************************************************************************************************
	function KaCheckBoxField_init(pKaCheckBoxField, pArguments)
	Fonction d'inititialisation de l'object pKaCheckBoxField avec les paramètres pArguments
	-> utilisée par la méthode KaCheckBoxField.prototype.init()
	En entrée :
		pKaCheckBoxField = L'objet de type KaCheckBoxField à initialiser
		pArguments = Les paramètres pour initialisation
*/
function KaCheckBoxField_init(/*KaCheckBoxField*/pKaCheckBoxField, /*Array*/pArguments) {
	// Appel à la fonction de la super classe
	KaField_init(pKaCheckBoxField, pArguments);
}


/****************************************************************************************************
	function KaCheckBoxField_debug(pKaCheckBoxField)
	Fonction de debug qui affiche les champs et leurs valeurs de l'object pKaCheckBoxField 
	-> utilisée par la méthode KaCheckBoxField.prototype.debug()
	En entrée :
		pKaCheckBoxField = L'objet de type KaCheckBoxField à initialiser
*/
function KaCheckBoxField_debug(/*KaCheckBoxField*/pKaCheckBoxField) {
	// Appel à la fonction de la super classe
	KaField_debug(pKaCheckBoxField);
	
	var vMessage = '';
	vMessage += 'NbCheckboxMustBeChecked=' + pKaCheckBoxField.fNbCheckboxMustBeChecked + LF;
	alert(vMessage);
}


/****************************************************************************************************
	function KaCheckBoxField_check(pKaCheckBoxField)
	Fonction de vérification de la valeur fValue de l'object pKaCheckBoxField 
	-> utilisée par la méthode KaCheckBoxField.prototype.check()
	En entrée :
		pKaCheckBoxField = L'objet de type KaCheckBoxField à vérifier
*/
function KaCheckBoxField_check(/*KaCheckBoxField*/pKaCheckBoxField) {
	var vCheckOK = true;

	if ((vCheckOK) && (pKaCheckBoxField.fNbCheckboxMustBeChecked != null) && (pKaCheckBoxField.fNbCheckboxMustBeChecked > 0)) {
		// Vérification du nombre de cases à cocher cochées
		if (pKaCheckBoxField.getNbCheckboxChecked() < pKaCheckBoxField.fNbCheckboxMustBeChecked) {
			vCheckOK = false;
			if (pKaCheckBoxField.fNbCheckboxMustBeChecked == 1)
				pKaCheckBoxField.alertMessage('NbCheckboxChecked_0', LOCALE);
			else
				pKaCheckBoxField.alertMessage('NbCheckboxChecked_1', LOCALE);
		}
	}

	return vCheckOK;
}