ElixirVault/www/js/cms-table.js

836 lines
34 KiB
JavaScript

/*
* Cms table JavaScript Library v1.0
*/
(function() {
CTable = (function() {
function CTable(id, sUrl){
var _this = this;
_this.url = ($.isDefined(sUrl) ? sUrl : CBase.url.path);
_this.isVisible = true;
_this.disableSort = false;
_this.addNewUrl = _this.url + _this.addNewUrl;
_this.containerId = ($.isDefined(id) ? "#" + id + " " : "");
_this.jqTable = $(_this.containerId + ".table-data");
_this.chkedRows = {};
_this.preserveChkedRows = false;
_this.bInitEdit = (CBase.dt && CBase.dt.initEdit ? CBase.dt.initEdit : false);
_this.params = {};
_this.jqSearchPan = {};
_this.oPager = new Pager(_this);
_this.oBlank = new CBlank(id, _this);
CBase.oTable = _this;
_this.bindTableActionKeys();
}
CTable.prototype = {
url : "",
isVisible : false,
disableSort : false,
addNewUrl : "/action:new",
containerId : "",
jqTable : {},
headers : false,
chkedRows : {},
preserveChkedRows : false,
bInitEdit : false,
params : {},
jqSearchPan : {},
oPager : {},
oBlank : {},
oMessage : false,
bArrowKeysUsed : false,
bDisableMouseHover : false
};
CTable.prototype.show = function(reload){
this.isVisible = true;
if($.isDefined(reload) && reload){
this.loadTableData();
}else{
this.oBlank.hide();
if(this.jqTable.parent().is(":visible")){
this.jqTable.add(this.addElementsOnTableShow()).show();
}else{
this.jqTable
.add(this.addElementsOnTableShow()).show();
}
}
//CBase.resizeForm();
this.jqTable.parent().removeClass("cnt-shadow-hidden").fadeIn();
};
CTable.prototype.hide = function(){
this.isVisible = false;
this.jqTable.parent().addClass("cnt-shadow-hidden").hide();
this.jqTable.add(this.addElementsOnTableShow()).hide();
};
CTable.prototype.addElementsOnTableShow = function(){
return {};
};
CTable.prototype.loadTableData = function(callback){
var _this = this;
_this.isVisible = false;
CBase.ajax($.extend(this.getTableData(), {headers : 1}), this.url, function(d){
_this.headers = d && d.header;
_this.populateSearchHeader(d.header);
_this.loadTableCallback(d);
if($.isFunction(callback)) callback();
if(_this.bInitEdit) _this.loadRecord();
});
};
CTable.prototype.filterTableData = function(pswitch, forceAjaxClose, callback, onComplete, bHeaders){
var _this = this, page = 1;
// Read searched data or use existing
if(pswitch){
page = _this.oPager.page;
}else{
_this.oPager.reset(false);
}
var oAjax = $.extend(_this.getTableData(), {
page : page,
filter :$.toJSON(_this.filterCheckIfAnyValueSet(CBase.getFields(_this.jqSearchPan))), // Check if any value in filter set
sortBy : _this.oPager.sortName.substring(2),
sortWay : _this.oPager.sortWay ? 1 : 0
});
if(_this.preserveChkedRows){
$.extend(oAjax, {
chkRows : $.toJSON(_this.getCheckedRows())
});
}
if($.isDefined(bHeaders) && bHeaders){
$.extend(oAjax, {
headers : 1
});
}
CBase.ajax($.extend(oAjax, _this.params), _this.url, function(d){
if($.isDefined(d.header))
_this.populateSearchHeader(d.header);
_this.loadTableCallback(d);
if($.isFunction(callback))
callback(d);
}, function(){
CBase.ajaxLoader.hide(($.isDefined(forceAjaxClose) ? forceAjaxClose : true));
if($.isFunction(onComplete))
onComplete();
});
};
CTable.prototype.getTableData = function(){
return {
action : "filter_table"
}
};
CTable.prototype.loadTableCallback = function(d){
this.bindTableActions(d);
};
CTable.prototype.tableObjectCallback = function(oTable){
};
CTable.prototype.tableShowCallback = function(oTable, d){
};
CTable.prototype.filterCheckIfAnyValueSet = function(oFilterValues){
var bSet = false;
for(var i in oFilterValues){
if(oFilterValues[i].length){
bSet = true;
break;
}
}
if(bSet)
this.jqSearchPan.find("#tclear").addClass("cc");
else
this.jqSearchPan.find("#tclear").removeClass("cc");
return oFilterValues;
};
CTable.prototype.bindTableActions = function(d){
var _this = this, oTable = $(d.data);
_this.jqTable.find("#cms-table-drop-marker").html("").append(oTable);
_this.oTable = _this.jqTable.find(".table-rows");
_this.tableObjectCallback(oTable, d);
// Set message class
if(d.header)
_this.oMessage = new FormMsg(".search > h2");
// Reposition actions
oTable.find("li.actions").each(function(){
$(this).siblings(":first").before($(this).clone(true));
$(this).remove();
});
// Style
oTable.find(".dxr:not(.thead):odd").addClass("odd");
oTable.find(".dxr:not(.thead)").each(function(){
$(this).find("li:even").addClass("even");
});
// Hoverer
oTable.find(".dxr:not(.thead)").bind({
mouseover : function(){
if(!_this.bDisableMouseHover) $(this).addClass("hover");
},
mouseout : function(){
$(this).removeClass("hover hovero");
}
});
// Bind mouse move action & clear hover class
_this.jqTable.mousemove(function(){
if(_this.bArrowKeysUsed){
_this.jqTable.find(".dxr.hover").removeClass("hover");
_this.bArrowKeysUsed = false;
_this.bDisableMouseHover = false;
}
});
// Scroll table row body area
if(_this.oTable.find(".thead.scroll-e").length){
var iScrollbar = _this.oTable.find(".tbody").width() - _this.oTable.find(".tbody").prop("scrollWidth");
if(iScrollbar > 0){
_this.oTable.find(".thead li:last-child").css({"padding-right" : iScrollbar});
}
}
// Bind checkboxes
_this.linkChkAllRows();
_this.oTable.find(".tbody .ncheckbox .chk").click(function(e){
e.stopPropagation();
if($(this).hasClass("chked")){
$(this).removeClass("chked");
// Unticks mark tick all rows marker
if(_this.oTable.find(".thead .chkall").hasClass("chkedall")){
_this.oTable.find(".thead").find(".chkedall, .chked").removeClass("chkedall chked");
}
}else{
$(this).addClass("chked");
// Ticks mark tick all rows marker
if(!_this.oTable.find(".thead .chkall").hasClass("chkedall")){
if(_this.oTable.find(".tbody > ul.dxr:not(.sample,.thead)").length == _this.oTable.find(".tbody > ul.dxr:not(.sample,.thead) li.rchk .chked").length){
_this.oTable.find(".thead .chkall").addClass("chkedall").find(".chk").addClass("chked");
}
}
}
});
// Pager
_this.oPager.init($.isDefined(d.rlimit)?d.rlimit:2, $.isDefined(d.pcount)?d.pcount:0);
_this.oPager.bInfinite = ($.isDefined(d.inf) && d.inf ? true : false);
if(oTable.find(".noresults").length && _this.oPager.pages <= 1)
_this.jqTable.find(".rcount").html("&nbsp;");
_this.oPager.addPagerBottom(oTable);
// Setup default sort column
if(d.header){
var sortDefault = oTable.find(".thead li.sort:first");
if(sortDefault.length){
_this.oPager.sortName = sortDefault.attr("id");
_this.oPager.sortWay = (sortDefault.hasClass("sortDesc") ? false : true);
}
}
// Bind sort columns & reformat sort cols
oTable.find(".thead .csort").mouseup(function(){
if(!_this.disableSort){
if($(this).attr("id") == _this.oPager.sortName){
_this.oPager.sortWay = !_this.oPager.sortWay;
}else{
_this.oPager.sortName = $(this).attr("id");
_this.oPager.sortWay = true;
}
// Filter data
_this.resetSortWay();
_this.filterTableData(true);
}
});
_this.resetSortWay();
// Bind table column sort
if(jQuery().sortable){
var oldOrder = [];
oTable.find(".thead > li:not(#h_buttons,#h_checkbox)").each(function(){
oldOrder.push($(this).attr("id"));
});
oTable.find(".thead").sortable({
axis: 'x',
items: "> li:not(.actions, .rchk)",
stop: function(){
var data = {};
_this.disableSort = false;
var order = oTable.find(".thead").sortable('toArray');
// If data not in the same order send to save
if(order.toString() != oldOrder.toString()){
oldOrder = order.slice();
data[CBase.getObjectClass()] = order;
CBase.settings.addin = {table: 1};
CBase.settings.saveProperty(data, function(){
// Reload view
_this.filterTableData(true, false, false, false, true);
});
}
},
start: function(){
_this.disableSort = true;
}
}).disableSelection();
}
// Link actions & calculate top dropdown position
_this.linkTableActionBtn(oTable);
// Create button links for edit & delete
oTable.find(".actionbtn a.ledit, .actionbtn a.lview").each(function(){
$(this)
.attr("href", _this.url + "/" + $(this).attr("href"))
.click(function(event){
if(!event.ctrlKey && !event.metaKey && !event.altKey){
event.stopPropagation();
_this.loadRecord(false, $(this).attr("href"));
return false;
}
});
});
oTable.find(".actionbtn a#ldelete, a#idelete").click(function(){
_this.deleteSelectedRecords($(this));
});
oTable.find("a#bButtonNew, a#inew").click(function(){
_this.loadRecord(true);
});
oTable.find(".dxr:not(.thead) .chk.status, a#istatus").click(function(){
_this.changeSelectedRecordsStatus($(this).attr("id") == "istatus"?"h_status":$(this));
});
var jqReqT = $("a.req_time");
if(jqReqT.length)
jqReqT.html(time);
/// Hide content & append to fade in
if(!_this.bInitEdit){
_this.show();
_this.tableShowCallback(oTable, d);
}
};
// Reset sort way icons
CTable.prototype.setActionColWidth = function(){
var ww = $(window).width();
var width = $(".table-rows ul.dxr:not(.thead):first li.actions").width();
$(".table-rows .thead li.actions").width(width?width:"auto");
// Fixed row width
var jqTbl = $(".flTable");
if(jqTbl.length){
width = 0;
$(".table-rows ul.dxr:not(.thead):first li").each(function(){
width += $(this).width() + 1;
});
width += 42 + 5; // Inner margin + 5px overhead
if(ww < width){
jqTbl.addClass("ftable");
$(".table-data, .form-data").css({
width : width,
"margin-right": -5
});
}
}
};
// Reset sort way icons
CTable.prototype.resetSortWay = function(){
var _this = this;
if(_this.oPager.sortName){
_this.jqTable.find(".thead").find(".sort, .sortDesc").removeClass("sort sortDesc");
_this.jqTable.find(".thead #" + _this.oPager.sortName).addClass((_this.oPager.sortWay?"sort":"sortDesc"));
}
};
// Ajax load populate blank buttons
CTable.prototype.populateSearchHeader = function(h, oDocPanel){
var _this = this;
if(!$.isDefined(h))
return false;
var bShowSearch = $("#tSearch:visible").length;
if($.isDefined(oDocPanel))
_this.jqSearchPan = oDocPanel.find(".search");
else
_this.jqSearchPan = $(this.containerId + ".search");
// Append data
_this.jqSearchPan.html(h);
_this.jqSearchPan.find("label, .dropBox span, .dropBox ul li").disableSelection();
// Show search when old one is visible
if(bShowSearch)
_this.jqSearchPan.find("#tSearch").show();
// Bind default table buttons like - search, clear search
_this.jqSearchPan.find("#tsearch").click(function(){
_this.filterTableData(false);
});
_this.jqSearchPan.find("#tclear").click(function(){
_this.clearTableFilter();
_this.filterTableData(false);
});
_this.jqSearchPan.find("a.close").click(function(){
$("#tSearch").slideUp("fast", function(){
if(_this.jqSearchPan.find("a.cc").length){
_this.clearTableFilter();
_this.filterTableData(false);
}
});
});
_this.jqSearchPan.find("#btnSearch").click(function(){
var jqSearch = $("#tSearch");
if(jqSearch.is(":visible"))
jqSearch.slideUp("fast");
else
jqSearch.slideDown("fast");
});
// Bind events
if(_this.jqSearchPan.find("li.dropBox").length){
_this.jqSearchPan.find("li.dropBox").bind({
click : function(e){
var _subThis = $(this);
if(!_subThis.hasClass("blur"))
_subThis.closest(".search").find("input:focus").blur();
_subThis.removeClass("blur");
e.stopImmediatePropagation();
if(_subThis.hasClass("ddAct")){
_subThis.find("> ul").stop(true, true).slideUp(100, function(){
_subThis.removeClass("ddAct");
});
}else{
_subThis.addClass("ddAct");
// Hide other open drop downs
var dd = $(".ddAct").not(_subThis);
if(dd.find("> ul:visible").length)
dd.click();
_subThis.find("> ul").stop(true, true).slideDown("fast");
}
}
}).find("ul li").click(function(e){
var el = $(this);
var ip = el.closest(".dropBox").find("input:hidden");
if(ip.val() == el.attr("id")){
e.stopImmediatePropagation();
return false;
}
el.closest(".dropBox").find("span").html(el.html());
ip.val(el.attr("id"));
_this.filterTableData(false);
});
// Bind document mouse up
$(window).click(function(e){
var dd = $(".ddAct");
if(dd.find("> ul:visible").length && !$(e.target).not(dd).hasClass("dropBox")){
dd.addClass("blur").click();
}
});
}
_this.jqSearchPan.find("input:text").bind({
keyup : function(event){
if(event.which == CBase.iKeys.ENTER){
_this.filterTableData(false);
}else if(event.which == CBase.iKeys.ESC){
$(this).val("").blur();
if($(this).hasClass("hasDatepicker"))
$(this).datepicker("hide");
$(this).next().fadeIn("fast").closest("li").removeClass("csearchAct");
}
},
focus : function(){
$(this)
.next().hide()
.closest("li").addClass("csearchAct");
},
blur : function(){
if(!$(this).val().length){
var dpw = false;
if($(this).hasClass("hasDatepicker"))
dpw = $(this).datepicker("widget").is(":visible");
if(!dpw) $(this).next().fadeIn("fast").closest("li").removeClass("csearchAct");
}
}
});
if(jQuery.datepicker)
_this.jqSearchPan.find("input:text.date, li.date > div > input:text").datepicker({
dateFormat: 'dd/mm/yy',
onClose: function(e, x){
if(e && e.length)
x.input.next().hide().closest("li").addClass("csearchAct");
else
x.input.next().fadeIn("fast").closest("li").removeClass("csearchAct");
}
});
_this.setActionColWidth();
};
CTable.prototype.linkTableActionBtn = function(obj){
var _this = this;
var jqActions = _this.jqTable.find(".table-actions");
if(jqActions.length){
_this.iMenuTimeout = 0;
var jqActionBtn = _this.jqTable.find(".thead .actions a.dd");
jqActionBtn.append(jqActions);
// iDevice mode
jqActionBtn.bind({
click : function(e){
e.stopPropagation();
var jqParLi = $(this).closest("li");
var clk = jqParLi.hasClass("click"), act = jqParLi.hasClass("active");
if(!clk && act || !clk && !act){
jqParLi.addClass("click");
if(jqActions.is(":hidden")){
jqParLi.addClass("active");
_this.recTableActionContainerCordinates(jqActions);
jqActions.stop(true, true).fadeIn("fast");
}
}else{
if(CBase.browser.idevice)
jqParLi.removeClass("click active");
else
jqParLi.removeClass("click");
if(jqActions.is(":visible")) jqActions.stop(true, true).fadeOut("fast");
}
}
});
// Default mode
if(!CBase.browser.idevice) {
jqActionBtn.bind({
mouseenter : function(e){
e.stopPropagation();
$(this).closest("li").addClass("active");
if(_this.iMenuTimeout) window.clearTimeout(_this.iMenuTimeout);
_this.recTableActionContainerCordinates(jqActions);
_this.iMenuTimeout = window.setTimeout(function(){
if(jqActions.is(":hidden")) jqActions.stop(true, true).fadeIn("fast");
}, 100);
},
mouseleave : function(e){
var jqElement = $(this).closest("li");
if(_this.iMenuTimeout) window.clearTimeout(_this.iMenuTimeout);
_this.iMenuTimeout = window.setTimeout(function(){
jqElement.removeClass("active click");
if(jqActions.is(":visible")) jqActions.stop(true, true).fadeOut("fast");
}, 200);
}
});
}
}
};
CTable.prototype.recTableActionContainerCordinates = function(jqActions){
var jqHeader = jqActions.closest(".thead");
jqActions.css({"top" : jqHeader.position().top + jqHeader.height() + 1 + "px", "right" : jqHeader.position().left + "px"});
};
CTable.prototype.linkChkAllRows = function(){
var _this = this;
_this.oTable.find("li.chkall:first").click(function(e){
e.stopImmediatePropagation();
var val = ($(this).hasClass("chkedall")?false:true);
if(!val){
$(this).removeClass("chkedall").find(".chk").removeClass("chked");
_this.oTable.find(".tbody li.rchk .chk").removeClass("chked");
}else{
$(this).addClass("chkedall").find(".chk").addClass("chked");
_this.oTable.find(".tbody li.rchk .chk").addClass("chked");
}
});
};
CTable.prototype.clearTableFilter = function(){
this.jqSearchPan.find("input:text").val("")
.next().show()
.parent().parent().removeClass("csearchAct");
this.jqSearchPan.find("li.dropBox").each(function(){
var def = $(this).find("li.default, li[id='']").first();
$(this)
.find("span").html(def.html())
.next().val(def.attr("id"));
});
};
CTable.prototype.getSelectedTableRows = function(obj){
var i = 1, rows = {}, _this = this;
// Send individual object to delete
if($.isDefined(obj)){
var rid = $(obj).closest("ul").attr("id");
if(rid)
rows[i++] = rid;
}else{
// Get all marked rows & send for delete
_this.oTable.find("ul.dxr:not(.thead) .rchk .chked").each(function(){
var rid = $(this).closest("ul").attr("id");
if(rid)
rows[i++] = rid;
});
}
return rows;
};
// Send table ajax action
CTable.prototype.sendAjaxAction = function(sAction, oParams, callback){
if(Object.keys(oParams).length){
var params = {
action : sAction,
fields : $.toJSON(oParams)
};
CBase.ajax(params, this.url, function(d){
if($.isFunction(callback)) callback(d);
});
}
};
// Send table ajax action
CTable.prototype.sendAjaxActionAdvanced = function(oData, callback){
if(Object.keys(oData).length && $.isDefined(oData.action)){
CBase.ajax(oData, this.url, function(d){
if($.isFunction(callback)) callback(d);
});
}
};
// Delete selected table records
CTable.prototype.deleteSelectedRecords = function(button){
var oRows, _this = this;
var idelete = (button.attr("id") == "idelete");
if(button.attr("id") == "idelete")
oRows = _this.getSelectedTableRows();
else
oRows = _this.getSelectedTableRows(button);
if(Object.keys(oRows).length){
CBase.oDialog.show({
closeBtn: true,
title : $.isDefined(CBase.gM.delTitle)?CBase.gM.delTitle:"...",
message :$.isDefined(CBase.gM.delMessage)?CBase.gM.delMessage:"-",
buttons : {
1 : {
lbl : $.isDefined(CBase.gM.buttonYes)?CBase.gM.buttonYes:"Ok",
id : "buttonYes",
click : function(){
CBase.oDialog.hide();
_this.sendAjaxAction("deleteRecords", oRows, function(d){
if(d && $.isDefined(d.jsonok)){
_this.filterTableData(true);
_this.oMessage.show(false, true, CBase.getMessageTranslation("Record successfully deleted"), "");
}else if(d && $.isDefined(d.error))
_this.oMessage.show(true, false, CBase.getMessageTranslation("An error occurred"), "");
});
}
},
2 : {
lbl :$.isDefined(CBase.gM.buttonCancel)?CBase.gM.buttonCancel:"Cancel",
id : "buttonNo",
click : function(){
CBase.oDialog.hide();
}
}
}
});
}
};
// Change selected table records status
CTable.prototype.changeSelectedRecordsStatus = function(object){
var oRows, _this = this, $bField = "";
if($.isDefined(object) && $.isObject(object)){
oRows = _this.getSelectedTableRows(object);
var index = $(object).closest("li").index()+1;
$bField = object.closest(".table-rows").find(".thead > li:nth-child("+index+")").attr("id");
}else{
$bField = object;
oRows = _this.getSelectedTableRows();
}
var oParams = {
action : "changeRecordsStatus",
baseField : $bField,
fields : $.toJSON(oRows)
};
if(Object.keys(oRows).length){
_this.sendAjaxActionAdvanced(oParams, function(d){
if(d && $.isDefined(d.jsonok))
_this.filterTableData(true);
else if(d && $.isDefined(d.error))
_this.oMessage.show(true, true, false, "");
});
}
};
// Edit / add new records
CTable.prototype.loadRecord = function(empty, url){
var _this = this;
if($.isDefined(empty) && empty)
_this.oBlank.url = _this.addNewUrl;
else
if($.isDefined(url))
_this.oBlank.url = url;
_this.oBlank.loadBlankView();
};
CTable.prototype.getCheckedRows = function(){
var _this = this;
// Get all marked rows & mark as checked
_this.oTable.find("ul.dxr:not(.thead) .rchk .chk").each(function(){
var rid = $(this).closest("ul").attr("id");
if($(this).hasClass("chked"))
_this.chkedRows[rid] = 1;
else
delete _this.chkedRows[rid];
});
return _this.chkedRows;
};
CTable.prototype.resetCheckedRows = function(newRows){
var _this = this;
if(typeof newRows !== "undefined")
_this.chkedRows = newRows;
};
// Bind table action keys - shortcuts
CTable.prototype.bindTableActionKeys = function(){
var _this = this;
$(document).bind('keydown', function(event){
if(CBase.os.win || CBase.os.mac || CBase.os.linux){
if(!event.altKey){
// Set control button
var ctrl = (event.ctrlKey || CBase.os.mac && event.metaKey);
// Ctrl + s - save form
if(event.which === CBase.iKeys.KEY_S && ctrl){
if(_this.oBlank.isVisible){
event.preventDefault();
_this.oBlank.saveBlankView();
return false;
}
}
// Ctrl + f - search form
if(event.which === CBase.iKeys.KEY_F && ctrl){
var jqSearch = _this.jqSearchPan.find("#tSearch");
if(jqSearch.length && !jqSearch.is(":visible") && _this.jqSearchPan.is(":visible")){
event.preventDefault();
jqSearch.slideDown("fast");
return false;
}
}
}
if(!$("input:focus, textarea:focus").length){
// Edit record on hover & space
if(event.which === CBase.iKeys.SPACE){
event.preventDefault();
if(_this.jqTable.is(":visible")){
var href = _this.jqTable.find(".dxr.hover:not(.thead)").find("#ledit,#lview").first();
if(href.length)
_this.loadRecord(false, href.attr("href"));
return false;
}
}
if(event.which === CBase.iKeys.BACKSPACE){
event.preventDefault();
// Close record edit mode on click
var button = _this.oBlank.jqBlank.find("#tback, #fcancel").first();
if(button.length) button.click();
return false;
}
var jqHover = {};
var jqHtml = $("html");
if(event.which === CBase.iKeys.ARROW_UP){
event.preventDefault();
jqHover = _this.jqTable.find(".dxr.hover:not(.thead):first");
if(jqHover.length && jqHover.prev().length && jqHover.prev().hasClass("dxr")) jqHover = jqHover.prev(); // Prev after selection
if(!jqHover.length) jqHover = $(document.elementFromPoint((CBase.xPos - jqHtml.scrollLeft()), (CBase.yPos - jqHtml.scrollTop()))).closest(".dxr"); // Last cursor position
if(!jqHover.length) jqHover = _this.jqTable.find(".table-rows .tbody > ul.dxr:last"); // Last row of table
_this.bArrowKeysUsed = true;
if(jqHover.length){
_this.bDisableMouseHover = true;
CBase.scrollToSeeElement(jqHover);
jqHover.addClass("hover");
jqHover.next().removeClass("hover");
}
}
if(event.which === CBase.iKeys.ARROW_DOWN){
event.preventDefault();
jqHover = _this.jqTable.find(".dxr.hover:not(.thead):first");
if(jqHover.length && jqHover.next().length && jqHover.next().hasClass("dxr")) jqHover = jqHover.next(); // Next after selection
if(!jqHover.length) jqHover = $(document.elementFromPoint((CBase.xPos - jqHtml.scrollLeft()), (CBase.yPos - jqHtml.scrollTop()))).closest(".dxr"); // Last cursor position
if(!jqHover.length) jqHover = _this.jqTable.find(".table-rows .tbody > ul.dxr:first"); // First row of table
_this.bArrowKeysUsed = true;
if(jqHover.length){
_this.bDisableMouseHover = true;
CBase.scrollToSeeElement(jqHover);
jqHover.prev().removeClass("hover");
jqHover.addClass("hover");
}
}
}
}
});
};
return CTable;
})();
}).call(this);