/* Sorting table*/
/* ************************************** */
    

$(document).on('click','.sortable',function(){
    
    var table = $(this).parents('table').eq(0);

    var rows = table.find('tr:gt(0)').toArray().sort(comparer($(this).index()));

    var besidesSelf = $('.sortable').not($(this));  

    this.asc = !this.asc;

    if (!this.asc){
                    rows = rows.reverse();

                    $(this).removeClass('sorter');
                    $(this).addClass('desc');
                    $(this).removeClass('asc');

                    besidesSelf.removeClass('asc');
                    besidesSelf.removeClass('desc');
                    besidesSelf.addClass('sorter');
                    }

    else{
                    $(this).removeClass('sorter');
                    $(this).addClass('asc');
                    $(this).removeClass('desc');

                    besidesSelf.removeClass('asc');
                    besidesSelf.removeClass('desc');
                    besidesSelf.addClass('sorter');
                    }

    table.children('tbody').empty().html(rows);

});
function comparer(index) {
    return function(a, b) {
        var valA = getCellValue(a, index), valB = getCellValue(b, index);
        return $.isNumeric(valA) && $.isNumeric(valB) ?
            valA - valB : valA.localeCompare(valB);
    };
}
function getCellValue(row, index){
    return $(row).children('td').eq(index).text();
}