// 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("hora") != -1 )
	{
		return "hora";
	}
	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;
		}
	}
}

//------------------------------- CNPJ ---------------------------------
function vldCnpj( sender, args )
{
    while(  args.Value.indexOf(".") != -1 || 
            args.Value.indexOf("/") != -1 || 
            args.Value.indexOf("-") != -1 )
    {
        args.Value = args.Value.replace(".", "");
        args.Value = args.Value.replace("/", "");
        args.Value = args.Value.replace("-", "");
    }

	if ( args.Value.length != 14 ) 
	{
		args.IsValid = false; 
		return;
	}
	
	var a = [];
	var b = new Number;
	var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
	
	for (i=0; i<12; i++)
	{
		   a[i] = args.Value.charAt(i);
		   b += a[i] * c[i+1];
	}
	
	if ((x = b % 11) < 2) 
	{ 
	    a[12] = 0 
	} 
	else 
	{ 
	    a[12] = 11-x 
	}
	
	b = 0;
	
	for (y=0; y<13; y++) 
	{
		   b += (a[y] * c[y]); 
	}
	
	if ((x = b % 11) < 2) 
	{ 
	    a[13] = 0; 
	} 
	else 
	{   
	    a[13] = 11-x; 
	}
	
	if ((args.Value.charAt(12) != a[12]) || (args.Value.charAt(13) != a[13]))
	{
		   args.IsValid = false;
		   return;
	}
	
	args.IsValid = true;
}