var TableDatatablesManaged = function () {



    var initTable1 = function () {



        var table = $('#sample_1');



        // begin first table

        table.dataTable({



            // Internationalisation. For more info refer to http://datatables.net/manual/i18n

            "language": {

                "aria": {

                    "sortAscending": ": activate to sort column ascending",

                    "sortDescending": ": activate to sort column descending"

                },

                "emptyTable": "No data available in table",

                "info": "Showing _START_ to _END_ of _TOTAL_ records",

                "infoEmpty": "No records found",

                "infoFiltered": "(filtered1 from _MAX_ total records)",

                "lengthMenu": "Show _MENU_",

                "search": "Search:",

                "zeroRecords": "No matching records found",

                "paginate": {

                    "previous":"Prev",

                    "next": "Next",

                    "last": "Last",

                    "first": "First"

                }

            },



            // Or you can use remote translation file

            //"language": {

            //   url: '//cdn.datatables.net/plug-ins/3cfcc339e89/i18n/Portuguese.json'

            //},



            // Uncomment below line("dom" parameter) to fix the dropdown overflow issue in the datatable cells. The default datatable layout

            // setup uses scrollable div(table-scrollable) with overflow:auto to enable vertical scroll(see: assets/global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.js). 

            // So when dropdowns used the scrollable div should be removed. 

            //"dom": "<'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r>t<'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>",



            "bStateSave": true, // save datatable state(pagination, sort, etc) in cookie.



            "columnDefs": [ {

                "targets": 0,

                "orderable": false,

                "searchable": false

            }],



            "lengthMenu": [

                [5, 15, 20, -1],

                [5, 15, 20, "All"] // change per page values here

            ],

            // set the initial value

            "pageLength": 5,            

            "pagingType": "bootstrap_full_number",

            "columnDefs": [{  // set default column settings

                'orderable': false,

                'targets': [0]

            }, {

                "searchable": false,

                "targets": [0]

            }],

            "order": [

                [1, "asc"]

            ] // set first column as a default sort by asc

        });



        var tableWrapper = jQuery('#sample_1_wrapper');



        table.find('.group-checkable').change(function () {

            var set = jQuery(this).attr("data-set");

            var checked = jQuery(this).is(":checked");

            jQuery(set).each(function () {

                if (checked) {

                    $(this).prop("checked", true);

                    $(this).parents('tr').addClass("active");

                } else {

                    $(this).prop("checked", false);

                    $(this).parents('tr').removeClass("active");

                }

            });

        });



        table.on('change', 'tbody tr .checkboxes', function () {

            $(this).parents('tr').toggleClass("active");

        });

    }



    var initTable2 = function () {



        var table = $('#sample_2');



        table.dataTable({



            // Internationalisation. For more info refer to http://datatables.net/manual/i18n

            "language": {

                "aria": {

                    "sortAscending": ": activate to sort column ascending",

                    "sortDescending": ": activate to sort column descending"

                },

                "emptyTable": "No data available in table",

                "info": "Showing _START_ to _END_ of _TOTAL_ records",

                "infoEmpty": "No records found",

                "infoFiltered": "(filtered1 from _MAX_ total records)",

                "lengthMenu": "Show _MENU_",

                "search": "Search:",

                "zeroRecords": "No matching records found",

                "paginate": {

                    "previous":"Prev",

                    "next": "Next",

                    "last": "Last",

                    "first": "First"

                }

            },



            // Uncomment below line("dom" parameter) to fix the dropdown overflow issue in the datatable cells. The default datatable layout

            // setup uses scrollable div(table-scrollable) with overflow:auto to enable vertical scroll(see: assets/global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.js). 

            // So when dropdowns used the scrollable div should be removed. 

            //"dom": "<'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r>t<'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>",



            "bStateSave": true, // save datatable state(pagination, sort, etc) in cookie.

            "pagingType": "bootstrap_extended",



            "lengthMenu": [

                [5, 15, 20, -1],

                [5, 15, 20, "All"] // change per page values here

            ],

            // set the initial value

            "pageLength": 5,

            "columnDefs": [{  // set default column settings

                'orderable': false,

                'targets': [0]

            }, {

                "searchable": false,

                "targets": [0]

            }],

            "order": [

                [1, "asc"]

            ] // set first column as a default sort by asc

        });



        var tableWrapper = jQuery('#sample_2_wrapper');



        table.find('.group-checkable').change(function () {

            var set = jQuery(this).attr("data-set");

            var checked = jQuery(this).is(":checked");

            jQuery(set).each(function () {

                if (checked) {

                    $(this).prop("checked", true);

                } else {

                    $(this).prop("checked", false);

                }

            });

        });

    }



    var initTable3 = function () {



        var table = $('#sample_3');



        // begin: third table

        table.dataTable({



            // Internationalisation. For more info refer to http://datatables.net/manual/i18n

            "language": {

                "aria": {

                    "sortAscending": ": activate to sort column ascending",

                    "sortDescending": ": activate to sort column descending"

                },

                "emptyTable": "No data available in table",

                "info": "Showing _START_ to _END_ of _TOTAL_ records",

                "infoEmpty": "No records found",

                "infoFiltered": "(filtered1 from _MAX_ total records)",

                "lengthMenu": "Show _MENU_",

                "search": "Search:",

                "zeroRecords": "No matching records found",

                "paginate": {

                    "previous":"Prev",

                    "next": "Next",

                    "last": "Last",

                    "first": "First"

                }

            },

            

            // Uncomment below line("dom" parameter) to fix the dropdown overflow issue in the datatable cells. The default datatable layout

            // setup uses scrollable div(table-scrollable) with overflow:auto to enable vertical scroll(see: assets/global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.js). 

            // So when dropdowns used the scrollable div should be removed. 

            //"dom": "<'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r>t<'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>",



            "bStateSave": true, // save datatable state(pagination, sort, etc) in cookie.

            

            "lengthMenu": [

                [6, 15, 20, -1],

                [6, 15, 20, "All"] // change per page values here

            ],

            // set the initial value

            "pageLength": 6,

            "columnDefs": [{  // set default column settings

                'orderable': false,

                'targets': [0]

            }, {

                "searchable": false,

                "targets": [0]

            }],

            "order": [

                [1, "asc"]

            ] // set first column as a default sort by asc

        });



        var tableWrapper = jQuery('#sample_3_wrapper');



        table.find('.group-checkable').change(function () {

            var set = jQuery(this).attr("data-set");

            var checked = jQuery(this).is(":checked");

            jQuery(set).each(function () {

                if (checked) {

                    $(this).prop("checked", true);

                } else {

                    $(this).prop("checked", false);

                }

            });

        });

    }



    var initTable4 = function () {



        var table = $('#sample_4');



        // begin: third table

        table.dataTable({



            // Internationalisation. For more info refer to http://datatables.net/manual/i18n

            "language": {

                "aria": {

                    "sortAscending": ": activate to sort column ascending",

                    "sortDescending": ": activate to sort column descending"

                },

                "emptyTable": "No data available in table",

                "info": "Showing _START_ to _END_ of _TOTAL_ records",

                "infoEmpty": "No records found",

                "infoFiltered": "(filtered1 from _MAX_ total records)",

                "lengthMenu": "Show _MENU_",

                "search": "Search:",

                "zeroRecords": "No matching records found",

                "paginate": {

                    "previous":"Prev",

                    "next": "Next",

                    "last": "Last",

                    "first": "First"

                }

            },



            

            // Uncomment below line("dom" parameter) to fix the dropdown overflow issue in the datatable cells. The default datatable layout

            // setup uses scrollable div(table-scrollable) with overflow:auto to enable vertical scroll(see: assets/global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.js). 

            // So when dropdowns used the scrollable div should be removed. 

            //"dom": "<'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r>t<'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>",



            "bStateSave": true, // save datatable state(pagination, sort, etc) in cookie.

            

            "lengthMenu": [

                [6, 15, 20, -1],

                [6, 15, 20, "All"] // change per page values here

            ],

            // set the initial value

            "pageLength": 6,

            "columnDefs": [{  // set default column settings

                'orderable': false,

                'targets': [0]

            }, {

                "searchable": false,

                "targets": [0]

            }],

            "order": [

                [1, "asc"]

            ] // set first column as a default sort by asc

        });



        var tableWrapper = jQuery('#sample_4_wrapper');



        table.find('.group-checkable').change(function () {

            var set = jQuery(this).attr("data-set");

            var checked = jQuery(this).is(":checked");

            jQuery(set).each(function () {

                if (checked) {

                    $(this).prop("checked", true);

                } else {

                    $(this).prop("checked", false);

                }

            });

        });

    }



    var initTable5 = function () {



        var table = $('#sample_5');



        // begin: third table

        table.dataTable({



            // Internationalisation. For more info refer to http://datatables.net/manual/i18n

            "language": {

                "aria": {

                    "sortAscending": ": activate to sort column ascending",

                    "sortDescending": ": activate to sort column descending"

                },

                "emptyTable": "No data available in table",

                "info": "Showing _START_ to _END_ of _TOTAL_ records",

                "infoEmpty": "No records found",

                "infoFiltered": "(filtered1 from _MAX_ total records)",

                "lengthMenu": "Show _MENU_",

                "search": "Search:",

                "zeroRecords": "No matching records found",

                "paginate": {

                    "previous":"Prev",

                    "next": "Next",

                    "last": "Last",

                    "first": "First"

                }

            },



            "footerCallback": function ( row, data, start, end, display ) {

                var api = this.api(), data;

     

                // Remove the formatting to get integer data for summation

                var intVal = function ( i ) {

                    return typeof i === 'string' ?

                        i.replace(/[\$,]/g, '')*1 :

                        typeof i === 'number' ?

                            i : 0;

                };

     

                // Total over all pages

                total = api

                    .column( 3 )

                    .data()

                    .reduce( function (a, b) {

                        return intVal(a) + intVal(b);

                    }, 0 );

     

                // Total over this page

                pageTotal = api

                    .column( 3, { page: 'current'} )

                    .data()

                    .reduce( function (a, b) {

                        return intVal(a) + intVal(b);

                    }, 0 );

     

                // Update footer

                $( api.column( 3 ).footer() ).html(

                    '$'+pageTotal +' ( $'+ total +' total)'

                );

            },

            

            // Uncomment below line("dom" parameter) to fix the dropdown overflow issue in the datatable cells. The default datatable layout

            // setup uses scrollable div(table-scrollable) with overflow:auto to enable vertical scroll(see: assets/global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.js). 

            // So when dropdowns used the scrollable div should be removed. 

            //"dom": "<'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r>t<'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>",



            "bStateSave": true, // save datatable state(pagination, sort, etc) in cookie.

            

            "lengthMenu": [

                [6, 15, 20, -1],

                [6, 15, 20, "All"] // change per page values here

            ],

            // set the initial value

            "pageLength": 6,

            "columnDefs": [{  // set default column settings

                'orderable': false,

                'targets': [0]

            }, {

                "searchable": false,

                "targets": [0]

            }],

            "order": [

                [1, "asc"]

            ] // set first column as a default sort by asc

        });



        var tableWrapper = jQuery('#sample_5_wrapper');



        table.find('.group-checkable').change(function () {

            var set = jQuery(this).attr("data-set");

            var checked = jQuery(this).is(":checked");

            jQuery(set).each(function () {

                if (checked) {

                    $(this).prop("checked", true);

                } else {

                    $(this).prop("checked", false);

                }

            });

        });

    }



    return {



        //main function to initiate the module

        init: function () {

            if (!jQuery().dataTable) {

                return;

            }



            initTable1();

            initTable2();

            initTable3();

            initTable4();

            initTable5();

        }



    };



}();



if (App.isAngularJsApp() === false) { 

    jQuery(document).ready(function() {

        TableDatatablesManaged.init();

    });

}