/****************************************************************************************************
																						Framework JAVASCRIPT
																							KaRadioButtonField.js

															Copyright KAHILOA (http://www.kahiloa.com)


	Version 1.0 (29/09/2003) : Version initiale

****************************************************************************************************/


/* Variable applicative indiquant que la classe KaRadioButtonField a été chargée */
_KaRadioButtonField_Loaded = true;

function KaRadioButtonField() {

	// Déclaration des champs
	this.fOneRadioButtonMustBeChecked = null;
	
	
	/****************************************************************************************************
		this.setOneRadioButtonMustBeChecked = function setOneRadioButtonMustBeChecked(pOneRadioButtonMustBeChecked)
		Méthode d'affectation du champ fOneRadioButtonMustBeChecked
	*/
	this.setOneRadioButtonMustBeChecked = function setOneRadioButtonMustBeChecked(/*Boolean*/pOneRadioButtonMustBeChecked) {
		if ((typeof(pOneRadioButtonMustBeChecked) == 'boolean') && (pOneRadioButtonMustBeChecked != null))
			this.fOneRadioButtonMustBeChecked = pOneRadioButtonMustBeChecked;
	}


	/****************************************************************************************************
		this.getNbRadioButton = function getNbRadioButton()
		Méthode qui renvoie le nombre de boutons radios du composant
		En sortie :
			Le nombre de boutons radio
	
		Version       Date         			Auteur        Navigateurs                	Description des modifications
		---------   ----------------  -----------   --------------------------    --------------------------------------------------
			1.0         29/09/2003     		OLD        IE4+ et Netscape3+      		Code original
	*/
	this.getNbRadioButton = function getNbRadioButton() {
		var vNbRadioButton = 0;
		
		if (typeof(this.fComponent) != 'undefined')  {
			if (typeof(this.fComponent.length) == 'undefined')  { 
				// Un seul bouton radio
				vNbRadioButton = 1;
			}
			else {
				// Plusieurs boutons radios
				vNbRadioButton = this.fComponent.length;
			}
		}
		
		return vNbRadioButton;
	}


	/****************************************************************************************************
		this.isOneRadioButtonChecked = function isOneRadioButtonChecked()
		Cette méthode vérifie qu'au moins un des boutons radios est coché
		En sortie : 
			true si un des boutons radios est coché et false sinon
	
	 Version       Date         		Auteur        Navigateurs                		Description des modifications
	 ---------   ----------------  -----------   --------------------------    --------------------------------------------------
			1.0         29/09/2003     		OLD        IE4+ et Netscape3+      		Code original
	*/
	this.isOneRadioButtonChecked = function isOneRadioButtonChecked() {
		var vIsOneChecked = false;
		
		if (typeof(this.fComponent) != 'undefined')  {
			if (this.getNbRadioButton() == 1)  {
				// Un seul bouton radio
				vIsOneChecked = this.fComponent.checked;
			}
			else {
				// Plusieurs boutons radios
				var vRadioButtonNum = 0;
				while ((!vIsOneChecked) && (vRadioButtonNum < this.fComponent.length)) {
					vIsOneChecked = this.fComponent[vRadioButtonNum].checked;
					vRadioButtonNum++;
				}
			}
		}
		
		return vIsOneChecked;
	}


	// Initialisation de l'objet KaRadioButtonField
	this.init(arguments);
}

if (_KaField_Loaded) {
	/* Héritage de l'objet KaField */
	KaRadioButtonField.prototype = new KaField();
	//KaRadioButtonField.prototype.constructor = KaRadioButtonField;
	KaRadioButtonField.superclass = KaField.prototype;
}
else
	alert('** KaRadioButtonField : La classe KaField n\'est pas chargée !');


/*
	Constructeur de la classe KaRadioButtonField
*/
KaRadioButtonField.prototype.init = function(/*Array*/pArguments) {
	// Appel à la méthode de la super classe
	//KaRadioButtonField.superclass.init.call(this, pArguments);
	KaRadioButtonField_init(this, pArguments);
}


/*
	Méthode de DEBUG
*/
KaRadioButtonField.prototype.debug = function() {
	// Appel à la méthode de la super classe
	//KaRadioButtonField.superclass.debug.call(this);
	KaRadioButtonField_debug(this);
}


/*
	Méthode de vérification du champ
*/
KaRadioButtonField.prototype.check = function() {
	var vCheckOK = KaRadioButtonField_check(this);

	return vCheckOK;
}



/****************************************************************************************************
	Méthode qui retourne la valeur "value" du bouton radio sélectionné du composant.
	En sortie :
		La valeur "value" du bouton radio sélectionné du composant.

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					29/09/2003 			OLD							IE5+ et Netscape6+				Code original
*/
KaRadioButtonField.prototype.getValueFromRadioButtonChecked = function() {
	var vValue = null;
	var vIsChecked = false;
	
	if (typeof(this.fComponent) != 'undefined')  {
		if (this.getNbRadioButton() == 1)  {
			// Un seul bouton radio
			vIsChecked = this.fComponent.checked;
			if (vIsChecked)
				vValue = this.fComponent.value;			
		}
		else {
			// Plusieurs boutons radios
			var vRadioButtonNum = 0;
			while ((!vIsChecked) && (vRadioButtonNum < this.fComponent.length)) {
				vIsChecked = this.fComponent[vRadioButtonNum].checked;
				if (vIsChecked)
					vValue = this.fComponent[vRadioButtonNum].value;
				vRadioButtonNum++;
			}
		}
	}
	
	return vValue;
}


/****************************************************************************************************
	function KaRadioButtonField_init(pKaRadioButtonField, pArguments)
	Fonction d'inititialisation de l'object pKaRadioButtonField avec les paramètres pArguments
	-> utilisée par la méthode KaRadioButtonField.prototype.init()
	En entrée :
		pKaRadioButtonField = L'objet de type KaRadioButtonField à initialiser
		pArguments = Les paramètres pour initialisation
*/
function KaRadioButtonField_init(/*KaRadioButtonField*/pKaRadioButtonField, /*Array*/pArguments) {
	// Appel à la fonction de la super classe
	KaField_init(pKaRadioButtonField, pArguments);
}


/****************************************************************************************************
	function KaRadioButtonField_debug(pKaRadioButtonField)
	Fonction de debug qui affiche les champs et leurs valeurs de l'object pKaRadioButtonField 
	-> utilisée par la méthode KaRadioButtonField.prototype.debug()
	En entrée :
		pKaRadioButtonField = L'objet de type KaRadioButtonField à initialiser
*/
function KaRadioButtonField_debug(/*KaRadioButtonField*/pKaRadioButtonField) {
	// Appel à la fonction de la super classe
	KaField_debug(pKaRadioButtonField);
	
	var vMessage = '';
	vMessage += 'OneRadioButtonMustBeChecked=' + pKaRadioButtonField.fOneRadioButtonMustBeChecked + LF;
	alert(vMessage);
}


/****************************************************************************************************
	function KaRadioButtonField_check(pKaRadioButtonField)
	Fonction de vérification de la valeur fValue de l'object pKaRadioButtonField 
	-> utilisée par la méthode KaRadioButtonField.prototype.check()
	En entrée :
		pKaRadioButtonField = L'objet de type KaRadioButtonField à vérifier
*/
function KaRadioButtonField_check(/*KaRadioButtonField*/pKaRadioButtonField) {
	var vCheckOK = true;

	if ((vCheckOK) && (pKaRadioButtonField.fOneRadioButtonMustBeChecked != null) && (pKaRadioButtonField.fOneRadioButtonMustBeChecked)) {
		// Obligation de cocher un bouton radio
		if (!pKaRadioButtonField.isOneRadioButtonChecked()) {
			vCheckOK = false;
			pKaRadioButtonField.alertMessage('isOneRadioButtonChecked_0', LOCALE);
		}
	}

	return vCheckOK;
}