// DATA_TEMPLATE: dom_data
oTest.fnStart("2746 - Stable sorting");

$(document).ready(function () {
    $('#example').dataTable();

    oTest.fnTest(
        "Initial sort",
        null,
        function () {
            var ret =
                $('#example tbody tr:eq(0) td:eq(0)').html() == 'Gecko' &&
                    $('#example tbody tr:eq(1) td:eq(0)').html() == 'Gecko' &&
                    $('#example tbody tr:eq(0) td:eq(1)').html() == 'Firefox 1.0' &&
                    $('#example tbody tr:eq(1) td:eq(1)').html() == 'Firefox 1.5' &&
                    $('#example tbody tr:eq(2) td:eq(1)').html() == 'Firefox 2.0';
            return ret;
        }
    );

    oTest.fnTest(
        "Reserve initial sort",
        function () {
            $('#example thead th:eq(0)').click();
        },
        function () {
            var ret =
                $('#example tbody tr:eq(0) td:eq(0)').html() == 'Webkit' &&
                    $('#example tbody tr:eq(1) td:eq(0)').html() == 'Webkit' &&
                    $('#example tbody tr:eq(0) td:eq(1)').html() == 'Safari 1.2' &&
                    $('#example tbody tr:eq(1) td:eq(1)').html() == 'Safari 1.3' &&
                    $('#example tbody tr:eq(2) td:eq(1)').html() == 'Safari 2.0';
            return ret;
        }
    );

    oTest.fnTest(
        "Reserve to go back to initial sort sort",
        function () {
            $('#example thead th:eq(0)').click();
        },
        function () {
            var ret =
                $('#example tbody tr:eq(0) td:eq(0)').html() == 'Gecko' &&
                    $('#example tbody tr:eq(1) td:eq(0)').html() == 'Gecko' &&
                    $('#example tbody tr:eq(0) td:eq(1)').html() == 'Firefox 1.0' &&
                    $('#example tbody tr:eq(1) td:eq(1)').html() == 'Firefox 1.5' &&
                    $('#example tbody tr:eq(2) td:eq(1)').html() == 'Firefox 2.0';
            return ret;
        }
    );

    oTest.fnTest(
        "Reserve initial sort again",
        function () {
            $('#example thead th:eq(0)').click();
        },
        function () {
            var ret =
                $('#example tbody tr:eq(0) td:eq(0)').html() == 'Webkit' &&
                    $('#example tbody tr:eq(1) td:eq(0)').html() == 'Webkit' &&
                    $('#example tbody tr:eq(0) td:eq(1)').html() == 'Safari 1.2' &&
                    $('#example tbody tr:eq(1) td:eq(1)').html() == 'Safari 1.3' &&
                    $('#example tbody tr:eq(2) td:eq(1)').html() == 'Safari 2.0';
            return ret;
        }
    );

    oTest.fnTest(
        "And once more back to the initial sort",
        function () {
            $('#example thead th:eq(0)').click();
        },
        function () {
            var ret =
                $('#example tbody tr:eq(0) td:eq(0)').html() == 'Gecko' &&
                    $('#example tbody tr:eq(1) td:eq(0)').html() == 'Gecko' &&
                    $('#example tbody tr:eq(0) td:eq(1)').html() == 'Firefox 1.0' &&
                    $('#example tbody tr:eq(1) td:eq(1)').html() == 'Firefox 1.5' &&
                    $('#example tbody tr:eq(2) td:eq(1)').html() == 'Firefox 2.0';
            return ret;
        }
    );

    oTest.fnTest(
        "Sort on second column",
        function () {
            $('#example thead th:eq(1)').click();
        },
        function () {
            var ret =
                $('#example tbody tr:eq(0) td:eq(0)').html() == 'Other browsers' &&
                    $('#example tbody tr:eq(1) td:eq(0)').html() == 'Trident' &&
                    $('#example tbody tr:eq(0) td:eq(1)').html() == 'All others' &&
                    $('#example tbody tr:eq(1) td:eq(1)').html() == 'AOL browser (AOL desktop)' &&
                    $('#example tbody tr:eq(2) td:eq(1)').html() == 'Camino 1.0';
            return ret;
        }
    );

    oTest.fnTest(
        "Reserve sort on second column",
        function () {
            $('#example thead th:eq(1)').click();
        },
        function () {
            var ret =
                $('#example tbody tr:eq(0) td:eq(0)').html() == 'Gecko' &&
                    $('#example tbody tr:eq(1) td:eq(0)').html() == 'Webkit' &&
                    $('#example tbody tr:eq(0) td:eq(1)').html() == 'Seamonkey 1.1' &&
                    $('#example tbody tr:eq(1) td:eq(1)').html() == 'Safari 3.0' &&
                    $('#example tbody tr:eq(2) td:eq(1)').html() == 'Safari 2.0';
            return ret;
        }
    );

    oTest.fnTest(
        "And back to asc sorting on second column",
        function () {
            $('#example thead th:eq(1)').click();
        },
        function () {
            var ret =
                $('#example tbody tr:eq(0) td:eq(0)').html() == 'Other browsers' &&
                    $('#example tbody tr:eq(1) td:eq(0)').html() == 'Trident' &&
                    $('#example tbody tr:eq(0) td:eq(1)').html() == 'All others' &&
                    $('#example tbody tr:eq(1) td:eq(1)').html() == 'AOL browser (AOL desktop)' &&
                    $('#example tbody tr:eq(2) td:eq(1)').html() == 'Camino 1.0';
            return ret;
        }
    );

    oTest.fnTest(
        "Sort on third column, having now sorted on second",
        function () {
            $('#example thead th:eq(2)').click();
        },
        function () {
            var ret =
                $('#example tbody tr:eq(0) td:eq(0)').html() == 'Other browsers' &&
                    $('#example tbody tr:eq(1) td:eq(0)').html() == 'Misc' &&
                    $('#example tbody tr:eq(0) td:eq(1)').html() == 'All others' &&
                    $('#example tbody tr:eq(1) td:eq(1)').html() == 'Dillo 0.8' &&
                    $('#example tbody tr:eq(2) td:eq(1)').html() == 'NetFront 3.1';
            return ret;
        }
    );

    oTest.fnTest(
        "Reserve sort on third column",
        function () {
            $('#example thead th:eq(2)').click();
        },
        function () {
            var ret =
                $('#example tbody tr:eq(0) td:eq(0)').html() == 'Misc' &&
                    $('#example tbody tr:eq(1) td:eq(0)').html() == 'Trident' &&
                    $('#example tbody tr:eq(0) td:eq(1)').html() == 'IE Mobile' &&
                    $('#example tbody tr:eq(1) td:eq(1)').html() == 'Internet Explorer 7' &&
                    $('#example tbody tr:eq(2) td:eq(1)').html() == 'AOL browser (AOL desktop)';
            return ret;
        }
    );

    oTest.fnTest(
        "Return sorting on third column to asc",
        function () {
            $('#example thead th:eq(2)').click();
        },
        function () {
            var ret =
                $('#example tbody tr:eq(0) td:eq(0)').html() == 'Other browsers' &&
                    $('#example tbody tr:eq(1) td:eq(0)').html() == 'Misc' &&
                    $('#example tbody tr:eq(0) td:eq(1)').html() == 'All others' &&
                    $('#example tbody tr:eq(1) td:eq(1)').html() == 'Dillo 0.8' &&
                    $('#example tbody tr:eq(2) td:eq(1)').html() == 'NetFront 3.1';
            return ret;
        }
    );

    oTest.fnTest(
        "Sort on first column having sorted on second then third columns",
        function () {
            $('#example thead th:eq(0)').click();
        },
        function () {
            var ret =
                $('#example tbody tr:eq(0) td:eq(0)').html() == 'Gecko' &&
                    $('#example tbody tr:eq(1) td:eq(0)').html() == 'Gecko' &&
                    $('#example tbody tr:eq(0) td:eq(1)').html() == 'Epiphany 2.20' &&
                    $('#example tbody tr:eq(1) td:eq(1)').html() == 'Camino 1.0' &&
                    $('#example tbody tr:eq(2) td:eq(1)').html() == 'Camino 1.5';
            return ret;
        }
    );


    oTest.fnComplete();
});