// DATA_TEMPLATE: deferred_table
/*
 */
oTest.fnStart("Defer loading tests");

$(document).ready(function () {
    var gotServerData = false;

    $('#example').dataTable({
        "iDeferLoading": 57,
        "bServerSide": true,
        "sAjaxSource": "../../../examples/server_side/scripts/server_processing.php",
        "fnServerData": function (url, data, fn) {
            $.ajax({
                "url": url,
                "data": data,
                "success": function (json) {
                    gotServerData = true;
                    fn(json);
                },
                "dataType": "json",
                "cache": false
            });
        }
    });

    oTest.fnWaitTest(
        "10 rows shown on the first page",
        null,
        function () {
            return $('#example tbody tr').length == 10;
        }
    );

    oTest.fnWaitTest(
        "No request to the server yet",
        null,
        function () {
            return !gotServerData;
        }
    );

    oTest.fnTest(
        "Information on zero config",
        null,
        function () {
            return document.getElementById('example_info').innerHTML == "Showing 1 to 10 of 57 entries";
        }
    );

    oTest.fnWaitTest(
        "Initial data order retained",
        null,
        function () {
            return $('#example tbody td:eq(0)').html() == "Gecko";
        }
    );

    oTest.fnWaitTest(
        "Initial data order retained 2",
        null,
        function () {
            return $('#example tbody td:eq(1)').html() == "Firefox 1.0";
        }
    );

    oTest.fnWaitTest(
        "Still no request to the server yet",
        null,
        function () {
            return !gotServerData;
        }
    );

    oTest.fnWaitTest(
        "Sorting (first click) on second column",
        function () {
            $('#example thead th:eq(1)').click();
        },
        function () {
            return $('#example tbody td:eq(1)').html() == "All others";
        }
    );

    oTest.fnWaitTest(
        "Now we've had a request",
        null,
        function () {
            return gotServerData;
        }
    );

    oTest.fnTest(
        "Information after sort",
        null,
        function () {
            return document.getElementById('example_info').innerHTML == "Showing 1 to 10 of 57 entries";
        }
    );

    oTest.fnWaitTest(
        "Sorting (second click) on second column",
        function () {
            $('#example thead th:eq(1)').click();
        },
        function () {
            return $('#example tbody td:eq(1)').html() == "Seamonkey 1.1";
        }
    );

    oTest.fnWaitTest(
        "Sorting (third click) on second column",
        function () {
            $('#example thead th:eq(1)').click();
        },
        function () {
            return $('#example tbody td:eq(1)').html() == "All others";
        }
    );


    oTest.fnComplete();
});
