/*
	Regras para máscara
	9=numbers
	#=any
	Ex:
		CPF: 999.999.999-99
		Tel: (99) 9999-9999
*/

function Mask(input, event, recursive, mask)
{
	var size = input.value.length;
	var returnValue = false;

	if(!CheckMask(input, mask))
	{
		input.value = "";
		return false;
	}

	if(size<mask.length)
	{
		var maskKey = mask.charAt(size);
		var codeKey;
		if(event!=null) codeKey = event.keyCode;

		if(CheckAcento(codeKey))
		{
			returnValue = true;
		}
		else
		{
			if(maskKey=="9")
			{
				if(IsNumber(codeKey)) input.value += String.fromCharCode(codeKey);
			}
			else
			{
				if(maskKey=="#")
				{
					input.value += String.fromCharCode(codeKey);
				}
				else
				{
					input.value += maskKey;
					Mask(input, event, true, mask);
				}

			}
		}
		if(!recursive) NextNeutralMask(input, mask);
	}

	return returnValue;
}

function NextNeutralMask(input, mask)
{
	var loop = true;
	var i = input.value.length-1;
	while(loop)
	{
		maskKey = mask.charAt(i+1);
		if(maskKey!="9"&&maskKey!="#")
		{
			input.value += maskKey;
		}
		else
		{
			loop = false;
		}
		i++;
		if(i>mask.length-1) loop = false;
	}
}

function IsNumber(codeKey)
{
	if(codeKey>47&&codeKey<58) return true;
	return false;
}

function CheckAcento(ascKey)
{
	vector = new Array();
	vector[0] = 126; // ~
	vector[1] = 180; // ´
	vector[2] = 96; // `
	vector[3] = 94; // ^

	for(var i=0;i<vector.length;i++) if(ascKey==vector[i]) return true;

	return false;
}

function CheckMask(input, mask)
{
	var returnValue = true;
	var size = input.value.length;

	if(size<=mask.length)
	{
		for(var i=0;i<size;i++)
		{
			var maskKey = mask.charAt(i);
			var codeKey = input.value.charAt(i).charCodeAt(0);

			if(maskKey=="9")
			{
				if(!IsNumber(codeKey)) returnValue = false;
			}
			else
			{
				if(maskKey!="#")
				{
					if(codeKey!=maskKey.charCodeAt(0)) returnValue = false;
				}
			}
			if(returnValue==false) i=size;
		}
	}

	return returnValue;
}

function MaskOnlyNumbers(input, event, numbers)
{
	var size = input.value.length;
	var returnValue = false;
	
	if(size<numbers || numbers == 0)
	{
		var codeKey;
		if(event!=null) codeKey = event.keyCode;
		if(IsNumber(codeKey)) returnValue = true;
	}
	return returnValue;
}