
/**
* Class to give user interface feedback to the user when typing in the
* customer number in the given text field element and output error messages
* to the given label element.
*
* @author	Jimmy Chin
* @date		30 August 2006
*/

function InvoiceNumberTextFieldErrorChecking(
	pTextFieldElement,
	pErrorMessageLabelElement,
	pEnterFunction)
{
	this.textFieldElement			= pTextFieldElement;
	this.errorMessageLabelElement	= pErrorMessageLabelElement;
	this.enterFunction				= pEnterFunction;
}

InvoiceNumberTextFieldErrorChecking.prototype =
{
	textFieldElement : null
	,
	errorMessageLabelElement : null
	,
	enterFunction : null
	,
	// static
	setup : function(pTextFieldElement, pErrorMessageLabelElement, pEnterFunction)
	{
		dojo.event.connect(
			pTextFieldElement,
			"onkeypress",
			function(){
				var errorChecking = new InvoiceNumberTextFieldErrorChecking(
					pTextFieldElement,
					pErrorMessageLabelElement,
					pEnterFunction);
				errorChecking.invoiceNumberTextFieldOnKeyPress();
			}
		);

		dojo.event.connect(
			pTextFieldElement,
			"onkeydown",
			function(){
				var errorChecking = new InvoiceNumberTextFieldErrorChecking(
					pTextFieldElement,
					pErrorMessageLabelElement,
					pEnterFunction);
				errorChecking.invoiceNumberTextFieldOnKeyDown();
			}
		);
	}
	,
	isDigitAscii : function(pAsciiCode)
	{
		return (pAsciiCode >= 48 && pAsciiCode <= 57);
	}
	,
	setInvoiceNumberErrorMessage : function(pMessage)
	{
		var element = this.errorMessageLabelElement;
		element.innerHTML = pMessage;
	}
	,
	invoiceNumberTextFieldOnKeyPress : function()
	{
		var keyCode = dojo.event.browser.currentEvent.keyCode;
		var isDigit = this.isDigitAscii(keyCode);
		var len = this.textFieldElement.value.length;
		
		if (! isDigit)
		{
			if (keyCode === 13 && this.enterFunction !== null)
				this.enterFunction();
			else
				this.setInvoiceNumberErrorMessage("(Six Numbers, Excluding ‘I’)");

			dojo.event.browser.stopEvent(
				dojo.event.browser.currentEvent);
		}
		else if (len < 5)
		{
			this.setInvoiceNumberErrorMessage("("+(6-len-1)+" more digits needed)");
		}
		else if (len === 6)
		{
			this.setInvoiceNumberErrorMessage("(no more digits needed)");
			dojo.event.browser.stopEvent(
				dojo.event.browser.currentEvent);
		}
		else
			this.setInvoiceNumberErrorMessage("");
	}
	,
	invoiceNumberTextFieldOnKeyDown : function()
	{
		this.setInvoiceNumberErrorMessage("");
	}

}
