define(function () {
							 | 
						|
								
							 | 
						|
								    'use strict';
							 | 
						|
								
							 | 
						|
								    var radioButtonsGroup = {};
							 | 
						|
								
							 | 
						|
								    // ## RadioButtonsGroup
							 | 
						|
								    //
							 | 
						|
								    // A group of elements where only one can be active at the same
							 | 
						|
								    // time.
							 | 
						|
								    //
							 | 
						|
								    // When an element is clicked, it becomes the active one.  The
							 | 
						|
								    // active element gains the 'active' CSS class.
							 | 
						|
								    //
							 | 
						|
								    // Parameters:
							 | 
						|
								    //
							 | 
						|
								    // * **elems** Array of elements of the group.
							 | 
						|
								    radioButtonsGroup.RadioButtonsGroup = function (elems) {
							 | 
						|
								        this.elems = elems;
							 | 
						|
								        var active;
							 | 
						|
								
							 | 
						|
								        for (var i = 0; i < elems.length; i++) {
							 | 
						|
								            var elem = elems[i];
							 | 
						|
								            elem.addEventListener("click", clickHandler);
							 | 
						|
								
							 | 
						|
								            // The first element that has 'active' CSS class is made
							 | 
						|
								            // the active of the group on startup.
							 | 
						|
								            if (active === undefined && elem.classList.contains('active')) {
							 | 
						|
								                active = elem;
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        // If no element has 'active' CSS class, the first element of
							 | 
						|
								        // the array is made the active.
							 | 
						|
								        if (active === undefined) {
							 | 
						|
								            active = elems[0];
							 | 
						|
								            updateClasses();
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        function clickHandler(evt) {
							 | 
						|
								            active = evt.target;
							 | 
						|
								            updateClasses();
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        function updateClasses() {
							 | 
						|
								            for (i = 0; i < elems.length; i++) {
							 | 
						|
								                var elem = elems[i];
							 | 
						|
								                elem.classList.remove('active');
							 | 
						|
								            }
							 | 
						|
								            active.classList.add('active');
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        // Get the active element.
							 | 
						|
								        this.getActive = function () {
							 | 
						|
								            return active;
							 | 
						|
								        };
							 | 
						|
								
							 | 
						|
								    };
							 | 
						|
								
							 | 
						|
								    return radioButtonsGroup;
							 | 
						|
								
							 | 
						|
								});
							 |