var model_type_cbs = new Array()
var model_type_max_checked = 2;
var model_type_images = {}
var model_type_input_name;

/* Init functie */
function model_selector_init(max_select, images, name)
{
    model_type_max_checked = max_select;
    model_type_images = images;
    model_type_input_name = name;

    value = model_selector_init_placeholders();
    if (!value)
        return;
	
    /* Load the images */
    for (key in model_type_images)
    {
        var img = new Image();
        img.src = model_type_images[key];
        model_type_images[key] = img;
    }
    
    model_selector_bind_checkboxes();
    model_selector_recalculate();
}

/* Recalculate alles */
function model_selector_recalculate()
{
    var placeholder = document.getElementById('model_type_selected_placeholder');
    var placeholders = placeholder.getElementsByTagName('div');
    
    var model_type_num_checked = 0;
    var img;
    for(var i = 0; i < placeholders.length; i++)
    {
        var childs = placeholders[i].childNodes;
        for (var j = 0; j < childs.length; j++)
            placeholders[i].removeChild(childs[j]);
    }
    
    for(var i = 0; i < model_type_cbs.length; i++)
    {
        if(model_type_cbs[i].type == "checkbox")
        {
            if (model_type_cbs[i].checked)
            {
                if (model_type_num_checked >= model_type_max_checked)
                {
                    model_type_cbs[i].checked = false;
                    continue;
                }
                img = model_type_images[model_type_cbs[i].id];
    
                placeholders[model_type_num_checked].appendChild(img);
                model_type_num_checked++;
            }
        }
        else if (model_type_cbs[i].type == "radio")
        {
            if (model_type_cbs[i].checked)
            {
                img = model_type_images[model_type_cbs[i].id];
                if(img)
                    placeholders[model_type_num_checked].appendChild(img);
                model_type_num_checked++;
            }
        }
    }
    
    for(var i = 0; i < model_type_cbs.length; i++)
    {
        if (model_type_cbs[i].type == "checkbox" && !model_type_cbs[i].checked)
            model_type_cbs[i].disabled = (model_type_num_checked >= model_type_max_checked);
    }
}


/* Creeer de div element in de placeholder waar de images in gaan. Return
  True als de placeholder gevonden is, anders false */
function model_selector_init_placeholders()
{
    var placeholder = document.getElementById('model_type_selected_placeholder');
    if (!placeholder)
        return false;
    
    var el;
    for(var i = 0; i < model_type_max_checked; i++)
    {
        el = document.createElement('div');
        placeholder.appendChild(el);
    }
    return true;
}

/*
  Bind alle input element op de pagina met de naam `model_type_input_name`"
  checkboxes aan de javascript actie model_selector_recalculate()"
*/
function model_selector_bind_checkboxes()
{
    /* Hook the model_type input elements */
    var el_inputs = document.getElementsByTagName('input')
    for(var i = 0; i < el_inputs.length; i++)
    {
        if(el_inputs[i].name != model_type_input_name)
            continue;
        
        el_inputs[i].setAttribute("onchange", "javascript:model_selector_recalculate(this)");
        el_inputs[i].onpropertychange = function() {
            if (event.propertyName == 'checked')
                model_selector_recalculate();
        };
        model_type_cbs[model_type_cbs.length] = el_inputs[i];
        

    }
}
