$.extend($.fn.treegrid.methods, {
nav: function (jq) {
return jq.each(function () {
var t = $(this), o = t.treegrid('options'), a, l;
var toArr = function (d) {
$.each(d, function (i, x) {
a.push(x.id);
if (x.children) toArr(x.children);
});
}
var skip = function (c, m) {
var i = c + m;
i = (i < 0) ? 0 : ((i > l) ? l : i);
if (!isV(i))
skip(i, (i == l) ? -m : m);
else
t.treegrid('select', a[i]);
}
var isV = function (x) {
var c = t.treegrid("options").finder.getTr(t[0], a[x]);
return $(c).is(':visible');
}
if (!o.hasSetEvents) {
o.hasSetEvents = true;
var u = o.onLoadSuccess;
o.onLoadSuccess = function (row, data) {
a = [];
toArr(data);
l = a.length - 1;
u.call(this);
};
}
t.treegrid('getPanel').panel('panel').attr('tabindex', 1).bind('keydown', function (e) {
var k = e.keyCode;
if (k == 38 || k == 40) {
var s = t.treegrid('getSelected');
var c = (s) ? $.inArray(s.id, a) : 0;
skip(c, (k == 38) ? -1 : 1);
}
});
});
}
});