// JavaScript Document
function mask2(obj,evt,msk,deny)
{
	var nCode = (window.Event) ? evt.which : evt.keyCode;
	
	// if a control character was typed accept it without check
	if ( nCode < 32 ) return true;
	
	// if maxlength value or the mask´s length was reached, abort the function
	if ((obj.value.length >= obj.maxLength) || (obj.value.length >= msk.length)) return false;

	var sKey	= String.fromCharCode(nCode);
	var sChar = msk.charAt(obj.value.length);

	// if a denied character was typed, abort the function
	if ( typeof(deny) != "undefined" )
	{
		if ( deny.indexOf(sKey) >= 0 ) return false;
	}

	while ((obj.value.length < obj.maxLength) && (obj.value.length < msk.length))
	{
		switch ( sChar )
		{
			case "*":
				if ( (nCode >= 48 && nCode <= 57) || (nCode >= 65 && nCode <= 90) || (nCode >= 97 && nCode <= 122) ) return true;
				return false;
			case "A": // accept only AaBbCc...Zz
				if ( (nCode >= 65 && nCode <= 90) || (nCode >= 97 && nCode <= 122) ) return true;
				return false;
			case "#": // accept only 123...9
				if ( nCode >= 48 && nCode <= 57 ) return true;
				return false;
			case "X": // accept any character
				return true;
			default:	// any character else in the msk variable must be added
				obj.value += sChar;
				sChar = msk.charAt(obj.value.length);
		}
	}
}