/* 
  onKeyDown="return(convertNumber(this, event.keyCode, '###.###.###,##','n'))"
  onKeyDown="return(convertNumber(this, event.keyCode, '(##) ####-####','t'))"
  onKeyDown="return(convertNumber(this, event.keyCode, '###.###.###-##','t'))"
  onKeyDown="return(convertNumber(this, event.keyCode, '##.###.###/####-##','t'))"
  onKeyDown="return(convertNumber(this, event.keyCode, '#####-###','t'))"
  onKeyDown="return(convertNumber(this, event.keyCode, '##/##/####','t'))"
*/

function onlyNumbers(a)
{
	if (a == 13) return a;			// Enter
	if (a == 9) return a;			// tab
	if (a == 46) return a;			// Delete
	if (a == 8) return 46;			// backspace
	if (a==96||a==48) return 48;	// number 0
	if (a==97||a==49) return 49;	// number 1
	if (a==98||a==50) return 50;	// number 2
	if (a==99||a==51) return 51;	// number 3
	if (a==100||a==52) return 52;	// number 4
	if (a==101||a==53) return 53;	// number 5
	if (a==102||a==54) return 54;	// number 6
	if (a==103||a==55) return 55;	// number 7
	if (a==104||a==56) return 56;	// number 8
	if (a==105||a==57) return 57;	// number 9
	return 17;
}

function stripMask(a)
{
	var natural_value = "";
	for (i=0; i<a.length++; i++)
	{
		caracter = a.substring(i,i+1);
		switch (caracter)
		{
			case ".":
				break;
			case ",":
				break;
			case "/":
				break;
			case "-":
				break;
			case "(":
				break;
			case ")":
				break;
			case ":":
				break;
			case " ":
				break;
			default:
				natural_value = natural_value + caracter;
		}
	}
	return natural_value;
}

function makeMask(natural_value, mask, temp)
{
	var partial_value ="";
	var strCheck = " ()/-.,:";
	var var_size_var = natural_value.length;
	var var_size_mask = mask.length;
	if (temp == 't')
	{
		var count_car = 0;
		var count_mask = 0;
		var mount = true;
		while (mount)
		{
			car_value = natural_value.substring(count_car,count_car+1);
			car_mask = mask.substring(count_mask,count_mask+1);
			if (strCheck.indexOf(car_mask) == -1)
			{
				if (car_value != '')
				{
					partial_value = partial_value + car_value;
				} else {
					partial_value = partial_value + ' ';
				}
				count_car++;
				count_mask++;
			} else {
				partial_value = partial_value + car_mask;
				count_mask++;		
			}
			if (count_mask == var_size_mask) mount=false;
		}
	} else {
		var mount = true;
		while (mount)
		{
			car_value = natural_value.substring(var_size_var-1,var_size_var);
			car_mask = mask.substring(var_size_mask-1,var_size_mask);
			if (strCheck.indexOf(car_mask) == -1)
			{
				partial_value = car_value + partial_value;
				var_size_var--;
				var_size_mask--;
			} else {
				partial_value = car_mask + partial_value;
				var_size_mask--;		
			}
			if (var_size_var == 0) mount=false;
		}
	}
	return partial_value;
}

function convertNumber(fld, e, mask, temp)
{
	e = onlyNumbers(e);
	if (e==17) return false;
	if ((e==13)||(e==9)) return true;  // action keys
	if (e==46) // deletion keys
	{
		field_value = stripMask(fld.value);
		deleted_value = field_value.substring(0,(field_value.length-1));
		field_value = deleted_value;
		if ((field_value.length > 0) || (temp == 't'))
		{
			new_value = stripMask(field_value);
			return_value = makeMask(new_value, mask, temp);
			fld.value = return_value;
			fld.select();
		} else {
			fld.value = '';
		}
		return false;
	}
	
	fld_lg = stripMask(fld.value);
	
	msk_lg = stripMask(mask);
	
	if (fld_lg.length == msk_lg.length) return false;
	
	key = String.fromCharCode(e);
	
	if ((fld.value.length == 0) && (key == '0') && (temp != 't')) return false;
	
	field_value = fld.value + key; // set variable to the full value
	
	new_value = stripMask(field_value);
	
	return_value = makeMask(new_value, mask, temp);
	
	fld.value = return_value;
	
	fld.select();
	
	return false;
}