function mmInitializeCars(parent, make, model, make_caption, model_caption)
{
    clearList(parent.ddlMake);
    addElement(parent.ddlMake, "", 0);
    
    for (var i = 0; i < mmMkCars.length; i++)
        if (mmMkCars[i])
        {
            addElement(parent.ddlMake, mmMkCars[i], mmMkCars[i]);
		}

    if (make)
    {
        setDefaultByIText(parent.ddlMake, make);
        
        if (model_caption != "")
            mmChangeMakeCars(parent, model_caption);
        
        if (model)
            setDefaultByText(parent.ddlModel, model);
	}
    else
	{
        parent.ddlMake.selectedIndex = 0;
        mmChangeMakeCars(parent, model_caption);
    }
}

function mmChangeMakeCars(parent, model_caption)
{
    var ModelList = mmMdCars[parent.ddlMake.options[parent.ddlMake.selectedIndex].value];

    clearList(parent.ddlModel);
    addElement(parent.ddlModel, model_caption, "");
    if(ModelList)
    {
        var rgModels = ModelList.split(',');
        for (var i = 0; i < rgModels.length; i++)
        {
            var sName, sValue;
            // rgModels[i] may be a singular value of ModelAscii, or a "#" delimited string of ModelID and ModelAscii
			if (rgModels[i].indexOf('#') != -1)
			{
				var rgModel = rgModels[i].split('#');
				// Bug #13866:  No need for the model ID in CPO search.  Just use model name.
				sName = sValue = rgModel[1];
			}
			else
				sName = sValue = rgModels[i];
            if (rgModels[i])
            {
                addElement(parent.ddlModel, sName, sValue);
            }
        }
        parent.ddlModel.disabled = false;
    }
    else
        parent.ddlModel.disabled = true;

    parent.ddlModel.selectedIndex = 0;
}