// globais
var combinations = [];
var selectedCombination = [];
var globalQuantity = new Number;
var vlrParcelamento = '';

// mensagens
var doesntExist = 'No momento não há produto em estoque com estas características, mas está disponível com outros.',
	especNotInformed = 'Para comprar este produto, é necessário informar o modelo (cor, tamanho, tipo, etc) desejado.',
	especNotCompleted = 'Por favor, informe todos os atributos do modelo desejado.';


// adiciona uma combinação de atributos no array global de combinações
function addCombination(preCod, arrayIdsEspecs, qtd, vlr, ref)
{
	// não adiciona combinações já cadastradas
	for (espec in combinations)
	{
		if (combinations[espec]['preCod'] == preCod)
			return;
	}

	globalQuantity += qtd;

	var combination = [];
	combination['preCod'] = preCod;
	combination['qtd'] = qtd;
	combination['idsAttr'] = arrayIdsEspecs;
	combination['vlr'] = vlr;
	combination['ref'] = ref;

	combinations.push(combination);
}

// procura nas combinações os atributos informados e atualiza os dados de exibição (preço, quantidade, peso etc)
function findCombination()
{
	// cria um array temporário contendo os atributos escolhidos pelo usuário
	var choice = [];
	$('#grade-produtos select').each(function(){
		choice.push($(this).val());
	});

	var numAttrEquals;

	// testa todas combinações para achar a escolhida
	for (combination in combinations)
	{
		// verifica se essa combinação é a mesma escolhida pelo usuário
		numAttrEquals = 0;
		for (idAttr in combinations[combination]['idsAttr'])
		{
			// corrige bug do IE6 (IE SUX!!)
			if (idAttr != 'indexOf')
			{
				// se o atributo foi escolhido
				if (in_array(combinations[combination]['idsAttr'][idAttr].toString(), choice))
				{
					numAttrEquals++; // incrementa o total de atributos informados
				}
			}
		}

		if (numAttrEquals == choice.length)
		{
			selectedCombination['disponivel'] = true;

			$('#preCod').val(combinations[combination]['preCod']);
			//$('#preQtdEstoque').val(combinations[combination]['qtd']);
			$('#preQtdEstoque').val(1); // Adiciona um item por vez

			// pega os dados da especificação com os atributos informados
			qtdDisponivel = combinations[combination]['qtd'];

			selectedCombination['qtd'] = combinations[combination]['qtd'];
			selectedCombination['vlr'] = combinations[combination]['vlr'];
			selectedCombination['ref'] = combinations[combination]['ref'];

			// atualiza os preços e detalhes do produto
			updateDisplay();

			return;
		}
	}

	// especificação inexistente para a combinação de atributos informado
	selectedCombination['disponivel'] = false;

	updateDisplay();
}

// atualiza os dados do produto
function updateDisplay()
{
	if (selectedCombination['disponivel'] && qtdDisponivel > 0)
	{
		// exibe o botão de compra apenas se já estava oculto
		$('#add_to_cart:hidden').fadeIn(600);
	}

	// atualiza os valores do produto
	if (selectedCombination['disponivel'])
	{
		var vlrAux = selectedCombination['vlr'];

		$('#add_to_cart:hidden').fadeIn(600);

		$('#msg_disponibilidade:visible').hide();

		$('#prodRef').text(selectedCombination['ref']);
		$('#prodRef:hidden').fadeIn(600);

		$('#vlr_display').text('R$ ' + selectedCombination['vlr']);
		//$('#vlr_old_display').text('R$ ' + selectedCombination['vlr_total']);

		if (vlrParcelamento != selectedCombination['vlr'])
		{
			$('div.parcelamento').load('_ajax.produtos_parcelamento.asp?valor=' + selectedCombination['vlr']);

			vlrParcelamento = selectedCombination['vlr']
		}
	}
	else
	{
		$('#disp_vlr').text(doesntExist);
		$('#msg_disponibilidade:hidden').show();

		$('#add_to_cart:visible').fadeOut(600);

		$('#prodRef:visible').fadeOut(600);
	}
}


function checkEspecs()
{
	var i = 0,
		choice = [];
	$('#grade-produtos select').each(function(){
		i++;
		if ($(this).val() != '')
			choice.push($(this).val());
	});

	if (choice.length == 0) {
		alert(especNotInformed);
		return false;
	} else if (choice.length != i) {
		alert(especNotCompleted);
		return false;
	}

	if ($('#preCod').val() == 0) {
		alert(doesntExist);
		return false;
	} else {
		$('#codigo_cor').val(choice[0]);

		if (choice.length == 2)
			$('#codigo_tamanho').val(choice[1]);
	}

	return true;
}

$(document).ready(function(){
	if (typeof temEspecs != 'undefined' && temEspecs)
		findCombination();
});

