function initMakes
    // initialise the makes dropdown list, no initial values
    (
        ctlMake
            // Make dropdown control
    )
{
    var lngIndex;
        // loop variable

    // remove any the options in the make text select box apart from the first (unspecified) entry
    ctlMake.options.length=1;

    strTest = "";
    // add options for each make
    for (lngIndex = 0 ; lngIndex<arrMakes.length ; lngIndex++)
    {
        addOptionToSelect(ctlMake,arrMakes[lngIndex].description,arrMakes[lngIndex].description,false);
    }
    return true;
}

function initMakesModels
    // initialise the makes and models dropdown lists using initial values
    (
        ctlMake,
            // Make dropdown control
        ctlModel,
            // Make dropdown control
        varMake,
            // select value for the make select item
        varModel
            // select value for the model select item
    )
{
    var arrModels = null;
        // models array corresponding to the selected make
    var lngIndex;
        // loop variable

    var arrModels = null;
        // models array corresponding to the selected make

    // remove any the options in the make text select box apart from the first (unspecified) entry
    ctlMake.options.length=1;
    
    // add the selected option
    if ("" != varMake && "Any" != varMake)
    {
        ctlMake.options[0].text=varMake;
        ctlMake.options[0].value=varMake;
        ctlMake.options[0].selected=true;
        addOptionToSelect(ctlMake,'','Any',false);
    }
    else
    {
        ctlMake.options[0].selected=true;
    }

    // add options for each make
    for (lngIndex = 0 ; lngIndex<arrMakes.length ; lngIndex++)
    {
        addOptionToSelect(ctlMake,arrMakes[lngIndex].description,arrMakes[lngIndex].description,false);
		if (arrMakes[lngIndex].description.toUpperCase()==varMake.toUpperCase())
        {
            arrModels = arrMakes[lngIndex].models;
        }
    }

    // remove all the options in the model text select item apart from the first (unspecified) entry
    ctlModel.options.length=1;
    
    // add the selected option
    if ("" != varModel && "Any" != varModel)
    {
        ctlModel.options[0].text=varModel;
        ctlModel.options[0].value=varModel;
        ctlModel.options[0].selected=true;
        addOptionToSelect(ctlModel,'','Any',false);

        ctlModel.options.length=1;
    }
    else
    {
        ctlModel.options[0].selected=true;
    }

    // if any models add options for each model
    if (arrModels)
    {
        // add the model group items for certain cars
        if ( 'BMW' == varMake)
        {
 		     addOptionToSelect(ctlModel,'3-series','All 3-series',false);
		     addOptionToSelect(ctlModel,'5-series','All 5-series',false);
		     addOptionToSelect(ctlModel,'7-series','All 7-series',false);
		     addOptionToSelect(ctlModel,'8-series','All 8-series',false);
        }
        else if ( 'Mercedes' == varMake)
        {
 		     addOptionToSelect(ctlModel,'A-class','All A-class',false);
		     addOptionToSelect(ctlModel,'C-class','All C-class',false);
		     addOptionToSelect(ctlModel,'E-class','All E-class',false);
		     addOptionToSelect(ctlModel,'S-class','All S-class',false);
        }
        for (lngIndex = 0 ; lngIndex<arrModels.length ; lngIndex++)
        {
            addOptionToSelect(ctlModel,arrModels[lngIndex],arrModels[lngIndex],false)
        }
    }

    return true;
}

function updateModel
    // update the model select item on the current value of the make select item
    (
        varValue,
            // current value of the make select item
        ctlModel,
            // the model select item
        blnShowModelGroups
            // if true the model groups (e.g. C-Class) are displayed where appropiate)
    )
{
    var lngIndex;
        // loop variable

    var arrModels = null;
        // models array corresponding to the selected make

    for (lngIndex = 0 ; lngIndex<arrMakes.length ; lngIndex++)
    {
       if (arrMakes[lngIndex].description.toUpperCase() == varValue.toUpperCase())
        //if (arrMakes[lngIndex].description.toUpperCase() == varValue)
        {
            arrModels = arrMakes[lngIndex].models;
            break;
        }
    }
    
	ctlModel.options.length = 1;
    if ('Any' != ctlModel.options[0].value && '' != ctlModel.options[0].value)
    {
        ctlModel.options[0].text='Any';
        ctlModel.options[0].value='';
    }
    ctlModel.options[0].selected=true;
    // if any models add options for each model
    
    if (arrModels)
    {
        if (blnShowModelGroups)
        {
            if ( 'BMW' == varValue)
            {
 		         addOptionToSelect(ctlModel,'3-series','All 3-series');
		         addOptionToSelect(ctlModel,'5-series','All 5-series');
		         addOptionToSelect(ctlModel,'7-series','All 7-series');
		         addOptionToSelect(ctlModel,'8-series','All 8-series');
            }
            else if ( 'Mercedes' == varValue)
            {
 		         addOptionToSelect(ctlModel,'A-class','All A-class');
		         addOptionToSelect(ctlModel,'C-class','All C-class');
		         addOptionToSelect(ctlModel,'E-class','All E-class');
		         addOptionToSelect(ctlModel,'S-class','All S-class');
            }
        }
        for (lngIndex = 0 ; lngIndex<arrModels.length ; lngIndex++)
        {
            addOptionToSelect(ctlModel,arrModels[lngIndex],arrModels[lngIndex])
        }
    }
    return true;
}
