/*! DataTables Foundation integration 3.0.0-beta.2
 * © SpryMedia Ltd - datatables.net/license
 */

(function(factory){
	if (typeof define === 'function' && define.amd) {
		// AMD
		define(['datatables.net'], function (dt) {
			return factory(window, document, dt);
		});
	}
	else if (typeof exports === 'object') {
		// CommonJS
		var cjsRequires = function (root) {
			if (! root.DataTable) {
				require('datatables.net')(root);
			}
		};

		if (typeof window === 'undefined') {
			module.exports = function (root) {
				if (! root) {
					// CommonJS environments without a window global must pass a
					// root. This will give an error otherwise
					root = window;
				}

				cjsRequires(root);
				return factory(root, root.document, root.DataTable);
			};
		}
		else {
			cjsRequires(window);
			module.exports = factory(window, window.document, window.DataTable);
		}
	}
	else {
		// Browser
		factory(window, document, window.DataTable);
	}
}(function(window, document, DataTable) {
'use strict';


DataTable.util.object.assignDeep(DataTable.ext.classes, {
    container: 'dt-container dt-foundation',
    layout: {
        row: 'grid-x',
        cell: 'flex-container align-justify align-middle',
        tableRow: 'dt-layout-table',
        tableCell: 'cell small-12',
        start: 'dt-layout-start cell shrink',
        end: 'dt-layout-end cell shrink',
        full: 'dt-layout-full cell'
    },
    processing: {
        container: 'dt-processing panel callout'
    }
});
/* Set the defaults for DataTables initialisation */
DataTable.util.object.assignDeep(DataTable.defaults, {
    renderer: 'foundation'
});
DataTable.ext.renderer.pagingButton.foundation = function (settings, buttonType, content, active, disabled) {
    var btnClasses = [];
    var li;
    if (buttonType === 'ellipsis') {
        // No `a` tag for ellipsis
        li = DataTable.Dom.c('li').classAdd('ellipsis');
        return {
            display: li.get(0),
            clicker: li.get(0)
        };
    }
    else if (active || disabled) {
        // No `a` tag for current or disabled
        li = DataTable.Dom
            .c('li')
            .classAdd(active ? 'current' : 'disabled ' + btnClasses.join(' '))
            .html(content);
        return {
            display: li.get(0),
            clicker: li.get(0)
        };
    }
    li = DataTable.Dom.c('li').classAdd(btnClasses.join(' '));
    var a = DataTable.Dom.c('a').attr('href', '#').html(content).appendTo(li);
    return {
        display: li.get(0),
        clicker: a.get(0)
    };
};
DataTable.ext.renderer.pagingContainer.foundation = function (settings, buttonEls) {
    return DataTable.Dom
        .c('ul')
        .classAdd('pagination')
        .append(buttonEls)
        .get(0);
};
DataTable.ext.renderer.layout.foundation = function (settings, container, items) {
    var classes = settings.classes.layout;
    var row = DataTable.Dom
        .c('div')
        .attr('id', items.id || null)
        .classAdd(items.className || classes.row)
        .appendTo(container);
    DataTable.ext.rendererDisplayRowCells(items, function (key, val) {
        var klass = '';
        var style = {};
        if (val.table) {
            row.classAdd(classes.tableRow);
            klass += classes.tableCell + ' ';
        }
        if (key === 'start') {
            klass += classes.start;
        }
        else if (key === 'end') {
            klass += classes.end;
            style.marginLeft = 'auto';
        }
        else {
            klass += classes.full;
        }
        DataTable.Dom
            .c('div')
            .attr({
            id: val.id || null,
            class: val.className
                ? val.className
                : classes.cell + ' ' + klass
        })
            .css(style)
            .append(val.contents)
            .appendTo(row);
    });
};


return DataTable;
}));
