export declare const NSTextBoxCode = "var nsModuleExport = function(root,name,prototype)\r\n\t{\r\n\t\tif(typeof exports === 'object' && typeof module === 'object')\r\n\t\t{\r\n\t\t\tmodule.exports[name] = prototype;\r\n\t\t}\r\n\t\telse if (typeof define === \"function\" && define.amd)\r\n\t\t{\r\n\t\t\tdefine(name,[], function () {return prototype;});\r\n\t\t}\r\n\t\telse if(typeof exports === 'object')\r\n\t\t{\r\n\t\t\texports[name] = prototype;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\troot[name] = prototype;\r\n\t\t}\r\n\t};var nsIsWeb = function(root)\r\n\t{\r\n\t\tif(typeof exports === 'object' && typeof module === 'object')\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse if (typeof define === \"function\" && define.amd)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse if(typeof exports === 'object')\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};if(!nsIsWeb())\r\n\t\t{\r\nvar nsutilRef = require('./nsUtil.min.js');\r\nvar NSUtil = nsutilRef.NSUtil;\r\nvar nscontainerbaseRef = require('./nsContainerBase.min.js');\r\nvar nsExtendPrototype = nscontainerbaseRef.nsExtendPrototype;\r\nvar NSContainerBase = nscontainerbaseRef.NSContainerBase;\r\nvar svgRef = require('./nsSVG.min.js');\r\nvar NSSvg = svgRef.NSSvg;\r\nvar NSSvgShapes = svgRef.NSSvgShapes;\r\nvar plugginsRef = require('./nsPluggins.min.js');\r\nvar nsTextEditor = plugginsRef.nsTextEditor;\r\nvar nsTextAreaEditor = plugginsRef.nsTextAreaEditor;\r\nvar NSCellSelection = plugginsRef.NSCellSelection;\r\nvar NSTableCellNavigator = plugginsRef.NSTableCellNavigator;\r\nvar dateutilRef = require('./nsDateUtil.min.js');\r\nvar NSDateUtil = dateutilRef.NSDateUtil;\r\nvar gridRef = require('./nsGrid.min.js');\r\nvar NSGrid = gridRef.NSGrid;\r\n\r\n\t\t}\r\nvar NSList = (function()\r\n{\r\n\tfunction NSList(component,setting) \r\n\t{\r\n\t\t//this.base.call(this);\r\n\t\tthis.ITEM_SELECTED = \"itemSelected\";\r\n\t\tthis.ITEM_UNSELECTED = \"itemUnselected\";\r\n\t\tthis.ITEM_NAVIGATED = \"itemNavigated\";\r\n\t\tthis.NAVIGATION_UP = \"up\";\r\n\t\tthis.NAVIGATION_DOWN = \"down\";\r\n\t\tthis.ITEM_DROPPING = \"itemDropping\";\r\n\t\tthis.ITEM_DROPPED = \"itemDropped\";\r\n\t\tthis.DRAG_STARTED = \"dragStarted\";\r\n\t\tthis.DRAGGING = \"dragging\";\r\n\t\tthis.DRAG_END = \"dragEnd\";\r\n\t\t\r\n\t\tthis.__setting = setting;\r\n\t\tthis.__dataSource = null;\r\n\t\tthis.__labelField = \"label\";\r\n\t\tthis.__itemRenderer = null;\r\n\t\tthis.__templateID = null;\r\n\t\tthis.__setData = null;\r\n\t\tthis.__labelFunction = null;\r\n\t\tthis.__enableHierarchical = false;\r\n\t\tthis.__enableMouseHover = false;\r\n\t\tthis.__enableMouseHoverAnimation = false;\r\n\t\tthis.__disableHoverField = null;\r\n\t\tthis.__disableHoverFunction = null;\r\n\t\tthis.__enableKeyboardNavigation = false;\r\n\t\tthis.__enableMultipleSelection = false;\r\n\t\tthis.__enableCustomScrollBar = false;\r\n\t\tthis.__enableVirtualScroll = false;\r\n\t\tthis.__isDraggable = true;\r\n\t\tthis.__isDroppable = true;\r\n\t\tthis.__enableDragByHandle = false;\r\n\t\tthis.__dragHandlerClass = null;\r\n\t\tthis.__enableDragAfterHold = false;\r\n\t\tthis.__holdTime = 500;\r\n\t\tthis.__enableCloneMode = false;\r\n\t\tthis.__rowHeight = -1;\r\n\t\tthis.__noDataMessage = \"No matching records found\";\r\n\t\tthis.__enableContextMenu = false;\r\n\t\tthis.__enableVariableRowHeight = false;\r\n\t\tthis.__contextMenuProvider = null;\r\n\t\tthis.__contextMenuSetting = null;\r\n\t\tthis.__enableTruncateToFit = false;\r\n\t\tthis.__toolTipField = null;\r\n\t\tthis.__enableToolTipForTruncateText = false;\r\n\t\tthis.__toolTipRenderer = null;\r\n\t\t\r\n\t\tthis.__arrWrapper = null;\r\n\t\tthis.__arrInternalSource = null;\r\n\t\tthis.__arrFlatHierarchicalSource = [];\r\n\t\t\r\n\t\tthis.__divOuterContainer = null;\r\n\t\tthis.__divParentContainer = null;\r\n\t\tthis.__listContainer = null;\r\n\t\tthis.__scroller = null;\r\n\t\tthis.__scrollerSetting = {};\r\n\t\tthis.__customScrollBarSetting = {};\r\n\t\tthis.__customScrollBarTooltip = null;\r\n\t\t\r\n\t\tthis.__template = null;\r\n\t\tthis.__currentIndex = -1;\r\n\t\tthis.__selectedIndex = -1;\r\n\t\tthis.__navigationIndex = -1;\r\n\t\tthis.__selectedItem = null;\r\n\t\tthis.__selectedItems = [];\t\r\n\t\tthis.__selectedIndexes = [];\r\n\t\tthis.__lastNavigationDirection = null;\r\n\t\tthis.__orignalItemKey = [];\r\n\t\t//for keyboard navigation\r\n\t\tthis.__pageSize = 0;\r\n\t\tthis.__scrollTarget = null;\r\n\t\tthis.__startArrayElement = -1;\r\n\t\tthis.__listItemHeight = 0;\r\n\t\t//for Virtual Scroll\r\n\t\tthis.__virtualScrollSetting = {};\r\n\t\tthis.__nsVirtualScroll = null; \r\n\t\tthis.__virtualRowHeight = 0;\r\n\t\t\r\n\t\tthis.__childField = \"children\";\r\n\t\tthis.__CLASS_GROUP_CELL = \"nsListGroupCell\";\r\n\t\tthis.__CLASS_CELL_CHILD = \"nsListCellChild\";\r\n\t\t\r\n\t\t//removing this.getID() as prefix as move functionality from one list to another would have different fields.\r\n\t\tthis.__fieldPrefix = \"ns_field\";\r\n\t\tthis.__fieldIndex =  this.__fieldPrefix + \"_item_index\";\r\n\t\tthis.__fieldVisibleIndex = this.__fieldPrefix + \"_item_visible_index\";\r\n\t\tthis.__fieldItem = this.__fieldPrefix + \"_item\";\r\n\t\tthis.__fieldDisableHover = this.__fieldPrefix + \"_disableHover\";\r\n\t\tthis.__fieldSelected = this.__fieldPrefix + \"_selected\";\r\n\t\tthis.__fieldHover = this.__fieldPrefix + \"_hover\";\r\n\t\t\r\n\t\tthis.__fieldItemLevel = this.__fieldPrefix + \"_item_level\";\r\n\t\tthis.__fieldItemVisible = this.__fieldPrefix + \"_item_visible\";\r\n\t\tthis.__fieldParentIndex = this.__fieldPrefix + \"_parent_index\";\r\n\t\tthis.__fieldHasChild = this.__fieldPrefix + \"_item_hasChild\";\r\n\t\tthis.__fieldHasParent = this.__fieldPrefix + \"_item_hasParent\";\r\n\t\tthis.__fieldIsCollapsed = this.__fieldPrefix + \"_item_isCollapsed\";\r\n\t\tthis.__fieldItemArrow = this.__fieldPrefix + \"_item_arrow\";\r\n\t\t\r\n\t\tthis.__isShiftPressed = false;\r\n\t\tthis.__isCtrlPressed = false;\r\n\t\t\r\n\t\tthis.__objGrid = null;\r\n\t\tthis.__nsListFilter = null;\r\n\t\tthis.__nsListDragDrop = null;\r\n\t\tthis.__nsToolTipInElement = null;\r\n\t\t\r\n\t\tthis.__keyDownRef = null;\r\n\t\tthis.__keyUpRef = null;\r\n\t\tthis.base.__setBaseComponent.call(this,component);\r\n\t};\r\n\tnsExtendPrototype(NSContainerBase,NSList);\r\n\tNSList.prototype.constructor = NSList;\r\n\t\r\n\tNSList.prototype.initializeComponent = function() \r\n\t{\r\n\t\tthis.base.initializeComponent.call(this);\r\n\t\tthis.__setSetting();\r\n\t\tthis.__initializePluggins();\r\n\t};\r\n\t\r\n\tNSList.prototype.setComponentProperties = function() \r\n\t{\r\n\t\tthis.base.setComponentProperties.call(this);\r\n\t\tthis.__objGrid.__addSVGInPage();\r\n\t\tthis.__setTemplate();\r\n\t\tthis.__objGrid.__initialize();\r\n\t\tthis.__addListenerForBody();\r\n\t\tif(this.__dataSource)\r\n\t\t{\r\n\t\t\tthis.dataSource(this.__dataSource);\r\n\t\t}\r\n\t\tif(!window[\"nsListMap\"])\r\n\t\t{\r\n\t\t\twindow[\"nsListMap\"] = {};\r\n\t\t}\r\n\t\twindow[\"nsListMap\"][this.getID()] = this;\r\n\t};\r\n\t\r\n\tNSList.prototype.propertyChange = function(attrName, oldVal, newVal, setProperty)\r\n\t{\r\n\t\tvar attributeName = attrName.toLowerCase();\r\n\t\tthis.base.propertyChange.call(this,attrName, oldVal, newVal, setProperty);\r\n\t};\r\n\t\r\n\tNSList.prototype.removeComponent = function() \r\n\t{\r\n\t\tif(this.__keyDownRef)\r\n\t\t{\r\n\t\t\tthis.util.removeEvent(document,\"keydown\",this.__keyDownRef);\r\n\t\t\tthis.__keyDownRef = null;\r\n\t\t}\r\n\t\tif(this.__keyUpRef)\r\n\t\t{\r\n\t\t\tthis.util.removeEvent(document,\"keyup\",this.__keyUpRef);\r\n\t\t\tthis.__keyUpRef = null;\r\n\t\t}\r\n\t\tif(this.__scroller)\r\n\t\t{\r\n\t\t\tthis.__scroller.__destroyElements();\r\n\t\t\tthis.__scroller = null;\r\n\t\t}\r\n\t\tthis.base.removeComponent.call(this);\r\n\t};\r\n\t\r\n\tNSList.prototype.componentResized = function(event) \r\n\t{\r\n\t\tthis.base.componentResized.call(this,event);\r\n\t};\r\n\t\r\n\tNSList.prototype.expandAll = function()\r\n\t{\r\n\t\tif(this.__enableHierarchical)\r\n\t\t{\r\n\t\t\tthis.__expandCollapseAll(false);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.collapseAll = function()\r\n\t{\r\n\t\tif(this.__enableHierarchical)\r\n\t\t{\r\n\t\t\tthis.__expandCollapseAll(true);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.setContextMenuSetting = function(contextMenuSetting)\r\n\t{\r\n\t\tthis.__contextMenuSetting = contextMenuSetting;\r\n\t};\r\n\t\r\n\tNSList.prototype.__setSetting = function()\r\n\t{\r\n\t\tvar setting = this.__setting;\r\n\t\tif(setting)\r\n\t\t{\r\n\t\t\tif(setting.hasOwnProperty(\"enableHierarchical\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableHierarchical = Boolean.parse(setting[\"enableHierarchical\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableVirtualScroll\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableVirtualScroll = Boolean.parse(setting[\"enableVirtualScroll\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableDragDrop\"))\r\n\t\t\t{\r\n\t\t\t\tif(!this.__enableVirtualScroll)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__enableDragDrop = Boolean.parse(setting[\"enableDragDrop\"]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"isDraggable\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__isDraggable = Boolean.parse(setting[\"isDraggable\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"isDroppable\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__isDroppable = Boolean.parse(setting[\"isDroppable\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableDragByHandle\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableDragByHandle = Boolean.parse(setting[\"enableDragByHandle\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"dragHandlerClass\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__dragHandlerClass = setting[\"dragHandlerClass\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableDragAfterHold\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableDragAfterHold = Boolean.parse(setting[\"enableDragAfterHold\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"holdTime\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__holdTime = parseInt(setting[\"holdTime\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableCloneMode\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableCloneMode = Boolean.parse(setting[\"enableCloneMode\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"labelField\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__labelField = setting[\"labelField\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"itemRenderer\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__itemRenderer = setting[\"itemRenderer\"];\r\n\t\t\t\tthis.__itemRenderer = this.util.getFunction(this.__itemRenderer);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"template\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__templateID = setting[\"template\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"setData\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__setData = setting[\"setData\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"labelFunction\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__labelFunction = setting[\"labelFunction\"];\r\n\t\t\t\tthis.__labelFunction = this.util.getFunction(this.__labelFunction);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableMultipleSelection\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableMultipleSelection =  Boolean.parse(setting[\"enableMultipleSelection\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableCustomScrollBar\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableCustomScrollBar =  Boolean.parse(setting[\"enableCustomScrollBar\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableKeyboardNavigation\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableKeyboardNavigation =  Boolean.parse(setting[\"enableKeyboardNavigation\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableMouseHover\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableMouseHover =  Boolean.parse(setting[\"enableMouseHover\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableMouseHoverAnimation\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableMouseHoverAnimation =  Boolean.parse(setting[\"enableMouseHoverAnimation\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"disableHoverField\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__disableHoverField = setting[\"disableHoverField\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"disableHoverFunction\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__disableHoverFunction = setting[\"disableHoverFunction\"];\r\n\t\t\t\tthis.__disableHoverFunction = this.util.getFunction(this.__disableHoverFunction);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"rowHeight\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__rowHeight =  parseInt(setting[\"rowHeight\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"noDataMessage\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__noDataMessage = setting[\"noDataMessage\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"dataSource\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__dataSource = setting[\"dataSource\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"childField\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__childField = setting[\"childField\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableContextMenu\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableContextMenu = Boolean.parse(setting[\"enableContextMenu\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"contextMenuProvider\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__contextMenuProvider =  setting[\"contextMenuProvider\"];\r\n\t\t\t\tthis.__contextMenuProvider = this.util.getFunction(this.__contextMenuProvider);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableVariableRowHeight\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableVariableRowHeight =  Boolean.parse(setting[\"enableVariableRowHeight\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"customScrollBarSetting\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__customScrollBarSetting =  setting[\"customScrollBarSetting\"];\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.__customScrollBarSetting = {enableTooltip: false,toolTipLabelFunction: null,verticalScrollButtons: {enable: false},horizontalScrollButtons:{enable: false}};\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"virtualScrollSetting\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__virtualScrollSetting = setting[\"virtualScrollSetting\"];\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.__virtualScrollSetting = {pageSize: null,pagesRendered: null,enableScrollDelay: false,scrollInterval: null,resizeInterval: null,enableLoader: false,getLoaderComponent: null};\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.dataSource = function(source)\r\n\t{\r\n\t\tthis.__dataSource = source;\r\n\t\tif(this.__listContainer)\r\n\t\t{\r\n\t\t\tthis.util.removeAllChildren(this.__listContainer);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.__createStructure();\r\n\t\t}\r\n\t\tif(this.__dataSource && this.__dataSource.length > 0)\r\n\t\t{\r\n\t\t\tthis.__orignalItemKey = Object.keys(this.__dataSource[0]);\r\n\t\t\tthis.__objGrid.dataSource();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.__arrWrapper = [];\r\n\t\t\tthis.__arrInternalSource = [];\r\n\t\t\tthis.__updateTotalRecords(0);\r\n\t\t}\r\n\t\tthis.__renderBody();\r\n\t};\r\n\t\r\n\tNSList.prototype.getOrignalItem = function(item)\r\n\t{\r\n\t\tif(item && this.__orignalItemKey && this.__orignalItemKey.length > 0)\r\n\t\t{\r\n\t\t\tvar retItem = {};\r\n\t\t\tvar key = null;\r\n\t\t\tfor(var count = 0;count < this.__orignalItemKey.length;count++)\r\n\t\t\t{\r\n\t\t\t\tkey = this.__orignalItemKey[count];\r\n\t\t\t\tretItem[key] = item[key];\r\n\t\t\t}\r\n\t\t\treturn retItem;\r\n\t\t}\r\n\t\treturn item;\r\n\t};\r\n\t\r\n\tNSList.prototype.addItems = function(arrItem)\r\n\t{\r\n\t\tthis.__addItem(arrItem);\r\n\t};\r\n\t\r\n\tNSList.prototype.addItemsAsChildren = function(item,arrChildren)\r\n\t{\r\n\t\tthis.__objGrid.addItemsAsChildren(item,arrChildren);\r\n\t};\r\n\t\r\n\tNSList.prototype.removeItems = function(arrObject)\r\n\t{\r\n\t\tif(arrObject && arrObject.length > 0)\r\n\t\t{\r\n\t\t\tvar arrIndex = [];\r\n\t\t\tif(this.util.isNumber(arrObject[0]))\r\n\t\t\t{\r\n\t\t\t\tarrIndex = arrObject;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tfor (var count = 0;count < arrObject.length;count++)\r\n\t\t\t    {\r\n\t\t\t\t\tvar item = arrObject[count];\r\n\t\t\t\t\tif(item && item[this.__fieldIndex])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tarrIndex.push(item[this.__fieldIndex]);\r\n\t\t\t\t\t}\r\n\t\t\t    }\r\n\t\t\t}\r\n\t\t\tarrIndex.sort();\r\n\t   \t \tfor (var rowIndex = arrIndex.length - 1; rowIndex >= 0; rowIndex--)\r\n\t\t    {\r\n\t   \t \t\tvar index = arrIndex[rowIndex];\r\n\t   \t \t\tif(index > 0 && index < this.__arrInternalSource.length)\r\n\t   \t \t\t{\r\n\t\t   \t \t\t//if virtual scroll or Pagination of type Page is enabled then do not remove rows\r\n\t\t   \t \t\tif(!this.__enableVirtualScroll)\r\n\t\t   \t \t\t{\r\n\t\t   \t \t\t\tthis.__listContainer.removeChild(this.__listContainer.childNodes[index]);\r\n\t\t   \t \t\t}\r\n\t\t   \t \t\tthis.__arrInternalSource.splice(index, 1);\r\n\t\t   \t \t\tthis.__arrWrapper.splice(index, 1);\r\n\t   \t \t\t}\r\n\t\t    }\r\n\t\t \tthis.__updateTotalRecords();\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.scrollToIndex = function(selectedIndex,animationRequired)\r\n\t{\r\n\t\tselectedIndex = parseInt(selectedIndex);\r\n\t\tvar source = this.__objGrid.__getFlatSource();\r\n\t\tif(selectedIndex > -1 && source && selectedIndex < source.length)\r\n\t\t{\r\n\t\t\tvar item = this.__getItemByIndex(selectedIndex);\r\n\t\t\tif(item)\r\n\t\t\t{\r\n\t\t\t\tif(this.__enableVirtualScroll)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(this.__enableCustomScrollBar)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar targetDimension = this.__virtualRowHeight * (selectedIndex - 1);\r\n\t\t\t\t\t\tthis.__setVirtualScroll_ScrollTop(targetDimension);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t//var item = this.__getVisibleItemByIndex(this.__arrInternalSource,selectedIndex);\r\n\t\t\t\t\t\tif(this.__nsVirtualScroll)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t//because in list index is index+1\r\n\t\t\t\t\t\t\tthis.__nsVirtualScroll.scrollToIndex(selectedIndex - 1,animationRequired);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif(item[this.__fieldItem])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar targetDimension = item[this.__fieldItem].offsetTop;\r\n\t\t\t\t\t\tvar scrollTarget = this.__divOuterContainer;\r\n\t\t\t\t\t\tif(animationRequired)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvar animation = new this.util.animation(scrollTarget,[\r\n\t\t\t\t       \t  \t    {\r\n\t\t\t\t       \t  \t      time: 500,\r\n\t\t\t\t       \t  \t      property:\"scrollTop\",\r\n\t\t\t\t       \t  \t      target: targetDimension,\r\n\t\t\t\t       \t  \t    }\r\n\t\t\t\t       \t  \t]);\r\n\t\t\t\t   \t  \t  \tanimation.animate();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tscrollTarget.scrollTop = targetDimension;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.setSelectedItems = function(arrItems)\r\n\t{\r\n\t\tif(arrItems && arrItems.length > 0)\r\n\t\t{\r\n\t\t\tvar source = this.__objGrid.__getFlatSource();\r\n\t\t\tif(source)\r\n\t\t\t{\r\n\t\t\t\tthis.__clearAllRowSelection(false);\r\n\t\t\t\tvar length = arrItems.length;\r\n\t\t\t\tvar item = null;\r\n\t\t\t\tvar index = -1;\r\n\t\t\t\tfor(var count = 0;count < length;count++)\r\n\t\t\t\t{\r\n\t\t\t\t\titem = arrItems[count];\r\n\t\t\t\t\tindex = this.__getIndexByItem(item);\r\n\t\t\t\t\tif(index > -1 && source && index < source.length)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__setIndex(index,true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.setSelectedItem = function(arrItems)\r\n\t{\r\n\t\tthis.setSelectedItems([arrItems]);\r\n\t};\r\n\t\r\n\tNSList.prototype.setSelectedIndexes = function(arrSelectedIndex)\r\n\t{\r\n\t\tif(arrSelectedIndex && arrSelectedIndex.length > 0)\r\n\t\t{\r\n\t\t\tvar source = this.__objGrid.__getFlatSource();\r\n\t\t\tif(source)\r\n\t\t\t{\r\n\t\t\t\tvar length = arrSelectedIndex.length;\r\n\t\t\t\tvar index = -1;\r\n\t\t\t\tfor(var count = 0;count < length;count++)\r\n\t\t\t\t{\r\n\t\t\t\t\tindex = arrSelectedIndex[count];\r\n\t\t\t\t\tif(index > -1 && source && index < source.length)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__setIndex(index,true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.setSelectedIndex = function(selectedIndex)\r\n\t{\r\n\t\tthis.setSelectedIndexes([selectedIndex]);\r\n\t};\r\n\t\r\n\tNSList.prototype.unSelectItems = function(arrItems)\r\n\t{\r\n\t\t\r\n\t};\r\n\t\r\n\tNSList.prototype.unSelectItem = function(arrItems)\r\n\t{\r\n\t\tthis.unSelectItems([arrItems]);\r\n\t};\r\n\t\r\n\tNSList.prototype.unSelectIndexes = function(arrSelectedIndex)\r\n\t{\r\n\t\t\r\n\t};\r\n\t\r\n\tNSList.prototype.unSelectIndex = function(selectedIndex)\r\n\t{\r\n\t\tthis.unSelectIndexes([selectedIndex]);\r\n\t};\r\n\t\r\n\tNSList.prototype.getSelectedIndex = function()\r\n\t{\r\n\t\treturn this.__selectedIndex;\r\n\t};\r\n\t\r\n\tNSList.prototype.getSelectedItem = function()\r\n\t{\r\n\t\treturn this.__selectedItem;\r\n\t};\r\n\t\r\n\tNSList.prototype.getSelectedIndexes = function()\r\n\t{\r\n\t\treturn this.__selectedIndexes;\r\n\t};\r\n\t\r\n\tNSList.prototype.getSelectedItems = function()\r\n\t{\r\n\t\treturn this.__selectedItems;\r\n\t};\r\n\t\r\n\tNSList.prototype.deselectAll = function()\r\n\t{\r\n\t\tthis.__clearAllRowSelection(true);\r\n\t};\r\n\t\r\n\tNSList.prototype.filter = function(strData,setting,enableHighlighting,recordLimit)\r\n\t{\r\n\t\tthis.__nsListFilter.filter(strData,setting,enableHighlighting,recordLimit);\r\n\t};\r\n\t\r\n\tNSList.prototype.resetFilter = function()\r\n\t{\r\n\t\tthis.__nsListFilter.reset();\r\n\t};\r\n\t\r\n\tNSList.prototype.updateListItemByIndex = function(index)\r\n\t{\r\n\t\tvar item = this.__getItemByIndex(index);\r\n\t\tif(item)\r\n\t\t{\r\n\t\t\tvar listItem = this.__getListItemFromItem(item);\r\n\t\t\tif(listItem)\r\n\t\t\t{\r\n\t\t\t\tvar index = this.__getIndexByItem(item);\r\n\t\t\t\tthis.__updateListItemText(listItem,item,index);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__highlightDiv = function(divText)\r\n\t{\r\n\t\tthis.__nsListFilter.__highlightDiv(divText);\r\n\t};\r\n\t\r\n\tNSList.prototype.__initializePluggins = function()\r\n\t{\r\n\t\tif(!this.__objGrid)\r\n\t\t{\r\n\t\t\tif(this.__enableHierarchical)\r\n\t\t\t{\r\n\t\t\t\tthis.__objGrid = new NSHierarchicalList(this);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.__objGrid = new NSFlatList(this);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(!this.__nsListFilter)\r\n\t\t{\r\n\t\t\tthis.__nsListFilter = new NSListFilter(this);\r\n\t\t\tif(this.__enableDragDrop)\r\n\t\t\t{\r\n\t\t\t\tthis.__nsListDragDrop = new NSListDragDrop(this);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.__nsToolTipInElement = new this.util.nsToolTipInElement();\r\n\t};\r\n\t\r\n\tNSList.prototype.__createStructure = function()\r\n\t{\r\n\t\tif(!this.__divOuterContainer)\r\n\t\t{\r\n\t\t\tthis.__divOuterContainer = this.util.createDiv(this.getID() + \"container\",\"nsListOuterContainer\");\r\n\t\t\tif(this.__enableHierarchical)\r\n\t\t\t{\r\n\t\t\t\tthis.util.addStyleClass(this.__divOuterContainer,\"nsListOuterContainerHierarchical\")\r\n\t\t\t}\r\n\t\t\tthis.__divOuterContainer.style.width = this.util.getStyleValue(this.__baseComponent,\"width\");\r\n\t\t\t//this.__divOuterContainer.style.height = this.util.getStyleValue(this.__baseComponent,\"height\");\r\n\t\t\tthis.addChild(this.__divOuterContainer);\r\n\t\t\tthis.__divParentContainer = this.util.createDiv(this.getID() + \"parentContainer\",\"nsListParentContainer\");\r\n\t\t\tthis.__divOuterContainer.appendChild(this.__divParentContainer);\r\n\t\t\tthis.__listContainer = this.util.createElement(\"ul\",this.getID() + \"list\",\"nsListContainer\");\r\n\t\t\tthis.__listContainer.style.minHeight = (this.__divOuterContainer.clientHeight - 10) + \"px\";\r\n\t\t\tthis.__divParentContainer.appendChild(this.__listContainer);\r\n\t\t\tif(this.__enableVirtualScroll)\r\n\t\t\t{\r\n\t\t\t\tthis.util.addStyleClass(this.__divParentContainer,\"nsListBodyContainerVirtual\");\r\n\t\t\t}\r\n\t\t\tthis.__createCustomScroller();\r\n\t\t}\r\n\t};\r\n\r\n\tNSList.prototype.__renderBody = function()\r\n\t{\r\n\t\tthis.__navigationIndex = -1;\r\n\t\tif(this.__enableContextMenu)\r\n\t\t{\r\n\t\t\tthis.__initializeContextMenu();\r\n\t\t}\r\n\t\tif(this.__enableVirtualScroll)\r\n\t\t{\r\n\t\t\tthis.__setNSVirtualScroll(this.__arrInternalSource);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.util.removeAllChildren(this.__listContainer);\r\n\t\t\tthis.__createList(this.__arrInternalSource,0,this.__arrInternalSource.length);\r\n\t\t\t//5 is offset for number of rows\r\n\t\t\tvar listItem = this.__getListItemByIndex(0);\r\n\t\t\tif(listItem)\r\n\t\t\t{\r\n\t\t\t\tthis.__listItemHeight = listItem.clientHeight;\r\n\t\t\t}\r\n\t\t\tthis.__pageSize = (this.__divOuterContainer.clientHeight/this.__listItemHeight) - 5;\r\n\t\t\tthis.__startArrayElement = 0;\r\n\t\t}\r\n\t\t//this.__listContainer.scrollTop = 0;\r\n\t\tif(this.__nsListDragDrop)\r\n\t\t{\r\n\t\t\tthis.__nsListDragDrop.initialize();\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__setNSVirtualScroll = function(source)\r\n\t{\r\n\t\tvar length = 0;\r\n\t\tif(source && source.length)\r\n\t\t{\r\n\t\t\tfor(var count = 0;count < source.length;count++)\r\n\t\t\t{\r\n\t\t\t\tif(source[count][this.__fieldItemVisible])\r\n\t\t\t\t{\r\n\t\t\t\t\tlength++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.__nsVirtualScroll)\r\n\t\t{\r\n\t\t\tthis.__nsVirtualScroll.dataSource(length);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif(length > 0)\r\n\t\t\t{\r\n\t\t\t\tif(this.__rowHeight > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__virtualRowHeight = this.__rowHeight;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__createList(this.__arrInternalSource,0,1);\r\n\t\t\t\t\tvar item = this.__arrInternalSource[0];\r\n\t\t\t\t\tvar listItem = item[this.__fieldItem];\r\n\t\t\t\t    this.__virtualRowHeight = listItem.offsetHeight;\r\n\t\t\t\t    listItem.parentNode.removeChild(listItem);\r\n\t\t\t\t}\r\n\t\t\t\tvar setting = {scrollElement: this.__divOuterContainer,contentElement: this.__listContainer,itemTag: \"li\",totalLength: length,getItemComponent:this.__getItemComponentForVirtual.call(this),getEmptyItemComponent:this.__getEmptyItemComponentForVirtual.call(this)};\r\n\t\t\t\tvar virtualScrollSetting = this.__virtualScrollSetting;\r\n\t\t\t\tvar arrCopyFields = [\"pageSize\",\"pagesRendered\",\"enableScrollDelay\",\"scrollInterval\",\"resizeInterval\",\"enableLoader\",\"getLoaderComponent\"];\r\n\t\t\t\tvar field = null;\r\n\t\t\t\tfor(var count = 0;count < arrCopyFields.length;count++)\r\n\t\t\t\t{\r\n\t\t\t\t\tfield = arrCopyFields[count];\r\n\t\t\t\t\tif(!this.util.isUndefinedOrNull(virtualScrollSetting[field]))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsetting[field] = virtualScrollSetting[field];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.__nsVirtualScroll = new NSVirtualScroll(setting);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__getItemComponentForVirtual = function()\r\n\t{\r\n\t\tvar list = this;\r\n\t\tvar CreateListItem = function(index)\r\n\t\t{\r\n\t\t\tthis.__index = index;\r\n\t\t\tthis.__list =  list;\r\n\t\t\tthis.__item = null;\r\n\t\t\tthis.__listItem = null;\r\n\t\t};\r\n\t\tCreateListItem.prototype.getElement = function()\r\n\t\t{\r\n\t\t\tif(!this.__listItem)\r\n\t\t\t{\r\n\t\t\t\tif(this.__list.__enableHierarchical)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__item = this.__list.__getVisibleItemByIndex(null,this.__index);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__item = this.__list.__arrInternalSource[this.__index];\r\n\t\t\t\t}\r\n\t\t\t\tthis.__listItem = this.__list.__createListItem(this.__item,false);\r\n\t\t\t}\r\n\t\t\treturn this.__listItem;\r\n\t\t};\r\n\t\treturn CreateListItem;\r\n\t};\r\n\t\r\n\tNSList.prototype.__getEmptyItemComponentForVirtual = function()\r\n\t{\r\n\t\tvar list = this;\r\n\t\tvar CreateEmptyListItem = function()\r\n\t\t{\r\n\t\t\tthis.__list =  list;\r\n\t\t\tthis.__listItem = null;\r\n\t\t};\r\n\t\tCreateEmptyListItem.prototype.getElement = function()\r\n\t\t{\r\n\t\t\tif(!this.__listItem)\r\n\t\t\t{\r\n\t\t\t\tthis.__listItem = this.__list.__createNoDataRow.call(this.__list);\r\n\t\t\t}\r\n\t\t\treturn this.__listItem;\r\n\t\t};\r\n\t\treturn CreateEmptyListItem;\r\n\t};\r\n\t\r\n\tNSList.prototype.__createCustomScroller = function()\r\n\t{\r\n\t\tif(this.__enableCustomScrollBar && !this.__scroller)\r\n\t\t{\r\n\t\t\tvar setting = {element: this.__divOuterContainer,enableCustomHandler: true,verticalScrollButtons:this.__customScrollBarSetting.verticalScrollButtons,horizontalScrollButtons:this.__customScrollBarSetting.horizontalScrollButtons};\r\n\t\t\tfor (var key in setting) \r\n\t\t\t{ \r\n\t\t\t\tthis.__scrollerSetting[key] = setting[key]; \r\n\t\t\t}\r\n\t\t\tthis.__scroller = new NSScroller(this.__scrollerSetting);\r\n\t\t\tthis.util.addEvent(this.__scrollerSetting.element,NSScroller.SCROLLING,this.__customScrollHandler.bind(this));\r\n\t\t\tthis.util.addEvent(this.__scrollerSetting.element,NSScroller.SCROLL_END,this.__customScrollEndHandler.bind(this));\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__customScrollHandler = function(event)\r\n\t{\r\n\t\tvar self = this;\r\n\t\tvar virtualVerHandler = function()\r\n\t\t{\r\n\t\t\t//todo Virtual Scroll impl for Custom Scroll Bar\r\n\t\t};\r\n\t\tvar dataRefreshVerHandler = function()\r\n\t\t{\r\n\t\t\t\r\n\t\t};\r\n\t\tvar asyncLoadVerHandler = function()\r\n\t\t{\r\n\t\t\t\r\n\t\t};\r\n\t\tvar paginationVerHandler = function()\r\n\t\t{\r\n\t\t\t\r\n\t\t};\r\n\t\tvar normalVerHandler = function()\r\n\t\t{\r\n\t\t\tself.__divOuterContainer.scrollTop = scrollPos;\r\n\t\t\t\r\n\t\t\tvar first,last;\r\n\t\t\tvar arrRows = self.__listContainer.querySelectorAll(\"li\");\r\n\t\t\tfor(var count = 0;count < arrRows.length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar li = arrRows[count];\r\n\t\t\t\tif(isInViewport(li))\r\n\t\t\t\t{\r\n\t\t\t\t\tfirst = li;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor(;count < arrRows.length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar li = arrRows[count];\r\n\t\t\t\tif(!isInViewport(li))\r\n\t\t\t\t{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tlast = li;\r\n\t\t\t}\r\n\t\t\tconsole.log(first,last);\r\n\t\t};\r\n\t\tvar normalHorHandler = function()\r\n\t\t{\r\n\t\t\tself.__divOuterContainer.scrollLeft = scrollPos;\r\n\t\t};\r\n\t\tvar isInViewport = function (elem) \r\n\t\t{\r\n\t\t\tif(elem)\r\n\t\t\t{\r\n\t\t\t\t/*var distance = elem.getBoundingClientRect();\r\n\t\t\t\treturn (\r\n\t\t\t\t\tdistance.top >= 0 &&\r\n\t\t\t\t\tdistance.left >= 0 &&\r\n\t\t\t\t\tdistance.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n\t\t\t\t\tdistance.right <= (window.innerWidth || document.documentElement.clientWidth)\r\n\t\t\t\t);*/\r\n\t\t\t\tconst rect = elem.getBoundingClientRect();\r\n\t\t\t    const windowHeight = (window.innerHeight || document.documentElement.clientHeight);\r\n\t\t\t    const windowWidth = (window.innerWidth || document.documentElement.clientWidth);\r\n\r\n\t\t\t    const vertInView = (rect.top <= windowHeight) && ((rect.top + rect.height) >= 0);\r\n\t\t\t    const horInView = (rect.left <= windowWidth) && ((rect.left + rect.width) >= 0);\r\n\r\n\t\t\t    return (vertInView && horInView);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\t\tvar objCondition = {virtualScroll:{eligible:this.__enableVirtualScroll,verHandler:virtualVerHandler,horHandler:normalHorHandler},\r\n\t\t\t\t\t\t\tdataRefreshOnEnd:{eligible:this.__enableDataRefreshOnScrollEnd,verHandler:dataRefreshVerHandler,horHandler:normalHorHandler},\r\n\t\t\t\t\t\t\tasyncLoad:{eligible:this.__enableAsyncLoadPagination,verHandler:asyncLoadVerHandler,horHandler:normalHorHandler},\r\n\t\t\t\t\t\t\tpagination:{eligible:(this.__enablePagination && this.__isPaginationTypeScroll),verHandler:paginationVerHandler,horHandler:normalHorHandler},\r\n\t\t\t\t\t\t\tnormal:{eligible:true,verHandler:normalVerHandler,horHandler:normalHorHandler}\r\n\t\t\t\t\t\t   };\r\n\t\tvar eventItem = event;\r\n\t\tvar direction = eventItem.direction;\r\n\t\tvar scrollPos = eventItem.scrollPos;\r\n\t\tvar oldScrollPos = eventItem.oldScrollPos;\r\n\t\tvar orignalEvent = eventItem.orignalEvent;\r\n\t\tvar scrollBar = eventItem.scrollBar;\r\n\t\tvar position = eventItem.absoluteScrollBarPos;\r\n\t\tfor(var key in objCondition)\r\n\t\t{\r\n\t\t\tvar item = objCondition[key];\r\n\t\t\tif(item.eligible)\r\n\t\t\t{\r\n\t\t\t\tif(direction == \"vertical\")\r\n\t\t\t\t{\r\n\t\t\t\t\tif(item.verHandler)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif(this.__customScrollBarSetting[\"enableTooltip\"] && !this.__customScrollBarTooltip)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.__customScrollBarTooltip = this.util.createElement(\"span\",null,\"tooltiptext tooltip-left\");\r\n\t\t\t\t\t\t\tdocument.body.appendChild(this.__customScrollBarTooltip);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\titem.verHandler();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif(item.horHandler)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\titem.horHandler();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__customScrollEndHandler = function(event)\r\n\t{\r\n\t\tif(this.__customScrollBarTooltip)\r\n\t\t{\r\n\t\t\tdocument.body.removeChild(this.__customScrollBarTooltip);\r\n\t\t\tthis.__customScrollBarTooltip = null;\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__customScrollTooltipPos = function(scrollbar,position,itemFrom,itemTo)\r\n\t{\r\n\t\tif(this.__customScrollBarTooltip)\r\n\t\t{\r\n\t\t\tvar toolTip = this.__customScrollBarTooltip;\r\n\t\t\tvar css = {};\r\n\t\t\t//5 for the triangle\r\n\t\t\tcss.left = (position.x - toolTip.offsetWidth - 5) + \"px\";\r\n\t\t\tcss.top = position.y + \"px\";\r\n\t\t\tthis.util.css(toolTip,css);\r\n\t\t\tif(this.__customScrollBarSetting.toolTipLabelFunction)\r\n\t\t\t{\r\n\t\t\t\ttoolTip.innerHTML = this.__customScrollBarSetting.toolTipLabelFunction(itemFrom,itemTo);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\ttoolTip.innerHTML = \"Showing Record from index \" + itemFrom + \" to \" +  itemTo;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t};\r\n\t\r\n\tNSList.prototype.__virtualRowSelection = function()\r\n\t{\r\n\t\tif(this.__listContainer.children && this.__listContainer.children.length > 0 && this.__arrInternalSource)\r\n\t\t{\r\n\t\t\tvar listItem = null;\r\n\t\t\tvar index = null;\r\n\t\t\tvar item = null;\r\n\t\t\tfor(var count = 0; count < this.__listContainer.children.length; count++) \r\n\t\t\t{\r\n\t\t\t\tlistItem = this.__listContainer.children[count];\r\n\t\t\t\tindex = this.__getIndexFromTarget(listItem);\r\n\t\t\t\titem = this.__getItemByIndex(index);\r\n\t\t\t\tif(item && this.__isMouseHoverAllowed(index))\r\n\t\t\t\t{\r\n\t\t\t\t\tif(item[this.__fieldSelected])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t//DONOT REPLACE WITH __markRowSelected\r\n\t\t\t\t\t\tthis.util.addStyleClass(listItem,\"nsListItemSelected\"); \r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t//DONOT REPLACE WITH __markRowUnselected\r\n\t\t\t\t\t\tthis.util.removeStyleClass(listItem,\"nsListItemSelected\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__virtualRowHover = function()\r\n\t{\r\n\t\tif(this.__listContainer.children && this.__listContainer.children.length > 0 && this.__arrInternalSource)\r\n\t\t{\r\n\t\t\tvar listItem = null;\r\n\t\t\tvar index = null;\r\n\t\t\tvar item = null;\r\n\t\t\tfor(var count = 0; count < this.__listContainer.children.length; count++) \r\n\t\t\t{\r\n\t\t\t\tlistItem = this.__listContainer.children[count];\r\n\t\t\t\tindex = this.__getIndexFromTarget(listItem);\r\n\t\t\t\titem = this.__getItemByIndex(index);\r\n\t\t\t\t(item && item[this.__fieldHover]) ? this.util.addStyleClass(listItem,\"nsListItemHover\") : this.util.removeStyleClass(listItem,\"nsListItemHover\");\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__setVirtualRowHoverField = function(indexToSet)\r\n\t{\r\n\t\tif(this.util.isUndefinedOrNull(indexToSet))\r\n\t\t{\r\n\t\t\tindexToSet = -1;\r\n\t\t}\r\n\t\tvar source = this.__objGrid.__getFlatSource();\r\n\t\tif(source)\r\n\t\t{\r\n\t\t\tvar item = null;\r\n\t\t\tfor(var count = 0; count < source.length; count++) \r\n\t\t\t{\r\n\t\t\t\tvar item = source[count];\r\n\t\t\t\tif(item)\r\n\t\t\t\t{\r\n\t\t\t\t\titem[this.__fieldHover] = (item[this.__fieldIndex] === indexToSet); \r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__setVirtualRowHover = function(indexToSet)\r\n\t{\r\n\t\tif(this.__enableVirtualScroll)\r\n\t\t{\r\n\t\t\tif(this.util.isUndefinedOrNull(indexToSet))\r\n\t\t\t{\r\n\t\t\t\tindexToSet = 0;\r\n\t\t\t}\r\n\t\t\tvar item = this.__getVisibleItemByIndex(null,indexToSet);\r\n\t\t\tif(item)\r\n\t\t\t{\r\n\t\t\t\tthis.__navigationIndex = indexToSet;\r\n\t\t\t\tvar index = item[this.__fieldIndex];\r\n\t\t\t\tthis.__setVirtualRowHoverField(index);\r\n\t\t\t\tthis.__virtualRowHover();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__setRowHover = function(indexToSet)\r\n\t{\r\n\t\tif(this.util.isUndefinedOrNull(indexToSet))\r\n\t\t{\r\n\t\t\tindexToSet = 0;\r\n\t\t}\r\n\t\tif(this.__enableVirtualScroll)\r\n\t\t{\r\n\t\t\tthis.__setVirtualRowHover(indexToSet);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif(this.util.isUndefinedOrNull(indexToSet))\r\n\t\t\t{\r\n\t\t\t\tindexToSet = 0;\r\n\t\t\t}\r\n\t\t\tthis.__navigationIndex = indexToSet;\r\n\t\t\tvar listItem = this.__getListItemFromContainer(this.__navigationIndex);\r\n\t\t\tthis.util.addStyleClass(listItem,\"nsListItemHover\");\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__createNoDataRow = function()\r\n\t{\r\n\t\tvar listItem = this.util.createElement(\"li\",null,\"nsListNoRecordsFound\");\r\n\t\tlistItem.setAttribute(\"nsNoData\",\"true\");\r\n\t\tvar textNode = document.createTextNode(this.__noDataMessage);\r\n\t\tlistItem.appendChild(textNode);\r\n\t\treturn listItem;\r\n\t};\r\n\t\r\n\tNSList.prototype.__addListenerForBody = function()\r\n\t{\r\n\t\tif(!this.__keyDownRef)\r\n\t\t{\r\n\t\t\tthis.__keyDownRef = this.__keyDownHandler.bind(this);\r\n\t\t\tthis.util.addEvent(document,\"keydown\",this.__keyDownRef);\r\n\t\t}\r\n\t\tif(!this.__keyUpRef)\r\n\t\t{\r\n\t\t\tthis.__keyUpRef = this.__keyUpHandler.bind(this);\r\n\t\t\tthis.util.addEvent(document,\"keyup\",this.__keyUpRef);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__createList = function(dataSet,startIndex,endIndex)\r\n\t{\r\n\t\tif(dataSet && dataSet.length > 0)\r\n\t    {\r\n\t\t\tthis.__objGrid.__createList(dataSet,startIndex,endIndex);\r\n\t    }\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.__listContainer.appendChild(this.__createNoDataRow());\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__createListAt = function(item,index,isResetIndex)\r\n\t{\r\n\t\tif(item && index > -1)\r\n\t    {\r\n\t\t\tthis.__updateItem(item,index,true,isResetIndex);\r\n\t\t\tvar listItem = this.__createListItem(item,false);\r\n\t\t\tthis.__listContainer.insertBefore(listItem, this.__listContainer.childNodes[index]);\r\n\t\t\treturn listItem;\r\n\t    }\r\n\t\treturn null;\r\n\t};\r\n\t\r\n\tNSList.prototype.__updateItem = function(item,index,isReset,isResetIndex)\r\n\t{\r\n\t\tif(item)\r\n\t\t{\r\n\t\t\tif(isResetIndex || !item.hasOwnProperty(this.__fieldIndex))\r\n\t\t\t{\r\n\t\t\t\titem[this.__fieldIndex] = index;\r\n\t\t\t}\r\n\t\t\tif(isReset || !item.hasOwnProperty(this.__fieldDisableHover))\r\n\t\t\t{\r\n\t\t\t\titem[this.__fieldDisableHover] = this.__isHoverDisabled(item);\r\n\t\t\t}\r\n\t\t\tif(isReset || !item.hasOwnProperty(this.__fieldSelected))\r\n\t\t\t{\r\n\t\t\t\titem[this.__fieldSelected] = false;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__createListItem = function(item,isAdd)\r\n\t{\r\n\t\tif(item)\r\n\t\t{\r\n\t\t\t if(this.util.isUndefined(isAdd) || isAdd === null)\r\n\t\t\t {\r\n\t\t\t\t isAdd = true;\r\n\t\t\t }\r\n\t\t\t var listItem = this.util.createElement(\"li\",null,\"nsListItem\");\r\n\t\t\t this.__objGrid.__createListItem(listItem,item);\r\n\t\t\t if(this.__enableMouseHover)\r\n\t\t\t {\r\n\t\t\t\t this.util.addEvent(listItem,\"mouseover\",this.__itemMouseOverHandler.bind(this));\r\n\t\t\t\t this.util.addEvent(listItem,\"mouseout\",this.__itemMouseOutHandler.bind(this));\r\n\t\t\t\t if(this.__enableMouseHoverAnimation)\r\n\t\t\t\t {\r\n\t\t\t\t\t this.util.addStyleClass(listItem,\"nsListItemAnimated\");\r\n\t\t\t\t }\r\n\t\t\t\t else\r\n\t\t\t\t {\r\n\t\t\t\t\t this.util.addStyleClass(listItem,\"nsListItemNormal\");\r\n\t\t\t\t }\r\n\t\t\t }\r\n\t\t\t this.util.addEvent(listItem,\"click\",this.__itemClickHandler.bind(this));\r\n\t\t\t this.__setListItemProperties(listItem,item);\r\n\t\t\t if(isAdd)\r\n\t\t\t {\r\n\t\t\t\t this.__listContainer.appendChild(listItem);\r\n\t\t\t }\r\n\t\t\t return listItem;\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\t\r\n\tNSList.prototype.__setListItemProperties = function(listItem,item)\r\n\t{\r\n\t\tthis.__objGrid.__setListItemProperties(listItem,item);\r\n\t};\r\n\t\r\n\tNSList.prototype.__addCellText = function(listItem,item,div)\r\n\t{\r\n\t\tvar toolTipText = null;\r\n\t\tif(listItem && item && div)\r\n\t\t{\r\n\t\t\tif(this.__itemRenderer)\r\n\t\t\t{\r\n\t\t\t\tvar objRenderer = this.__itemRenderer(item,this.__labelField,item[this.__fieldIndex],item[this.__fieldDisableHover],listItem);\r\n\t\t\t\tif(objRenderer)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(this.util.isString(objRenderer))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar compBodySpan = document.createElement(\"span\");\r\n\t\t\t\t\t\tcompBodySpan.innerHTML = objRenderer;\r\n\t\t\t\t\t\tdiv.appendChild(compBodySpan);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdiv.appendChild(objRenderer);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if(this.__template)\r\n\t\t\t{\r\n\t\t\t\tdiv.appendChild(this.__template.cloneNode(true));\r\n\t\t\t\tthis.__setDataInTemplateRenderer(div,item,listItem);\r\n\t\t\t}\r\n\t\t\telse if(this.__labelFunction)\r\n\t\t\t{\r\n\t\t\t\tvar text = this.__labelFunction(item,this.__labelField);\r\n\t\t\t\tdiv.appendChild(document.createTextNode(text));\r\n\t\t\t}\r\n\t\t\telse if(item.hasOwnProperty(this.__labelField) && !this.util.isUndefined(item[this.__labelField]) && item[this.__labelField] != null)\r\n\t\t    {\r\n\t\t\t\tvar text = item[this.__labelField];\r\n\t\t\t\tdiv.appendChild(document.createTextNode(text));\r\n\t\t    }\r\n\t\t\tthis.__highlightDiv(div);\r\n\t\t\tif(this.__toolTipField)\r\n\t\t\t{\r\n\t\t\t\ttoolTipText = item[this.__toolTipField];\r\n\t\t\t}\r\n\t\t\telse if(this.__toolTipRenderer)\r\n\t\t\t{\r\n\t\t\t\ttoolTipText = this.__toolTipRenderer(item,this.__labelField,item[this.__fieldIndex],item[this.__fieldDisableHover],listItem);\r\n\t\t\t}\r\n\t\t\tif(this.__enableTruncateToFit)\r\n\t\t\t{\r\n\t\t\t\tthis.util.addStyleClass(div,\"nsListTruncateToFit\");\r\n\t\t\t\t//This condition is above so that toolTip and title are not set togeather\r\n\t\t\t\tif(!toolTipText || toolTipText === \"\")\r\n\t\t\t\t{\r\n\t\t\t\t\tif(this.__enableToolTipForTruncateText)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttoolTipText = div.textContent;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdiv.setAttribute(\"title\",div.textContent);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(toolTipText && toolTipText !== \"\")\r\n\t\t\t{\r\n\t\t\t\tthis.__nsToolTipInElement.addToolTip(div,toolTipText);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__setDataInTemplateRenderer = function(cellItem,data,listItem)\r\n\t{\r\n\t\tif(cellItem && this.__setData)\r\n\t\t{\r\n\t\t\tthis.__setRendererProperties(cellItem);\r\n\t\t\tthis.__setRendererInData(cellItem,data,listItem);\r\n\t\t\t//IE bug\r\n\t\t\tcellItem.data = data;\r\n\t\t\tif(this.util.isFunction(this.__setData))\r\n\t\t    {\r\n\t\t\t\tvar strParam = \"(cellItem,data,dataField,isDisabled,listItem)\"; \r\n\t\t    \tif(this.util.isString(this.__setData))\r\n\t\t    \t{\r\n\t\t    \t\tvar base = this;\r\n\t\t    \t\tthis.util.callFunctionFromString(this.__setData + strParam,function(paramValue){\r\n\t\t\t\t\t\tif(paramValue === \"cellItem\")\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn cellItem;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(paramValue === \"data\")\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(paramValue === \"dataField\")\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn base.__labelField;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(paramValue === \"isDisabled\")\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn data[base.__fieldDisableHover];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(paramValue === \"listItem\")\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn listItem;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn paramValue;\r\n\t\t\t\t\t});\r\n\t\t    \t}\r\n\t\t    \telse\r\n\t\t    \t{\r\n\t\t    \t\tthis.__setData(cellItem,data,this.__labelField,data[this.__fieldDisableHover],listItem);\r\n\t\t    \t}\r\n\t\t    }\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__setRendererInData = function(cellItem,data,listItem)\r\n\t{\r\n\t\tif(cellItem)\r\n\t\t{\r\n\t\t\tvar compChild = null;\r\n\t\t\tfor(var count = 0; count < cellItem.children.length; count++) \r\n\t\t\t{\r\n\t\t\t\tcompChild = cellItem.children[count];\r\n\t\t\t\tif(compChild)\r\n\t\t\t\t{\r\n\t\t\t\t\tcompChild.data = data;\r\n\t\t\t\t\tcompChild.listItem = listItem;\r\n\t\t\t\t}\r\n\t\t\t\t//IE 9 Bug,you got to assign it back\r\n\t\t\t\t//listItem.children[count] = compChild;\r\n\t\t\t\tthis.__setRendererInData(compChild,data,listItem);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__setRendererProperties = function(cellItem)\r\n\t{\r\n\t\tif(cellItem)\r\n\t\t{\r\n\t\t\tvar compChild = null;\r\n\t\t\tfor(var count = 0; count < cellItem.children.length; count++) \r\n\t\t\t{\r\n\t\t\t\tcompChild = cellItem.children[count];\r\n\t\t\t\tvar grid = this;\r\n\t\t\t\tArray.prototype.slice.call(compChild.attributes).forEach(function(attribute) \r\n\t\t\t\t{\r\n\t\t\t        if(grid.util.isFunction(attribute.value))\r\n\t\t\t        {\r\n\t\t\t        \tvar newValue = attribute.value + \"(this)\";\r\n\t\t\t        \tcompChild.removeAttribute(attribute.name);\r\n\t\t\t\t\t\tcompChild.setAttribute(attribute.name,newValue);\r\n\t\t\t        }\r\n\t\t\t\t});\r\n\t\t\t\tif(compChild)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(compChild.hasAttribute(\"accessor-name\"))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcellItem[compChild.getAttribute(\"accessor-name\")] = compChild;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.__setRendererProperties(compChild);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__setTemplate = function()\r\n\t{\r\n\t\tif(this.__templateID)\r\n\t\t{\r\n\t\t\tthis.__template = this.util.getTemplate(this.__templateID);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__isHoverDisabled = function(item)\r\n\t{\r\n\t\tif(this.__disableHoverField)\r\n\t\t{\r\n\t\t\treturn Boolean.parse(item[this.__disableHoverField]);\r\n\t\t}\r\n\t\tif(this.__disableHoverFunction)\r\n\t\t{\r\n\t\t\treturn Boolean.parse(this.__disableHoverFunction(item,this.__fieldIndex));\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\t\r\n\tNSList.prototype.__itemClickHandler = function(event)\r\n\t{\r\n\t\tevent = this.util.getEvent(event);\r\n\t    var target = this.util.getTarget(event);\r\n\t    target = this.util.findParent(target,\"li\");\r\n\t    var index = this.__getIndexFromTarget(target);\r\n\t    this.__setIndex(index,false);\r\n\t    this.__lastNavigationDirection = null;\r\n\t};\r\n\t\r\n\tNSList.prototype.__setIndex = function(index,isMultiSelect)\r\n\t{\r\n\t\tif(index > -1)\r\n\t\t{\r\n\t\t\tisMultiSelect = Boolean.parse(isMultiSelect);\r\n\t\t\tif (this.__isShiftPressed && this.__enableMultipleSelection)\r\n\t\t    {\r\n\t\t    \tthis.__multiSectionHandler(index);\r\n\t\t    }\r\n\t\t    else if(isMultiSelect || (this.__isCtrlPressed && this.__enableMultipleSelection))\r\n\t\t    {\r\n\t\t    \tif(this.__isRowSelected(index))\r\n\t\t    \t{\r\n\t\t    \t\tthis.__markRowUnselected(index);\r\n\t\t    \t}\r\n\t\t    \telse\r\n\t\t    \t{\r\n\t\t    \t\tthis.__markRowSelected(index);\r\n\t\t    \t}\r\n\t\t    }\r\n\t\t    else\r\n\t\t    {\r\n\t\t    \tthis.__clearAllRowSelection(false);\r\n\t\t    \tthis.__markRowSelected(index);\r\n\t\t    } \r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__itemMouseOverHandler = function(event)\r\n\t{\r\n\t\t var target = this.util.getTarget(event);\r\n\t     target = this.util.findParent(target,\"li\");\r\n\t     var index = this.__getIndexFromTarget(target);\r\n\t     var item = this.__getItemByIndex(index);\r\n\t     if(target && index > -1 && this.__isMouseHoverAllowed(index))\r\n\t     {\r\n\t    \t this.util.addStyleClass(target,\"nsListItemHover\");\r\n\t    \t this.__navigationIndex = index;\r\n\t    \t this.util.dispatchEvent(this.__baseComponent,this.ITEM_NAVIGATED,item,{index:this.__navigationIndex});\r\n\t     }\r\n\t};\r\n\t\r\n\tNSList.prototype.__itemMouseOutHandler = function(event)\r\n\t{\r\n\t\t var target = this.util.getTarget(event);\r\n\t     target = this.util.findParent(target,\"li\");\r\n\t     if(target)\r\n\t     {\r\n\t    \t this.util.removeStyleClass(target,\"nsListItemHover\");\r\n\t     }\r\n\t};\r\n\t\r\n\tNSList.prototype.__keyDownHandler = function(event)\r\n\t{\r\n\t\tevent = this.util.getEvent(event);\r\n\t\tif(this.hasFocus())\r\n\t\t{\r\n\t\t\tthis.__isShiftPressed = event.shiftKey;\r\n\t\t\tthis.__isCtrlPressed = event.ctrlKey;\r\n\t\t\tvar isShiftCtrlPressed = this.__isShiftPressed || this.__isCtrlPressed;\r\n\t\t\tvar keyCode = this.util.getKeyUnicode(event);\r\n\t\t\tif(this.__enableKeyboardNavigation)\r\n\t\t\t{\r\n\t\t\t\tvar source = this.__objGrid.__getFlatSource();\r\n\t\t\t\t//key Up\r\n\t\t\t\tif(keyCode === this.util.KEYCODE.UP && isShiftCtrlPressed && this.__enableMultipleSelection)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(this.__lastNavigationDirection && this.__lastNavigationDirection === this.NAVIGATION_DOWN)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn this.__keyBoardSelectionHandler(event,this.NAVIGATION_UP);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(this.__selectedIndex != 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__selectedIndex--;\r\n\t\t\t\t\t\tthis.__navigationIndex--;\r\n\t\t\t\t\t\twhile(!this.__isMouseHoverAllowed(this.__selectedIndex))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.__selectedIndex--;\r\n\t\t\t\t\t\t\tthis.__navigationIndex--;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn this.__keyBoardSelectionHandler(event,this.NAVIGATION_UP);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t//key down\r\n\t\t\t\telse if(keyCode === this.util.KEYCODE.DOWN && isShiftCtrlPressed && this.__enableMultipleSelection)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(this.__lastNavigationDirection && this.__lastNavigationDirection === this.NAVIGATION_UP)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn this.__keyBoardSelectionHandler(event,this.NAVIGATION_DOWN);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(source && this.__selectedIndex != source.length - 1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__selectedIndex++;\r\n\t\t\t\t\t\tthis.__navigationIndex++;\r\n\t\t\t\t\t\twhile(!this.__isMouseHoverAllowed(this.__selectedIndex))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.__selectedIndex++;\r\n\t\t\t\t\t\t\tthis.__navigationIndex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn this.__keyBoardSelectionHandler(event,this.NAVIGATION_DOWN);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if(keyCode === this.util.KEYCODE.UP)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(source && this.__navigationIndex === -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__navigationIndex = source.length - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(this.__navigationIndex > 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn this.__keyBoardNavigationHandler(event,this.NAVIGATION_UP);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if(keyCode === this.util.KEYCODE.DOWN)\r\n\t\t\t\t{\r\n\t\t\t\t\t/*if(this.__navigationIndex === -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__navigationIndex = 0;\r\n\t\t\t\t\t}*/\r\n\t\t\t\t\tif(source)//&& this.__navigationIndex < source.length\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn this.__keyBoardNavigationHandler(event,this.NAVIGATION_DOWN);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if(keyCode === this.util.KEYCODE.ENTER)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__clearAllRowSelection(false);\r\n\t\t\t\t\tvar listItem = this.__getkeyboardNavigationListItem();\r\n\t\t\t\t\tif(listItem)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__markRowSelected(this.__getIndexFromTarget(listItem));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(keyCode === this.util.KEYCODE.SHIFT)\r\n\t\t\t{\r\n\t\t\t\tthis.util.makeBodyUnselectable();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__keyUpHandler = function(event)\r\n\t{\r\n\t\tif(this.util.getKeyUnicode(event) === this.util.KEYCODE.CTRL)\r\n\t\t{\r\n\t\t\tthis.__isCtrlPressed = false;\r\n\t\t}\r\n\t\tif(this.util.getKeyUnicode(event) === this.util.KEYCODE.SHIFT)\r\n\t\t{\r\n\t\t\tthis.__isShiftPressed = false;\r\n\t\t\tthis.util.makeBodySelectable();\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__keyBoardNavigationHandler = function(event,direction)\r\n\t{\r\n\t\tvar self = this;\r\n\t\tvar lastIndex = this.__navigationIndex;\r\n\t\tvar currentIndex = this.__navigationIndex;\r\n\t\t(direction === this.NAVIGATION_UP) ? currentIndex--:currentIndex++;\r\n\t\twhile(!this.__isMouseHoverAllowed(currentIndex))\r\n\t\t{\r\n\t\t\t(direction === this.NAVIGATION_UP) ? currentIndex--:currentIndex++;\r\n\t\t}\r\n\t\tvar endHandler = function()\r\n\t\t{\r\n\t\t\tself.__navigationIndex = currentIndex;\r\n\t\t\tvar listItem = self.__getkeyboardNavigationListItem();\r\n\t\t\tvar index = -1;\r\n\t\t\tvar item = null;\r\n\t\t\tif(listItem)\r\n\t\t\t{\r\n\t\t\t\tvar source = self.__objGrid.__getFlatSource();\r\n\t\t\t\tindex = self.__getIndexFromTarget(listItem);\r\n\t\t\t\titem = self.__getItemByIndex(index, source);\r\n\t\t\t}\r\n\t\t\tself.util.dispatchEvent(self.__baseComponent,self.ITEM_NAVIGATED,item,{index:index});\r\n\t\t\tself.__lastNavigationDirection = null;\r\n\t\t};\r\n\t\tif(this.__enableVirtualScroll)\r\n\t\t{\r\n\t\t\t\r\n\t\t\tvar virtualHandler = function()\r\n\t\t\t{\r\n\t\t\t\t//self.__setVirtualRowHover.call(self,index);\r\n\t\t\t\tvar item = self.__getVisibleItemByIndex.call(self,null,currentIndex);\r\n\t\t\t\tif(item)\r\n\t\t\t\t{\r\n\t\t\t\t\tvar index = item[self.__fieldIndex];\r\n\t\t\t\t\tself.__setVirtualRowHoverField.call(self,index);\r\n\t\t\t\t\tself.__virtualRowHover.call(self);\r\n\t\t\t\t\tendHandler();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tthis.scrollToIndex(currentIndex,false);\r\n\t\t\t\r\n\t\t\tsetTimeout(function()\r\n\t\t\t{ \r\n\t\t\t\tvirtualHandler();\r\n\t\t\t},0);\r\n\t\t\t//this.__setVirtualRowHover(currentIndex);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tvar listItem = this.__getListItemFromContainer(lastIndex - this.__startArrayElement);\r\n\t\t\tvar currentListItem = this.__getListItemFromContainer(currentIndex - this.__startArrayElement);\r\n\t\t\t//var listItem = this.__getListItemByIndex(lastIndex - this.__startArrayElement);\r\n\t\t\t//var currentListItem = this.__getListItemByIndex(currentIndex - this.__startArrayElement);\r\n\t\t\tif(currentListItem)\r\n\t\t\t{\r\n\t\t\t\tthis.util.removeStyleClass(listItem,\"nsListItemHover\");\r\n\t\t\t\tthis.util.addStyleClass(currentListItem,\"nsListItemHover\");\r\n\t\t\t\tthis.__refreshScrollPosition(currentListItem,direction);\r\n\t\t\t\tendHandler();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tevent.preventDefault();\r\n\t\treturn false;\r\n\t};\r\n\t\r\n\tNSList.prototype.__keyBoardSelectionHandler = function(event,direction)\r\n\t{\r\n\t\tif(this.__isRowSelected(this.__selectedIndex))\r\n\t\t{\r\n\t\t\tthis.__markRowUnselected(this.__selectedIndex);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.__markRowSelected(this.__selectedIndex);\r\n\t\t}\r\n\t\tif(direction === this.NAVIGATION_DOWN)\r\n\t\t{\r\n\t\t\tif(this.__enableVirtualScroll)\r\n\t\t\t{\r\n\t\t\t\tthis.scrollToIndex(this.__selectedIndex,false);\r\n\t\t\t}\r\n\t\t\telse if(Math.floor(this.__selectedIndex % this.__pageSize) === 0)\r\n\t\t\t{\r\n\t\t\t\tvar listItem = this.__getListItemByIndex(this.__selectedIndex);\r\n\t\t\t\tthis.__refreshScrollPosition(listItem,this.NAVIGATION_DOWN);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if(direction === this.NAVIGATION_UP)\r\n\t\t{\r\n\t\t\tif(this.__enableVirtualScroll)\r\n\t\t\t{\r\n\t\t\t\tthis.scrollToIndex(this.__selectedIndex,false);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvar listItem = this.__getListItemByIndex(this.__selectedIndex);\r\n\t\t\t\tthis.__refreshScrollPosition(listItem,this.NAVIGATION_UP);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.__lastNavigationDirection = direction;\r\n\t\tevent.preventDefault();\r\n\t\treturn false;\r\n\t};\r\n\t\r\n\tNSList.prototype.__refreshScrollPosition = function(listItem,direction)\r\n\t{\r\n\t\tif(!this.__isElementInView(listItem))\r\n\t\t{\r\n\t\t\tthis.__scrollToListItem(listItem);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__isElementInView = function(listItem)\r\n\t{\r\n\t\tvar cellBottom = 0;\r\n\t    var parentBottom = 0;\r\n\t    var cellTop = 0;\r\n\t    var parentTop = 0;\r\n\t\tif(listItem)\r\n\t\t{\r\n\t\t\tvar scrollParent = this.__divOuterContainer;\r\n\t\t\tvar listChild = listItem.querySelector(\".nsListChild\");\r\n\t\t\tif(scrollParent && listChild)\r\n\t\t\t{\r\n\t\t\t\tvar cellRect = listChild.getBoundingClientRect();\r\n\t            parentTop = 0;\r\n\t            var rectScrollParent = scrollParent.getBoundingClientRect();\r\n\t            parentBottom = rectScrollParent.height;\r\n\t            cellTop =  cellRect.top - rectScrollParent.top;\r\n\t            cellBottom = cellTop + cellRect.height;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn cellBottom <= parentBottom && cellTop >= parentTop;\r\n\t};\r\n\t\r\n\tNSList.prototype.__scrollToListItem = function(listItem)\r\n\t{\r\n\t\tif(listItem)\r\n\t\t{\r\n\t\t\tvar rectCell = listItem.getBoundingClientRect();\r\n\t\t\tvar rectParentContainer = this.__divParentContainer.getBoundingClientRect();\r\n\t        var scrollTop = rectCell.top - rectParentContainer.top;\r\n\t        this.__divOuterContainer.scrollTop = scrollTop;\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__getkeyboardNavigationListItem = function()\r\n\t{\r\n\t\tvar listItem = null;\r\n\t\tif(this.__enableVirtualScroll)\r\n\t\t{\r\n\t\t\tlistItem = this.__listContainer.querySelector(\".nsListItemHover\");\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tlistItem = this.__getListItemFromContainer(this.__navigationIndex);\r\n\t\t}\r\n\t\treturn listItem;\r\n\t};\r\n\t\r\n\tNSList.prototype.__isMouseHoverAllowed = function(index)\r\n\t{\r\n\t\tvar item = this.__getItemByIndex(index);\r\n\t\tif(item)\r\n\t\t{\r\n\t\t\treturn !item[this.__fieldDisableHover];\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\t\r\n\tNSList.prototype.__markRowSelected= function(index)\r\n\t{\r\n\t\tif(index > -1)\r\n\t    {\r\n\t        if(!this.__isRowSelected(index))\r\n\t        {\r\n\t        \tthis.__setMultiSelectedVars(index,true);\r\n\t            this.__setValuesForSelectedRow(index);\r\n\t        \tif(this.__enableVirtualScroll)\r\n\t        \t{\r\n\t        \t\tthis.__virtualRowSelection();\r\n\t        \t}\r\n\t        \telse\r\n\t        \t{\r\n\t        \t\tvar listItem = this.__getListItemByIndex(index);\r\n\t            \tthis.util.addStyleClass(listItem,\"nsListItemSelected\"); \r\n\t        \t}\r\n\t        }\r\n\t    }\r\n\t};\r\n\t\r\n\tNSList.prototype.__markRowUnselected = function(index)\r\n\t{\r\n\t    if(this.__isRowSelected(index) && this.__isMouseHoverAllowed(index))\r\n\t    {\r\n\t    \tvar isUnselected = this.__setMultiSelectedVars(index,false);\r\n\t        if(isUnselected)\r\n\t        {\r\n\t        \tthis.__setValuesForUnselectedRow(index);\r\n\t        }\r\n\t        if(this.__enableVirtualScroll)\r\n\t    \t{\r\n\t    \t\tthis.__virtualRowSelection();\r\n\t    \t}\r\n\t    \telse\r\n\t    \t{\r\n\t    \t\tvar listItem = this.__getListItemByIndex(index);\r\n\t    \t\tthis.util.removeStyleClass(listItem,\"nsListItemSelected\");\r\n\t    \t}\r\n\t    }\r\n\t};\r\n\t\r\n\tNSList.prototype.__setValuesForSelectedRow = function(index)\r\n\t{\r\n\t\tif(index > -1 && this.__isMouseHoverAllowed(index))\r\n\t\t{\r\n\t\t\tvar item = this.__getItemByIndex(index);\r\n\t\t\tif(item)\r\n\t\t\t{\r\n\t\t\t\titem[this.__fieldSelected] = true;\r\n\t\t\t    this.__selectedIndex = index;\r\n\t\t\t    this.__navigationIndex = index;\r\n\t\t\t    this.util.dispatchEvent(this.__baseComponent,this.ITEM_SELECTED,item,{index:index});\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__setValuesForUnselectedRow = function(index)\r\n\t{\r\n\t\tif(index > -1 && this.__isMouseHoverAllowed(index))\r\n\t\t{\r\n\t\t\tvar item = this.__getItemByIndex(index);\r\n\t\t\tif(item)\r\n\t\t\t{\r\n\t\t\t\titem[this.__fieldSelected] = false;\r\n\t\t    \tthis.util.dispatchEvent(this.__baseComponent,this.ITEM_UNSELECTED,item,{index:index});\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__clearAllRowSelection = function(setIndexVariables)\r\n\t{\r\n\t\tvar size = this.__selectedIndexes.length;\r\n\t    for (var count = size - 1; count >= 0 ; count--)\r\n\t    {\r\n\t    \tvar index = this.__selectedIndexes[count];\r\n\t        this.__markRowUnselected(index);\r\n\t    }\r\n\t    this.__setMultiSelectedVars(-1,true);\r\n\t    if(setIndexVariables)\r\n\t    {\r\n\t    \tthis.__selectedIndex = -1;\r\n\t        this.__navigationIndex = -1;\r\n\t    }\r\n\t};\r\n\t\r\n\tNSList.prototype.__multiSectionHandler = function(lastIndex)\r\n\t{\r\n\t\t if(lastIndex < 0)\r\n\t\t {\r\n\t\t\t return;\r\n\t\t }\r\n\t\t if (this.__selectedIndexes.length === 0)\r\n\t\t {\r\n\t\t\t this.__isRowSelected(lastIndex);\r\n\t\t     return;\r\n\t\t }\r\n\t\t var firstIndex = this.__selectedIndexes[this.__selectedIndexes.length - 1];\r\n\t\t if(lastIndex === firstIndex)\r\n\t\t {\r\n\t\t\t this.__markRowUnselected(lastIndex);\r\n\t\t\t return;\r\n\t\t }\r\n\t\t var isDown = lastIndex > firstIndex;\r\n\t\t var isSelection = !this.__isRowSelected(lastIndex);\r\n\t\t var counter = firstIndex;\r\n\t\t do\r\n\t\t {\r\n\t\t\t  counter = isDown ? (counter + 1) : (counter - 1);\r\n\t\t\t  if (isSelection)\r\n\t\t\t  {\r\n\t\t\t\t  this.__markRowSelected(counter);\r\n\t\t\t  }\r\n\t\t\t  else\r\n\t\t\t  {\r\n\t\t\t\t  this.__markRowUnselected(counter);\r\n\t\t\t  }\r\n\t\t }\r\n\t\t while(counter != lastIndex);\t \r\n\t};\r\n\t\r\n\tNSList.prototype.__setMultiSelectedVars = function(index,add)\r\n\t{\r\n\t\tif(index === -1)\r\n\t\t{\r\n\t\t\tthis.__selectedItems = [];\t\r\n\t\t\tthis.__selectedIndexes = [];\t\r\n\t\t}\r\n\t\telse if(add)\r\n\t\t{\r\n\t\t\tvar data = this.__getItemByIndex(index);\r\n\t\t\tthis.__selectedItems.push(data);\r\n\t\t\tthis.__selectedIndexes.push(index);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tvar isUnselected = false;\r\n\t\t\tfor (var count= 0; count < this.__selectedIndexes.length ; count++)\r\n\t        {\r\n\t            if (this.__selectedIndexes[count] === index)\r\n\t            {\r\n\t                this.__selectedItems.splice(count,1);\r\n\t                this.__selectedIndexes.splice(count,1);\r\n\t                isUnselected = true;\r\n\t                break;\r\n\t            }\r\n\t        }\r\n\t\t\treturn isUnselected;\r\n\t\t}\r\n\t\t\r\n\t\treturn true;\r\n\t};\r\n\t\r\n\tNSList.prototype.__isRowSelected= function(index)\r\n\t{\r\n\t    if(index > -1)\r\n\t    {\r\n\t    \tvar item = this.__getItemByIndex(index);\r\n\t    \tif(item)\r\n\t    \t{\r\n\t    \t\treturn item[this.__fieldSelected];\r\n\t    \t}\r\n\t    }   \r\n\t    return false;\r\n\t};\r\n\t\r\n\t/******************************************************Start of Context Menu*************************************************************/\r\n\tNSList.prototype.__initializeContextMenu = function()\r\n\t{\r\n\t\t//if(!this.__contextMenu)\r\n\t\t//{\r\n\t\t\tvar contextMenuSetting = {parent:this.__listContainer,isContextMenu:true,createRunTime:true,sourceProvider:this.__getContextMenuDataProvider.bind(this),targetType:\"LI\"};\r\n\t\t\tif(this.__contextMenuSetting)\r\n\t\t\t{\r\n\t\t\t\tfor(var key in this.__contextMenuSetting)\r\n\t\t\t\t{\r\n\t\t\t\t\t//grid setting should not be overriden by the users\r\n\t\t\t\t\tif(!contextMenuSetting[key])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontextMenuSetting[key] = this.__contextMenuSetting[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.__contextMenu = new NSMenu(contextMenuSetting);\r\n\t\t//}\r\n\t};\r\n\t\r\n\tNSList.prototype.__getContextMenuDataProvider = function(listItem)\r\n\t{\r\n\t\tif(listItem)\r\n\t\t{\r\n\t\t\tlistItem = this.util.findParent(listItem,\"LI\");\r\n\t\t\tif(listItem)\r\n\t\t\t{\r\n\t\t\t\tvar index = this.__getIndexFromTarget(listItem);\r\n\t\t\t\tvar item = this.__getItemByIndex(index);\r\n\t\t\t\tif(item && this.__contextMenuProvider) \r\n\t\t\t\t{\r\n\t\t\t\t\treturn this.__contextMenuProvider(item,index);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\t/******************************************************End of Context Menu*************************************************************/\r\n\t/******************************Custom Function *************************************/\r\n\tNSList.prototype.__getIndexFromTarget = function(target)\r\n\t{\r\n\t\tif(target)\r\n\t\t{\r\n\t\t\treturn parseInt(target.getAttribute(\"ns-index\"));\r\n\t\t}\r\n\t\treturn -1;\r\n\t};\r\n\t\r\n\tNSList.prototype.__getListItemFromItem = function(item)\r\n\t{\r\n\t\tvar listItem = null;\r\n\t\tif(item)\r\n\t\t{\r\n\t\t\tlistItem = item[this.__fieldItem];\r\n\t\t\tvar index = item[this.__fieldIndex];\r\n\t\t\t//below case is true if row reference has been removed due to virtual scroll \r\n\t\t\tvar listItemRawIndex = this.__getListItemRawIndex(listItem); \r\n\t\t\tif(!listItem || listItemRawIndex === -1)\r\n\t\t\t{\r\n\t\t\t\tvar arrListItem = this.__listContainer.querySelectorAll('[ns-index=\"' + index + '\"]');\r\n\t\t\t\tif(arrListItem && arrListItem.length > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tlistItem = arrListItem[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn listItem;\r\n\t};\r\n\t\r\n\tNSList.prototype.__getListItemByIndex = function(index)\r\n\t{\r\n\t\tif(index > -1)\r\n\t    {\r\n\t    \tvar item = this.__getItemByIndex(index);\r\n\t    \tif(item)\r\n\t    \t{\r\n\t    \t\treturn item[this.__fieldItem];\r\n\t    \t}\r\n\t    }   \r\n\t\treturn null;\r\n\t};\r\n\t\r\n\tNSList.prototype.__getListItemFromContainer = function(index)\r\n\t{\r\n\t\tif(this.__listContainer.children.length > index)\r\n\t\t{\r\n\t\t\treturn this.__listContainer.children[index];\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\t\r\n\tNSList.prototype.__getItemByIndex = function(indexToFind,source)\r\n\t{\r\n\t\tif(!source)\r\n\t\t{\r\n\t\t\tsource = this.__objGrid.__getFlatSource();\r\n\t\t}\r\n\t\tif(source && source.length > 0)\r\n\t\t{\r\n\t\t\tfor(var count = 0;count < source.length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar item = source[count];\r\n\t\t\t\tif(item && item[this.__fieldIndex] === indexToFind)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\t\r\n\tNSList.prototype.__getIndexByItem = function(itemToFind,source)\r\n\t{\r\n\t\tif(!source)\r\n\t\t{\r\n\t\t\tsource = this.__objGrid.__getFlatSource();\r\n\t\t}\r\n\t\tif(itemToFind && source && source.length > 0)\r\n\t\t{\r\n\t\t\tfor(var count = 0;count < source.length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar item = source[count];\r\n\t\t\t\tif(item && item[this.__fieldIndex] === itemToFind[this.__fieldIndex])\r\n\t\t\t\t{\r\n\t\t\t\t\treturn item[this.__fieldIndex];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t};\r\n\t\r\n\tNSList.prototype.__addItem = function(arrItem,atIndex)\r\n\t{\r\n\t\tvar flatSource = this.__objGrid.__getFlatSource();\r\n\t\tif(this.util.isUndefined(atIndex) || atIndex === null)\r\n\t\t{\r\n\t\t\tatIndex = flatSource.length;\r\n\t\t}\r\n\t\tif(arrItem && arrItem.length > 0)\r\n\t\t{\r\n\t\t\tif(this.__listContainer && this.__listContainer.children && this.__listContainer.children.length > 0 && this.__listContainer.children.length < 3)\r\n\t\t\t{\r\n\t\t\t\tfor(var count = 0;count < this.__listContainer.children.length;count++)\r\n\t\t\t\t{\r\n\t\t\t\t\tvar listItem = this.__listContainer.children[count];\r\n\t\t\t\t\tif(listItem.hasAttribute(\"nsNoData\"))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__listContainer.removeChild(listItem);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!this.__addRemoveRowCallInternal)\r\n\t   \t \t{\r\n\t\t\t\tthis.__objGrid.__setWrapperSource(arrItem,atIndex,-1,0,true);\r\n\t   \t \t};\r\n\t\t\tvar item = null;\r\n\t\t\tvar length = arrItem.length;\r\n\t\t\tvar index = -1;\r\n\t\t\tfor(var count = 0;count < length;count++)\r\n\t\t\t{\r\n\t\t\t\titem = arrItem[count];\r\n\t\t\t\tindex = atIndex + count;\r\n\t\t\t\tif(item)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__dataSource.splice(index, 0, item);\r\n\t\t\t\t\tthis.__arrWrapper.splice(index, 0, item);\r\n\t\t\t\t\tthis.__arrInternalSource.splice(index, 0, item);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t/*flatSource = this.__objGrid.__getFlatSource();\r\n\t\t\tthis.__updateSourceIndex(flatSource);*/\r\n\t\t\tfor(var count = 0;count < length;count++)\r\n\t\t\t{\r\n\t\t\t\titem = arrItem[count];\r\n\t\t\t\tif(this.__enableVirtualScroll)\r\n\t\t\t\t{\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__createListAt(item,item[this.__fieldIndex]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__moveItem = function(arrItem,toIndex)\r\n\t{\r\n\t\tif(arrItem && arrItem.length > 0 && !this.util.isUndefined(toIndex) && toIndex !== null)\r\n\t\t{\r\n\t\t\tvar item = null;\r\n\t\t\tvar length = arrItem.length;\r\n\t\t\tvar index = -1;\r\n\t\t\tvar fromIndex = -1;\r\n\t\t\tvar listContainer = this.__listContainer;\r\n\t\t\tvar listItem = null;\r\n\t\t\tfor(var count = length - 1;count >= 0;count--)\r\n\t\t\t{\r\n\t\t\t\titem = arrItem[count];\r\n\t\t\t\tindex = toIndex + count;\r\n\t\t\t\tif(item)\r\n\t\t\t\t{\r\n\t\t\t\t\tfromIndex = item[this.__fieldIndex];\r\n\t\t\t\t\tthis.util.moveArrayItem(this.__dataSource,fromIndex,index);\r\n\t\t\t\t\tthis.util.moveArrayItem(this.__arrWrapper,fromIndex,index);\r\n\t\t\t\t\tthis.util.moveArrayItem(this.__arrInternalSource,fromIndex,index);\r\n\t\t\t\t\tif(this.__enableVirtualScroll)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// donot use item[this.__fieldItem] for getting listItem as after de-serialization the reference get lost \r\n\t\t\t\t\t\t// hence getting the item back from dataSource\r\n\t\t\t\t\t\titem = this.__getItemByIndex(fromIndex);\r\n\t\t\t\t\t\tlistItem = item[this.__fieldItem];\r\n\t\t\t\t\t\tif(listItem)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif(listItem.parentNode === listContainer)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlistContainer.removeChild(listItem);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tindex = (index === 0) ? index : (index - 1);\r\n\t\t\t\t\t\t\tlistContainer.insertBefore(listItem, listContainer.children[index]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__updateSourceIndex = function(source)\r\n\t{\r\n\t\tif(!source)\r\n\t\t{\r\n\t\t\tsource = this.__getAllItems();\r\n\t\t}\r\n\t\tvar item = null;\r\n\t\tvar listItem = null;\r\n\t\tvar length = source.length;\r\n\t\tfor(var count = 0;count < length;count++)\r\n\t\t{\r\n\t\t\titem = source[count];\r\n\t\t\tvar index = this.__enableHierarchical ? (count + 1) : count;\r\n\t\t\titem[this.__fieldIndex] = index;\r\n\t\t\tlistItem = item[this.__fieldItem];\r\n\t\t\tif(listItem && this.util.isElementOfType(listItem,\"li\"))\r\n\t\t\t{\r\n\t\t\t\tlistItem.setAttribute(\"ns-index\",index);\r\n\t\t\t\tvar compArrow = listItem.querySelector(\".nsListArrow\");\r\n\t\t\t\tif(compArrow)\r\n\t\t\t\t{\r\n\t\t\t\t\tcompArrow.setAttribute(\"ns-parent-row-count\",index);\r\n\t\t\t\t\tvar arrowID = this.getID() + \"compArrow\" + index;\r\n\t\t\t\t\tcompArrow.setAttribute(\"id\",arrowID);\r\n\t\t\t\t\tvar compSvg = compArrow.querySelector(\"svg\");\r\n\t\t\t\t\tif(compSvg)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar svgID = arrowID + \"svg\";\r\n\t\t\t\t\t\tcompSvg.setAttribute(\"id\",svgID);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar compUse = compArrow.querySelector(\"use\");\r\n\t\t\t\t\tif(compUse)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar useID = arrowID + \"use\";\r\n\t\t\t\t\t\tcompUse.setAttribute(\"id\",useID);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__createArrow = function(item,parentRowCount,parentElement,isCollapsed)\r\n\t{\r\n\t\t if(parentElement)\r\n\t\t {\r\n\t\t\t var cellArrowParent = this.util.createDiv(null,\"nsListArrowParent\");\r\n\t\t\t var arrowID = this.getID() + \"compArrow\" + parentRowCount;\r\n\t\t\t var compArrow = this.util.createDiv(arrowID,\"nsListArrow\");\r\n\t\t\t compArrow.style.paddingTop = \"3px\";\r\n\t\t\t compArrow.setAttribute(\"ns-parent-row-count\",parentRowCount);\r\n\t\t\t \r\n\t\t\t var objSVG = new NSSvg();\r\n\t\t\t this.__objGrid.__createArrow(compArrow,objSVG,arrowID,isCollapsed);\r\n\t\t\t this.util.addEvent(compArrow,\"click\",this.__arrowClickHandler.bind(this));\r\n\t\t\t cellArrowParent.appendChild(compArrow);\r\n\t\t\t parentElement.appendChild(cellArrowParent);\r\n\t\t\t item[this.__fieldItemArrow] = compArrow;\r\n\t\t\t return compArrow;\r\n\t\t }\r\n\t\t return null;\r\n\t};\r\n\t\r\n\tNSList.prototype.__setArrowDirection = function(compArrow,isCollapsed)\r\n\t{\r\n\t\tif(compArrow)\r\n\t\t{\r\n\t\t\tvar objSVG = new NSSvg();\r\n\t\t\tvar useID = compArrow.getAttribute(\"id\") + \"use\";\r\n\t\t\tthis.__objGrid.__setArrowDirection(objSVG,useID,isCollapsed);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__isArrowCollapsed = function(compArrow)\r\n\t{\r\n\t\tif(compArrow && compArrow.hasAttribute(\"ns-parent-row-count\"))\r\n\t\t{\r\n\t\t\tvar rowIndex = parseInt(compArrow.getAttribute(\"ns-parent-row-count\"));\r\n\t\t\tvar item = this.__getItemByIndex(rowIndex);\r\n\t\t\tif(item)\r\n\t\t\t{\r\n\t\t\t\treturn item[this.__fieldIsCollapsed];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\t\r\n\tNSList.prototype.__arrowClickHandler = function(event)\r\n\t{\r\n\t\tevent = this.util.getEvent(event);\r\n\t\tvar target = this.util.getTarget(event);\r\n\t\ttarget = this.util.findParent(target,\"DIV\");\r\n\t\tif(target && target.hasAttribute(\"ns-parent-row-count\"))\r\n\t\t{\r\n\t\t\tvar rowIndex = target.getAttribute(\"ns-parent-row-count\");\r\n\t\t\tvar isCollapse = this.__isArrowCollapsed(target);\r\n\t\t\trowIndex = parseInt(rowIndex);\r\n\t\t\tif(rowIndex > -1)\r\n\t\t\t{\r\n\t\t\t\tvar item = this.__getItemByIndex(rowIndex);\r\n\t\t\t\tif(item[this.__childField]  && item[this.__childField].length > 0)\r\n\t\t        {\r\n\t\t\t\t\tthis.__showHideRow(rowIndex,target,!isCollapse);\r\n\t\t        }\r\n\t\t\t\telse \r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__objGrid.__handleOnDemandClick(item,event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevent.stopImmediatePropagation();\r\n\t};\r\n\t\r\n\tNSList.prototype.__expandCollapseAll = function(isCollapse)\r\n\t{\r\n\t\tif(!this.__enableVirtualScroll && this.__getTotalListItems() < this.__totalRecords)\r\n\t\t{\r\n\t\t\tthis.util.warning(\"nsList\",\"Please let all the items to render.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar dataSource = this.__arrInternalSource;\r\n\t\tif(dataSource && dataSource.length > 0)\r\n\t\t{\r\n\t\t\tif(this.__enableVirtualScroll)\r\n\t\t\t{\r\n\t\t\t\tthis.__expandCollapseAllVirtual(dataSource,isCollapse);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.__expandCollapseAllNormal(dataSource,isCollapse);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__expandCollapseAllNormal = function(dataSource,isCollapse)\r\n\t{\r\n\t\tfor(var count = 0;count < dataSource.length;count++)\r\n\t\t{\r\n\t\t\tvar item = dataSource[count];\r\n\t\t\t//setting __fieldIsCollapsed here assuming that __showHideAllArrows() will be called after this function\r\n\t\t\titem[this.__fieldIsCollapsed] = isCollapse;\r\n\t\t\tif(parseInt(item[this.__fieldItemLevel]) > 0)\r\n\t\t\t{\r\n\t\t\t\tvar row = item[this.__fieldItem];\r\n\t\t\t\tif(isCollapse)\r\n\t\t\t\t{\r\n\t\t\t\t\trow.style.display = \"none\";\r\n\t\t\t\t\titem[this.__fieldItemVisible] = false;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\trow.style.display = \"\";\r\n\t\t\t\t\titem[this.__fieldItemVisible] = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.__showHideAllArrows(isCollapse);\r\n\t};\r\n\t\r\n\tNSList.prototype.__expandCollapseAllVirtual = function(dataSource,isCollapse)\r\n\t{\r\n\t\tfor(var count = 0;count < dataSource.length;count++)\r\n\t\t{\r\n\t\t\tvar item = dataSource[count];\r\n\t\t\t//setting __fieldIsCollapsed here assuming that __showHideAllArrows() will be called after this function\r\n\t\t\titem[this.__fieldIsCollapsed] = isCollapse;\r\n\t\t\tif(parseInt(item[this.__fieldItemLevel]) > 0)\r\n\t\t\t{\r\n\t\t\t\tif(isCollapse)\r\n\t\t\t\t{\r\n\t\t\t\t\titem[this.__fieldItemVisible] = false;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\titem[this.__fieldItemVisible] = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.__showHideAllArrows(isCollapse);\r\n\t\tthis.__updateVisibleIndex(null,0);\r\n\t\tthis.__setNSVirtualScroll(this.__arrInternalSource);\r\n\t};\r\n\t\r\n\tNSList.prototype.__showHideRow = function(rowIndex,compArrow,isCollapse)\r\n\t{\r\n\t\tif(rowIndex > -1)\r\n\t\t{\r\n\t\t\tvar item = this.__getItemByIndex(rowIndex);\r\n\t\t\tif(!compArrow)\r\n\t\t\t{\r\n\t\t\t\tcompArrow = this.__getArrow(item[this.__fieldIndex]);\r\n\t\t\t}\r\n\t\t\tvar rowLevel = parseInt(item[this.__fieldItemLevel]);\r\n\t\t\tvar arrChildItems = [];\r\n\t\t\tif(item && item[this.__fieldHasChild])\r\n\t\t\t{\r\n\t\t\t\tvar startIndex = 0;\r\n\t\t\t\tif(isCollapse)\r\n\t\t\t\t{\r\n\t\t\t\t\tarrChildItems = this.__arrInternalSource;\r\n\t\t\t\t\tstartIndex = rowIndex;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tarrChildItems = this.__getImmediateChildItems(arrChildItems, item);\r\n\t\t\t\t}\r\n\t\t\t\tif(this.__enableVirtualScroll)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__showHideRowVirtual(item,arrChildItems,startIndex,rowLevel,isCollapse);\r\n\t\t\t\t\titem[this.__fieldIsCollapsed] = isCollapse;\r\n\t\t\t\t\t//this.__updateItemInSource(item);\r\n\t\t\t\t\tthis.__setNSVirtualScroll(this.__arrInternalSource);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__showHideRowNormal(item,arrChildItems,startIndex,rowLevel,isCollapse);\r\n\t\t\t\t\tthis.__setArrowDirection(compArrow,isCollapse);\r\n\t\t\t\t\titem[this.__fieldIsCollapsed] = isCollapse;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__showHideRowNormal = function(item,arrChildItems,startIndex,rowLevel,isCollapse)\r\n\t{\r\n\t\tif(arrChildItems && arrChildItems.length > 0)\r\n\t\t{\r\n\t\t\tif(isCollapse)\r\n\t\t\t{\r\n\t\t\t\tvar retIndex = this.__getActualIndex(arrChildItems,startIndex);\r\n\t\t\t\tif(retIndex !== startIndex)\r\n\t\t\t\t{\r\n\t\t\t\t\tstartIndex = (retIndex + 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar rowItem = null;\r\n\t\t\tfor(var count = startIndex;count < arrChildItems.length;count++)\r\n\t\t\t{\r\n\t\t\t\trowItem = arrChildItems[count];\r\n\t\t\t\tvar row = rowItem[this.__fieldItem];\r\n\t\t\t\tif(!row)\r\n\t\t\t\t{\r\n\t\t\t\t\trow = this.__createListAt(rowItem,rowItem[this.__fieldIndex] - 1,false);\r\n\t\t\t\t\trowItem[this.__fieldItem] = row;\r\n\t\t\t\t\tthis.__updateSourceIndex();\r\n\t\t\t\t}\r\n\t\t\t\tif(isCollapse)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(rowLevel >= parseInt(rowItem[this.__fieldItemLevel]))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\trow.style.display = \"none\";\r\n\t\t\t\t\trowItem[this.__fieldItemVisible] = false;\r\n\t\t\t\t\tif(rowItem[this.__fieldHasChild])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trowItem[this.__fieldIsCollapsed] = true;\r\n\t\t\t\t\t\tif(rowItem[this.__fieldItemArrow])\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvar divArrow = rowItem[this.__fieldItemArrow];\r\n\t\t\t\t\t\t\tif(divArrow)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.__setArrowDirection(divArrow,true);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\trow.style.display = \"\";\r\n\t\t\t\t\trowItem[this.__fieldItemVisible] = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__showHideRowVirtual = function(item,arrChildItems,startIndex,rowLevel,isCollapse)\r\n\t{\r\n\t\tif(arrChildItems && arrChildItems.length > 0)\r\n\t\t{\r\n\t\t\tif(isCollapse)\r\n\t\t\t{\r\n\t\t\t\tvar retIndex = this.__getActualIndex(arrChildItems,startIndex);\r\n\t\t\t\tif(retIndex !== startIndex)\r\n\t\t\t\t{\r\n\t\t\t\t\tstartIndex = (retIndex + 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor(var count = startIndex;count < arrChildItems.length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar rowItem = arrChildItems[count];\r\n\t\t\t\tif(isCollapse)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(rowLevel >= parseInt(rowItem[this.__fieldItemLevel]))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\trowItem[this.__fieldItemVisible] = false;\r\n\t\t\t\t\tif(rowItem[this.__fieldHasChild])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trowItem[this.__fieldIsCollapsed] = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\trowItem[this.__fieldItemVisible] = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar index = item[this.__fieldIndex];\r\n\t\t\tthis.__updateVisibleIndex(null,index - 1);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__showHideAllArrows = function(isCollapse)\r\n\t{\r\n\t\tvar arrDivs = this.__getAllArrows();\r\n\t\tif(arrDivs && arrDivs.length > 0)\r\n\t\t{\r\n\t\t\tfor(var count = 0;count < arrDivs.length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar div = arrDivs[count];\r\n\t\t\t\tif(div && div.hasAttribute(\"ns-parent-row-count\"))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__setArrowDirection(div,isCollapse);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__getAllItems = function()\r\n\t{\r\n\t\treturn this.__objGrid.__getFlatSource();\r\n\t};\r\n\t\r\n\tNSList.prototype.__updateListItemText = function(listItem,item,index)\r\n\t{\r\n\t\treturn this.__objGrid.__updateListItemText(listItem,item,index);\r\n\t};\r\n\t\r\n\tNSList.prototype.__getImmediateChildItems = function(arrItems,item)\r\n\t{\r\n\t\tif(!arrItems)\r\n\t\t{\r\n\t\t\tarrItems = [];\r\n\t\t}\r\n\t\tif(item && item[this.__fieldHasChild])\r\n\t\t{\r\n\t\t\tvar arrChild = this.__arrInternalSource;\r\n\t\t\tvar rowLevel = parseInt(item[this.__fieldItemLevel]);\r\n\t\t\tvar startIndex = item[this.__fieldIndex];\r\n\t\t\tvar retIndex = this.__getActualIndex(arrChild,startIndex);\r\n\t\t\tif(retIndex !== startIndex)\r\n\t\t\t{\r\n\t\t\t\tstartIndex = (retIndex + 1);\r\n\t\t\t}\r\n\t\t\tvar length = arrChild.length;\r\n\t\t\tfor(var count = startIndex;count < length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar itemChild = arrChild[count];\r\n\t\t\t\tvar childRowLevel = parseInt(itemChild[this.__fieldItemLevel]);\r\n\t\t\t\tif(rowLevel >= childRowLevel)\r\n\t\t\t\t{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif((rowLevel + 1) === childRowLevel)\r\n\t\t\t\t{\r\n\t\t\t\t\tarrItems.push(itemChild);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn arrItems;\r\n\t};\r\n\t\r\n\t//generally used for Filter condition\r\n\tNSList.prototype.__getActualIndex = function(arrChild,startIndex,addCompareOne)\r\n\t{\r\n\t\t//(startIndex + 1) as __fieldIndex starts from 1\r\n\t\t//if(arrChild && arrChild.length < startIndex || arrChild[startIndex][this.__fieldIndex] !== (startIndex + 1))\r\n\t\tif(arrChild && arrChild.length > startIndex && arrChild[startIndex][this.__fieldIndex] !== (startIndex + 1))\r\n\t\t{\r\n\t\t\tvar compareIndex = startIndex;\r\n\t\t\tif(addCompareOne)\r\n\t\t\t{\r\n\t\t\t\tcompareIndex += 1;\r\n\t\t\t}\r\n\t\t\tvar rowItem = null;\r\n\t\t\tfor(var count = 0;count < arrChild.length;count++)\r\n\t\t\t{\r\n\t\t\t\trowItem = arrChild[count];\r\n\t\t\t\tif(rowItem[this.__fieldIndex] === compareIndex)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn count;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn startIndex;\r\n\t};\r\n\t\r\n\t\r\n\tNSList.prototype.__getAllChildItems = function(arrItems,item)\r\n\t{\r\n\t\tif(!arrItems)\r\n\t\t{\r\n\t\t\tarrItems = [];\r\n\t\t}\r\n\t\tif(item && item[this.__fieldHasChild])\r\n\t\t{\r\n\t\t\tvar arrChild = this.__arrInternalSource;\r\n\t\t\tvar rowLevel = parseInt(item[this.__fieldItemLevel]);\r\n\t\t\tvar startIndex = item[this.__fieldIndex];\r\n\t\t\tvar length = arrChild.length;\r\n\t\t\tfor(var count = startIndex;count < length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar itemChild = arrChild[count];\r\n\t\t\t\tif(rowLevel >= parseInt(itemChild[this.__fieldItemLevel]))\r\n\t\t\t\t{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tarrItems.push(itemChild);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn arrItems;\r\n\t};\r\n\t\r\n\tNSList.prototype.__getAllVisibleItems = function()\r\n\t{\r\n\t\tvar totalRecords = 0;\r\n\t\tvar arrItems = this.__getAllItems();\r\n\t\tif(arrItems && arrItems.length > 0)\r\n\t\t{\r\n\t\t\tfor(var count = 0;count < arrItems.length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar item = arrItems[count];\r\n\t\t\t\tif(item && item[this.__fieldItemVisible])\r\n\t\t\t\t{\r\n\t\t\t\t\ttotalRecords += 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn totalRecords;\r\n\t};\r\n\t\r\n\tNSList.prototype.__getFirstVisibleItemBeforeIndex = function(itemIndex)\r\n\t{\r\n\t\tvar arrItems = this.__getAllItems();\r\n\t\tif(arrItems && arrItems.length > 0)\r\n\t\t{\r\n\t\t\tvar retIndex = this.__getActualIndex(arrItems,itemIndex);\r\n\t\t\tif(retIndex !== itemIndex)\r\n\t\t\t{\r\n\t\t\t\titemIndex = (retIndex + 1);\r\n\t\t\t}\r\n\t\t\tfor(var count = itemIndex;count >= 0;count--)\r\n\t\t\t{\r\n\t\t\t\tvar item = arrItems[count];\r\n\t\t\t\tif(item && item[this.__fieldItemVisible] && item[this.__fieldVisibleIndex] > -1)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\t\r\n\tNSList.prototype.__getVisibleItemByIndex = function(source,index)\r\n\t{\r\n\t\tvar arrItems = source;\r\n\t\tif(!arrItems)\r\n\t\t{\r\n\t\t\tarrItems = this.__getAllItems();\r\n\t\t}\r\n\t\tif(arrItems && arrItems.length > 0)\r\n\t\t{\r\n\t\t\tvar self = this; \r\n\t\t\tvar findItem = function(itemCompare)\r\n\t\t\t{\r\n\t\t\t\t return (itemCompare[self.__fieldVisibleIndex] === (index + 1));\r\n\t\t\t};\r\n\t\t\treturn arrItems.find(findItem);\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\t\r\n\tNSList.prototype.__updateVisibleIndex = function(source,fromIndex)\r\n\t{\r\n\t\tvar arrItems = source;\r\n\t\tif(!arrItems)\r\n\t\t{\r\n\t\t\tarrItems = this.__getAllItems();\r\n\t\t}\r\n\t\tif(this.util.isUndefinedOrNull(fromIndex))\r\n\t\t{\r\n\t\t\tfromIndex = 0;\r\n\t\t}\r\n\t\tif(arrItems && arrItems.length > 0)\r\n\t\t{\r\n\t\t\tvar visibleRowIndex = 1;\r\n\t\t\tif(fromIndex > 0)\r\n\t\t\t{\r\n\t\t\t\tvar visibleItem = this.__getFirstVisibleItemBeforeIndex(fromIndex);\r\n\t\t\t\tif(visibleItem)\r\n\t\t\t\t{\r\n\t\t\t\t\tvisibleRowIndex = visibleItem[this.__fieldVisibleIndex];\r\n\t\t\t\t\tfromIndex = visibleItem[this.__fieldIndex] - 1;\r\n\t\t\t\t\tvar retIndex = this.__getActualIndex(arrItems,fromIndex,true);\r\n\t\t\t\t\tif(retIndex !== fromIndex)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfromIndex = retIndex;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar length = arrItems.length;\r\n\t\t\tvar item = null;\r\n\t\t\tfor(var count = fromIndex; count < length; count++)\r\n\t\t\t{\r\n\t\t\t\titem = arrItems[count];\r\n\t\t\t\tif(item)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(item[this.__fieldItemVisible])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\titem[this.__fieldVisibleIndex] = visibleRowIndex;\r\n\t\t\t\t\t\tvisibleRowIndex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\titem[this.__fieldVisibleIndex] = -1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__updateVisibleIndexByListItem = function(source,arrAllItems)\r\n\t{\r\n\t\tif(source)\r\n\t\t{\r\n\t\t\tvar arrItems = arrAllItems;\r\n\t\t\tif(!arrItems)\r\n\t\t\t{\r\n\t\t\t\tarrItems = this.__getAllItems();\r\n\t\t\t}\r\n\t\t\tvar length = source.length;\r\n\t\t\tvar item = null;\r\n\t\t\tvar objVisibleIndex = {};\r\n\t\t\tfor(var count = 0; count < length; count++)\r\n\t\t\t{\r\n\t\t\t\titem = source[count];\r\n\t\t\t\tif(item)\r\n\t\t\t\t{\r\n\t\t\t\t\tvar index = item[this.__fieldIndex];\r\n\t\t\t\t\tobjVisibleIndex[index] = \"NSList\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(arrItems && arrItems.length > 0)\r\n\t\t\t{\r\n\t\t\t\tlength = arrItems.length;\r\n\t\t\t\titem = null;\r\n\t\t\t\tvar visibleRowIndex = 1;\r\n\t\t\t\tfor(var count = 0; count < length; count++)\r\n\t\t\t\t{\r\n\t\t\t\t\titem = arrItems[count];\r\n\t\t\t\t\tvar index = item[this.__fieldIndex];\r\n\t\t\t\t\tif(this.util.isUndefinedOrNull(objVisibleIndex[index]))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\titem[this.__fieldVisibleIndex] = -1;\r\n\t\t\t\t\t\titem[this.__fieldItemVisible] = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\titem[this.__fieldVisibleIndex] = visibleRowIndex;\r\n\t\t\t\t\t\titem[this.__fieldItemVisible] = true;\r\n\t\t\t\t\t\tvisibleRowIndex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__updateIndexForAllItems = function(source)\r\n\t{\r\n\t\tif(!source)\r\n\t\t{\r\n\t\t\tsource = this.__getAllItems();\r\n\t\t}\r\n\t\tvar length = source.length;\r\n\t\tvar item = null;\r\n\t\tfor(var count = 0; count < length; count++)\r\n\t\t{\r\n\t\t\titem = source[count];\r\n\t\t\tif(item)\r\n\t\t\t{\r\n\t\t\t\titem[this.__fieldIndex] = count;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__getArrow = function(rowCount)\r\n\t{\r\n\t\tvar arrDivs = this.__getAllArrows();\r\n\t\tif(arrDivs && arrDivs.length > 0)\r\n\t\t{\r\n\t\t\tfor(var count = 0;count < arrDivs.length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar div = arrDivs[count];\r\n\t\t\t\tif(div && div.hasAttribute(\"ns-parent-row-count\"))\r\n\t\t\t\t{\r\n\t\t\t\t\tvar rowParentCount = div.getAttribute(\"ns-parent-row-count\");\r\n\t\t\t\t\tif(rowParentCount && rowParentCount == rowCount)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn div;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\t\r\n\tNSList.prototype.__getAllArrows = function(divParent)\r\n\t{\r\n\t\tif(!divParent)\r\n\t\t{\r\n\t\t\tdivParent = this.__listContainer;\r\n\t\t}\r\n\t\treturn divParent.querySelectorAll(\".nsListArrow\");\r\n\t};\r\n\t\r\n\tNSList.prototype.__getTotalListItems = function()\r\n\t{\r\n\t\tif(this.__listContainer && this.__listContainer.children)\r\n\t\t{\r\n\t\t\treturn this.__listContainer.children.length;\r\n\t\t}\r\n\t\treturn 0;\r\n\t};\r\n\t\r\n\tNSList.prototype.__updateTotalRecords = function(totalCount)\r\n\t{\r\n\t\tif(this.util.isUndefined(totalCount) || totalCount === null)\r\n\t\t{\r\n\t\t\ttotalCount = this.__arrInternalSource.length; \r\n\t\t}\r\n\t\tthis.__totalRecords = totalCount;\r\n\t};\r\n\t\r\n\tNSList.prototype.__getListItemRawIndex = function(listItem)\r\n\t{\r\n\t\tif(listItem && listItem.parentNode)\r\n\t\t{\r\n\t\t\tvar index = [].slice.call(listItem.parentNode.children).indexOf(listItem);\r\n\t\t\treturn index;\r\n\t\t}\r\n\t\treturn -1;\r\n\t};\r\n\t\r\n\tNSList.prototype.__checkForVirtualMode = function()\r\n\t{\r\n\t\tif(this.__enableVirtualScroll)\r\n\t\t{\r\n\t\t\tif(this.__enablePagination)\r\n\t\t\t{\r\n\t\t\t\tthis.__enableVirtualScroll = false;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSList.prototype.__setVirtualScroll_ScrollTop = function(scrollTop)\r\n\t{\r\n\t\tif(this.__enableCustomScrollBar)\r\n\t\t{\r\n\t\t\tif(this.__scroller)\r\n\t\t\t{\r\n\t\t\t\tthis.__scroller.setScrollTop(scrollTop);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tvar NSFlatList = function(nsList)\r\n\t{\r\n\t\tthis.__nsList = nsList;\r\n\t\tthis.util = nsList.util;\r\n\t\t/********************************Common Functions for Grid ****************************************/\r\n\t\tthis.__initialize = function()\r\n\t\t{\r\n\t\t};\r\n\t\t\r\n\t\tthis.dataSource = function(source)\r\n\t\t{\r\n\t\t\tthis.__nsList.__arrWrapper = this.__nsList.__dataSource.slice(0);\r\n\t\t\tthis.__setWrapperSource(this.__nsList.__arrWrapper,0,-1,0,true);\r\n\t\t\tthis.__nsList.__arrInternalSource = this.__nsList.__arrWrapper.slice(0);\r\n\t\t\tthis.__nsList.__updateTotalRecords();\r\n\t\t};\r\n\t\t\r\n\t\tthis.addItemsAsChildren = function(item,arrChildren)\r\n\t\t{\r\n\t\t};\r\n\t\t\r\n\t\tthis.__setWrapperSource = function(source,offset,parentIndex,level,setFieldIndex)\r\n\t\t{\r\n\t\t\tif(source)\r\n\t\t\t{\r\n\t\t\t\tif(!offset)\r\n\t\t\t\t{\r\n\t\t\t\t\toffset = 0;\r\n\t\t\t\t}\r\n\t\t\t\tvar length = source.length;\r\n\t\t\t\tvar count = 0;\r\n\t\t\t\tvar item = null;\r\n\t\t\t\tvar index = -1; \r\n\t\t\t\tfor (count = 0; count < length; count++) \r\n\t\t\t\t{\r\n\t\t\t\t\titem = source[count];\r\n\t\t\t\t\tindex = offset + count;\r\n\t\t\t\t\tthis.__setItemProperty(item,index,setFieldIndex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\tthis.__createList= function(dataSet,startIndex,endIndex)\r\n\t\t{\r\n\t\t\tvar item = null;\r\n\t\t\tvar index = -1;\r\n\t\t    for(var count = startIndex; count < endIndex; count++)\r\n\t\t     {\r\n\t    \t\titem = dataSet[count];\r\n\t    \t\tindex =  item[this.__nsList.__fieldIndex];\r\n\t    \t\tthis.__nsList.__updateItem(item,index);\r\n\t    \t\tthis.__nsList.__createListItem(item);\r\n\t\t     }\r\n\t\t};\r\n\t\t\r\n\t\tthis.__createListItem = function(listItem,item)\r\n\t\t{\r\n\t\t};\r\n\t\r\n\t\tthis.__addSVGInPage = function()\r\n\t\t{\r\n\t\t};\r\n\t\r\n\t\tthis.__setListItemProperties = function(listItem,item)\r\n\t\t{\r\n\t\t\tif(listItem && item)\r\n\t\t\t{\r\n\t\t\t\tvar index = item[this.__nsList.__fieldIndex];\r\n\t\t\t\tlistItem.setAttribute(\"ns-index\",index);\r\n\t\t\t\titem[this.__nsList.__fieldItem] = listItem;\r\n\t\t\t\tthis.util.removeAllChildren(listItem);\r\n\t\t\t\tvar divCell = this.util.createDiv(null,\"nsListChild\");\r\n\t\t\t\tthis.util.addStyleClass(divCell,this.__nsList.__CLASS_CELL_CHILD);\r\n\t\t\t\tlistItem.appendChild(divCell);\r\n\t\t\t\tthis.__nsList.__addCellText(listItem,item,divCell);\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tthis.__updateListItemText = function(listItem,item,index)\r\n\t\t{\r\n\t\t\tif(listItem && item)\r\n\t\t\t{\r\n\t\t\t\tthis.util.removeAllChildren(listItem);\r\n\t\t\t\tthis.__setListItemProperties(listItem,item);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\tthis.__getFlatSource= function()\r\n\t\t{\r\n\t\t\treturn this.__nsList.__arrWrapper;\r\n\t\t};\r\n\t\t/********************************Common Functions for Grid ****************************************/\r\n\t\tthis.__setItemProperty = function(item,rowIndex,setFieldIndex)\r\n\t\t{\r\n\t\t\tif(item)\r\n\t\t\t{\r\n\t\t\t\tif(setFieldIndex)\r\n\t\t\t\t{\r\n\t\t\t\t\titem[this.__nsList.__fieldIndex] = rowIndex;\r\n\t\t\t\t}\r\n\t\t\t\titem[this.__nsList.__fieldVisibleIndex] = rowIndex + 1;\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\tthis.__resetListItem = function(listItem,index,item)\r\n\t\t{\r\n\t\t\tlistItem.style.display = \"\";\r\n\t\t\tlistItem.setAttribute(\"ns-index\",index);\r\n\t\t\tthis.util.removeStyleClass(listItem,\"nsListItemSelected\");\r\n\t\t\tthis.__nsList.__updateItem(item,index);\r\n\t\t\tthis.__setListItemProperties(listItem,item);\r\n\t\t};\r\n\t};\r\n\t\r\n\tvar NSHierarchicalList = function(nsList)\r\n\t{\r\n\t\tthis.__nsList = nsList;\r\n\t\tthis.util = nsList.util;\r\n\t\tthis.__ARROW_COLLAPSE_PATH = \"M 0 9.99994L 6.10352e-005 -3.05176e-005L 5 5.00006L 0 9.99994 Z\";\r\n\t\tthis.__ARROW_EXPANDED_PATH = \"M 0 3.05176e-005L 9.99994 9.15527e-005L 4.99988 5.00003L 0 3.05176e-005 Z\";\r\n\t\tthis.__CLASS_ARROW = \"nsListArrowFill\";\r\n\t\tthis.__rowCounter = -1;\r\n\t\tthis.__enableOnDemandHierarchy = false;\r\n\t\tthis.__onDemandChildDetectionField = \"hasChildren\";\r\n\t\tthis.__onDemandChildFetchCallback = null;\r\n\t\t/********************************Common Functions for Grid ****************************************/\r\n\t\tthis.__initialize = function()\r\n\t\t{\r\n\t\t\tvar setting = this.__nsList.__setting;\r\n\t\t\tif(setting.hasOwnProperty(\"enableOnDemandHierarchy\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableOnDemandHierarchy = Boolean.parse(setting[\"enableOnDemandHierarchy\"]);\r\n\t\t\t}\r\n\t\t\tif(this.__enableOnDemandHierarchy)\r\n\t\t\t{\r\n\t\t\t\tif(setting.hasOwnProperty(\"onDemandChildDetectionField\"))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__onDemandChildDetectionField = setting[\"onDemandChildDetectionField\"];\r\n\t\t\t\t}\r\n\t\t\t\tif(setting.hasOwnProperty(\"onDemandChildFetchCallback\"))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__onDemandChildFetchCallback = setting[\"onDemandChildFetchCallback\"];\r\n\t\t\t\t\tthis.__onDemandChildFetchCallback = this.util.getFunction(this.__onDemandChildFetchCallback);\r\n\t\t\t\t}\r\n\t\t\t\tif(!this.__onDemandChildDetectionField)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.util.throwNSError(\"NSList\",\"Value for onDemandChildDetectionField is not valid\");\r\n\t\t\t\t}\r\n\t\t\t\tif(!this.__onDemandChildFetchCallback)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.util.throwNSError(\"NSList\",\"Value for onDemandChildFetchCallback is not valid\");\r\n\t\t\t\t}\r\n\t\t\t\tif(this.__enableVirtualScroll)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.util.warning(\"NSList\",\"As enableVirtualScroll is true so OnDemandHierarchy will have no impact.\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tthis.dataSource = function(source)\r\n\t\t{\r\n\t\t\tthis.__nsList.__arrWrapper = this.__nsList.__dataSource.slice(0);\r\n\t\t\tthis.__setWrapperSource(this.__nsList.__arrWrapper,0,-1,0,true,true,true);\r\n\t\t\tthis.__nsList.__updateTotalRecords(this.__rowCounter);\r\n\t\t\tthis.__nsList.__arrInternalSource = this.__nsList.__arrFlatHierarchicalSource.slice(0);\r\n\t\t};\r\n\t\t\r\n\t\tthis.addItemsAsChildren = function(item,arrChildren)\r\n\t\t{\r\n\t\t\tif(item && arrChildren && arrChildren.length > 0)\r\n\t\t\t{\r\n\t\t\t\tif(!item[this.__nsList.__childField])\r\n\t\t\t\t{\r\n\t\t\t\t\titem[this.__nsList.__childField] = [];\r\n\t\t\t\t}\r\n\t\t\t\titem[this.__nsList.__childField].push.apply(item[this.__nsList.__childField], arrChildren);\r\n\t\t\t\tthis.__setWrapperSource(this.__nsList.__arrWrapper,0,-1,0,true,false,false);\r\n\t\t\t\tthis.__nsList.__updateTotalRecords(this.__rowCounter);\r\n\t\t\t\tthis.__nsList.__arrInternalSource = this.__nsList.__arrFlatHierarchicalSource.slice(0);\r\n\t\t\t\titem[this.__nsList.__fieldItemVisible] = true;\r\n\t\t\t\titem[this.__nsList.__fieldIsCollapsed] = false;\r\n\t\t   \t\tvar listItem = this.__nsList.__getListItemFromItem(item);\r\n\t\t   \t\tvar rowIndex = this.__nsList.__getIndexByItem(item);\r\n\t\t   \t\tthis.__nsList.__showHideRow(rowIndex,null,false);\r\n\t\t   \t\tconsole.log(this.__nsList.__arrFlatHierarchicalSource);\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tthis.__setWrapperSource = function(source,offset,parentIndex,level,setFieldIndex,setIsCollapsed,setItemVisible)\r\n\t\t{\r\n\t\t\tif(source)\r\n\t\t\t{\r\n\t\t\t\tif(level === 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(!offset)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\toffset = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.__nsList.__arrFlatHierarchicalSource = [];\r\n\t\t\t\t\tthis.__rowCounter = offset;\r\n\t\t\t\t}\r\n\t\t\t\tvar length = source.length;\r\n\t\t\t\tvar count = 0;\r\n\t\t\t\tvar item = null;\r\n\t\t\t\tfor (count = 0; count < length; count++) \r\n\t\t\t\t{\r\n\t\t\t\t\titem = source[count];\r\n\t\t\t\t\tthis.__rowCounter++;\r\n\t\t\t\t\tthis.__nsList.__arrFlatHierarchicalSource.push(item);\r\n\t\t\t\t\tthis.__setItemProperty(item,parentIndex,level,setFieldIndex,setIsCollapsed,setItemVisible);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\tthis.__createList= function(dataSet,startIndex,endIndex)\r\n\t\t{\r\n\t\t\tvar item = null;\r\n\t\t\tvar index = -1;\r\n\t\t    for(var count = startIndex; count < endIndex; count++)\r\n\t\t    {\r\n\t    \t\titem = dataSet[count];\r\n\t    \t\tif(item)\r\n\t    \t\t{\r\n\t    \t\t\tindex =  item[this.__nsList.__fieldIndex];\r\n\t        \t\tthis.__nsList.__updateItem(item,index);\r\n\t        \t\tthis.__nsList.__createListItem(item);\r\n\t    \t\t}\r\n\t\t    }\r\n\t\t};\r\n\t\t\r\n\t\tthis.__createListItem = function(listItem,item)\r\n\t\t{\r\n\t\t};\r\n\t\r\n\t\tthis.__addSVGInPage = function()\r\n\t\t{\r\n\t\t\tvar objSVG = new NSSvg();\r\n\t\t\tobjSVG.addPath(\"svgListArrowDown\",this.__ARROW_EXPANDED_PATH,\"0 0 16 16\");\r\n\t\t\tobjSVG.addPath(\"svgListArrowRight\",this.__ARROW_COLLAPSE_PATH,\"0 0 16 16\");\r\n\t\t};\r\n\t\r\n\t\tthis.__setListItemProperties = function(listItem,item)\r\n\t\t{\r\n\t\t\tif(listItem && item)\r\n\t\t\t{\r\n\t\t\t\tvar index = item[this.__nsList.__fieldIndex];\r\n\t\t\t\tvar level = item[this.__nsList.__fieldItemLevel];\r\n\t\t\t\tvar parentIndex = item[this.__nsList.__fieldParentIndex];\r\n\t\t\t\tlistItem.setAttribute(\"ns-index\",index);\r\n\t\t\t\tlistItem.setAttribute(\"ns-level\",level);\r\n\t\t\t\tif(item[this.__nsList.__fieldHasParent])\r\n\t\t\t    {\r\n\t\t\t\t\tlistItem.setAttribute(\"ns-parent-index\",parentIndex);\r\n\t\t\t    }\r\n\t\t\t\titem[this.__nsList.__fieldItem] = listItem;\r\n\t\t\t\tthis.util.removeAllChildren(listItem);\r\n\t\t\t\tvar divCell = this.util.createDiv(null,\"nsListChild\");\r\n\t\t\t\tlistItem.appendChild(divCell);\r\n\t\t\t\t\r\n\t\t\t\tvar hierarchicalPadding = 0;\r\n\t\t\t\tvar divText = null;\r\n\t\t\t\tif(item && item.hasOwnProperty(this.__nsList.__labelField) && item[this.__nsList.__labelField])\r\n\t\t\t\t{\r\n\t\t\t        if((item[this.__nsList.__childField]  && item[this.__nsList.__childField].length > 0) || (this.__isOnDemandHasChildren(item)))\r\n\t\t\t        {\r\n\t\t\t        \tthis.util.addStyleClass(divCell,this.__nsList.__CLASS_GROUP_CELL);\r\n\t\t\t        \tthis.__nsList.__createArrow(item,index,divCell,item[this.__nsList.__fieldIsCollapsed]);\r\n\t\t\t        \tvar cellText = this.util.createDiv(null,this.__nsList.__CLASS_CELL_CHILD);\r\n\t\t\t        \tthis.util.addStyleClass(cellText,\"nsListGroupCellText\");\r\n\t\t\t        \tcellText.style.verticalAlign = \"top\";\r\n\t\t\t        \tdivText = cellText;\r\n\t\t\t        \tdivCell.appendChild(cellText);\r\n\t\t\t        }\r\n\t\t\t        else\r\n\t\t\t        {\r\n\t\t\t        \tthis.util.addStyleClass(divCell,this.__nsList.__CLASS_CELL_CHILD);\r\n\t\t\t        \tdivText = divCell;\r\n\t\t\t        \t//24 = 16(Arrow Width) + 6(Arrow Parent Padding) + 2(divCell horizontalGap between elements shown in debugger)\r\n\t\t\t        \thierarchicalPadding = 24;\r\n\t\t\t        }\r\n\t\t\t        this.__nsList.__addCellText(listItem,item,divText);\r\n\t\t        \tif(level === 0)\r\n\t\t        \t{\r\n\t\t        \t\tlistItem.style.paddingLeft = \"1px\";\r\n\t\t        \t}\r\n\t\t        \telse\r\n\t\t        \t{\r\n\t\t        \t\tvar paddingLeft = (10 * level) + hierarchicalPadding;\r\n\t\t        \t\tlistItem.style.paddingLeft = paddingLeft + \"px\";\r\n\t\t        \t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tthis.__updateListItemText = function(listItem,item,index)\r\n\t\t{\r\n\t\t\tif(listItem && item)\r\n\t\t\t{\r\n\t\t\t\tthis.util.removeAllChildren(listItem);\r\n\t\t\t\tthis.__setListItemProperties(listItem,item);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\tthis.__getFlatSource= function()\r\n\t\t{\r\n\t\t\treturn this.__nsList.__arrFlatHierarchicalSource;\r\n\t\t};\r\n\t\t\r\n\t\tthis.__handleOnDemandClick = function(item,event)\r\n\t\t{\r\n\t\t\tif(item && this.__isOnDemandHasChildren(item))\r\n\t\t\t{\r\n\t\t\t\tif(this.__onDemandChildFetchCallback)\r\n\t\t\t\t{\r\n\t\t\t\t\tevent = this.util.getEvent(event);\r\n\t\t\t\t\tvar rowLevel = item[this.__nsList.__fieldItemLevel];\r\n\t\t\t\t\tvar rowIndex = this.__nsList.__getIndexByItem(item);\r\n\t\t\t\t\tthis.__onDemandChildFetchCallback(item,rowIndex,rowLevel,event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\t/********************************Common Functions for Grid ****************************************/\r\n\t\tthis.__setItemProperty = function(item,parentIndex,level,setFieldIndex,setIsCollapsed,setItemVisible)\r\n\t\t{\r\n\t\t\tif(item)\r\n\t\t\t{\r\n\t\t\t\tif(this.util.isUndefinedOrNull(setIsCollapsed))\r\n\t\t\t\t{\r\n\t\t\t\t\tsetIsCollapsed = true;\r\n\t\t\t\t}\r\n\t\t\t\tif(this.util.isUndefinedOrNull(setItemVisible))\r\n\t\t\t\t{\r\n\t\t\t\t\tsetItemVisible = true;\r\n\t\t\t\t}\r\n\t\t\t\tvar totalRowCount = this.__rowCounter;\r\n\t\t\t\tif(setFieldIndex || this.util.isUndefinedOrNull(item[this.__nsList.__fieldIndex]))\r\n\t\t\t\t{\r\n\t\t\t\t\titem[this.__nsList.__fieldIndex] = totalRowCount;\r\n\t\t\t\t}\r\n\t\t\t\titem[this.__nsList.__fieldVisibleIndex] = totalRowCount;\r\n\t\t\t\titem[this.__nsList.__fieldItemLevel] = level;\r\n\t\t\t\tvar hasChild = false;\r\n\t\t\t\tif(item.hasOwnProperty(this.__nsList.__childField) && item[this.__nsList.__childField] && item[this.__nsList.__childField].length > 0)\r\n\t\t\t    {\r\n\t\t\t    \thasChild = true;\r\n\t\t\t    \tthis.__setWrapperSource(item[this.__nsList.__childField],0,totalRowCount,level + 1,setFieldIndex,setIsCollapsed,setItemVisible);\r\n\t\t\t    }\r\n\t\t\t\titem[this.__nsList.__fieldParentIndex] = parentIndex;\r\n\t\t\t\tif(parentIndex > -1)\r\n\t\t\t    {\r\n\t\t\t\t\titem[this.__nsList.__fieldHasParent] = true;\r\n\t\t\t    }\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\titem[this.__nsList.__fieldHasParent] = false;\r\n\t\t\t\t}\r\n\t\t\t\titem[this.__nsList.__fieldHasChild] = hasChild;\r\n\t\t\t\tif(setItemVisible || this.util.isUndefinedOrNull(item[this.__nsList.__fieldItemVisible]))\r\n\t\t\t\t{\r\n\t\t\t\t\titem[this.__nsList.__fieldItemVisible] = true;\r\n\t\t\t\t}\r\n\t\t\t\tif(setIsCollapsed || this.util.isUndefinedOrNull(item[this.__nsList.__fieldIsCollapsed]))\r\n\t\t\t\t{\r\n\t\t\t\t\titem[this.__nsList.__fieldIsCollapsed] = this.__isOnDemandHasChildren(item);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tthis.__createArrow = function(compArrow,objSVG,arrowID,isCollapsed)\r\n\t\t{\r\n\t\t\t var svg = objSVG.addSVG(compArrow,arrowID + \"svg\",this.__CLASS_ARROW,null,null,null,null,null,null,true);\r\n\t\t\t if(isCollapsed)\r\n\t\t\t {\r\n\t\t\t\t objSVG.addUse(svg,arrowID + \"use\",null,\"#svgListArrowRight\");\r\n\t\t\t }\r\n\t\t\t else\r\n\t\t\t {\r\n\t\t\t\t objSVG.addUse(svg,arrowID + \"use\",null,\"#svgListArrowDown\");\r\n\t\t\t }\r\n\t\t};\r\n\t\r\n\t\tthis.__setArrowDirection = function(objSVG,useID,isCollapsed)\r\n\t\t{\r\n\t\t\tif(isCollapsed)\r\n\t\t\t{\r\n\t\t\t\tobjSVG.changeUseHref(useID,\"#svgListArrowRight\");\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tobjSVG.changeUseHref(useID,\"#svgListArrowDown\");\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\tthis.__resetListItem = function(listItem,index,item)\r\n\t\t{\r\n\t\t\tlistItem.style.display = \"\";\r\n\t\t\tlistItem.setAttribute(\"ns-index\",index);\r\n\t\t\tthis.util.removeStyleClass(listItem,\"nsListItemSelected\");\r\n\t\t\tthis.__nsList.__updateItem(item,index);\r\n\t\t\tthis.__setListItemProperties(listItem,item);\r\n\t\t};\r\n\t\t\r\n\t\tthis.__isOnDemandHasChildren = function(item)\r\n\t\t{\r\n\t\t\treturn (this.__enableOnDemandHierarchy && item[this.__onDemandChildDetectionField]);\r\n\t\t};\r\n\t};\r\n\t\r\n\tvar NSListFilter = function(nsList)\r\n\t{\r\n\t\tthis.__nsList = nsList;\r\n\t\t\r\n\t\tthis.util = nsList.util;\r\n\t\tthis.__filteredColumn = [];\r\n\t\tthis.__config = {};\r\n\t\tthis.__nsDragDrop = null;\r\n\t\t\r\n\t\tthis.__initialize = function()\r\n\t\t{\r\n\t\t\t\r\n\t\t};\r\n\t\t\r\n\t\tthis.filter = function(strData,filterSetting,enableHighlighting,recordLimit)\r\n\t\t{\r\n\t\t\tif(!filterSetting)\r\n\t\t\t{\r\n\t\t\t\tfilterSetting = {};\r\n\t\t\t}\r\n\t\t\tif(this.util.isUndefinedOrNull(enableHighlighting))\r\n\t\t\t{\r\n\t\t\t\tenableHighlighting = true;\r\n\t\t\t}\r\n\t\t\tvar config = {\r\n\t\t\t\t\tcaseSensitive: this.util.isUndefinedOrNull(filterSetting[\"caseSensitive\"]) ? false : Boolean.parse(filterSetting[\"caseSensitive\"]),\r\n\t\t\t\t\tmultiline: this.util.isUndefinedOrNull(filterSetting[\"multiline\"]) ? false : Boolean.parse(filterSetting[\"multiline\"]),\r\n\t\t\t\t\tmatchType: filterSetting[\"matchType\"] || new NSFilter().CONTAINS\r\n\t\t\t};\r\n\t\t\tvar filter = {};\r\n\t\t\tvar setting = {};\r\n\t\t\tvar field = this.__nsList.__labelField;\r\n\t\t\tfilter[field] = strData;\r\n\t\t\tsetting[field] = {caseSensitive:config[\"caseSensitive\"],multiline:config[\"multiline\"],matchType:config[\"matchType\"]};\r\n\t\t\tif(filter && Object.keys(filter).length > 0)\r\n\t\t\t{\r\n\t\t\t\tthis.__handleFiltering(filter,setting,enableHighlighting,recordLimit);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.__resetFiltering();\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tthis.reset = function()\r\n\t\t{\r\n\t\t\tthis.__resetFiltering();\r\n\t\t};\r\n\t\t\r\n\t\tthis.__handleFiltering = function(filter,setting,enableHighlighting,recordLimit)\r\n\t\t{\r\n\t\t\tthis.__filteredColumn = [];\r\n\t\t\tif(filter)\r\n\t\t    {\r\n\t\t\t\t var field = this.__nsList.__labelField;\r\n\t\t\t\t var source = this.__nsList.__arrWrapper;\r\n\t\t\t\t var isHierarchical = false;\r\n\t\t\t\t if(this.__nsList.__enableHierarchical)\r\n\t\t\t\t {\r\n\t\t\t\t\t isHierarchical = true;\r\n\t\t\t\t }\r\n\t\t\t   \t var nsFilter = new NSFilter(source,filter,setting,recordLimit,isHierarchical,this.__nsList.__childField);\r\n\t\t\t   \t this.__nsList.__arrInternalSource = nsFilter.execute();\r\n\t\t\t   \t if(enableHighlighting)\r\n\t\t\t   \t {\r\n\t\t\t   \t\tfor(var key in filter) \r\n\t\t  \t        {\r\n\t\t  \t        \tthis.__filteredColumn.push({field:key,text:filter[key]});\r\n\t\t  \t        }\r\n\t\t\t   \t }\r\n\t\t\t   \t if(isHierarchical)\r\n\t\t\t   \t {\r\n\t\t\t   \t\tthis.__nsList.__objGrid.__setWrapperSource(this.__nsList.__arrInternalSource,0,-1,0,false);\r\n\t\t\t   \t\tthis.__nsList.__arrInternalSource = this.__nsList.__arrFlatHierarchicalSource.slice(0); \r\n\t\t\t   \t }\r\n\t\t\t   \t this.__nsList.__updateTotalRecords();\r\n\t\t\t   \t this.__nsList.__renderBody();\r\n\t\t\t   \t this.__nsList.__updateVisibleIndexByListItem(this.__nsList.__arrInternalSource);\r\n\t\t    }\r\n\t\t};\r\n\t\r\n\t\tthis.__resetFiltering = function()\r\n\t\t{\r\n\t\t\tif(this.__nsList.__dataSource)\r\n\t\t\t{\r\n\t\t\t\tthis.__nsList.__arrInternalSource = this.__nsList.__arrWrapper.slice(0);\r\n\t\t\t\tthis.__filteredColumn = [];\r\n\t\t\t\tif(this.__nsList.__enableHierarchical)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__nsList.__objGrid.__setWrapperSource(this.__nsList.__arrInternalSource,0,-1,0,false);\r\n\t\t\t\t\tthis.__nsList.__arrInternalSource = this.__nsList.__arrFlatHierarchicalSource.slice(0); \r\n\t\t\t\t}\r\n\t\t\t\tthis.__nsList.__updateTotalRecords();\r\n\t\t\t\tthis.__nsList.__renderBody();\r\n\t\t\t\tthis.__nsList.__updateVisibleIndexByListItem(this.__nsList.__arrInternalSource);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\tthis.__highlightDiv = function(divText)\r\n\t\t{\r\n\t\t\tvar length = this.__filteredColumn.length;\r\n\t\t\tfor (var count = 0; count < length; count++) \r\n\t\t    {\r\n\t\t\t\tvar text = this.__filteredColumn[count].text;\r\n\t\t\t\tthis.util.highlightText(divText,text,\"nsTextHighlight\");\r\n\t\t    }\r\n\t\t};\r\n\t\t\r\n\t\tthis.__initialize();\r\n\t};\r\n\t\r\n\tvar NSListDragDrop = function(nsList)\r\n\t{\r\n\t\tthis.__nsList = nsList;\r\n\t\tthis.util = nsList.util;\r\n\t\t\r\n\t\tthis.__disableDraggableFunction = null;\r\n\t\tthis.__disableDropableFunction = null;\r\n\t\t\r\n\t\tthis.initialize = function()\r\n\t\t{\r\n\t\t\tvar container = this.__nsList.__listContainer;\r\n\t\t\tvar setting = {container:container,childNodeType:\"LI\",isContainerDraggable:this.__nsList.__isDraggable,isContainerDroppable:this.__nsList.__isDroppable,\r\n\t\t\t\t\t\t   enableDragByHandle:this.__nsList.__enableDragByHandle,dragHandlerClass:this.__nsList.__dragHandlerClass,\r\n\t\t\t\t\t\t   enableDragAfterHold:this.__nsList.__enableDragAfterHold,enableCloneMode:this.__nsList.__enableCloneMode,holdTime:this.__nsList.__holdTime,createCloneCallback:this.__createClone.bind(this),\r\n\t\t\t\t\t\t   createPlaceholderCallback:this.__createPlaceholder.bind(this),nodeDroppableCallback:this.__isListItemDroppable.bind(this),\r\n\t\t\t\t\t\t   nodeDraggableCallback:this.__isListItemDraggable.bind(this),insertNodeCallback:this.__insertListItemHandler.bind(this),\r\n\t\t\t\t\t\t   moveNodeCallback:this.__moveListItemHandler.bind(this),removeNodeCallback:this.__removeListItemHandler.bind(this)};\r\n\t\t\tthis.__nsDragDrop = new NSDragDrop(setting);\r\n\t\t\tthis.util.addEvent(container,this.__nsDragDrop.ITEM_DROPPING,this.__itemDroppingHandler.bind(this));\r\n\t\t\tthis.util.addEvent(container,this.__nsDragDrop.ITEM_DROPPED,this.__itemDroppedHandler.bind(this));\r\n\t\t\tthis.util.addEvent(container,this.__nsDragDrop.DRAG_STARTING,this.__dragStartingHandler.bind(this));\r\n\t\t\tthis.util.addEvent(container,this.__nsDragDrop.DRAG_STARTED,this.__dragStartHandler.bind(this));\r\n\t\t\tthis.util.addEvent(container,this.__nsDragDrop.DRAGGING,this.__draggingHandler.bind(this));\r\n\t\t\tthis.util.addEvent(container,this.__nsDragDrop.DRAG_END,this.__dragEndHandler.bind(this));\r\n\t\t};\r\n\t\t\r\n\t\tthis.__initialize = function()\r\n\t\t{\r\n\t\t\tvar setting = this.__nsList.__setting;\r\n\t\t\tif(setting.hasOwnProperty(\"disableDraggableFunction\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__disableDraggableFunction = setting[\"disableDraggableFunction\"];\r\n\t\t\t\tthis.__disableDraggableFunction = this.util.getFunction(this.__disableDraggableFunction);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"disableDropableFunction\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__disableDropableFunction = setting[\"disableDropableFunction\"];\r\n\t\t\t\tthis.__disableDropableFunction = this.util.getFunction(this.__disableDropableFunction);\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tthis.__dragStartingHandler = function(event)\r\n\t\t{\r\n\t\t\tvar listItem = event.node;\r\n\t\t\tvar arrItems = this.__getSelectedItems(listItem);\r\n\t\t\tvar data = {parentID:this.__nsList.__listContainer.getAttribute(\"id\"),arrItems:arrItems};\r\n\t\t\tthis.__nsDragDrop.setDragData(data);\r\n\t\t};\r\n\t\t\r\n\t\tthis.__dragStartHandler = function(event)\r\n\t\t{\r\n\t\t\tvar listItem = event.node;\r\n\t\t\tvar data = this.__nsDragDrop.getDragData();\r\n\t\t\tvar arrItems = data.arrItems;\r\n\t\t\tthis.util.dispatchEvent(this.__nsList.__baseComponent,this.__nsList.DRAG_STARTED,arrItems,{items:arrItems});\r\n\t\t};\r\n\t\t\r\n\t\tthis.__draggingHandler = function(event)\r\n\t\t{\r\n\t\t\tvar listData = event.item;\r\n\t\t\tvar data = this.__nsDragDrop.getDragData();\r\n\t\t\tvar arrItems = data.arrItems;\r\n\t\t\tlistData.arrItems = arrItems;\r\n\t \t    this.util.dispatchEvent(this.__nsList.__baseComponent,this.__nsList.DRAGGING,listData,{item:listData});\r\n\t\t};\r\n\t\t\r\n\t\tthis.__dragEndHandler = function(event)\r\n\t\t{\r\n\t\t\tvar data = this.__nsDragDrop.getDragData();\r\n\t\t\tvar arrItems = data.arrItems;\r\n\t \t    this.util.dispatchEvent(this.__nsList.__baseComponent,this.__nsList.DRAG_END,arrItems,{items:arrItems});\r\n\t\t};\r\n\t\t\r\n\t\tthis.__itemDroppingHandler = function(event)\r\n\t\t{\r\n\t\t\tvar cancelled = this.util.dispatchEvent(this.__nsList.__baseComponent,this.__nsList.ITEM_DROPPING,event.item,{item:event.item},true,true);\r\n\t\t\tif(cancelled)\r\n\t\t\t{\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tthis.__itemDroppedHandler = function(event)\r\n\t\t{\r\n\t\t\tthis.util.dispatchEvent(this.__nsList.__baseComponent,this.__nsList.ITEM_DROPPED,event.item,{item:event.item},true,false);\r\n\t\t};\r\n\t\t\r\n\t\tthis.__createClone = function(listItem,containerConfiguration)\r\n\t\t{\r\n\t\t\tvar listContainer = this.__nsList.__listContainer.cloneNode(false);\r\n\t\t\tvar data = this.__nsDragDrop.getDragData();\r\n\t\t\tvar arrItems = data.arrItems;\r\n\t\t\tvar clonedNode = null;\r\n\t\t\t//make a clone only when clone Mode is ON or the list is not droppable\r\n\t\t\tif(this.__nsList.__enableCloneMode || !this.__nsList.__isDroppable)\r\n\t\t\t{\r\n\t\t\t\tfor(var count = 0;count < arrItems.length;count++)\r\n\t\t\t\t{\r\n\t\t\t\t\tclonedNode = arrItems[count][this.__nsList.__fieldItem].cloneNode(true);\r\n\t\t\t\t\tclonedNode.setAttribute(\"id\",\"comp\" + listContainer.id + \"ClonedNode\" + count);\r\n\t\t\t\t\tlistContainer.appendChild(clonedNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tfor(var count = 0;count < arrItems.length;count++)\r\n\t\t\t\t{\r\n\t\t\t\t\tclonedNode = arrItems[count][this.__nsList.__fieldItem];\r\n\t\t\t\t\tlistContainer.appendChild(clonedNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlistContainer.style.width = containerConfiguration.width + \"px\";\r\n\t\t\treturn listContainer;\r\n\t\t};\r\n\t\t\r\n\t\tthis.__createPlaceholder = function(listItem)\r\n\t\t{\r\n\t\t\tvar listItem = this.util.createElement(\"li\",null,\"nsListEmptyItem\");\r\n\t\t\tlistItem.innerHTML = \"<div class='nsListEmptyChild'>&nbsp;</div>\";\r\n\t\t\treturn listItem;\r\n\t\t};\r\n\t\t\r\n\t\tthis.__isListItemDroppable = function(listItem)\r\n\t\t{\r\n\t\t\tvar item = this.__getItemFromTarget(listItem);\r\n\t\t\treturn this.__isItemDroppable(listItem,item);\r\n\t\t};\r\n\t\t\r\n\t\tthis.__isListItemDraggable = function(listItem)\r\n\t\t{\r\n\t\t\tvar item = this.__getItemFromTarget(listItem);\r\n\t\t\treturn this.__isItemDraggable(listItem,item);\r\n\t\t};\r\n\t\t\r\n\t\tthis.__insertListItemHandler = function(container,newListItem,index,currentListItem,data)\r\n\t\t{\r\n\t\t\tvar arrItems = data.arrItems;\r\n\t\t\tthis.__nsList.__addItem(arrItems,index);\r\n\t\t};\r\n\t\t\r\n\t\tthis.__moveListItemHandler = function(container,newListItem,index,currentListItem,data)\r\n\t\t{\r\n\t\t\tvar arrItems = data.arrItems;\r\n\t\t\tthis.__nsList.__moveItem(arrItems,index);\r\n\t\t};\r\n\t\t\r\n\t\tthis.__removeListItemHandler = function(container,listItem,data)\r\n\t\t{\r\n\t\t\t\r\n\t\t};\r\n\t\t\r\n\t\tthis.__getSelectedItems = function(target)\r\n\t\t{\r\n\t\t\tvar list = this.__nsList;\r\n\t\t\tvar listContainer = list.__listContainer;\r\n\t\t\tvar index = parseInt(list.__getIndexFromTarget(target));\r\n\t\t\tvar item = list.__getItemByIndex(index);\r\n\t\t\tvar arrItems = [];\r\n\t\t\tvar arrSelectedItems = list.getSelectedItems();\r\n\t\t\tvar itemSelected = false; \r\n\t\t\tif(arrSelectedItems && arrSelectedItems.length > 0)\r\n\t\t\t{\r\n\t\t\t\tvar tempItem = null;\r\n\t\t\t\tfor(var count = 0;count < arrSelectedItems.length;count++)\r\n\t\t\t\t{\r\n\t\t\t\t\ttempItem = this.__cloneItem(arrSelectedItems[count]);\r\n\t\t\t\t\tif(tempItem[list.__fieldIndex] === item[list.__fieldIndex])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\titemSelected = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarrItems.push(tempItem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!itemSelected || !arrItems || arrItems.length === 0 || !arrItems[0])\r\n\t\t\t{\r\n\t\t\t\tvar tempItem = this.__cloneItem(item);\r\n\t\t\t\tarrItems = [tempItem];\r\n\t\t\t}\r\n\t\t\treturn arrItems;\r\n\t\t};\r\n\t\t\r\n\t\tthis.__cloneItem = function(item)\r\n\t\t{\r\n\t\t\tvar list = this.__nsList;\r\n\t\t\tvar tempItem = null;\r\n\t\t\tif(item)\r\n\t\t\t{\r\n\t\t\t\ttempItem = this.util.cloneObject(item);\r\n\t\t\t\tif(list.__enableHierarchical && tempItem[list.__childField] && tempItem[list.__childField].length > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tvar arrChild = tempItem[list.__childField];\r\n\t\t\t\t\tvar length = arrChild.length;\r\n\t\t\t\t\tvar childItem = null;\r\n\t\t\t\t\tvar tempChildItem = null;\r\n\t\t\t\t\tfor(var count = 0;count < length;count++)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tchildItem = arrChild[count];\r\n\t\t\t\t\t\ttempChildItem = this.__cloneItem(childItem);\r\n\t\t\t\t\t\tif(tempChildItem)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttempItem[list.__childField][count] = tempChildItem;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn tempItem;\r\n\t\t};\r\n\t\t\r\n\t\tthis.__getItemFromTarget = function(listItem)\r\n\t\t{\r\n\t\t\tvar itemIndex = this.__nsList.__getIndexFromTarget(listItem);\r\n\t\t\treturn this.__nsList.__getItemByIndex(itemIndex);\r\n\t\t};\r\n\t\t\r\n\t\tthis.__isItemDraggable = function(listItem,item) \r\n\t    {\r\n\t\t\tvar retValue = true;\r\n\t\t\tif(this.__disableDraggableFunction)\r\n\t\t\t{\r\n\t\t\t\tretValue = this.__disableDraggableFunction(item,this.__nsList.__labelField,item[this.__nsList.__fieldIndex],item[this.__nsList.__fieldDisableHover],listItem);\r\n\t\t\t\tretValue = !retValue;\r\n\t\t\t}\r\n\t    \treturn retValue;\r\n\t\t};\r\n\t\t\r\n\t\tthis.__isItemDroppable = function(event) \r\n\t    {\r\n\t\t\tvar retValue = true;\r\n\t\t\tif(this.__disableDropableFunction)\r\n\t\t\t{\r\n\t\t\t\tvar target = this.util.getTarget(event);\r\n\t\t\t\ttarget = this.util.findParent(target,\"li\");\r\n\t\t\t\tvar index = this.__nsList.__getIndexFromTarget(target);\r\n\t\t\t\tvar item = this.__nsList.__getItemByIndex(index);\r\n\t\t\t\tif(item)\r\n\t\t\t\t{\r\n\t\t\t\t\tretValue = this.__disableDropableFunction(item,this.__nsList.__labelField,item[this.__nsList.__fieldIndex],item[this.__nsList.__fieldDisableHover],target);\r\n\t\t\t\t\tretValue = !retValue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t    \treturn retValue;\r\n\t\t};\r\n\t\t\r\n\t\tthis.__initialize();\r\n\t};\r\n\treturn NSList;\r\n})();\r\nnsModuleExport(this,\"NSList\",NSList);\r\n\"use strict\";\r\nvar NSFilter = (function()\r\n{\r\n\tfunction NSFilter(data,filter,setting,recordLimit,isHierarchical,childField,filterFunction,hierarchyFilterChildren,arrIgnoreKeysInCloneDataSource) \r\n\t{\r\n\t\tthis.EXACT = \"exact\";\r\n\t\tthis.STARTS_WITH = \"startsWith\";\r\n\t\tthis.ENDS_WITH = \"endsWith\";\r\n\t\tthis.CONTAINS = \"contains\";\r\n\t\t\r\n\t\tthis.IS_FOUND_FIELD = \"__nsFilter__found\";\r\n\t\t\r\n\t\tthis.util = new NSUtil();\r\n\t\tthis.__data = data;\r\n\t\tthis.__filter = filter;\r\n\t\tthis.__setting = setting;\r\n\t\tthis.__recordLimit = (parseInt(recordLimit) > 0) ? recordLimit : -1;\r\n\t\tthis.__isHierarchical = this.util.isUndefined(isHierarchical) ? false : Boolean.parse(isHierarchical);\r\n\t\tthis.__childField = childField ? childField : \"children\";\r\n\t\tthis.__filterFunction = filterFunction;\r\n\t\tthis.__hierarchyFilterChildren = hierarchyFilterChildren;\r\n\t\tthis.__arrIgnoreKeysInCloneDataSource = arrIgnoreKeysInCloneDataSource;\r\n\t\tthis.__ignoreSameLevelNode = true;\r\n\t}\r\n\t\r\n\tNSFilter.prototype.execute = function(data,filter,setting,recordLimit,isHierarchical,childField,filterFunction,hierarchyFilterChildren,arrIgnoreKeysInCloneDataSource) \r\n\t{ \r\n\t\tdata = data ? data : this.__data;\r\n\t\tfilter = filter ? filter : this.__filter;\r\n\t\tsetting = setting ? setting : this.__setting;\r\n\t\trecordLimit = (parseInt(recordLimit) > 0) ? recordLimit : this.__recordLimit;\r\n\t\tisHierarchical = this.util.isUndefined(isHierarchical) ? Boolean.parse(this.__isHierarchical) : Boolean.parse(isHierarchical);\r\n\t\tchildField = childField ? childField : this.__childField;\r\n\t\tfilterFunction = filterFunction ? filterFunction : this.__filterFunction;\r\n\t\thierarchyFilterChildren = hierarchyFilterChildren ? hierarchyFilterChildren : this.__hierarchyFilterChildren;\r\n\t\tarrIgnoreKeysInCloneDataSource = this.util.isUndefinedOrNull(arrIgnoreKeysInCloneDataSource) ? this.__arrIgnoreKeysInCloneDataSource : arrIgnoreKeysInCloneDataSource;\r\n\t\tif(data && filter)\r\n\t\t{\r\n\t\t\tvar dataSource = data.slice(0);\r\n\t\t\tvar arrFilter = [];\r\n\t\t\tvar self = this;\r\n\t\t\tvar callFilterFunction = function(source,level,parentItem)\r\n\t\t\t{\r\n\t\t\t\tvar arrReturn = [];\r\n\t\t\t\tfor (var count = 0; count < source.length; count++) \r\n\t\t\t\t{\r\n\t\t\t\t\tvar item = source[count];\r\n\t\t\t\t\tvar found = false;\r\n\t\t\t\t\tif(isHierarchical && item[childField] && item[childField].length > 0 )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar arrChild = callFilterFunction(item[childField],level + 1,item);\r\n\t\t\t\t\t\tif(arrChild && arrChild.length > 0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\t\tif(self.__ignoreSameLevelNode)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t            item[childField] = arrChild;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tarrReturn.push(item);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(!found && self.__filterItem(item,filter,setting,isHierarchical,childField,parentItem,filterFunction))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif(isHierarchical && hierarchyFilterChildren)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvar arrChildren = item[childField];\r\n\t\t\t\t\t\t\tif(arrChildren && arrChildren.length > 0)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvar childItem = null;\r\n\t\t\t\t\t\t\t\tvar childLength = arrChildren.length;\r\n\t\t\t\t\t\t\t\tfor(var childCount = childLength - 1;childCount > -1;childCount--)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tchildItem = arrChildren[childCount];\r\n\t\t\t\t\t\t\t\t\tif(childItem)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tif(!hierarchyFilterChildren(childItem,childCount,childItem[self.IS_FOUND_FIELD],filter,setting,item))\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tarrChildren.splice(childCount, 1);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\tarrReturn.push(item);\r\n\t\t\t\t\t\tif(!isHierarchical && recordLimit > 0 && arrReturn.length >= recordLimit)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t//return false;\r\n\t\t\t\treturn arrReturn;\r\n\t\t\t};\r\n\t\t\tvar callNonHierarchicalFilterFunction = function(source)\r\n\t\t\t{\r\n\t\t\t\tvar arrReturn = [];\r\n\t\t\t\tfor (var count = 0; count < source.length; count++) \r\n\t\t\t\t{\r\n\t\t\t\t\tvar item = source[count];\r\n\t\t\t\t\tif(self.__filterItemNonHierarchical(item,filter,setting,filterFunction))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tarrReturn.push(item);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn arrReturn;\r\n\t\t\t};\r\n\t\t\tdataSource = this.util.cloneObject(dataSource,isHierarchical,[],arrIgnoreKeysInCloneDataSource);\r\n\t\t\tif(isHierarchical)\r\n\t\t\t{\r\n\t\t\t\tarrFilter = callFilterFunction(dataSource,1,null);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tarrFilter = callNonHierarchicalFilterFunction(dataSource);\r\n\t\t\t}\r\n\t\t\treturn arrFilter;\r\n\t\t}\r\n\t\treturn data;\r\n\t};\r\n\t\r\n\tNSFilter.prototype.__filterItemNonHierarchical = function(item,filter,setting,filterFunction) \r\n\t{\r\n\t\tvar retValue = false;\r\n\t\tif(filterFunction)\r\n\t\t{\r\n\t\t\tretValue = filterFunction(item,filter,setting);\r\n\t\t\tthis.__setItem(item,retValue);\r\n\t\t\treturn retValue;\r\n\t\t}\r\n\t\telse if(filter instanceof Function) \r\n\t    {\r\n\t\t\tretValue = filter(item,setting);\r\n\t        this.__setItem(item,retValue);\r\n\t        return retValue;\r\n\t    }\r\n\t    else if(filter instanceof Array) \r\n\t    {\r\n\t        for (var count = 0; count < filter.length; ++count) \r\n\t        {\r\n\t            if (this.__filterItemNonHierarchical(item,filter[count],setting,filterFunction))\r\n\t            {\r\n\t            \tthis.__setItem(item,true);\r\n\t            \treturn true;\r\n\t            }\r\n\t        }\r\n\t        return false;\r\n\t    }\r\n\t    else if(setting.type === \"date\" && filter)\r\n\t    {\r\n\t        return this.__filterDate(item,filter,setting);\r\n\t    }\r\n\t    else if(typeof(item) === \"string\" && filter)\r\n\t    {\r\n\t        return this.__filterString(item,filter,setting);\r\n\t    }\r\n\t    else if (item === item + 0 && filter)\r\n\t    {\r\n\t        return this.__filterNumeric(item,filter);\r\n\t    }\r\n\t    else if(typeof (filter) === \"object\") \r\n\t    {\r\n\t        for(var key in filter) \r\n\t        {\r\n\t        \tvar tempSetting = {};\r\n\t        \tif(setting && setting[key])\r\n\t        \t{\r\n\t        \t\ttempSetting = setting[key];\r\n\t        \t}\r\n\t            if(!this.__filterItemNonHierarchical(item[key],filter[key],tempSetting,filterFunction))\r\n\t            {\r\n\t            \treturn false;\r\n\t            }\r\n\t        }\r\n\t        this.__setItem(item,true);\r\n\t        return true;\r\n\t    }\r\n\t\tretValue = (filter == item);\r\n\t    this.__setItem(item,retValue);\r\n\t    return retValue;\r\n\t};\r\n\t\r\n\tNSFilter.prototype.__filterItem = function(item,filter,setting,isHierarchical,childField,parentItem,filterFunction) \r\n\t{\r\n\t\tvar retValue = false;\r\n\t\tif(filterFunction)\r\n\t\t{\r\n\t\t\tretValue = filterFunction(item,filter,setting,isHierarchical,childField,parentItem);\r\n\t\t\tthis.__setItem(item,retValue);\r\n\t\t\treturn retValue;\r\n\t\t}\r\n\t\telse if(filter instanceof Function) \r\n\t    {\r\n\t\t\tretValue = filter(item,setting);\r\n\t        this.__setItem(item,retValue);\r\n\t        return retValue;\r\n\t    }\r\n\t    else if(filter instanceof Array) \r\n\t    {\r\n\t        for (var count = 0; count < filter.length; ++count) \r\n\t        {\r\n\t            if (this.__filterItem(item,filter[count],setting,isHierarchical,childField,parentItem,filterFunction))\r\n\t            {\r\n\t            \tthis.__setItem(item,true);\r\n\t            \treturn true;\r\n\t            }\r\n\t        }\r\n\t        return false;\r\n\t    }\r\n\t    else if(setting.type === \"date\" && filter)\r\n\t    {\r\n\t        return this.__filterDate(item,filter,setting);\r\n\t    }\r\n\t    else if(typeof(item) === \"string\" && filter)\r\n\t    {\r\n\t        return this.__filterString(item,filter,setting);\r\n\t    }\r\n\t    else if (item === item + 0 && filter)\r\n\t    {\r\n\t        return this.__filterNumeric(item,filter);\r\n\t    }\r\n\t    else if(typeof (filter) === \"object\") \r\n\t    {\r\n\t        for(var key in filter) \r\n\t        {\r\n\t        \tif(isHierarchical && key === childField)\r\n\t        \t{\r\n\t        \t\tcontinue;\r\n\t        \t}\r\n\t        \tvar tempSetting = {};\r\n\t        \tif(setting && setting[key])\r\n\t        \t{\r\n\t        \t\ttempSetting = setting[key];\r\n\t        \t}\r\n\t            if(!this.__filterItem(item[key],filter[key],tempSetting,isHierarchical,childField,parentItem,filterFunction))\r\n\t            {\r\n\t            \treturn false;\r\n\t            }\r\n\t        }\r\n\t        this.__setItem(item,true);\r\n\t        return true;\r\n\t    }\r\n\t\tretValue = (filter == item);\r\n\t    this.__setItem(item,retValue);\r\n\t    return retValue;\r\n\t};\r\n\t\r\n\tNSFilter.prototype.__setItem = function(item,isFound)\r\n\t{\r\n\t\tif(item && typeof (item) === \"object\" && isFound)\r\n\t\t{\r\n\t\t\titem[this.IS_FOUND_FIELD] = true;\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSFilter.prototype.__filterNumeric= function(value,searchParam)\r\n\t{\r\n\t\tvar retValue = false;\r\n\t\tvalue = parseFloat(value);\r\n\t\tif(!isNaN(value))\r\n\t\t{\r\n\t\t\tif(/<=/.test(searchParam)) // first checks if there is an operator (<,>,<=,>=)\r\n\t\t\t{\r\n\t\t\t\tretValue = (value <= parseFloat(searchParam.replace(/<=/,\"\")));\r\n\t\t\t}\r\n\t\t\telse if(/>=/.test(searchParam))\r\n\t\t\t{\r\n\t\t\t\tretValue = (value >= parseFloat(searchParam.replace(/>=/,\"\")));\r\n\t\t\t}\r\n\t\t\telse if(/</.test(searchParam))\r\n\t\t\t{\r\n\t\t\t\tretValue = (value < parseFloat(searchParam.replace(/</,\"\")));\r\n\t\t\t}\r\n\t\t\telse if(/>/.test(searchParam))\r\n\t\t\t{\r\n\t\t\t\tretValue = (value > parseFloat(searchParam.replace(/>/,\"\")));\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tretValue = (value === parseFloat(searchParam));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn retValue;\r\n\t};\r\n\t\r\n\tNSFilter.prototype.__filterDate= function(value,searchParam,setting)\r\n\t{\r\n\t\tvar retValue = false;\r\n\t\tvar self = this;\r\n\t\tvar matchValue = function(compareValue,opt)\r\n\t\t{\r\n\t\t\tvar compValue = false;\r\n\t\t\tif(self.util.isUndefinedOrNull(value))\r\n\t\t\t{\r\n\t\t\t\tcompValue = false;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvar newVal = self.__getDate(value,setting.cellFormat);\r\n\t\t\t\tif(newVal)\r\n\t\t\t\t{\r\n\t\t\t\t\tnewVal.setHours(0, 0, 0, 0);\r\n\t\t\t\t\tcompareValue.setHours(0, 0, 0, 0);\r\n\t\t\t\t\tswitch(opt)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcase \"equals\":\r\n\t\t\t\t\t\t\tif (compareValue.getTime() === newVal.getTime()) \r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcompValue = true;\r\n\t\t\t\t            }\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"greaterThan\":\r\n\t\t\t\t\t\t\tif (compareValue.getTime() < newVal.getTime()) \r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcompValue = true;\r\n\t\t\t\t            }\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"lessThan\":\r\n\t\t\t\t\t\t\tif (compareValue.getTime() > newVal.getTime()) \r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcompValue = true;\r\n\t\t\t\t            }\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"notEqual\":\r\n\t\t\t\t\t\t\tif (compareValue.getTime() != newVal.getTime()) \r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcompValue = true;\r\n\t\t\t\t            }\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tself.util.warning(\"NSFilter\",value + \" cannot be converted to date Object for given cell format\");\r\n\t\t\t\t\tcompValue = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn compValue;\r\n\t\t};\r\n\t\tvar processDate = function(date,type)\r\n\t\t{\r\n\t\t\tvar compValue = false;\r\n\t\t\tif(date && matchType1)\r\n\t\t\t{\r\n\t\t\t\tif(!date || !Object.prototype.toString.call(date) === '[object Date]')\r\n\t\t\t\t{\r\n\t\t\t\t\tcompValue = true;\r\n\t\t\t\t}\r\n\t\t\t\telse if(setting.comparator)\r\n\t\t\t\t{\r\n\t\t\t\t\tcompValue = setting.comparator(value,date,setting);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tcompValue = matchValue(date,type);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn compValue;\r\n\t\t};\r\n\t\tif(setting.matchType1 || setting.matchType2)\r\n\t\t{\r\n\t\t\tvar matchType1 = setting.matchType1;\r\n\t\t\tvar firstDate = setting.firstDate;\r\n\t\t\tvar operation = setting.operation;\r\n\t\t\tvar matchType2 = setting.matchType2;\r\n\t\t\tvar secondDate = setting.secondDate;\r\n\t\t\tif(this.util.isUndefinedOrNull(value))\r\n\t\t\t{\r\n\t\t\t\tretValue = false;\r\n\t\t\t}\r\n\t\t\telse if(firstDate && secondDate && matchType1 && matchType2 && operation)\r\n\t\t\t{\r\n\t\t\t\tvar firstVal = processDate(firstDate,matchType1);\r\n\t\t\t\tvar secondVal = processDate(secondDate,matchType2);\r\n\t\t\t\tswitch(operation)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase \"and\":\r\n\t\t\t\t\t\tretValue = (firstVal && secondVal);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"or\":\r\n\t\t\t\t\t\tretValue = (firstVal || secondVal);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if(firstDate && matchType1)\r\n\t\t\t{\r\n\t\t\t\tretValue = processDate(firstDate,matchType1);\r\n\t\t\t}\r\n\t\t\telse if(secondDate && matchType2)\r\n\t\t\t{\r\n\t\t\t\tretValue = processDate(secondDate,matchType2);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tretValue = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif(!searchParam || !Object.prototype.toString.call(searchParam) === '[object Date]')\r\n\t\t\t{\r\n\t\t\t\tretValue = true;\r\n\t\t\t}\r\n\t\t\telse if(setting.comparator)\r\n\t\t\t{\r\n\t\t\t\tretValue = setting.comparator(value,searchParam,setting);\r\n\t\t\t}\r\n\t\t\telse if(this.util.isUndefinedOrNull(value))\r\n\t\t\t{\r\n\t\t\t\tretValue = false;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tretValue = matchValue(searchParam,\"equals\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn retValue;\r\n\t};\r\n\t\r\n\tNSFilter.prototype.__filterString= function(value,searchParam,setting)\r\n\t{\r\n\t\tvar regExp = null;\r\n\t\tvar regExpModifier = \"g\";\r\n\t\tvar startWithChar = \"(^)\";\r\n\t\tvar endsWithChar = \"($)\";\r\n\t\tvar searchString = \"\";\r\n\t\tvar isCaseSensitive = false;\r\n\t\tvar isMultiline = false;\r\n\t\tvar matchType = this.CONTAINS;\r\n\t\tif(setting)\r\n\t\t{\r\n\t\t\tisCaseSensitive = Boolean.parse(setting[\"caseSensitive\"]);\r\n\t\t\tisMultiline = Boolean.parse(setting[\"multiline\"]);\r\n\t\t\tmatchType = setting[\"matchType\"] ? setting[\"matchType\"] : matchType;\r\n\t\t}\r\n\t\tif(!isCaseSensitive)\r\n\t\t{\r\n\t\t\tregExpModifier += \"i\";\r\n\t\t}\r\n\t\tif(isMultiline)\r\n\t\t{\r\n\t\t\tregExpModifier += \"m\";\r\n\t\t}\r\n\t\tsearchParam = this.__removeSpecialCharacter(searchParam);\r\n\t\tif(matchType === this.EXACT)\r\n\t\t{\r\n\t\t\tsearchString = startWithChar + searchParam + endsWithChar;\r\n\t\t}\r\n\t\telse if(matchType === this.STARTS_WITH)\r\n\t\t{\r\n\t\t\tsearchString = startWithChar + searchParam;\r\n\t\t}\r\n\t\telse if(matchType === this.ENDS_WITH)\r\n\t\t{\r\n\t\t\tsearchString = searchParam + endsWithChar;\r\n\t\t}\r\n\t\telse \r\n\t\t{\r\n\t\t\tsearchString = searchParam;\r\n\t\t}\r\n\t\tregExp = new RegExp(searchString,regExpModifier);\r\n\t\treturn regExp.test(value);\r\n\t};\r\n\t\r\n\tNSFilter.prototype.__removeSpecialCharacter = function(text)\r\n\t{\r\n\t\tfunction replaceEscape(char)\r\n\t\t{\r\n\t\t\tif(text)\r\n\t\t\t{\r\n\t\t\t\tvar exp = new RegExp(\"\\\\\" + char,\"g\");\r\n\t\t\t\ttext = text.replace(exp,\"\\\\\" + char);\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar specialChar = ['\\\\','[','^','$','.','|','?','*','+','(',')'];\r\n\t\tfor(var count = 0;count < specialChar.length;count++) \r\n\t\t{\r\n\t\t\treplaceEscape(specialChar[count]);\r\n\t\t}\r\n\t\treturn text;\r\n\t};\r\n\t\r\n\t//ref from : https://stackoverflow.com/questions/7445328/check-if-a-string-is-a-date-value\r\n\tNSFilter.prototype.__getDate = function(value,arrFormat) \r\n\t{\r\n\t\tif(value)\r\n\t\t{\r\n\t\t\tvar dateFormat;\r\n\t\t    if (Object.prototype.toString.call(value) === '[object Date]') \r\n\t\t    {\r\n\t\t        return value;\r\n\t\t    }\r\n\t\t    if(arrFormat)\r\n\t\t    {\r\n\t\t    \tvar dateUtil = new NSDateUtil();\r\n\t\t    \tif(!this.util.isArray(arrFormat))\r\n\t\t    \t{\r\n\t\t    \t\tarrFormat = [arrFormat];\r\n\t\t    \t}\r\n\t\t    \tfor(var count = 0;count < arrFormat.length;count++)\r\n\t\t    \t{\r\n\t\t    \t\tvar format = arrFormat[count];\r\n\t\t    \t\tvar date = dateUtil.parseString(value,format);\r\n\t\t    \t\tif(date)\r\n\t\t    \t\t{\r\n\t\t    \t\t\treturn date;\r\n\t\t    \t\t}\r\n\t\t    \t}\r\n\t\t    }\r\n\t\t    else\r\n\t\t    {\r\n\t\t    \tif (typeof value.replace === 'function') \r\n\t\t\t    {\r\n\t\t\t        value.replace(/^\\s+|\\s+$/gm, '');\r\n\t\t\t    }\r\n\t\t\t    dateFormat = /(^\\d{1,4}[\\.|\\\\/|-]\\d{1,2}[\\.|\\\\/|-]\\d{1,4})(\\s*(?:0?[1-9]:[0-5]|1(?=[012])\\d:[0-5])\\d\\s*[ap]m)?$/;\r\n\t\t\t    if(dateFormat.test(value))\r\n\t\t\t    {\r\n\t\t\t    \treturn new Date(value);//Date.parse(value);\r\n\t\t\t    }\r\n\t\t    }\r\n\t\t}\r\n\t    return null;\r\n\t};\r\n\t\r\n\treturn NSFilter;\r\n})();\r\nnsModuleExport(this,\"NSFilter\",NSFilter);var NSTextBox = (function()\r\n{\r\n\tfunction NSTextBox(component,setting) \r\n\t{\r\n\t\tthis.__setting = setting;\r\n\t\tthis.__outerContainer = null;\r\n\t\tthis.__textBox = null;\r\n\t\tthis.__list = null;\r\n\t\tthis.__nsList = null;\r\n\t\tthis.__nsGrid = null;\r\n\t\tthis.__renderer =  null;\r\n\t\tthis.__itemRenderer = null;\r\n\t\t\r\n\t\tthis.__context = window;\r\n\t\tthis.__dataSource = null;\r\n\t\tthis.__type = \"text\";\r\n\t\tthis.__enableAutoComplete = false;\r\n\t\tthis.__dropDownType = NSTextBox.DROPDOWN_TYPE_LIST;\r\n\t\tthis.__minChars = -1;\r\n\t\tthis.__maxChars = -1;\r\n\t\tthis.__minSearchStartChars = 1;\r\n\t\tthis.__caseSensitive = true;\r\n\t\tthis.__required = false;\r\n\t\tthis.__placeholder = null;\r\n\t\tthis.__displayAsPassword = false;\r\n\t\tthis.__enableServerSide = false;\r\n\t\tthis.__enableServerWithSmartSearch = false;\r\n\t\tthis.__delay = 150;\r\n\t\tthis.__listWidth = -1;\r\n\t\tthis.__maxListHeight = 300;\r\n\t\tthis.__noRecordsFoundMessage = \"No Records Found\";\r\n\t\t//can be [a-zA-Z0-9,-]\r\n\t\tthis.__restrict = null;\r\n\t\tthis.__pattern = null;\r\n\t\tthis.__styleClass = null;\r\n\t\tthis.__dropDownSetting = null;\r\n\t\tthis.__serverSearchCallback = null;\r\n\t\tthis.__textBoxRendererCallback = null;\r\n\t\t/* arrGridSearchField used when type = \"autocomplete\" and dropDownType = NSTextBox.DROPDOWN_TYPE_GRID */\r\n\t\tthis.__arrGridSearchField = null;\r\n\t\tthis.__isGridOrFilter = false;\r\n\t\t\r\n\t\tthis.__labelField = \"label\";\r\n\t\tthis.__stopHoveringField = \"stopHover\";\r\n\t\tthis.__labelFunction = null;\r\n\t\tthis.__templateID = null;\r\n\t\tthis.__setDataCallBack = null;\r\n\t\tthis.__enableKeyboardNavigation = false;\r\n\t\tthis.__enableMultipleSelection = false;\r\n\t\tthis.__multiSelectionSeparator = \";\";\r\n\t\tthis.__filterSetting = {};\r\n\t\tthis.__enableHighlighting = false;\r\n\t\tthis.__searchRecordLimit = -1;\r\n\t\t//temp merging Manish's code\r\n\t\tthis.__splitSearchType = null;\r\n\t\t\r\n\t\tthis.__selectedItem = null;\r\n\t\tthis.__selectedItems = [];\t\r\n\t\tthis.__timerInstance = null;\r\n\t\tthis.__isFromItemSelected = false;\r\n\t\tthis.__isFromCloseIcon = false;\r\n\t\tthis.__isFromSearchTextSever = false;\r\n\t\tthis.__lastNavigatedItem = {};\r\n\t\tthis.__lastSearchParam = \"\";\r\n\t\t\r\n\t\t\r\n\t\tthis.__keyPressedRef = null;\r\n\t\tthis.__pasteRef = null;\r\n\t\tthis.__documentClickRef = null;\r\n\t\tthis.__documentKeyUpRef = null;\r\n\t\tthis.__documentKeyDownRef = null;\r\n\t\t\r\n\t\tthis.base.__setBaseComponent.call(this,component);\r\n\t};\r\n\tnsExtendPrototype(NSContainerBase,NSTextBox);\r\n\tNSTextBox.prototype.constructor = NSTextBox;\r\n\t\r\n\tNSTextBox.prototype.initializeComponent = function() \r\n\t{\r\n\t\tthis.base.initializeComponent.call(this);\r\n\t\tthis.__setSetting();\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.setComponentProperties = function() \r\n\t{\r\n\t\tthis.base.setComponentProperties.call(this);\r\n\t\tthis.__createComponents();\r\n\t\tthis.__setTextBoxProperty();\r\n\t\tif(this.__dataSource)\r\n\t\t{\r\n\t\t\tthis.dataSource(this.__dataSource);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.propertyChange = function(attrName, oldVal, newVal, setProperty)\r\n\t{\r\n\t\tvar attributeName = attrName.toLowerCase();\r\n\t\tvar callTextProperty = false;\r\n\t\tif(attributeName === \"maxchars\")\r\n\t\t{\r\n\t\t\tthis.__maxChars =  parseInt(newVal);\r\n\t\t\tcallTextProperty = true;\r\n\t\t}\r\n\t\tif(attributeName === \"minchars\")\r\n\t\t{\r\n\t\t\tthis.__minChars =  parseInt(newVal);\r\n\t\t}\r\n\t\tif(attributeName === \"minsearchstartchars\")\r\n\t\t{\r\n\t\t\tthis.__minSearchStartChars =  parseInt(newVal);\r\n\t\t}\r\n\t\tif(attributeName === \"casesensitive\")\r\n\t\t{\r\n\t\t\tthis.__caseSensitive = Boolean.parse(newVal);\r\n\t\t}\r\n\t\tif(attributeName === \"required\")\r\n\t\t{\r\n\t\t\tthis.__required = Boolean.parse(newVal);\r\n\t\t\tcallTextProperty = true;\r\n\t\t}\r\n\t\tif(attributeName === \"placeholder\")\r\n\t\t{\r\n\t\t\tthis.__placeholder = newVal;\r\n\t\t\tcallTextProperty = true;\r\n\t\t}\r\n\t\tif(attributeName === \"delay\")\r\n\t\t{\r\n\t\t\tthis.__delay =  parseInt(newVal);\r\n\t\t}\r\n\t\tif(attributeName === \"maxlistheight\")\r\n\t\t{\r\n\t\t\tthis.__maxListHeight =  parseInt(newVal);\r\n\t\t}\r\n\t\tif(attributeName === \"listwidth\")\r\n\t\t{\r\n\t\t\tthis.__listWidth =  parseInt(newVal);\r\n\t\t}\r\n\t\tif(attributeName === \"labelfield\")\r\n\t\t{\r\n\t\t\tthis.__labelField = newVal;\r\n\t\t}\r\n\t\tif(attributeName === \"labelfunction\")\r\n\t\t{\r\n\t\t\tthis.__labelFunction = newVal;\r\n\t\t}\r\n\t\tif(attributeName === \"enablemultipleselection\")\r\n\t\t{\r\n\t\t\tthis.__enableMultipleSelection =  Boolean.parse(newVal);\r\n\t\t}\r\n\t\tif(attributeName === \"enablekeyboardnavigation\")\r\n\t\t{\r\n\t\t\tthis.__enableKeyboardNavigation =  Boolean.parse(newVal);\r\n\t\t}\r\n\t\tif(attributeName === \"norecordsfoundmessage\")\r\n\t\t{\r\n\t\t\tthis.__noRecordsFoundMessage = newVal;\r\n\t\t}\r\n\t\tif(attributeName === \"multiselectionseparator\")\r\n\t\t{\r\n\t\t\tthis.__multiSelectionSeparator = newVal;\r\n\t\t}\r\n\t\tif(attributeName === \"pattern\")\r\n\t\t{\r\n\t\t\tthis.__pattern = newVal;\r\n\t\t\tcallTextProperty = true;\r\n\t\t}\r\n\t\tif(attributeName === \"restrict\")\r\n\t\t{\r\n\t\t\tthis.__restrict = newVal;\r\n\t\t\tif(this.util.isValueNull(this.__restrict))\r\n\t\t\t{\r\n\t\t\t\tthis.__restrict = null;\r\n\t\t\t}\r\n\t\t\t/*else\r\n\t\t\t{\r\n\t\t\t\tthis.__restrict = \"[\" + this.__restrict + \"]\";\r\n\t\t\t}*/\r\n\t\t\tcallTextProperty = true;\r\n\t\t}\r\n\t\tif(attributeName === \"styleclass\")\r\n\t\t{\r\n\t\t\tthis.__styleClass = newVal;\r\n\t\t\tcallTextProperty = true;\r\n\t\t}\r\n\t\tif(attributeName === \"filtersetting\")\r\n\t\t{\r\n\t\t\tthis.__filterSetting =  newVal;\r\n\t\t}\r\n\t\tif(attributeName === \"enablehighlighting\")\r\n\t\t{\r\n\t\t\tthis.__enableHighlighting =  Boolean.parse(newVal);\r\n\t\t}\r\n\t\tif(attributeName === \"searchrecordlimit\")\r\n\t\t{\r\n\t\t\tthis.__searchRecordLimit =  parseInt(newVal);\r\n\t\t}\r\n\t\tif(attributeName === \"splitsearchtype\")\r\n\t\t{\r\n\t\t\tthis.__splitSearchType =  newVal;\r\n\t\t}\r\n\t\tif(callTextProperty)\r\n\t\t{\r\n\t\t\tthis.__setTextBoxProperty();\r\n\t\t}\r\n\t\tthis.base.propertyChange.call(this,attrName, oldVal, newVal, setProperty);\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.dataSource = function(dataSource)\r\n\t{\r\n\t\tthis.__dataSource = dataSource;\r\n\t\tif(this.__enableAutoComplete)\r\n\t\t{\r\n\t\t\tthis.__setListDataSource(this.__dataSource);\r\n\t\t\tif(this.__isFromSearchTextSever)\r\n\t\t\t{\r\n\t\t\t\tthis.__isFromSearchTextSever = false;\r\n\t\t\t\tthis.__searchText(this.__getSearchText(this.__textBox.value),true);\r\n\t\t\t\tthis.__showHideList(true);\r\n\t\t\t}\r\n\t\t\tif(!this.__documentClickRef)\r\n\t\t\t{\r\n\t\t\t\tthis.__documentClickRef = this.__documentClickHandler.bind(this);\r\n\t\t\t\tthis.util.addEvent(document,\"click\",this.__documentClickRef);\r\n\t\t\t}\r\n\t\t\tif(this.__enableMultipleSelection)\r\n\t\t\t{\r\n\t\t\t\tif(!this.__documentKeyUpRef)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__documentKeyUpRef = this.__documentKeyUpHandler.bind(this);\r\n\t\t\t\t\tthis.util.addEvent(document.body,\"keyup\",this.__documentKeyUpRef);\r\n\t\t\t\t}\r\n\t\t\t\tif(!this.__documentKeyDownRef)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__documentKeyDownRef = this.__documentKeyDownHandler.bind(this);\r\n\t\t\t\t\tthis.util.addEvent(document.body,\"keydown\",this.__documentKeyDownRef);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.componentResized = function(event) \r\n\t{\r\n\t\tthis.__updateListPos();\r\n\t\tthis.base.componentResized(event);\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.removeComponent = function() \r\n\t{\r\n\t\tif(this.__documentClickRef)\r\n\t\t{\r\n\t\t\tthis.util.removeEvent(document,\"click\",this.__documentClickRef);\r\n\t\t\tthis.__documentClickRef = null;\r\n\t\t}\r\n\t\tif(this.__documentKeyUpRef)\r\n\t\t{\r\n\t\t\tthis.util.removeEvent(document.body,\"keyup\",this.__documentKeyUpRef);\r\n\t\t\tthis.__documentKeyUpRef = null;\r\n\t\t}\r\n\t\tif(this.__keyDownRef)\r\n\t\t{\r\n\t\t\tthis.util.removeEvent(document.body,\"keydown\",this.__documentKeyDownRef);\r\n\t\t\tthis.__documentKeyDownRef = null;\r\n\t\t}\r\n\t\tvar control = this.__getNSControl();\r\n\t\tif(control && control.removeComponent)\r\n\t\t{\r\n\t\t\tcontrol.removeComponent.call(control);\r\n\t\t}\r\n\t\tthis.base.removeComponent.call(this);\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.getTextBox = function()\r\n\t{\r\n\t\treturn this.__textBox;\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.setText = function(text)\r\n\t{\r\n\t\tif(this.__textBox)\r\n\t\t{\r\n\t\t\tif(text && this.__maxChars > -1 && text.length > this.__maxChars)\r\n\t\t\t{\r\n\t\t\t\ttext = text.substring(0, this.__maxChars);\r\n\t\t\t}\r\n\t\t\tthis.__textBox.value = text;\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.getText = function()\r\n\t{\r\n\t\tif(this.__textBox)\r\n\t\t{\r\n\t\t\treturn this.__textBox.value;\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.setSelectedItems = function(arrItems)\r\n\t{\r\n\t\tif(this.__getNSControl())\r\n\t\t{\r\n\t\t\tthis.__getNSControl().setSelectedItems(arrItems);\r\n\t\t}\r\n\t\t//this.setText();\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.setSelectedItem = function(item)\r\n\t{\r\n\t\tif(this.__getNSControl())\r\n\t\t{\r\n\t\t\tthis.__getNSControl().setSelectedItem(item);\r\n\t\t}\r\n\t\t//this.setText();\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.setSelectedIndexes = function(arrSelectedIndex)\r\n\t{\r\n\t\tif(this.__getNSControl())\r\n\t\t{\r\n\t\t\tthis.__getNSControl().setSelectedIndexes(arrSelectedIndex);\r\n\t\t}\r\n\t\t//this.setText();\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.setSelectedIndex = function(selectedIndex)\r\n\t{\r\n\t\tif(this.__getNSControl())\r\n\t\t{\r\n\t\t\tthis.__getNSControl().setSelectedIndex(selectedIndex);\r\n\t\t}\r\n\t\t//this.setText();\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.unSelectItems = function(arrItems)\r\n\t{\r\n\t\tif(this.__getNSControl())\r\n\t\t{\r\n\t\t\tthis.__getNSControl().unSelectItems(arrItems);\r\n\t\t}\r\n\t\t//this.setText();\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.unSelectItem = function(item)\r\n\t{\r\n\t\tif(this.__getNSControl())\r\n\t\t{\r\n\t\t\tthis.__getNSControl().unSelectItem(item);\r\n\t\t}\r\n\t\t//this.setText();\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.unSelectIndexes = function(arrSelectedIndex)\r\n\t{\r\n\t\tif(this.__getNSControl())\r\n\t\t{\r\n\t\t\tthis.__getNSControl().unSelectIndexes(arrSelectedIndex);\r\n\t\t}\r\n\t\t//this.setText();\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.unSelectIndex = function(selectedIndex)\r\n\t{\r\n\t\tif(this.__getNSControl())\r\n\t\t{\r\n\t\t\tthis.__getNSControl().unSelectIndexes(selectedIndex);\r\n\t\t}\r\n\t\t//this.setText();\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.unSelectAll = function(fireEvent)\r\n\t{\r\n\t\t/*if(this.__getNSControl())\r\n\t\t{\r\n\t\t\tthis.__getNSControl().unSelectIndexes(selectedIndex);\r\n\t\t}*/\r\n\t\tthis.setText(null);\r\n\t\tif(fireEvent)\r\n\t\t{\r\n\t\t\tthis.__itemUnSelectHandler();\r\n\t\t}\r\n\t};\r\n\t\r\n\t//IMPORTANT:: not exposing getSelectedIndex and getSelectedIndexes as it will be relative to filtered dataSource\r\n\tNSTextBox.prototype.getSelectedItem = function()\r\n\t{\r\n\t\treturn this.__selectedItem;\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.getSelectedItems = function()\r\n\t{\r\n\t\tif(this.__getNSControl())\r\n\t\t{\r\n\t\t\treturn this.__getNSControl().getSelectedItems();\r\n\t\t}\r\n\t\treturn this.__selectedItems;\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__setSetting = function()\r\n\t{\r\n\t\tvar setting = this.__setting;\r\n\t\tif(setting)\r\n\t\t{\r\n\t\t\tif(setting.hasOwnProperty(\"type\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__type = setting[\"type\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"context\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__context = setting[\"context\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"dropDownType\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__dropDownType = setting[\"dropDownType\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"maxChars\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__maxChars = parseInt(setting[\"maxChars\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"minChars\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__minChars = parseInt(setting[\"minChars\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"minSearchStartChars\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__minSearchStartChars = parseInt(setting[\"minSearchStartChars\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"caseSensitive\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__caseSensitive = Boolean.parse(setting[\"caseSensitive\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"required\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__required = Boolean.parse(setting[\"required\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"placeholder\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__placeholder = setting[\"placeholder\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"displayAsPassword\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__displayAsPassword = Boolean.parse(setting[\"displayAsPassword\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableServerSide\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableServerSide = Boolean.parse(setting[\"enableServerSide\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableServerWithSmartSearch\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableServerWithSmartSearch = Boolean.parse(setting[\"enableServerWithSmartSearch\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"serverSearchCallback\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__serverSearchCallback = setting[\"serverSearchCallback\"];\r\n\t\t\t\tif (typeof this.__serverSearchCallback === \"string\" || this.__serverSearchCallback instanceof String)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(this.util.isFunction(this.__serverSearchCallback))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__serverSearchCallback = this.__context[this.__serverSearchCallback];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"textBoxRendererCallback\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__textBoxRendererCallback = setting[\"textBoxRendererCallback\"];\r\n\t\t\t\tif (typeof this.__textBoxRendererCallback === \"string\" || this.__textBoxRendererCallback instanceof String)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(this.util.isFunction(this.__textBoxRendererCallback))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__textBoxRendererCallback = this.__context[this.__textBoxRendererCallback];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"delay\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__delay =  parseInt(setting[\"delay\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"maxListHeight\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__maxListHeight =  parseInt(setting[\"maxListHeight\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"listWidth\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__listWidth =  parseInt(setting[\"listWidth\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"labelField\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__labelField = setting[\"labelField\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"arrGridSearchField\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__arrGridSearchField = setting[\"arrGridSearchField\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"isGridOrFilter\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__isGridOrFilter = setting[\"isGridOrFilter\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"stopHoveringField\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__stopHoveringField = setting[\"stopHoveringField\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"labelFunction\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__labelFunction = setting[\"labelFunction\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"template\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__templateID = setting[\"template\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"setDataCallBack\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__setDataCallBack = setting[\"setDataCallBack\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"itemRenderer\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__itemRenderer = setting[\"itemRenderer\"];\r\n\t\t\t\tif (typeof this.__itemRenderer === \"string\" || this.__itemRenderer instanceof String)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(this.util.isFunction(this.__itemRenderer))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__itemRenderer = this.__context[this.__itemRenderer];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableMultipleSelection\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableMultipleSelection =  Boolean.parse(setting[\"enableMultipleSelection\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableKeyboardNavigation\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableKeyboardNavigation =  Boolean.parse(setting[\"enableKeyboardNavigation\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"noRecordsFoundMessage\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__noRecordsFoundMessage =  setting[\"noRecordsFoundMessage\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"multiSelectionSeparator\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__multiSelectionSeparator =  setting[\"multiSelectionSeparator\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"pattern\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__pattern =  setting[\"pattern\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"restrict\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__restrict =  setting[\"restrict\"];\r\n\t\t\t\tif(this.__restrict)\r\n\t\t\t\t{\r\n\t\t\t\t\t//this.__restrict = \"[\" + this.__restrict + \"]\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"dataSource\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__dataSource = setting[\"dataSource\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"styleClass\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__styleClass = setting[\"styleClass\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"dropDownSetting\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__dropDownSetting = setting[\"dropDownSetting\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"filterSetting\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__filterSetting = setting[\"filterSetting\"];\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"enableHighlighting\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__enableHighlighting = Boolean.parse(setting[\"enableHighlighting\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"searchRecordLimit\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__searchRecordLimit = parseInt(setting[\"searchRecordLimit\"]);\r\n\t\t\t}\r\n\t\t\tif(setting.hasOwnProperty(\"splitSearchType\"))\r\n\t\t\t{\r\n\t\t\t\tthis.__splitSearchType =  setting[\"splitSearchType\"];\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__createComponents = function() \r\n\t{\r\n\t\tif(!this.__outerContainer)\r\n\t\t{\r\n\t\t\tthis.__applyTipToCoreComp = true;\r\n\t\t\tthis.__outerContainer = this.util.createDiv(this.getID() + \"#container\",\"nsTextBoxContainer\");\r\n\t\t\tthis.addChild(this.__outerContainer);\r\n\t\t\tthis.__textBox = this.util.createElement(\"INPUT\",this.getID()+ \"#textBox\",\"nsTextBox\");\r\n\t\t\tthis.__textBox.setAttribute(\"type\", this.__getType());\r\n\t\t\tthis.util.addEvent(this.__textBox,\"blur\",this.__textBoxFocusOutHandler.bind(this));\r\n\t\t\tthis.util.addEvent(this.__textBox,\"focus\",this.__focusInHandler.bind(this));\r\n\t\t\t//this.util.addEvent(this.__textBox,\"search\",this.__searchHandler.bind(this));\r\n\t\t\tif(this.__enableAutoComplete)\r\n\t\t\t{\r\n\t\t\t\tthis.util.addStyleClass(this.__outerContainer,\"nsTextBoxContainerAutoComplete\");\r\n\t\t\t\tthis.util.addStyleClass(this.__textBox,\"nsTextBoxAutoComplete\");\r\n\t\t\t\tthis.__textBox.setAttribute(\"autocomplete\",\"off\");\r\n\t\t\t\tif(this.__enableMultipleSelection)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.util.addEvent(this.__textBox,\"keyup\",this.__keyUpMultiSelectionHandler.bind(this));\r\n\t\t\t\t\tthis.util.addEvent(this.__textBox,\"keydown\",this.__keyDownMultiSelectionHandler.bind(this));\r\n\t\t\t\t\tthis.util.addStyleClass(this.__outerContainer,\"nsTextBoxMultiSelectContainer\");\r\n\t\t\t\t\tthis.util.addEvent(this.__outerContainer,\"click\",this.__outerContainerClickHandler.bind(this));\r\n\t\t\t\t\tthis.util.addStyleClass(this.__textBox,\"nsTextBoxMultiSelect\");\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.util.addEvent(this.__textBox,\"keyup\",this.__keyUpHandler.bind(this));\r\n\t\t\t\t\tthis.util.addEvent(this.__textBox,\"keydown\",this.__keyDownHandler.bind(this));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.__outerContainer.appendChild(this.__textBox);\r\n\t\t\tthis.__createList();\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__getType = function()\r\n\t{\r\n\t\tvar textBoxType = \"text\";\r\n\t\tif(this.__type)\r\n\t\t{\r\n\t\t\tif(this.__type ===  NSTextBox.TYPE_AUTOCOMPLETE)\r\n\t\t\t{\r\n\t\t\t\ttextBoxType = \"search\";\r\n\t\t\t\tthis.__enableAutoComplete = true;\r\n\t\t\t}\r\n\t\t\telse if(this.__displayAsPassword)\r\n\t\t\t{\r\n\t\t\t\ttextBoxType = \"password\";\r\n\t\t\t}\r\n\t\t\telse if(this.__type ===  NSTextBox.TYPE_AUTOTEXT || this.__type ===  NSTextBox.TYPE_EMAIL || this.__type ===  NSTextBox.TYPE_NUMBER || this.__type ===  NSTextBox.TYPE_PASSWORD || this.__type ===  NSTextBox.TYPE_URL)\r\n\t\t\t{\r\n\t\t\t\ttextBoxType = this.__type;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn textBoxType;\r\n\t};\r\n\t\r\n\t\r\n\tNSTextBox.prototype.__setTextBoxProperty = function() \r\n\t{\r\n\t\tif(this.__textBox)\r\n\t\t{\r\n\t\t\tif(this.__required)\r\n\t\t\t{\r\n\t\t\t\tthis.__textBox.setAttribute(\"required\", \"\");\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.__textBox.removeAttribute(\"required\");   \r\n\t\t\t}\r\n\t\t\tif(this.__placeholder && this.__placeholder.length > 0 && !this.__enableMultipleSelection)\r\n\t\t\t{\r\n\t\t\t\tthis.__textBox.setAttribute(\"placeholder\", this.__placeholder);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.__textBox.removeAttribute(\"placeholder\");\r\n\t\t\t}\r\n\t\t\tif(this.__maxChars > -1)\r\n\t\t\t{\r\n\t\t\t\tthis.__textBox.setAttribute(\"maxLength\", this.__maxChars);\r\n\t\t\t}\r\n\t\t\tif(this.__pattern)\r\n\t\t\t{\r\n\t\t\t\tthis.__textBox.setAttribute(\"pattern\", this.__pattern);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.__textBox.removeAttribute(\"pattern\");\r\n\t\t\t}\r\n\t\t\tif(this.__styleClass)\r\n\t\t\t{\r\n\t\t\t\tthis.__setStyleClass(this.__styleClass);\r\n\t\t\t}\r\n\t\t\tif(this.__restrict)\r\n\t\t\t{\r\n\t\t\t\tif(!this.__keyPressedRef)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__keyPressedRef = this.__keyPressHandler.bind(this);\r\n\t\t\t\t\tthis.util.addEvent(this.__textBox,\"keypress\",this.__keyPressedRef);\r\n\t\t\t\t}\r\n\t\t\t\tif(!this.__pasteRef)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__pasteRef = this.__pasteHandler.bind(this);\r\n\t\t\t\t\tthis.util.addEvent(this.__textBox,\"paste\",this.__pasteRef);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif(this.__keyPressedRef)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.util.removeEvent(this.__textBox,\"keypress\",this.__keyPressedRef);\r\n\t\t\t\t\tthis.__keyPressedRef = null;\r\n\t\t\t\t}\r\n\t\t\t\tif(this.__pasteRef)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.util.removeEvent(this.__textBox,\"paste\",this.__pasteRef);\r\n\t\t\t\t\tthis.__pasteRef = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar genericEventHandler = this.__genericTextBoxEvent.bind(this);\r\n\t\tthis.util.addEvent(this.__textBox,\"change\",genericEventHandler);\r\n\t\tthis.util.addEvent(this.__textBox,\"input\",this.__searchHandler.bind(this));\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__setStyleClass = function(cssClass)\r\n\t{\r\n\t\tif(cssClass && cssClass.length > 0)\r\n\t\t{\r\n\t\t\tthis.__textBox.setAttribute(\"class\",\"\");\r\n\t\t\tthis.util.addStyleClass(this.__textBox,cssClass);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__outerContainerClickHandler = function(event)\r\n\t{\r\n\t\tevent = this.util.getEvent(event);\r\n\t\tthis.__textBox.focus();\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__documentKeyUpHandler = function(event)\r\n\t{\r\n\t\tevent = this.util.getEvent(event);\r\n\t\tvar keyCode = this.util.getKeyUnicode(event);\r\n\t\tif(this.__isFocusOnControl() && this.__enableMultipleSelection && (keyCode == this.util.KEYCODE.SHIFT || keyCode == this.util.KEYCODE.CTRL))\r\n\t\t{\r\n\t\t\tthis.__multiSelectHandler();\r\n\t\t\tthis.__hideList();\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__documentKeyDownHandler = function(event)\r\n\t{\r\n\t\tevent = this.util.getEvent(event);\r\n\t\tvar keyCode = this.util.getKeyUnicode(event);\r\n\t\tif(this.__isFocusOnControl() && this.__enableMultipleSelection && (keyCode == this.util.KEYCODE.BACKSPACE))\r\n\t\t{\r\n\t\t\t var arrSelectedItems = this.getSelectedItems();\r\n\t\t\t if(arrSelectedItems && arrSelectedItems.length > 0) \r\n\t\t\t {\r\n\t\t\t\t arrSelectedItems.pop();\r\n\t\t\t\t if(this.__getNSControl())\r\n\t\t\t\t {\r\n\t\t\t\t\t this.setSelectedItems(arrSelectedItems);\r\n\t\t\t\t }\r\n\t\t\t\t this.__selectedItems = arrSelectedItems;\r\n\t\t\t\t this.__refreshMultiSelectTags();\r\n\t         }\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__keyUpHandler = function(event)\r\n\t{\r\n\t\tif(this.__isFocusOnControl())\r\n\t\t{\r\n\t\t\tevent = this.util.getEvent(event);\r\n\t\t\tvar keyCode = this.util.getKeyUnicode(event);\r\n\t\t\tif (keyCode == this.util.KEYCODE.ESC) \r\n\t\t\t{\r\n\t\t\t\tthis.__hideList();\r\n\t\t\t}\r\n\t\t\telse if (!(keyCode == this.util.KEYCODE.UP || keyCode == this.util.KEYCODE.DOWN || keyCode == this.util.KEYCODE.ENTER || keyCode == this.util.KEYCODE.SHIFT || keyCode == this.util.KEYCODE.CTRL)) \r\n\t\t\t{\r\n\t\t\t\tthis.__itemUnSelectHandler(event);\r\n\t\t\t\tif(!this.__textBox.value || this.__textBox.value == \"\" || this.__textBox.value.length < this.__minSearchStartChars)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__hideList();\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif(this.__timerInstance)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tclearTimeout(this.__timerInstance);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar compRef = this;\r\n\t\t\t\t\tthis.__timerInstance = setTimeout(\r\n\t\t\t\t\tfunction()\r\n\t\t\t\t\t{ \r\n\t\t\t\t\t\tcompRef.__searchText(compRef.__getSearchText(compRef.__textBox.value));\r\n\t\t\t\t\t},this.__delay);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (keyCode == this.util.KEYCODE.UP || keyCode == this.util.KEYCODE.DOWN)\r\n\t\t\t{\r\n\t\t\t\tvar nsControl = this.__getNSControl();\r\n\t\t\t\tif(nsControl && !nsControl.hasFocus())\r\n\t\t\t\t{\r\n\t\t\t\t\tnsControl.setFocus(true);\r\n\t\t\t\t\tnsControl.__setRowHover(0);\r\n\t\t\t\t\tthis.__lastNavigatedItem = (nsControl.__arrInternalSource && nsControl.__arrInternalSource.length > 0) ? nsControl.__arrInternalSource[0] : null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__keyDownHandler = function(event)\r\n\t{\r\n\t\tif(this.__isFocusOnControl())\r\n\t\t{\r\n\t\t\tevent = this.util.getEvent(event);\r\n\t\t\tvar keyCode = this.util.getKeyUnicode(event);\r\n\t\t\tif(keyCode == this.util.KEYCODE.TAB)\r\n\t\t\t{\r\n\t\t\t\tif(this.__lastNavigatedItem)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__itemSelectHandler(null,this.__lastNavigatedItem);\r\n\t\t\t\t\tthis.__lastNavigatedItem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__keyUpMultiSelectionHandler = function(event)\r\n\t{\r\n\t\tif(this.__isFocusOnControl())\r\n\t\t{\r\n\t\t\tevent = this.util.getEvent(event);\r\n\t\t\tvar keyCode = this.util.getKeyUnicode(event);\r\n\t\t\t//if backspace is pressed then return\r\n\t\t\tif(keyCode == this.util.KEYCODE.BACKSPACE)\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (keyCode == this.util.KEYCODE.ESC) \r\n\t\t\t{\r\n\t\t\t\tthis.__hideList();\r\n\t\t\t}\r\n\t\t\telse if(keyCode == this.util.KEYCODE.SHIFT || keyCode == this.util.KEYCODE.CTRL)\r\n\t\t\t{\r\n\t\t\t\tthis.__multiSelectHandler();\r\n\t\t\t\tthis.__hideList();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//key Up\r\n\t\t\t/*if(keyCode === this.util.KEYCODE.UP && isShiftCtrlPressed && this.__enableMultipleSelection)\r\n\t\t\t{\r\n\t\t\t}\r\n\t\t\t//key down\r\n\t\t\telse if(keyCode === this.util.KEYCODE.DOWN && isShiftCtrlPressed && this.__enableMultipleSelection)\r\n\t\t\t{\r\n\t\t\t}*/\r\n\t\t\telse if (!(keyCode == this.util.KEYCODE.UP || keyCode == this.util.KEYCODE.DOWN || keyCode == this.util.KEYCODE.ENTER || keyCode == this.util.KEYCODE.SHIFT || keyCode == this.util.KEYCODE.CTRL)) \r\n\t\t\t{\r\n\t\t\t\tif(!this.__textBox.value || this.__textBox.value == \"\" || this.__textBox.value.length < this.__minSearchStartChars)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__hideList();\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif(this.__timerInstance)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tclearTimeout(this.__timerInstance);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar compRef = this;\r\n\t\t\t\t\tthis.__timerInstance = setTimeout(\r\n\t\t\t\t\tfunction()\r\n\t\t\t\t\t{ \r\n\t\t\t\t\t\tcompRef.__searchText(compRef.__getSearchText(compRef.__textBox.value));\r\n\t\t\t\t\t},this.__delay);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__keyDownMultiSelectionHandler = function(event)\r\n\t{\r\n\t\tevent = this.util.getEvent(event);\r\n\t\tvar currentWidth = this.__textBox.offsetWidth;\r\n\t\tvar width = this.__measureString(this.__textBox,this.__textBox.value + event.key) + 4;\r\n\t\tif (width !== currentWidth) \r\n\t\t{\r\n\t\t\tthis.__textBox.style.width = width + \"px\";\r\n\t\t\tthis.__updateListPos();\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__keyPressHandler = function(event)\r\n\t{\r\n\t\tif(this.__isFocusOnControl())\r\n\t\t{\r\n\t\t\tevent = this.util.getEvent(event);\r\n\t\t\tvar keyCode = this.util.getKeyUnicode(event);\r\n\t\t\tvar keyPressed = String.fromCharCode(keyCode);\r\n\t\t\tif(!this.util.checkRegexValue(this.__restrict,keyPressed))\r\n\t\t\t{\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__genericTextBoxEvent = function(event,fireForcefully)\r\n\t{\r\n\t\tif(this.__isFocusOnControl() || fireForcefully)\r\n\t\t{\r\n\t\t\tevent = this.util.getEvent(event);\r\n\t\t\tvar cancelled = this.util.dispatchEvent(this.__baseComponent,event.type,this.getText(),{changeEvent:event},null,true);\r\n\t\t\tif(cancelled)\r\n\t\t\t{\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__documentClickHandler = function(event)\r\n\t{\r\n\t\tvar closeList = true;\r\n\t\tvar target = this.util.getTarget(event);\r\n\t\tif(target && target === this.__textBox)\r\n\t\t{\r\n\t\t\tcloseList = false;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tvar targetList = this.util.findParentBySelector(target,\".nsTextBoxList\");\r\n\t\t\tif(targetList)\r\n\t\t\t{\r\n\t\t\t\tcloseList = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(closeList)\r\n\t\t{\r\n\t\t\tthis.__hideList();\r\n\t\t\tthis.util.dispatchEvent(this.__baseComponent,NSTextBox.LIST_CLOSED_WITHOUT_SELECTION,this.getText(),{changeEvent:event});\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__pasteHandler = function(event)\r\n\t{\r\n\t\tevent = this.util.getEvent(event);\r\n\t\tvar pastedText = undefined;\r\n\t\tvar text = \"\";\r\n\t\tif (this.__context.clipboardData && this.__context.clipboardData.getData) \r\n\t\t{ // IE\r\n\t\t    pastedText = this.__context.clipboardData.getData(\"Text\");\r\n\t\t} \r\n\t\telse if (event.clipboardData && event.clipboardData.getData) \r\n\t\t{\r\n\t\t    pastedText = event.clipboardData.getData(\"text/plain\");\r\n\t\t}\r\n\t\tvar pastedTextLength = pastedText.length;\r\n\t\tfor (var count = 0; count < pastedTextLength; count++) \r\n\t\t{\r\n\t\t\tvar char = pastedText.charAt(count);\r\n\t        if(this.util.checkRegexValue(this.__restrict,char))\r\n\t    \t{\r\n\t        \ttext += char;\r\n\t    \t}\r\n\t    }\r\n\t\tthis.__textBox.value += text;\r\n\t\tevent.preventDefault();\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__focusInHandler = function(event)\r\n\t{\r\n\t\tif(this.nsTip)\r\n\t\t{\r\n\t\t\tthis.nsTip.remove();\r\n\t\t}\r\n\t\tif(this.__enableAutoComplete)\r\n\t\t{\r\n\t\t\tif(this.__textBox.value.length >= this.__minSearchStartChars && this.__dataSource && this.__dataSource.length > 0 && !this.__isFromItemSelected && !this.__isFromCloseIcon)\r\n\t\t\t{\r\n\t\t\t\tthis.__setListDataSource(this.__dataSource);\r\n\t\t\t\tif(this.__textBox.value.length > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__searchText(this.__getSearchText(this.__textBox.value));\r\n\t\t\t\t}\r\n\t\t\t\tthis.__showHideList(true);\r\n\t\t\t}\r\n\t\t\tthis.__isFromItemSelected = false;\r\n\t\t\tthis.__isFromCloseIcon = false;\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__textBoxFocusOutHandler = function(event)\r\n\t{\r\n\t\tif(this.__minChars > -1 && this.__textBox.value && this.__textBox.value.length < this.__minChars)\r\n\t\t{\r\n\t\t\tthis.__textBox.setCustomValidity(\"Please enter atleast \" + this.__minChars  + \" characters.\");\r\n\t\t}\r\n\t\telse \r\n\t\t{\r\n\t\t\tthis.__textBox.setCustomValidity(\"\");\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__searchHandler = function(event)\r\n\t{\r\n\t\t//the above code is for cross icon clicked when we enter any character\r\n\t\t//it might result in ITEM_UNSELECTED event called multiple times\r\n\t\tif(this.__enableAutoComplete && this.getSelectedItem() && this.__textBox.value == \"\")\r\n\t\t{\r\n\t\t\tthis.unSelectAll(true);\r\n\t\t}\r\n\t\tthis.__genericTextBoxEvent(event,true);\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__searchText = function(searchString,callClientSearch)\r\n\t{\r\n\t\tif(!callClientSearch && this.__isServerSideCall(searchString))\r\n\t\t{\r\n\t\t\tif(this.__lastSearchParam.toLowerCase() !== searchString.substr(0,this.__minSearchStartChars).toLowerCase())\r\n\t\t\t{\r\n\t\t\t\tif(this.__serverSearchCallback && this.util.isFunction(this.__serverSearchCallback))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__isFromSearchTextSever = true;\r\n\t\t\t\t\tvar sendString = searchString;\r\n\t\t\t\t\tif(this.__enableServerWithSmartSearch)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__lastSearchParam = searchString.substr(0,this.__minSearchStartChars);\r\n\t\t\t\t\t\tsendString = this.__lastSearchParam;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.__serverSearchCallback(sendString,this.__filterSetting,this.__enableHighlighting,this.__searchRecordLimit);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.util.throwNSError(\"NSTextBox\",\"ServerSearchCallback attribute doesnot have a valid value\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if(this.__dataSource && this.__dataSource.length > 0)\r\n\t\t{\r\n\t\t\tif(searchString === \"\")\r\n\t\t\t{\r\n\t\t\t\t//should not have been done like this but grid has method resetFilters and List has resetFilter\r\n\t\t\t\tvar nsControl = this.__getNSControl();\r\n\t\t\t\tvar resetFilter = nsControl[\"resetFilter\"] ? nsControl[\"resetFilter\"] : nsControl[\"resetFilters\"];\r\n\t\t\t\tresetFilter();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvar control = this.__getNSControl();\r\n\t\t\t\tif(this.__isAutoCompleteTypeList())\r\n\t\t\t\t{\r\n\t\t\t\t\tcontrol.filter(searchString,this.__filterSetting,this.__enableHighlighting,this.__searchRecordLimit);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tvar arrFilterField = this.__arrGridSearchField;\r\n\t\t\t\t\tif(!arrFilterField || arrFilterField.length === 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tarrFilterField = [this.__labelField];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(this.__isGridOrFilter)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t var filter = [];\r\n\t\t\t\t\t\t var setting = {};\r\n\t\t\t\t\t\t for(var count = 0;count < arrFilterField.length;count++)\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t var field = arrFilterField[count];\r\n\t\t\t\t\t\t\t if(field)\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t var item = {};\r\n\t\t\t\t\t\t\t\t item[field] = searchString;\r\n\t\t\t\t\t\t\t\t setting[field] = this.__filterSetting;\r\n\t\t\t\t\t\t\t\t filter.push(item);\r\n\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t }\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar filter = {};\r\n\t\t\t\t\t\tvar setting = {};\r\n\t\t\t\t\t\tfor(var count = 0;count < arrFilterField.length;count++)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvar field = arrFilterField[count];\r\n\t\t\t\t\t\t\tif(field)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfilter[field] = searchString;\r\n\t\t\t\t\t\t\t\tsetting[field] = this.__filterSetting;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontrol.filter(filter,setting,this.__enableHighlighting,this.__searchRecordLimit);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.__showHideList(true);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__isServerSideCall = function(searchString)\r\n\t{\r\n\t\tif(this.__enableServerWithSmartSearch)\r\n\t\t{\r\n\t\t\tvar isSearchLength = ((searchString.length === this.__minSearchStartChars) || (searchString.length > this.__minSearchStartChars));\r\n\t\t\tvar isContainsTempSearch = (!this.__dataSource || this.__dataSource.length == 0) || (this.__lastSearchParam.toLowerCase() !== searchString.substr(0,this.__minSearchStartChars).toLowerCase());\r\n\t\t\treturn (isSearchLength && isContainsTempSearch);\r\n\t\t}\r\n\t\treturn this.__enableServerSide;\r\n\t\t\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__createList = function()\r\n\t{\r\n\t\tif(!this.__list)\r\n\t\t{\r\n\t\t\tthis.__list = this.util.createDiv(this.getID() + \"list\",\"nsTextBoxList\");\r\n\t\t\tthis.__list.style.height = this.__maxListHeight + \"px\";\r\n\t\t\tthis.__outerContainer.appendChild(this.__list);\r\n\t\t\tif(this.__isAutoCompleteTypeList())\r\n\t\t\t{\r\n\t\t\t\tif(!this.__nsList)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(!this.__dropDownSetting)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__dropDownSetting = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar overrideSetting = {labelField:this.__labelField,enableDragDrop:false,enableDragByHandle:false,\r\n\t\t\t\t\t\t\t   \t   enableMultipleSelection:this.__enableMultipleSelection,enableKeyboardNavigation:this.__enableKeyboardNavigation,\r\n\t\t\t\t\t\t\t   \t   enableMouseHover:true,enableMouseHoverAnimation:false,disableHoverField:this.__stopHoveringField};\r\n\t\t\t\t\tif(this.__templateID)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\toverrideSetting[\"template\"] = this.__templateID;\r\n\t\t\t\t\t\toverrideSetting[\"setData\"] = this.__setDataCallBack;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\toverrideSetting[\"itemRenderer\"] = this.__itemRenderer;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar setting =  this.util.cloneObject(this.__dropDownSetting);\r\n\t\t\t\t\tfor(var key in overrideSetting)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsetting[key] = overrideSetting[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.__nsList = new NSList(this.__list,setting);\r\n\t\t\t\t\t//this.__updateListPos();\r\n\t\t\t\t\tthis.util.addEvent(this.__list,this.__nsList.ITEM_NAVIGATED,this.__itemNavigationHandler.bind(this));\r\n\t\t\t\t\tthis.util.addEvent(this.__list,this.__nsList.ITEM_SELECTED,this.__itemSelectHandler.bind(this));\r\n\t\t\t\t\tthis.util.addEvent(this.__list,this.__nsList.ITEM_UNSELECTED,this.__itemUnSelectHandler.bind(this));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif(!this.__nsGrid)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(!this.__dropDownSetting)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__dropDownSetting = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar overrideSetting = {type:\"\",enableMouseHover:true,enableFilter:true,enableAdvancedFilter:false,enablePagination:false, \r\n\t\t\t\t\t          \t\t\t\tcolumnResizable:false,columnDraggable:false,leftFixedColumn:0,rightFixedColumn:0,\r\n\t\t\t\t\t          \t\t\t\tenableRowMove:false,enableContextMenu:false,enableExport:false,enableResponsive:false,\r\n\t\t\t\t\t          \t\t\t\ttheme:\"White\",enableCellSelection:false,enableRowSelection:true,enableDragDrop:false,\r\n\t\t\t\t\t          \t\t\t\tenableDragByHandle:false,enableMultipleSelection:this.__enableMultipleSelection,\r\n\t\t\t\t\t          \t\t\t\tenableKeyboardNavigation:this.__enableKeyboardNavigation,disableHoverField:this.__stopHoveringField,\r\n\t\t\t\t\t          \t\t\t\tisPopUp:true};\r\n\t\t\t\t\t/*if(this.__templateID)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\toverrideSetting[\"template\"] = this.__templateID;\r\n\t\t\t\t\t\toverrideSetting[\"setData\"] = this.__setDataCallBack;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\toverrideSetting[\"itemRenderer\"] = this.__itemRenderer;\r\n\t\t\t\t\t}*/\r\n\t\t\t\t\tvar setting =  this.util.cloneObject(this.__dropDownSetting);\r\n\t\t\t\t\tfor(var key in overrideSetting)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsetting[key] = overrideSetting[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfor(var count = 0;count < setting[\"columns\"].length;count++)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar column = setting[\"columns\"][count];\r\n\t\t\t\t\t\tcolumn[\"enableFilter\"] = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.__nsGrid = new NSGrid(this.__list,setting);\r\n\t\t\t\t\tthis.__nsGrid.setColumn(setting[\"columns\"]);\r\n\t\t\t\t\t//this.__nsGrid.dataSource(arrItems);\r\n\t\t\t\t\tthis.util.addEvent(this.__list,NSGrid.ROW_NAVIGATED,this.__itemNavigationHandler.bind(this));\r\n\t\t\t\t\tthis.util.addEvent(this.__list,NSGrid.ROW_SELECTED,this.__itemSelectHandler.bind(this));\r\n\t\t\t\t\tthis.util.addEvent(this.__list,NSGrid.ROW_UNSELECTED,this.__itemUnSelectHandler.bind(this));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.__hideList();\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__setListDataSource = function(dataSource)\r\n\t{\r\n\t\tif(this.__getNSControl())\r\n\t\t{\r\n\t\t\tvar source = this.util.cloneObject(dataSource);\r\n\t\t\tthis.__getNSControl().dataSource(source);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__updateListPos = function()\r\n\t{\r\n\t\tif(this.__list)\r\n\t\t{\r\n\t\t\t/*var offset = {left:0,top:1};\r\n            var rect = this.__outerContainer.getBoundingClientRect();\r\n            this.__list.style.left = Math.round(rect.left + (window.pageXOffset || document.documentElement.scrollLeft) + offset.left) + 'px';\r\n            this.__list.style.top = Math.round(rect.bottom + (window.pageYOffset || document.documentElement.scrollTop) + offset.top) + 'px';*/\r\n            if(this.__listWidth > 0)\r\n\t\t\t{\r\n\t\t\t\tthis.__list.style.width = this.__listWidth + \"px\";\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.__list.style.width = Math.round(rect.right - rect.left) + 'px'; // outerWidth\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__hideList = function()\r\n\t{\r\n\t\tthis.__showHideList(false);\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__showHideList = function(isShow)\r\n\t{\r\n\t\tif(this.__list)\r\n\t\t{\r\n\t\t\tthis.__list.style.visibility = isShow ? \"\" : \"hidden\";\r\n\t\t\t//this.__list.style.display = isShow ? \"\" : \"none\";\r\n\t\t\tif(isShow)\r\n\t\t\t{\r\n\t\t\t\tthis.__updateListPos();\r\n\t\t\t\tvar control = this.__getNSControl();\r\n\t\t\t\tif(control && control.reRender)\r\n\t\t\t\t{\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tcontrol.reRender.call(control);\r\n\t\t\t\t\t},10);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.__getNSControl().setFocus(false);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__isListVisible = function()\r\n\t{\r\n\t\tif(this.__list)\r\n\t\t{\r\n\t\t\treturn !(this.__list.style.visibility == \"hidden\");\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__itemNavigationHandler = function(event)\r\n\t{\r\n\t\tif(event && event.detail)\r\n\t\t{\r\n\t\t\tthis.__lastNavigatedItem = event.detail;\r\n\t\t\tif(!this.__enableMultipleSelection)\r\n\t\t\t{\r\n\t\t\t\t//this.__textBox.value = this.__lastNavigatedItem[this.__labelField];\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__itemSelectHandler = function(event,item)\r\n\t{\r\n\t\tvar selectedItem = item ? item : ((event && event.detail) ? event.detail : null);\r\n\t\tif(selectedItem)\r\n\t\t{\r\n\t\t\t selectedItem = this.__getNSControl().getOrignalItem(selectedItem);\r\n\t\t\t//console.log(this.__nsList.getSelectedItems());\r\n\t\t\tthis.__selectedItem = selectedItem;\r\n\t\t\tif(this.__enableMultipleSelection)\r\n\t\t\t{\r\n\t\t\t\tthis.__refreshMultiSelectTags();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.__textBox.value = this.__getItemText(this.__selectedItem);\r\n\t\t\t\tthis.__isFromItemSelected = true;\r\n\t\t\t\tthis.__hideList();\r\n\t\t\t}\r\n\t\t\tevent ? event.stopPropagation() : null;\r\n\t\t\tvar index = event ? event.index : null;\r\n\t\t\tthis.util.dispatchEvent(this.__baseComponent,NSTextBox.ITEM_SELECTED,selectedItem,{index:index});\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__itemUnSelectHandler = function(event)\r\n\t{\r\n\t\tif(this.__enableMultipleSelection)\r\n\t\t{\r\n\t\t\tthis.__refreshMultiSelectTags();\r\n\t\t}\r\n\t\t//this.__selectedItem = null;\r\n\t\t//this.__selectedItems = [];\r\n\t\tif(event)\r\n\t\t{\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tthis.util.dispatchEvent(this.__baseComponent,NSTextBox.ITEM_UNSELECTED,event.detail,{index:event.index});\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.util.dispatchEvent(this.__baseComponent,NSTextBox.ITEM_UNSELECTED);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__multiSelectHandler = function()\r\n\t{\r\n\t\tvar nsControl = this.__getNSControl();\r\n\t\tif(nsControl && nsControl.getSelectedItems() && nsControl.getSelectedItems().length > 0)\r\n\t\t{\r\n\t\t\tthis.__selectedItems = this.getSelectedItems();\r\n\t\t\tthis.__refreshMultiSelectTags();\r\n\t\t\t/*var setText = \"\";\r\n\t\t\tfor(var count = 0;count < this.__selectedItems.length;count++)\r\n\t\t\t{\r\n\t\t\t\tsetText += this.__multiSelectionSeparator + this.__selectedItems[count][this.__labelField];\r\n\t\t\t}\r\n\t\t\tif(setText && setText.length > 0)\r\n\t\t\t{\r\n\t\t\t\tthis.__textBox.value = setText.substring(1,setText.length);\r\n\t\t\t}*/\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__refreshMultiSelectTags = function() \r\n\t{\r\n\t    var arrTags = this.__getAllMultiSelectTags();\r\n\t    var length = arrTags.length;\r\n\t    var tag = null;\r\n\t    var count = 0;\r\n\t    for(count = length - 1;count > -1;count--)\r\n\t    {\r\n\t    \ttag = arrTags[count];\r\n\t    \ttag.parentNode.removeChild(tag);\r\n\t    }\r\n\t    var arrSelectedItems = this.getSelectedItems();\r\n\t    if(arrSelectedItems && arrSelectedItems.length > 0) \r\n\t    {\r\n\t    \tlength = arrSelectedItems.length;\r\n\t    \tfor(count = 0; count < length; count++) \r\n\t    \t{\r\n\t    \t\ttag = this.__createMultiSelectTag(arrSelectedItems[count]);\r\n\t    \t\tthis.__outerContainer.insertBefore(tag,this.__textBox);\r\n\t        }\r\n\t    }\r\n\t    this.__textBox.value = \"\";\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__createMultiSelectTag = function(item) \r\n\t{\r\n\t\tvar tag = this.util.createDiv(null,\"nsTextBoxMultiSelectTag\");\r\n\t    var content = this.util.createDiv(null,\"nsTextBoxMultiSelectTagText\");\r\n\t    content.textContent = this.__getItemText(item);\r\n\t    tag.appendChild(content);\r\n\t    var btnRemove = this.util.createDiv(null,\"nsTextBoxMultiSelectTagClose\");\r\n\t    this.util.addEvent(btnRemove,\"click\",this.__removeMultiSelectTag.bind(this,tag,item));\r\n\t    tag.appendChild(btnRemove);\r\n\t    return tag;\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__removeMultiSelectTag = function(tag,item,event) \r\n\t{\r\n\t\tvar selectedItems = this.getSelectedItems();\r\n\t\tvar index = selectedItems.indexOf(item);\r\n\t\tif(index > -1) \r\n\t\t{\r\n\t\t\titem[\"ns_field_selected\"] = false;\r\n\t\t\tselectedItems.splice(index,1);\r\n\t\t\tthis.setSelectedItems(selectedItems);\r\n\t\t}\r\n\t\tthis.__refreshMultiSelectTags();\r\n\t\tthis.__isFromCloseIcon = true;\r\n\t\tevent = this.util.getEvent(event);\r\n\t\tif(event)\r\n\t\t{\r\n\t\t\tevent.stopImmediatePropagation();\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__getAllMultiSelectTags = function() \r\n\t{\r\n\t\treturn this.__outerContainer.querySelectorAll(\".nsTextBoxMultiSelectTag\");\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__getItemText = function(item)\r\n\t{\r\n\t\tvar retValue = \"\";\r\n\t\tif(item)\r\n\t\t{\r\n\t\t\tvar isNoRecord = false;\r\n\t\t\tif(this.__selectedItem[\"__ns__index\"] === -1)\r\n\t\t\t{\r\n\t\t\t\tisNoRecord = true;\r\n\t\t\t}\r\n\t\t\tif(!isNoRecord)\r\n\t\t\t{\r\n\t\t\t\tif(this.__textBoxRendererCallback)\r\n\t\t\t\t{\r\n\t\t\t\t\tretValue = this.__textBoxRendererCallback(item,this.__labelField);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tretValue = item[this.__labelField];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn retValue;\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__isMouseHoverAllowed = function(item)\r\n\t{\r\n\t\tif(item && Boolean.parse(item[this.__stopHoveringField]))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__isFocusOnControl = function()\r\n\t{\r\n\t\tif(this.hasFocus() || (document.activeElement == this.__textBox) || (this.__getNSControl() && this.__getNSControl().hasFocus()))\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__isAutoCompleteTypeList = function()\r\n\t{\r\n\t\treturn (this.__dropDownType === NSTextBox.DROPDOWN_TYPE_LIST);\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__getNSControl = function()\r\n\t{\r\n\t\tif(this.__isAutoCompleteTypeList())\r\n\t\t{\r\n\t\t\treturn this.__nsList;\r\n\t\t}\r\n\t\treturn this.__nsGrid;\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__measureString = function(control,text)\r\n\t{\r\n\t\tif (!text) \r\n\t\t{\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tvar self= this;\r\n\t\tvar transferStyles = function(fromControl,toControl,arrProperties) \r\n\t\t{\r\n\t\t\tvar style = \"\";\r\n\t\t\tif (arrProperties) \r\n\t\t\t{\r\n\t\t\t\tvar length = arrProperties.length;\r\n\t\t\t\tfor (var count = 0; count < length; count++) \r\n\t\t\t\t{\r\n\t\t\t\t\tstyle += arrProperties[count] + \":\" + self.util.getStyleValue(fromControl,arrProperties[count]) + \";\";\r\n\t\t\t\t}\r\n\t\t\t} \r\n\t\t\telse \r\n\t\t\t{\r\n\t\t\t\tstyle = fromControl.getAttribute(\"style\");\r\n\t\t\t}\r\n\t\t\ttoControl.setAttribute(\"style\",style);\r\n\t\t};\r\n\t\t\r\n\t\tvar test = this.util.createElement(\"test\",null,\"nsTextBoxTest\");\r\n\t\ttest.appendChild(document.createTextNode(text)); \r\n\t\tdocument.body.appendChild(test);\r\n\t\ttransferStyles(control,test,['letterSpacing','fontSize','fontFamily','fontWeight','textTransform']);\r\n\t\tvar width = test.offsetWidth;\r\n\t\tdocument.body.removeChild(test);\r\n\t\r\n\t\treturn width;\r\n\t};\r\n\t\r\n\tNSTextBox.prototype.__getSearchText = function(searchValue)\r\n\t{\r\n\t\tif(searchValue && this.__splitSearchType)\r\n\t\t{\r\n\t\t\tvar arrSplit = searchValue.split(this.__splitSearchType);\r\n\t\t\tif(arrSplit && arrSplit.length)\r\n\t\t\t{\r\n\t\t\t\tsearchValue = arrSplit[arrSplit.length - 1]\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn searchValue;\r\n\t};\r\n\t\r\n\tNSTextBox.ITEM_SELECTED = \"itemSelected\";\r\n\tNSTextBox.ITEM_UNSELECTED = \"itemUnselected\";\r\n\tNSTextBox.TYPE_AUTOTEXT = \"text\";\r\n\tNSTextBox.TYPE_AUTOCOMPLETE = \"autocomplete\";\r\n\tNSTextBox.TYPE_EMAIL = \"email\";\r\n\tNSTextBox.TYPE_NUMBER = \"number\";\r\n\tNSTextBox.TYPE_PASSWORD = \"password\";\r\n\tNSTextBox.TYPE_URL = \"url\";\r\n\tNSTextBox.DROPDOWN_TYPE_LIST = \"list\";\r\n\tNSTextBox.DROPDOWN_TYPE_GRID = \"grid\";\r\n\tNSTextBox.LIST_CLOSED_WITHOUT_SELECTION = \"listClosedWithoutSelection\";\r\n\t\r\n\treturn NSTextBox;\r\n})();\r\nnsModuleExport(this,\"NSTextBox\",NSTextBox);";
