// sorting

(function($) {
    $.fn.ajaxsort = function(args) {
        var script = args.script;
        var tBody  = args.data;
        var callback = args.callback;
        var req = args.search;
        var self = this;

        var colnum = tBody.attr('colnum');
        var $td = tBody.find('tbody td');

        var rowsnum = -1;
        var i = 0;

        req.column =  $(self).attr('column');
        req.order = $(self).attr('class');

        $.getJSON(script, req,
            function(data) {

                $td.each( function(index) {
                    
                    if ( 0 == (index % colnum) ) {
                        i = 0;
                        rowsnum++;

                    } else 
                        i++;

                   if ( rowsnum == data.rows.length  )
                        return false;
                    
                    var cell = data.rows[rowsnum][i];

                    if ( ! cell ) return true; //continue

                    //$(this).text(cell.text);
                    //$(this).text(rowsnum + ' ' + i);

                    if ( cell.elem ) {
                        var $a = $('<a></a>')
                                .text(cell.text);

                        if ( cell.action ) {
                            $a.attr({href:cell.action, role: cell.role});
                            $a.click(function(e) {
                                e.preventDefault();
                                if ( 'function' == typeof callback ) {
                                    callback.call(this, $a);
                                }
                            });
                        } else {
                            $a.attr({href: cell.url});
                        }
                        $(this).empty().append($a);                          
                    } else 
                        $(this).text(cell.text);
                    
                 });

            }
        );            
    };
})(jQuery); 
    

