// variaveis de ambiente
var idComboMarca;
var idComboModelo;
var idComboVersao;
var idComboAnoModelo;
var _inserirPrimeiraLinha;

/*  Marca  */
function bindMarcaModeloAnoModeloVersaoComboMarca(comboMarca, comboModelo, comboAnoModelo, comboVersao, valorMarca)
{
	idComboMarca = comboMarca;
	idComboModelo = comboModelo;
	idComboAnoModelo = comboAnoModelo;
	idComboVersao = comboVersao;
	
	limpaCombo(comboMarca);
	limpaCombo(comboModelo);
	limpaCombo(comboAnoModelo);
	limpaCombo(comboVersao);
	
	document.getElementById(comboMarca).options.length = 0;
	document.getElementById(comboMarca).options[0] = new Option('carregando...', 'carregando...');
	document.getElementById(comboMarca).disabled = true;
	WebMotors.ssComum.ssServicos.InformacaoCarro.FindMarca(valorMarca, bindMarcaModeloAnoModeloVersaoComboMarca_OnComplete, bindMarcaModeloAnoModeloVersaoComboMarca_OnError, bindMarcaModeloAnoModeloVersaoComboMarca_OnTimeOut);
	document.getElementById(comboMarca).disabled = false;
}

function bindMarcaModeloAnoModeloVersaoComboMarca_OnComplete(list)
{
	bindMarcaModeloAnoModeloVersaoCarregarCombo(list, idComboMarca, 'não foram encontradas marcas no servidor.', '0', true);
}

function bindMarcaModeloAnoModeloVersaoComboMarca_OnTimeOut(arg)
{
	alert("Ocorreu Timeout na busca de marcas no servidor.");
}

function bindMarcaModeloAnoModeloVersaoComboMarca_OnError(arg)
{
	alert("Ocorreu erro na busca de marcas no servidor: " + arg._message);
}


/*  Modelo  */
function bindMarcaModeloAnoModeloVersaoComboModelo(comboModelo, comboAnoModelo, comboVersao, valorMarca, valorModelo) 
{
	idComboModelo = comboModelo;
	idComboAnoModelo = comboAnoModelo;
	idComboVersao = comboVersao;

	limpaCombo(comboModelo);
	limpaCombo(comboAnoModelo);
	limpaCombo(comboVersao);
	
	document.getElementById(comboModelo).options.length = 0;
	if (valorMarca != 0)
	    document.getElementById(comboModelo).options[0] = new Option('carregando...', 'carregando...');
	document.getElementById(comboModelo).disabled = true;
	WebMotors.ssComum.ssServicos.InformacaoCarro.FindModelo(valorMarca, valorModelo, bindMarcaModeloAnoModeloVersaoComboModelo_OnComplete, bindMarcaModeloAnoModeloVersaoComboModelo_OnError, bindMarcaModeloAnoModeloVersaoComboModelo_OnTimeOut);
	document.getElementById(comboModelo).disabled = false;
}

function bindMarcaModeloAnoModeloVersaoComboModelo_OnComplete(list)
{
	bindMarcaModeloAnoModeloVersaoCarregarCombo(list, idComboModelo, 'não foram encontradas modelos no servidor.', '0', true);
}

function bindMarcaModeloAnoModeloVersaoComboModelo_OnTimeOut(arg)
{
	alert("Ocorreu Timeout na busca de modelos no servidor.");
}

function bindMarcaModeloAnoModeloVersaoComboModelo_OnError(arg)
{
	alert("Ocorreu erro na busca de modelos no servidor: " + arg._message);
}


/*  AnoModelo  */
function bindMarcaModeloAnoModeloVersaoComboAnoModelo(comboAnoModelo, comboVersao, valorModelo, valorAnoModelo) 
{
	idComboAnoModelo = comboAnoModelo;
	idComboVersao = comboVersao;

	limpaCombo(comboAnoModelo);
	limpaCombo(comboVersao);

	document.getElementById(comboAnoModelo).options.length = 0;
	document.getElementById(comboAnoModelo).options[0] = new Option('carregando...', 'carregando...');
	document.getElementById(comboAnoModelo).disabled = true;

	WebMotors.ssComum.ssServicos.InformacaoCarro.FindAnoUsados(valorModelo, valorAnoModelo, bindMarcaModeloAnoModeloVersaoComboAnoModelo_OnComplete, bindMarcaModeloAnoModeloVersaoComboAnoModelo_OnError, bindMarcaModeloAnoModeloVersaoComboAnoModelo_OnTimeOut);
	document.getElementById(comboAnoModelo).disabled = false;
}

function bindMarcaModeloAnoModeloVersaoComboAnoModelo_OnComplete(list)
{
	bindMarcaModeloAnoModeloVersaoCarregarCombo(list, idComboAnoModelo, 'não foram encontradas anos modelo no servidor.', '0', true);
}

function bindMarcaModeloAnoModeloVersaoComboAnoModelo_OnTimeOut(arg)
{
	alert("Ocorreu Timeout na busca de anos modelo no servidor.");
}

function bindMarcaModeloAnoModeloVersaoComboAnoModelo_OnError(arg)
{
	alert("Ocorreu erro na busca de anos modelo no servidor: " + arg._message);
}


/*  Versao  */
function bindMarcaModeloAnoModeloVersaoComboVersao(comboVersao, valorModelo, valorAnoModelo, valorVersao, inserirPrimeiraLinha) 
{
	idComboVersao = comboVersao;
	_inserirPrimeiraLinha = inserirPrimeiraLinha;
	limpaCombo(comboVersao);
	document.getElementById(comboVersao).options.length = 0;
	document.getElementById(comboVersao).options[0] = new Option('carregando...', 'carregando...');
	document.getElementById(comboVersao).disabled = true;
	WebMotors.ssComum.ssServicos.InformacaoCarro.FindVersaoUsados(valorModelo, valorAnoModelo, valorVersao, bindMarcaModeloAnoModeloVersaoComboVersao_OnComplete, bindMarcaModeloAnoModeloVersaoComboVersao_OnError, bindMarcaModeloAnoModeloVersaoComboVersao_OnTimeOut);
	document.getElementById(comboVersao).disabled = false;
}

function bindMarcaModeloAnoModeloVersaoComboVersao_OnComplete(list)
{
	bindMarcaModeloAnoModeloVersaoCarregarCombo(list, idComboVersao, 'não foram encontradas versões no servidor.', '0', _inserirPrimeiraLinha);
}

function bindMarcaModeloAnoModeloVersaoComboVersao_OnTimeOut(arg)
{
	alert("Ocorreu Timeout na busca de versões no servidor.");
}

function bindMarcaModeloAnoModeloVersaoComboVersao_OnError(arg)
{
	alert("Ocorreu erro na busca de versões no servidor: " + arg._message);
}

/*  comum  */
function limpaCombo(combo)
{
	if (document.getElementById(combo) != null)
		document.getElementById(combo).options.length = 0;
}

function bindMarcaModeloAnoModeloVersaoCarregarCombo(list, id, msg, valorInicial, inserirValorInicial)
{
	if (list)
	{
	    limpaCombo(id);
		var e = document.getElementById(id);
        var selectedValueOption = null;
        var primeiro = true;
		for (i = 1; i <= list.length; i++)
		{
		    var item = list[i-1];
		    if (primeiro && inserirValorInicial)
		    {
                if (item.value != null && item.value != '' && item.value != '0')
                    e.options[0] = new Option('', valorInicial);
		        primeiro = false;
		    }
            var listItemName = item.name;
            var listItemValue = item.value;
            var listItemIsDefaultValue = item.isDefaultValue;
            var optionElement = new Option(listItemName, listItemValue);
            if (listItemIsDefaultValue) 
                selectedValueOption = optionElement;

            e.options[e.options.length] = optionElement;
        }
        if (selectedValueOption)
            selectedValueOption.selected = true;
	}
	else
		alert(msg);
}