﻿function PopulateMakes(controlSetName)
{
    var controlSet = GetControlSet(controlSetName);
    if ( document.getElementById(controlSet.makeId) == null ) return;

    var makeDropDown = document.getElementById(controlSet.makeId);
    selectedMakeIndex = makeDropDown.selectedIndex;
    makeDropDown.length = 0;
    
    var optionDefault = new Option("All Makes", "any");
    makeDropDown.options[0] = optionDefault;
    
	for(var i = 0; MakeArray[i] != null; i++) 
	{
        var option = new Option(MakeArray[i], MakeArray[i]);
        makeDropDown.options[i+1] = option;
	}

    if ( controlSet.selectedMakeName != '')
    {
        // This happens for postback
	    for(var i = 0; MakeArray[i] != null; i++) 
	    {
	        if (MakeArray[i].toLowerCase() == controlSet.selectedMakeName.toLowerCase() )
	        {
	            makeDropDown.value = MakeArray[i];
	            break;
	        }
	    }
    }
    else
    {
        // This happens at back button
        makeDropDown.selectedIndex = selectedMakeIndex;
    }
    
    MakeModelTrimActivate(controlSet.makeId, controlSet.modelId);
    PopulateModels(controlSet.setName);
}

function PopulateModels(controlSetName)
{
    var controlSet = GetControlSet(controlSetName);
    if ( document.getElementById(controlSet.makeId) == null ) return;
    if ( document.getElementById(controlSet.modelId) == null ) return;

    var makeDropDown = document.getElementById(controlSet.makeId);
    var modelDropDown = document.getElementById(controlSet.modelId);
    selectedModelIndex = modelDropDown.selectedIndex;
    modelDropDown.length = 0;

    var optionDefault = new Option("All Models", "any");
    modelDropDown.options[0] = optionDefault;

    var selectedMakeIndex = makeDropDown.options.selectedIndex;

    modelDropDown.options.length = 1;

    // disable cpo checkbox first
    var cpoDropDown = document.getElementById(controlSet.cpoId);
    if( cpoDropDown != null )
    {
        cpoDropDown.disabled = true;
        cpoDropDown.checked = false;
    }
    
    if ( selectedMakeIndex == 0 ) return;

    var currentModelArray = ModelArray[selectedMakeIndex-1]
	for(var i = 0; currentModelArray[i] != null; i++) 
	{
        var option = new Option(currentModelArray[i], currentModelArray[i]);
        modelDropDown.options[i+1] = option;
	}
    
    if ( controlSet.selectedModelName != '')
    {
        // This happens for postback
	    for(var i = 0; currentModelArray[i] != null; i++) 
	    {
	        if (currentModelArray[i].toLowerCase() == controlSet.selectedModelName.toLowerCase() )
	        {
	            modelDropDown.value = currentModelArray[i];
	            break;
	        }
	    }
    }
    else
    {
        // This happens at back button
        modelDropDown.selectedIndex = selectedModelIndex;
    }
    
    // check for CPO makes, if so then enable disable checkbox
    if( controlSet.cpoId != null && controlSet.cpoId != "" && selectedMakeIndex > 0 )
    {
        var enableCPO = false;
        for( var index=0; index < CPOMakeArray.length; index++ )
        {
            if( CPOMakeArray[index] == MakeArray[selectedMakeIndex-1] )
            {
                // enable cpo, break
                enableCPO = true;
                break;
            }
        }
        if( enableCPO == true )
        {
            cpoDropDown.disabled = false;
        }
        else
        {
            cpoDropDown.checked = false
            cpoDropDown.disabled = true;
        }
    }
    else
    {
        if( cpoDropDown != null )
        {
            cpoDropDown.disabled = true;
        }
    }
}


// Private methods that should NOT be called from your web page...

function InitializeControlSets()
{
	for (i = 0; i < controlSets.length; i++)
	{
		PopulateMakes(controlSets[i].setName);
	}
}

function RegisterControlSet(setName, makeControlId, modelControlId, selectedMake, selectedModel, cpoControlId)
{
	controlSet = GetControlSet(setName);
	if (controlSet == null)
	{
		// Create a new registry...
		controlSet = CreateNewControlSet(setName);
	}
	
	controlSet.makeId = makeControlId;
	controlSet.modelId = modelControlId;
	controlSet.selectedMakeName = selectedMake;
	controlSet.selectedModelName = selectedModel;
	controlSet.cpoId = cpoControlId;
}

function GetControlSet(setName)
{
	for (i = 0; i < controlSets.length; i++)
	{
		if (controlSets[i] != null)
		{
			if (controlSets[i].setName == setName)
			{
				return (controlSets[i]);
			}
		}
	}
	
	return (null);
}

function CreateNewControlSet(setName)
{
	controlSet = new Object;
	controlSet.setName = setName;
	controlSets[controlSets.length] = controlSet;
	return (controlSet);
}