/* Variable applicative indiquant que la classe KaInputFieldNumber a été chargée */
_KaInputFieldNumber_Loaded = true;

function KaInputFieldNumber() {

	// Déclaration des champs
	this.fIntValue = null;
	this.fMinValue = null;
	this.fMaxValue = null;
	
	
	/****************************************************************************************************
		this.setMinValue = function setMinValue(pMinValue)
		Méthode d'affectation du champ fMinValue
	*/
	this.setMinValue = function setMinValue(/*Number*/pMinValue) {
		if ((typeof(pMinValue) == 'number') && (pMinValue != null))  {
			this.fMinValue = parseInt(pMinValue);
		}
	}


	/****************************************************************************************************
		this.setMaxValue = function setMaxValue(pMaxValue)
		Méthode d'affectation du champ fMaxValue
	*/
	this.setMaxValue = function setMaxValue(/*Number*/pMaxValue) {
		if ((typeof(pMaxValue) == 'number') && (pMaxValue != null))  {
			this.fMaxValue = parseInt(pMaxValue);
		}
	}

	
	// Initialisation de l'objet KaInputFieldNumber
	this.init(arguments);
}

if (_KaInputField_Loaded) {
	/* Héritage de l'objet KaInputField */
	KaInputFieldNumber.prototype = new KaInputField();
	//KaInputFieldNumber.prototype.constructor = KaInputFieldNumber;
	KaInputFieldNumber.superclass = KaInputField.prototype;
}
else
	alert('** KaInputFieldNumber : La classe KaInputField n\'est pas chargée !');


/*
	Constructeur de la classe KaInputFieldNumber
*/
KaInputFieldNumber.prototype.init = function(/*Array*/pArguments) {
	// Appel à la méthode de la super classe
	//KaInputFieldNumber.superclass.init.call(this, pArguments);
	KaInputFieldNumber_init(this, pArguments);
}


/*
	Méthode de DEBUG
*/
KaInputFieldNumber.prototype.debug = function() {
	// Appel à la méthode de la super classe
	//KaInputFieldNumber.superclass.debug.call(this);
	KaInputFieldNumber_debug(this);
}


/*
	Méthode de vérification du champ
*/
KaInputFieldNumber.prototype.check = function() {
	// Appel à la méthode de la super classe
	//var vCheckOK = KaInputFieldNumber.superclass.check.call(this);
	var vCheckOK = KaInputFieldNumber_check(this);

	return vCheckOK;
}



/****************************************************************************************************
	function checkMinValue(pMinValue, pValue)
	Fonction de vérification de la borne minimale
	-> utilisée par la méthode check()
	En entrée :
		pMinValue = la borne minimale
		pValue = La valeur à tester
	En sortie : 
		true si la valeur est supérieure ou égale à la borne minimale et false sinon
*/
function checkMinValue(/*Number*/pMinValue, /*Number*/pValue) {
	if ((pMinValue != null) && (pValue != null)) {
		if (pValue >= pMinValue)
			return true;
		else 
			return false;
	}
	return true;
}


/****************************************************************************************************
	function checkMaxValue(pMaxValue, pValue)
	Fonction de vérification de la borne maximale
	-> utilisée par la méthode check()
	En entrée :
		pMaxValue = la borne maximale
		pValue = La valeur à tester
	En sortie : 
		true si la valeur est inférieure ou égale à la borne maximale et false sinon
*/
function checkMaxValue(/*Number*/pMaxValue, /*Number*/pValue) {
	if ((pMaxValue != null) && (pValue != null)) {
		if (pValue <= pMaxValue)
			return true;
		else 
			return false;
	}
	return true;
}




/****************************************************************************************************
	function KaInputFieldNumber_init(pKaInputFieldNumber, pArguments)
	Fonction d'inititialisation de l'object pKaInputFieldNumber avec les paramètres pArguments
	-> utilisée par la méthode KaInputFieldNumber.prototype.init()
	En entrée :
		pKaInputFieldNumber = L'objet de type KaInputFieldNumber à initialiser
		pArguments = Les paramètres pour initialisation
*/
function KaInputFieldNumber_init(/*KaInputFieldNumber*/pKaInputFieldNumber, /*Array*/pArguments) {
	// Appel à la fonction de la super classe
	KaInputField_init(pKaInputFieldNumber, pArguments);

	// Initialisation des caractères autorisés
	pKaInputFieldNumber.fCharsAllowed = MINUS_SIGN + PLUS_SIGN + DIGIT;
}


/****************************************************************************************************
	function KaInputFieldNumber_debug(pKaInputFieldNumber)
	Fonction de debug qui affiche les champs et leurs valeurs de l'object pKaInputFieldNumber 
	-> utilisée par la méthode KaInputFieldNumber.prototype.debug()
	En entrée :
		pKaInputFieldNumber = L'objet de type KaInputFieldNumber à initialiser
*/
function KaInputFieldNumber_debug(/*KaInputFieldNumber*/pKaInputFieldNumber) {
	// Appel à la fonction de la super classe
	KaInputField_debug(pKaInputFieldNumber);

	var vMessage = '';
	vMessage += 'IntValue=' + pKaInputFieldNumber.fIntValue + LF;
	vMessage += 'MinValue=' + pKaInputFieldNumber.fMinValue + LF;
	vMessage += 'MaxValue=' + pKaInputFieldNumber.fMaxValue + LF;
	alert(vMessage);
}


/****************************************************************************************************
	function KaInputFieldNumber_check(pKaInputFieldNumber)
	Fonction de vérification de la valeur fValue de l'object pKaInputFieldNumber 
	-> utilisée par la méthode KaInputFieldNumber.prototype.check()
	En entrée :
		pKaInputFieldNumber = L'objet de type KaInputFieldNumber à vérifier
*/
function KaInputFieldNumber_check(/*KaInputFieldNumber*/pKaInputFieldNumber) {
	// Appel à la fonction de la super classe
	var vCheckOK = KaInputField_check(pKaInputFieldNumber);
	
	// Initialisation de la valeur entière
	if ((vCheckOK) && (!isNaN(pKaInputFieldNumber.fComponent.value)))
		pKaInputFieldNumber.fIntValue = parseInt(pKaInputFieldNumber.fComponent.value);

	if ((vCheckOK) && (pKaInputFieldNumber.fMinValue != null)) {
		// Borne minimale
		if (!checkMinValue(pKaInputFieldNumber.fMinValue, pKaInputFieldNumber.fIntValue)) {
			vCheckOK = false;
			pKaInputFieldNumber.alertMessage('checkMinValue_0', LOCALE);
		}
	}

	if ((vCheckOK) && (pKaInputFieldNumber.fMaxValue != null)) {
		// Borne maximale
		if (!checkMaxValue(pKaInputFieldNumber.fMaxValue, pKaInputFieldNumber.fIntValue)) {
			vCheckOK = false;
			pKaInputFieldNumber.alertMessage('checkMaxValue_0', LOCALE);
		}
	}
	
	if (!vCheckOK)
		pKaInputFieldNumber.fComponent.focus();

	return vCheckOK;
}
