// Busca um elemento em um vetor
function SearchInArray()
{
	for( var i = 0 ; i < arguments[0].length ; i++ )
	{
		if( arguments[0][i] == arguments[1] )
		{
			return true;
		}
	}
	
	return false;
}

// Checha se o código da tecla é refente a um número
function isNumericKey()
{
    return ( arguments[0] >= 48 && arguments[0] <= 57 ) || ( arguments[0] >= 96 && arguments[0] <= 105 );
}

// Funcão equivalente ao método String.Format() do c#
function Format()
{
	var	format = arguments[0].toString(),
		item;
		
	var	valuesAmount = arguments.length - 1;
		
	for( var i = 0; i < valuesAmount; i++ )
	{		
		item = "{".concat(i,"}");
		
		format = format.replace(item, arguments[i+1].toString());
	}
	
	return	format;	
}

// Captura o tipo de máscara que deverá ser aplicado no input
function GetTypeMask()
{
	var	name = arguments[0].name.toLowerCase();
	
	if( name.search("data") != -1 )
	{
		return "data";
	}
	else if( name.search("cnpj") != -1 )
	{
		return "cnpj";
	}
	else if( name.search("cpf") != -1 )
	{
		return "cpf";
	}
	else if( name.search("tel") != -1 )
	{
		return "tel";
	}
	else if( name.search("cep") != -1 )
	{
		return "cep";
	}
}

// Teclas que devem ser desconsideradas na aplicação das máscaras
function GetWhiteListKeys()
{
	return [8, 9, 37, 38, 39, 40, 46, 16];
}

// Verifica se a tecla digitada está na lista de teclas que devem ser desconsideradas
function isWhiteKey(e)
{
	var code; 
	
	if ( !e )
	{		
		e = window.event;
	}
	
	if( e.keyCode ) 
	{
		code = e.keyCode; 
	}
	else if ( e.which ) 
	{
		code = e.which;
	}
	
	return SearchInArray(GetWhiteListKeys(), code);
}

// Bloqueia palavras quando usada no onkeydown
function BreakWord(e)
{
	var code; 
	
	if ( !e )
	{		
		e = window.event;
	}
	
	if( e.keyCode ) 
	{
		code = e.keyCode; 
	}
	else if ( e.which ) 
	{
		code = e.which;
	}

	if( !SearchInArray(GetWhiteListKeys(), code) )
	{
		if( !isNumericKey(code) )
		{
			return false;
		}
		else
		{
			return true;
		}
	}
}