// JavaScript Document

/*
 +----------------------------------------------------------------------+
 | PowerNumber versão 1.0                                               |
 +----------------------------------------------------------------------+
 | Copyright (c) 1999-2001 Inforage Consultoria                         |
 +----------------------------------------------------------------------+
 | Este arquivo está sujeito a versão 2 da GNU General Public License,  |
 | que pode ser conseguido pela Web em                                  |
 | http://www.gnu.org/copyleft/gpl.txt                                  |
 |                                                                      |
 | Manter os créditos na utilização deste script                        |
 | Dúvidas e/ou sugestões, escreva para                                 |
 | jporto@inforage.com.br                                               |
 +----------------------------------------------------------------------+
*/

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) && (fld.value == '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;
}