/**
 * Canopy
 *
 * @category    Canopy
 * @package     js
 * 
 */

/**
 * Add classes to specified elements.
 * Supported classes are: 'odd', 'even', 'first', 'last'
 *
 * @param elements - array of elements to be decorated
 * [@param decorateParams] - array of classes to be set. If omitted, all available will be used
 */
function decorateGenericRelated(elements, decorateParams)
{
    var allSupportedParams = ['odd', 'even', 'first', 'last','lastofitems'];
    var _decorateParams = {};
    var total = elements.length;

    if (total) {
        // determine params called
        if (typeof(decorateParams) == 'undefined') {
            decorateParams = allSupportedParams;
        }
        if (!decorateParams.length) {
            return;
        }
        for (var k in allSupportedParams) {
            _decorateParams[allSupportedParams[k]] = false;
        }
        for (var k in decorateParams) {
            _decorateParams[decorateParams[k]] = true;
        }

        // decorate elements
        // elements[0].addClassName('first'); // will cause bug in IE (#5587)
        if (_decorateParams.first) {
            Element.addClassName(elements[0], 'first');
        }
        if (_decorateParams.last) {
            Element.addClassName(elements[total-1], 'lastofitems');
        }
        // even odd
        for (var i = 0; i < total; i++) {
            if ((i + 1) % 2 == 0) {
                if (_decorateParams.even) {
                    Element.addClassName(elements[i], 'even');
                }
            }
            else {
                if (_decorateParams.odd) {
                    Element.addClassName(elements[i], 'odd');
                }
            }
        }
        
        // every 3rd
        for (var i = 0; i < total; i++) {
            if ((i + 1) % 3 == 0) {
              
                    Element.addClassName(elements[i], 'last');
                
            }
          
        }
        
    }
}








/**
 * Set "odd", "even" and "last" CSS classes for list items
 * @see decorateGenericRelated()
 */
function decorateListRelated(list, nonRecursive) {
    if ($(list)) {
        if (typeof(nonRecursive) == 'undefined') {
            var items = $(list).select('li')
        }
        else {
            var items = $(list).childElements();
        }
        decorateGenericRelated(items, ['odd', 'even', 'last']);
    }
}
