/**
 * bCriarLink()
 *
 * Cria um link para site externo numa nova ou na mesma janela.
 *
 * @param  string link
 * @param  mixed nome da janela de destino
 * @return vazio
 */
function bCriarLink(a_link, a_destino)
{
	if (a_destino == false)
	{
		window.location.href = a_link;
	}
	else
	{
		window.open(a_link, a_destino);
	}
}


/**
 * bEhArray()
 *
 * Detecta (cross-browser) se um elemento é do tipo "array".
 *
 * @param  elemento
 * @return booleano
 */
function IsArray(array)
{
	return !(!array || (!array.length || array.length == 0) || typeof array !== 'object' || !array.constructor || array.nodeType || array.item );
}


/**
 * bEnviar()
 *
 * Enviar um formulário sem botão submit, apertando a tecla <Enter>.
 *
 * @param  objeto e evento
 * @param  string funcao função a ser executada
 * @return booleano
 */
function bEnviar(e, funcao)
{
	var v_tecla;

	if (window.event)
	{
		v_tecla = window.event.keyCode;
	}
	else if (e)
	{
		v_tecla = e.which;
	}
	else
	{
		return true;
	}
	if (v_tecla == 13)
	{
		eval(funcao);
		return false;
	}
	return true;
}


/**
 * bLimparCampo()
 *
 * Limpa a legenda de um campo input ou textarea.
 *
 * @param  objeto campo
 * @param  legenda padrão
 * @return vazio
 */
function bLimparCampo(a_field, a_value)
{
	if (a_field.value == a_value)
	{
		a_field.value = '';
	}
}


/**
 * bPreCarregar()
 *
 * Carrega imagens do servidor "por trás dos panos".
 *
 * @param  array imagens
 * @return vazio
 */
function bPreCarregar(a_imagens)
{
	var v_pre_imagens = new Array();

	for (i = 0, j = a_imagens.length; i < j; i++)
	{
		v_pre_imagens[i] = new Image();
		v_pre_imagens[i].src = a_imagens[i];
	}
}


/**
 * bRestaurarCampo()
 *
 * Restaura a legenda padrão de um campo input ou textarea.
 *
 * @param  objeto campo
 * @param  legenda padrão
 * @return vazio
 */
function bRestaurarCampo(a_field, a_value)
{
	if (a_field.value == '')
	{
		a_field.value = a_value;
	}
}


/**
 * bValidarCpf()
 *
 * Verifica e valida um CPF.
 *
 * @param  int a_cpf
 * @return booleano
 */
function bValidarCpf(a_cpf)
{
	var v_cpf = a_cpf.replace(/[^0-9]/g, '');

	if (!/^[\d]{11}$/.test(v_cpf))
	{
		return false;
	}
	if (/^0{11}|1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11}$/.test(v_cpf))
	{
		return false;
	}
	var v_sequence	  = new Array();
	var v_rest, v_sum = new Number;
	var v_multiplier  = 11;

	for (var i = 0; i < 11; i++)
	{
		v_sequence[i] = v_cpf.charAt(i);

		if (i < 9)
		{
			v_sum += (v_sequence[i] * --v_multiplier);
		}
	}
	if ((v_rest = v_sum % 11) < 2)
	{
		v_sequence[9] = 0;
	}
	else
	{
		v_sequence[9] = 11 - v_rest;
	}
	v_sum		 = 0;
	v_multiplier = 11;

	for (var y = 0; y < 10; y++)
	{
		v_sum += (v_sequence[y] * v_multiplier--);
	}
	if ((v_rest = v_sum % 11) < 2)
	{
		v_sequence[10] = 0;
	}
	else
	{
		v_sequence[10] = 11 - v_rest;
	}
	if ((v_cpf.charAt(9) != v_sequence[9]) || (v_cpf.charAt(10) != v_sequence[10]))
	{
		return false;
	}
	return true;
}
