megamahi avatar megamahi committed cf47904

Added jqGrid 4.2.0

Comments (0)

Files changed (112)

 
 setup(
     name='tw2.jqplugins.jqgrid',
-    version='2.0b18',
+    version='2.0b19',
     description='toscawidgets2 wrapper for the jQuery grid plugin',
     long_description=long_description,
     author='Ralph Bean',

tw2/jqplugins/jqgrid/defaults.py

-_jqgrid_version_    = '3.8.3-dev-patched'
+_jqgrid_version_    = '4.2.0'
 _jqgrid_name_       = 'jqGrid'
 _jqgrid_css_basename_   = 'ui.jqgrid'
 _jqgrid_locale_     = 'en'

tw2/jqplugins/jqgrid/static/jquery/plugins/jqGrid/4.2.0/css/ellipsis-xbl.xml

+<?xml version="1.0"?>
+<bindings
+    xmlns="http://www.mozilla.org/xbl"
+    xmlns:xbl="http://www.mozilla.org/xbl"
+    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+    <binding id="ellipsis">
+        <content>
+            <xul:window><!-- xul:window tag required for FF2 -->
+                <xul:description crop="end" xbl:inherits="value=xbl:text"><children/></xul:description>
+            </xul:window>
+        </content>
+    </binding>
+</bindings>

tw2/jqplugins/jqgrid/static/jquery/plugins/jqGrid/4.2.0/css/ui.jqgrid.css

+/*Grid*/
+.ui-jqgrid {position: relative; font-size:11px;}
+.ui-jqgrid .ui-jqgrid-view {position: relative;left:0px; top: 0px; padding: .0em;}
+/* caption*/
+.ui-jqgrid .ui-jqgrid-titlebar {padding: .3em .2em .2em .3em; position: relative; border-left: 0px none;border-right: 0px none; border-top: 0px none;}
+.ui-jqgrid .ui-jqgrid-title { float: left; margin: .1em 0 .2em; }
+.ui-jqgrid .ui-jqgrid-titlebar-close { position: absolute;top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height:18px;}.ui-jqgrid .ui-jqgrid-titlebar-close span { display: block; margin: 1px; }
+.ui-jqgrid .ui-jqgrid-titlebar-close:hover { padding: 0; }
+/* header*/
+.ui-jqgrid .ui-jqgrid-hdiv {position: relative; margin: 0em;padding: 0em; overflow-x: hidden; border-left: 0px none !important; border-top : 0px none !important; border-right : 0px none !important;}
+.ui-jqgrid .ui-jqgrid-hbox {float: left; padding-right: 20px;}
+.ui-jqgrid .ui-jqgrid-htable {table-layout:fixed;margin:0em;}
+.ui-jqgrid .ui-jqgrid-htable th {height:22px;padding: 0 2px 0 2px;}
+.ui-jqgrid .ui-jqgrid-htable th div {overflow: hidden; position:relative; height:17px;}
+.ui-th-column, .ui-jqgrid .ui-jqgrid-htable th.ui-th-column {overflow: hidden;white-space: nowrap;text-align:center;border-top : 0px none;border-bottom : 0px none;}
+.ui-th-ltr, .ui-jqgrid .ui-jqgrid-htable th.ui-th-ltr {border-left : 0px none;}
+.ui-th-rtl, .ui-jqgrid .ui-jqgrid-htable th.ui-th-rtl {border-right : 0px none;}
+.ui-first-th-ltr {border-right: 1px solid; }
+.ui-first-th-rtl {border-left: 1px solid; }
+.ui-jqgrid .ui-th-div-ie {white-space: nowrap; zoom :1; height:17px;}
+.ui-jqgrid .ui-jqgrid-resize {height:20px !important;position: relative; cursor :e-resize;display: inline;overflow: hidden;}
+.ui-jqgrid .ui-grid-ico-sort {overflow:hidden;position:absolute;display:inline; cursor: pointer !important;}
+.ui-jqgrid .ui-icon-asc {margin-top:-3px; height:12px;}
+.ui-jqgrid .ui-icon-desc {margin-top:3px;height:12px;}
+.ui-jqgrid .ui-i-asc {margin-top:0px;height:16px;}
+.ui-jqgrid .ui-i-desc {margin-top:0px;margin-left:13px;height:16px;}
+.ui-jqgrid .ui-jqgrid-sortable {cursor:pointer;}
+.ui-jqgrid tr.ui-search-toolbar th { border-top-width: 1px !important; border-top-color: inherit !important; border-top-style: ridge !important }
+tr.ui-search-toolbar input {margin: 1px 0px 0px 0px}
+tr.ui-search-toolbar select {margin: 1px 0px 0px 0px}
+/* body */ 
+.ui-jqgrid .ui-jqgrid-bdiv {position: relative; margin: 0em; padding:0; overflow: auto; text-align:left;}
+.ui-jqgrid .ui-jqgrid-btable {table-layout:fixed; margin:0em; outline-style: none; }
+.ui-jqgrid tr.jqgrow { outline-style: none; }
+.ui-jqgrid tr.jqgroup { outline-style: none; }
+.ui-jqgrid tr.jqgrow td {font-weight: normal; overflow: hidden; white-space: pre; height: 22px;padding: 0 2px 0 2px;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;}
+.ui-jqgrid tr.jqgfirstrow td {padding: 0 2px 0 2px;border-right-width: 1px; border-right-style: solid;}
+.ui-jqgrid tr.jqgroup td {font-weight: normal; overflow: hidden; white-space: pre; height: 22px;padding: 0 2px 0 2px;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;}
+.ui-jqgrid tr.jqfoot td {font-weight: bold; overflow: hidden; white-space: pre; height: 22px;padding: 0 2px 0 2px;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;}
+.ui-jqgrid tr.ui-row-ltr td {text-align:left;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;}
+.ui-jqgrid tr.ui-row-rtl td {text-align:right;border-left-width: 1px; border-left-color: inherit; border-left-style: solid;}
+.ui-jqgrid td.jqgrid-rownum { padding: 0 2px 0 2px; margin: 0px; border: 0px none;}
+.ui-jqgrid .ui-jqgrid-resize-mark { width:2px; left:0; background-color:#777; cursor: e-resize; cursor: col-resize; position:absolute; top:0; height:100px; overflow:hidden; display:none;	border:0 none;}
+/* footer */
+.ui-jqgrid .ui-jqgrid-sdiv {position: relative; margin: 0em;padding: 0em; overflow: hidden; border-left: 0px none !important; border-top : 0px none !important; border-right : 0px none !important;}
+.ui-jqgrid .ui-jqgrid-ftable {table-layout:fixed; margin-bottom:0em;}
+.ui-jqgrid tr.footrow td {font-weight: bold; overflow: hidden; white-space:nowrap; height: 21px;padding: 0 2px 0 2px;border-top-width: 1px; border-top-color: inherit; border-top-style: solid;}
+.ui-jqgrid tr.footrow-ltr td {text-align:left;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;}
+.ui-jqgrid tr.footrow-rtl td {text-align:right;border-left-width: 1px; border-left-color: inherit; border-left-style: solid;}
+/* Pager*/
+.ui-jqgrid .ui-jqgrid-pager { border-left: 0px none !important;border-right: 0px none !important; border-bottom: 0px none !important; margin: 0px !important; padding: 0px !important; position: relative; height: 25px;white-space: nowrap;overflow: hidden;}
+.ui-jqgrid .ui-pager-control {position: relative;}
+.ui-jqgrid .ui-pg-table {position: relative; padding-bottom:2px; width:auto; margin: 0em;}
+.ui-jqgrid .ui-pg-table td {font-weight:normal; vertical-align:middle; padding:1px;}
+.ui-jqgrid .ui-pg-button  { height:19px !important;}
+.ui-jqgrid .ui-pg-button span { display: block; margin: 1px; float:left;}
+.ui-jqgrid .ui-pg-button:hover { padding: 0px; }
+.ui-jqgrid .ui-state-disabled:hover {padding:1px;}
+.ui-jqgrid .ui-pg-input { height:13px;font-size:.8em; margin: 0em;}
+.ui-jqgrid .ui-pg-selbox {font-size:.8em; line-height:18px; display:block; height:18px; margin: 0em;}
+.ui-jqgrid .ui-separator {height: 18px; border-left: 1px solid #ccc ; border-right: 1px solid #ccc ; margin: 1px; float: right;}
+.ui-jqgrid .ui-paging-info {font-weight: normal;height:19px; margin-top:3px;margin-right:4px;}
+.ui-jqgrid .ui-jqgrid-pager .ui-pg-div {padding:1px 0;float:left;list-style-image:none;list-style-position:outside;list-style-type:none;position:relative;}
+.ui-jqgrid .ui-jqgrid-pager .ui-pg-button { cursor:pointer; }
+.ui-jqgrid .ui-jqgrid-pager .ui-pg-div  span.ui-icon {float:left;margin:0 2px;}
+.ui-jqgrid td input, .ui-jqgrid td select .ui-jqgrid td textarea { margin: 0em;}
+.ui-jqgrid td textarea {width:auto;height:auto;}
+.ui-jqgrid .ui-jqgrid-toppager {border-left: 0px none !important;border-right: 0px none !important; border-top: 0px none !important; margin: 0px !important; padding: 0px !important; position: relative; height: 25px !important;white-space: nowrap;overflow: hidden;}
+/*subgrid*/
+.ui-jqgrid .ui-jqgrid-btable .ui-sgcollapsed span {display: block;}
+.ui-jqgrid .ui-subgrid {margin:0em;padding:0em; width:100%;}
+.ui-jqgrid .ui-subgrid table {table-layout: fixed;}
+.ui-jqgrid .ui-subgrid tr.ui-subtblcell td {height:18px;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;}
+.ui-jqgrid .ui-subgrid td.subgrid-data {border-top:  0px none !important;}
+.ui-jqgrid .ui-subgrid td.subgrid-cell {border-width: 0px 0px 1px 0px;}
+.ui-jqgrid .ui-th-subgrid {height:20px;}
+/* loading */
+.ui-jqgrid .loading {position: absolute; top: 45%;left: 45%;width: auto;z-index:101;padding: 6px; margin: 5px;text-align: center;font-weight: bold;display: none;border-width: 2px !important;}
+.ui-jqgrid .jqgrid-overlay {display:none;z-index:100;}
+* html .jqgrid-overlay {width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');}
+* .jqgrid-overlay iframe {position:absolute;top:0;left:0;z-index:-1;width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');}
+/* end loading div */
+/* toolbar */
+.ui-jqgrid .ui-userdata {border-left: 0px none;	border-right: 0px none;	height : 21px;overflow: hidden;	}
+/*Modal Window */
+.ui-jqdialog { display: none; width: 300px; position: absolute; padding: .2em; font-size:11px; overflow:visible;}
+.ui-jqdialog .ui-jqdialog-titlebar { padding: .3em .2em; position: relative;  }
+.ui-jqdialog .ui-jqdialog-title { margin: .1em 0 .2em; } 
+.ui-jqdialog .ui-jqdialog-titlebar-close { position: absolute;  top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+
+.ui-jqdialog .ui-jqdialog-titlebar-close span { display: block; margin: 1px; }
+.ui-jqdialog .ui-jqdialog-titlebar-close:hover, .ui-jqdialog .ui-jqdialog-titlebar-close:focus { padding: 0; }
+.ui-jqdialog-content, .ui-jqdialog .ui-jqdialog-content { border: 0; padding: .3em .2em; background: none; height:auto;}
+.ui-jqdialog .ui-jqconfirm {padding: .4em 1em; border-width:3px;position:absolute;bottom:10px;right:10px;overflow:visible;display:none;height:80px;width:220px;text-align:center;}
+/* end Modal window*/
+/* Form edit */
+.ui-jqdialog-content .FormGrid {margin: 0px;}
+.ui-jqdialog-content .EditTable { width: 100%; margin-bottom:0em;}
+.ui-jqdialog-content .DelTable { width: 100%; margin-bottom:0em;}
+.EditTable td input, .EditTable td select, .EditTable td textarea {margin: 0em;}
+.EditTable td textarea { width:auto; height:auto;}
+.ui-jqdialog-content td.EditButton {text-align: right;border-top: 0px none;border-left: 0px none;border-right: 0px none; padding-bottom:5px; padding-top:5px;}
+.ui-jqdialog-content td.navButton {text-align: center; border-left: 0px none;border-top: 0px none;border-right: 0px none; padding-bottom:5px; padding-top:5px;}
+.ui-jqdialog-content input.FormElement {padding:.3em}
+.ui-jqdialog-content .data-line {padding-top:.1em;border: 0px none;}
+
+.ui-jqdialog-content .CaptionTD {text-align: left; vertical-align: middle;border: 0px none; padding: 2px;white-space: nowrap;}
+.ui-jqdialog-content .DataTD {padding: 2px; border: 0px none; vertical-align: top;}
+.ui-jqdialog-content .form-view-data {white-space:pre}
+.fm-button { display: inline-block; margin:0 4px 0 0; padding: .4em .5em; text-decoration:none !important; cursor:pointer; position: relative; text-align: center; zoom: 1; }
+.fm-button-icon-left { padding-left: 1.9em; }
+.fm-button-icon-right { padding-right: 1.9em; }
+.fm-button-icon-left .ui-icon { right: auto; left: .2em; margin-left: 0; position: absolute; top: 50%; margin-top: -8px; }
+.fm-button-icon-right .ui-icon { left: auto; right: .2em; margin-left: 0; position: absolute; top: 50%; margin-top: -8px;}
+#nData, #pData { float: left; margin:3px;padding: 0; width: 15px; }
+/* End Eorm edit */
+/*.ui-jqgrid .edit-cell {}*/
+.ui-jqgrid .selected-row, div.ui-jqgrid .selected-row td {font-style : normal;border-left: 0px none;}
+/* Tree Grid */
+.ui-jqgrid .tree-wrap {float: left; position: relative;height: 18px;white-space: nowrap;overflow: hidden;}
+.ui-jqgrid .tree-minus {position: absolute; height: 18px; width: 18px; overflow: hidden;}
+.ui-jqgrid .tree-plus {position: absolute;	height: 18px; width: 18px;	overflow: hidden;}
+.ui-jqgrid .tree-leaf {position: absolute;	height: 18px; width: 18px;overflow: hidden;}
+.ui-jqgrid .treeclick {cursor: pointer;}
+/* moda dialog */
+* iframe.jqm {position:absolute;top:0;left:0;z-index:-1;width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');}
+.ui-jqgrid-dnd tr td {border-right-width: 1px; border-right-color: inherit; border-right-style: solid; height:20px}
+/* RTL Support */
+.ui-jqgrid .ui-jqgrid-title-rtl {float:right;margin: .1em 0 .2em; }
+.ui-jqgrid .ui-jqgrid-hbox-rtl {float: right; padding-left: 20px;}
+.ui-jqgrid .ui-jqgrid-resize-ltr {float: right;margin: -2px -2px -2px 0px;}
+.ui-jqgrid .ui-jqgrid-resize-rtl {float: left;margin: -2px 0px -1px -3px;}
+.ui-jqgrid .ui-sort-rtl {left:0px;}
+.ui-jqgrid .tree-wrap-ltr {float: left;}
+.ui-jqgrid .tree-wrap-rtl {float: right;}
+.ui-jqgrid .ui-ellipsis {text-overflow:ellipsis; -moz-binding:url('ellipsis-xbl.xml#ellipsis');}

tw2/jqplugins/jqgrid/static/jquery/plugins/jqGrid/4.2.0/css/ui.jqgrid.word_wrap.css

+.ui-jqgrid tr.jqgrow td {
+    white-space: normal
+}

tw2/jqplugins/jqgrid/static/jquery/plugins/jqGrid/4.2.0/js/Changes.txt

+3.6 version
+===========
+Bug Fixes
+---------
+   * Fix problem with getAbsoluteIndex on IE8
+   * Fix in triggerReload grid to reset the savedRow array.
+   * Fix in setGridWidth  method when try to resize a grid a and there is no data.
+   * Fix header aligment in ie8
+   * Fix in createEl function to check for val and not for html when select
+   * making getChangedCells method compatible with unformat function if defined
+   * Fixed record count when scroll true
+   * Fix in setSelection method to accept numbers
+   * Fix IE header checkbox when multiselect is true
+   * Fix for searching DOM elements with id containing special characters
+   * Fix a checkbox checking in form editing module.
+   * Fix getCol to use unformat function
+   * Better looking buttons in form editing
+   * Fix searchFilter in IE7 and IE6 not to return undefined value when more 
+than one field is searched.
+   * Some fixes for datepicker UI in inline and cell edit (when present)
+   * Fix in setLabel method not to clear the sort icons when we set new label
+   * Fix in form edit when a formatter select is used
+   * Fix the id pollution when multiselect is enabled. Now the id of every 
+common multiselect is combination of cb_ + id of the grid 
+   * Fixed bug when deselectAfterSort false and we are in multiselect mode
+   * Fix in unformat number and currency
+   * Fixed bug when creating a select with dataUrl and select is set to multiple.
+   * Fix a bug when creating select with multiple option. Also the attribute 
+should be set immediatley after the element is created and not after.
+   * Fix a bug in form edit. The comapared values should be trimed since of 
+split(",") which cause the elements to begin with space.
+   * Fix a jqGrid loader (development version) for IE browsers
+   * Fix for form icons in Opera
+   * Fix getGridParam to return values 0 or false 
+   * Avoiding the overhead of local functions and maintenance issues when the 
+parameters change
+   * Opera fix for cursor col-resize
+   * Fix in editGridRow when a save key is defined and the key is Eneter we 
+should not do save when we are in teaxtarea element
+   * Fix in formatter checkbox when the value is undefined. We also add a 
+default format for the checkbox too
+   * Fix addRowData to use key:true (keyIndex) when rowid is not defined
+   * Fix formatter bug for the select to use the defaultFormat
+   * Adding a 3 parameter to the unformat function - the cellobject.
+   * Fix alternate rows when we sort data locally.
+   * Fix in addRowData for alternate rows when we add item as last
+   * Fix collapseRow in treegrid preventing infinite recursion
+   * Fix in stripHtml function to parse numeric values
+   * Fix in delGridRow to get "fresh" Data from delData object
+   * Fix problems with width option if set as string.
+   * Fixing $jgrid.format function in base module to accept undefined parameter.
+   * Fix for saveRow method in aftersave function. Also we pass the request and 
+not the responseText. Also both aftersave and  success functions have the 
+same type parameter - the response
+   * Fix for serchhidden in searchGrid method
+   * Fix for setGridWidth method
+   * Fix  setColWidth function
+   * Fix for topinfo and bottom info in formedit to appear separatley in edit and add dialogs
+   * Fix searchFilter css to work when called from subgrid 
+   * Fix celledit to work better when datepicker is attached
+   * Fix in viewGrid row to vizualize only the columns that only not hidden.
+
+   
+Additions and changes
+---------------------
+   * New API
+   * RTL Support
+   * Column reordering
+   * Added life scrolling of data
+   * Added gridResize method which can resize the grid. Also use a jQuery UI 
+resizable and can use any options of this widget
+   * Added sortableRows method which allow us to sort rows with drag and drop
+   * Added gridDnD method. The method connect two or more grids so that drag and drop rows
+between these is possible
+   * Add columnChooser method which allows choosing/sorting columns at the same 
+time. This method requiere multiselect plugin
+   * Now getRowData can return all rows when rowid is not set.
+   * getCol now can return summary, average and count of the selected row. The 
+3 parameter determines this (valid are sum, avg, count). If this parameter 
+is set and is valid, the returned value is a scalar.If the param is not 
+valid the returned value is empty array. 
+   * To setRowData we add a 3 parameter. If the parameter is string we use 
+addClass to add classes. If the parameter is object we use css to add css 
+properties. Note that we can set properties and classes without data, in 
+this case we should set data to false 
+   * Adding a event object to ondblClickRow and onRightClickRow events as 4 parameter
+   * Add a ant based build system which allow us to minify the JS code
+   * Added custom validation property in editing modules
+   * Added possibility to create custom element in editing modules
+   * Adding support to configure the ajax request in a way that user want. This
+is done in all modules where ajax is used.
+   * Added class in cell edit and inline edit so that the cell or row can not
+be edited - the corresponding classes are 'not-editable-cell' and
+'not-editable-row'.
+   * Added Hebrew Translation
+   * Added a beforeCheckValues event in editGridRow method. The execution is 
+before checking the values. Should return object of the posted data.
+   * Added Romanian translation 
+   * Added a property classes in colModel where we can attach classes to column.
+   * info_dialog function can be used as separate modal dialog
+   * Added a class ui-ellipsis in grid css file. Also work in FireFox too.
+   * Changind the order of calling the events beforeSearch and beforeClear in 
+filterToolbar method. Also the events are called immediatley after triggering the grid
+   * To onCellSelect we replace the 4 parameter with the more natuaral event instead of e.target - 
+sorry if this will bring to some confusions.
+   * Added searchoptions value parameter in order to separate the editing module and search module.
+We first look for such option in searchoptions and if not found we use the
+editoptions value
+   * Added fixed property in colModel which allow us not to change the  
+column width if shrinkToFit is true and we set new width of the grid.
+   * Added buildSelect function to deserialize data for the select. This is option
+can be added in editoptions or search options
+
+   
+Please read The Installation instructions first in install.txt
+================================================
+3.5 beta (buld6- build11)
+
+New Properties and methods
+==========================
+
+- Added new grid parameter hoverrows. When set to false the mouse hovering is
+disabled in the grid data rows.
+
+- Added rowid as parameter to error function in saveRow method - inline 
+editing module
+
+- treeGrid to be initially work with datatype local 
+
+- Added new method updateGridRows (grid.custom.js)
+This method update the existing data in the grid by given id rowname.
+
+Syntax: updateGridRows (data, rowidname, jsonreader)
+
+data is a array of data in format
+[{name:value,name1:value1...},{name:value,name2:value2...}]
+where the name is the name from colModel and value is the actuall value.
+It is not neccessary that all columns are present in the data item object
+(the same as setRowData method)
+
+rowidname (string) - is the name of the row which should acts as id.
+If not set the name "id" is used.
+
+jsonreader (boolean) default false. If set to true a jsonReader definition
+is used to set the data. Note that this work only of the item in jsonReader
+object 'repeatitems' is set to true.
+
+- Switch to namedItems JS function. This improve the speed. Previously we
+walk throught the entry rowset to find the rowIndex of the given rowid.
+Now we use the build in javaScript method namedItems which do the same.
+
+- multiselect is enabled in inline edit module.
+
+- To the  importComplete event in jqGridImport method we pass the response.
+
+- Added support for alternate rows. Also added new jqGrid option altclass.
+The default value is 'ui-priority-secondary' THis way we can develop our own
+alternate class.
+
+- Added ShrinkToFit option in setColumns method which fit columns to the grid 
+width. Default value is false.
+
+- Extend tableToGrid method to use custom options when building the grid.
+The call to this function is
+tableToGrid(selector, options)
+where options is the object with jqGrid options.
+
+- Adding 4px right to the view records text for better view 
+
+- Add a onClose event to all modals in form editing (except alert dialog)
+The default value is null. This event can be passed in editGridRow, delGridRow,
+viewGridRow, and setColumns methods. The event raised when a close icon is clicked,
+a cancel button is clicked or ESC key is pressed (if this is enabled).
+
+- Significant speed improvents in tree Grid when a relative large data is loaded.
+
+- Added dataheight parameter to all modal windows, where we can control the
+scrolling content. Intitially this parameter is auto.
+To summarize - we have two parameters for controlling the height of the modal.
+height and dataheight.
+The height parameter control the height of the entry modal, dataheight parameter
+control the height of the scrolling content.  The buttons of the modals are
+allways visible at the bottom of the modal.Also some improvments in jqDnR.
+
+- In setColumns method we add colnameview and closeAfterSubmit parameters. The
+colnameview (default true). If set to false the names from colModel are not
+visible. closeAfterSubmit if defined cleses the dialog after the submit
+button is clicked.
+
+- Added parameter viewsortcols in jqGrid parameters. The purpose of this
+parameter is to define different look and behavior of sorting icons that
+appear near the header. This parameter is array with the following default
+options
+viewsortcols : [false,'vertical',true]
+
+The first parameter determines if all icons should be viewed at the same time
+when all columns  have sort property set to true.
+The default of false determines that only the icons of the current sorting column
+should be viewed.
+Setting this parameter to true causes all icons in all sortable columns to be viewed.
+
+The second parameter determines how icons should be placed - vertical means that
+the sorting icons are one under another. 'horizontal' means that the icons should
+be one near other.
+
+The third parameter determines the click functionality. If set to true the columns are
+sorted if the header is clicked. If set to false the columns are sorted only when
+the icons are clicked.
+
+Important note: When set a third parameter to false be a sure that the first parameter
+is set to true, otherwise you will lost the sorting.
+
+
+Fixes
+=====
+- Fixed bug in filterToolbar. We search now by index and when not found by 
+name. 
+
+- Fix in searchGrid method. We search now by index and when not found by 
+name. 
+
+- Fixed bug in IE when resizing columns. The function getOffset is changed
+so that the resizing speed is the same as in Safari and FF.
+
+- Fix multiple select bug in createEl function. Now we set the options before
+checking for multiple:true
+
+- Fixed bug in treegrid. The strict comparation in getNodeParent method
+causes bad results.
+
+- Fix in setGridWidth method. We do not initialize correct the new width which
+causes after the first set of the width to not work in other grid in the same
+page.
+
+- Fixed bug in GridExport. We delete the columns that are generated 
+dynamically - multiselect, subgrid, treegrid or rownumbers. This way the
+import is without errors 
+
+- Fixed a bug in addRowData method to add data with id = 0 (number)
+
+- Fixed a forever loading bug in IE.
+
+- Fixed altRows bug in delRowData method
+
+- navGrid method fix for warning modal and IE6
+
+- Fix setColumns method to the common apprach of forms and modals
+
+- Fix for IE8 in getAbsoluteIndex method. IE8 seems to work as other browsers
+
+- Fixed bug in delRowData - the grid does not resize when first row is 
+deleted.
+
+- Fixed bug when rownumbers and subgrid are used together 
+
+- Fixed bug in row editing when the column name contain dot.
+
+- Fixing bug in viewGridRow - also the id manes of the form are changed in order
+to be not equal of those in editGridRow
+
+
+
+3.5 beta (buld5)
+
+FormEditing
+===========
+- added options checkOnUpdate (default false) in editGridRow method.
+Also available in add and edit mode.
+When this option is set to true the behaviour as follow:
+When something is changed in the form and the user click on
+Cancel button, navigator buttons, close button (on upper right corner of the
+form), in overlay (if available) or press Esc key (if set) a message box apper
+asking the user to save the changes, not to save the changes and go back in the
+form or cancel all changes (this will close the modal form)
+Note that checkOnSubmit option will work only when a submit button is clicked.
+When nothing is changed we contionue with the action.
+
+- added option -  rowabove (default false) in colModel formoptions
+When set to true a new empty row is added above this row in form editing.
+- added option - rowcontent (default empty) in colModel formoptions.
+This option have sense only when rowabove option is set to true.
+With this option is possible to set a content to the new added empty row in
+the form. In order to style easy these rows a class 'contentinfo' is set.
+
+- added new items in the language files to support the checkOnUpdate option
+
+- added class 'delmsg' in the delGridRow method. This allow us to change the
+message dynamically using a beforeShow or afterSow eventrs. The class is added
+to a element td.
+
+Fixes
+=====
+- fix in Bulgarian translations files.
+- fix in searchGrid method. Now we search by index (from colModel) and only if
+it is not available we search by name.
+- Fix for date parser in the base module. Now we can sort locally on
+dates that contain month names
+- Fixed bug in searchGrid. The translation messages for the operations does not 
+apper when not set in colModel
+- removed some not needed events  from base grid. Also return false do these
+by default;
+- Fix bug to check if datepicker is available in searchGrid.
+- Fix a bug in searchGrid in IE6, where the data value is not set for elements
+after the first 
+- Fixed bug when calling of jqModal multiple times on the same element. We 
+need the initialization only once and not every time. This cause a memory 
+leaks
+- Fixed bug in formatter where the data containing ' causes break in IE 
+- Fixed bug in base module when adding data where the data contain a ' char.
+This breaks in IE browsers.
+- Fixed bug in checkboxes. We add the value setted in the editoptions. Also 
+converting to lower case make the option checkOnUpdate to be true every time. 
+- We replace white-space nowrap with pre in td element in the CSS file. This fixes
+the bug in IE where the first row does not wrap when the text is longer than
+the column width. Also this requiere DOCTYPE declaration in the document.
+- Fixed bug in viewGridRow method where when resizing the modal causes the data
+to apper bad.
+
+
+3.5 beta (buld4)
+Base
+====
+- added option footerrow - default false. If set to true this will place a
+footer table with one row below the gird records and above the pager.
+The number of columns equal of these from colModel
+
+-added option userDataOnFooter(default false) which directly place the user data
+array at footer. The rules are as follow: If the userData array contain name
+which is equal to those of colModel then the value is placed in that column.
+If there are no such values nothing is palced. Note that if this option
+is used we use the current formatter options (if available) for that column.
+
+-Added method getCol(colname). Colname can be either number which represents
+the index of the column or name from colModel. The method return array with
+the values of the coulmn.
+
+- Added method footerData ( action, data, format). This method get or set data
+on footer.
+
+action - can be 'get' or 'set'. If not set default is get.
+When set to 'get' - the result is object of type name:value, where the name is
+a name from colModel. This will return a data from the footer. The other two
+options  does not have effect in this case.
+
+When set to 'set' a data array (object) should be set. This will place
+the values in the footer.
+
+format - default is true. This instruct the method to use the formmater
+(if set in colModel) when a new values are set.
+Setting to false will disable the using of formatter.
+
+Related css items in the ui.jqgrid.css
+.ui-jqgrid-sdiv - is a div container for the footer
+.ui-jqgrid-ftable - is the class for the table
+tr.footrow - is the class for the footer row
+tr.footrow td is the item for the cell formating
+
+In order to format every cell in a way that you want
+maybe you can use
+
+jQuery("tr.footrow td:eq(2)","#gbox_mygrid").css(...)
+where the td:eq(2)  point to the third column
+and mygrid is the id of the grid. The id of the global grid container
+is constructed via "gbox_"+the id of the grid.
+
+There are no methods to show and hide the footer row dynamically, but
+following the above example we can do
+
+jQuery(".ui-jqgrid-sdiv","#gbox_mygrid").hide() - this will hide the footer row.
+
+jQuery(".ui-jqgrid-sdiv","#gbox_mygrid").show() - this will show the footer row.
+
+
+Form Editing
+============
+aded option in editGridRow - checkOnSubmit (default false)
+This option only work in editing mode and not in add.
+When set to true - the method looks if any data is changed in the form and
+if this is a case a dilog message appear where the user is asked to confirm the
+changes or cancel it. Pressing cancel will return to the form, but does not
+set the values to its original state.
+
+Note that this causes a some changes in the language file.
+
+Fixes
+=====
+
+- Removed imgpath from cell edit and inline edit modules and common module.
+This parameter is no longer valid in 3.5
+- Replace $ with jQuery in grid.common.js which causes problems when used with
+other librariers like prototype.
+- removed a checking e.srcElement from base module. jQuery allready fix this.
+- fixing the size option in select when using ajax to load selects.
+- Fixed bug in IE browsers, when clicked on href tag with child nodes,
+IE incorrect report in all cases that this is a href element. This couses
+onSelectCell not to behave correct.
+- Fixed bug in searchGrid - group options are not passed to serchFilter in 
+order get them from Language file.
+- Fix in bulgarian trnslations.
+- Fix on sorting column. The initial sort check first for index and then for 
+column name. Before the checking for the index was missed.
+Sortorder converted to lower case in order to avoid some cofusions.
+- Fix in set columns module. The modal does not appear correctly due to 
+missed parameter 
+
+
+
+3.5 beta (buld3)
+
+Base
+====
+- To the loading message is added ui-state-active class from Theme roller.
+This is more natural, indicating that the grid is active when data is loaded.
+
+Form Editing
+============
+- Added keyboard navigation, which allow us to navigate throught the records while
+in form editing pressing certain keys. This option is available in editGridRow
+and viewGridRow methods. The default state is disabled. To enable this you
+should set the options in the edit/add parameters:
+
+navkeys: [true,38,40]
+The first item enables the navigation.
+The second item corresponds to reccord up and by default is the  the key code
+for Up key
+The third item corresponds to reccord down and by default is the  key code for
+Down key
+Example
+$("#mygrid").navGrid("#pager",{options},{id:'myeditid',navkeys: [true,38,40]}..)
+Also this option does not work in add mode.
+
+Note: Instead that this does not have sense, if you plan to navigate with keys
+it is recommended to add this option in add mode. This should be done
+because the form for add and edit is the same and it is unknown which action
+will be lunched first.
+
+- Added posibility to save the form pressing certain key - add/edit mode only
+By default this option is disabled.
+To enable
+savekey: [true,13]
+The first item enables saving with pressing certain key.
+The second item corresponds to key code for saving. Default Enter (key code 13)
+
+Note that this binding should be used for both adding and editing a row.
+Since the binding is for the form, there is no possibility to have one
+key in add and another in edit mode.
+
+- Added icons for the buttons in the form. The corresponding class in the css
+is "fm-button"
+By default all icons are enabled.
+For add/edit method editGridRow
+The save button is defined with
+saveicon : [true,"left","ui-icon-disk"]
+The close button is defined with
+closeicon: [true,"left","ui-icon-close"]
+
+The first item enables the icon
+The second item tells where to pu icon left or right
+The third item corresponds to valid ui icon from theme roller
+
+For viewGrid Row
+closeicon : [true,"left","ui-icon-close"]
+
+For Deleting
+delicon: [true,"left","ui-icon-scissors"]
+cancelicon: [true,"left","ui-icon-cancel"]
+
+Fixes
+======
+-Fixed bug when getting the index of the row. Strict compare should be removed.
+-Fixed bug when datatype is function - we need to exit when call it and not to 
+continue.
+-Fixed bug in form editing - the buttons do not align properly.
+
+3.5 beta (build2)
+
+Navigator
+=========
+This was missed in the first build
+In the navGrid we can pass uniquie id's of the buttons in order to manipulate
+them easy. If no id is set we create one which is combination of:
+for add button "add_"+ the id of the grid
+for edit button "edit_"+ the id of the grid
+for view button "view_" + the id of the grid
+for delete button "del_" + the id of the grid
+for search button "search_" + the id of the grid
+for refresh button "refresh_" + the id of the grid
+Example:
+$("#mygrid").navGrid("#pager",{options}, {id:'myeditid'},{id:'myaddid'}...)
+
+Base Grid
+=========
+- Record number information now can format the values according to the 
+formatter setting (if available) getting information from language file.
+
+Fixes
+=====
+
+- Fixed bug when multi select with json. We pass wrong parameter to addMulti 
+function 
+- Spelling error in all language files, which cause not to set the default 
+value correct
+- Fixed bug when creating warning message. Fixed bug when determining the 
+number column element in the form
+- Fixed bug - clientSide datatype should be converted to lower case
+according to the new improvements 
+- Fixed bug in IE6/7 when try to select a option in the select generated via 
+ajax 
+
+===============================
+Upgrade from 3.4.x to 3.5 beta.
+===============================
+
+
+1. Installation
+--------------
+See install.txt
+
+2. Code changes
+---------------
+2.1 The following grid options are deprecated - i.e. you can remove them from
+the grid options. They are not needed in 3.5 version
+
+imgpath
+sortascimg
+sortdescimg
+firstimg
+previmg
+nextimg
+lastimg
+sortclass
+resizeclass
+
+2.2 Second change is related to custom formatters. Starting with version 3.5,
+the custom formatter is passed the following parameters:
+
+formatter : function ( cellvalue, options, rowObject )
+{
+// format the cellvalue to new format
+return new_formated_cellvalue;
+}
+
+Note the return in the function. This function should always return a value
+in order to work correctly. The parameters are
+
+cellvalue - is the value to be formatted
+options - is an object containing the following element
+
+options :  { rowId: rid, colModel: cm}
+where rid - is the id of the row
+colModel is the object of the properties for this column getted from colModel
+array of jqGrid
+
+rowObject - is a row data represented in the format determined from datatype
+option.
+If we have datatype: xml/xmlstring - the rowObject is xml node,provided
+according to the rules from xmlReader
+If we have datatype: json/jsonstring - the rowObject is array, provided
+according to the rules from jsonReader
+
+Example:
+Code in 3.4.x variant
+
+formatter : function ( elem, cellvalue, options)
+{
+var newval = "<strong>"+cellvalue+"</strong>";
+jQuery(elem).html(newval);
+}
+
+
+Code in 3.5
+
+formatter : function ( cellvalue, options, rowObject )
+{
+return "<strong>"+cellvalue+"</strong>";
+}
+
+
+Base Module
+============
+Bug fixes
+---------
+- fixed bug in onCellSelect event when used in IE browsers - now the rowIndex
+passed to this event is calculated correctly regardless of hidden columns.
+
+- fixed width bug when multiselect is used. Previously the width of this column
+is recalculated according to table width and when shrinkToFit is set to true.
+Now the column has fixed width and is no longer recalculated when the grid
+width is changed. See documentation for the new options
+
+- fixed width bug when subgrid is used. Previously the width of this column is
+recalculated according to table width and when shrinkToFit is set to true. Now
+the column has fixed width and is no longer recalculated when the grid width
+is changed. See documentation for the new options
+
+- fixed bug in addRowData method when the grid is empty and we try to add one
+or more columns. The width of the data was not being recalculated correctly,
+according to the header elements.
+
+- fixed bug when we use xmlstring and jsonstring to add data. Previously all
+the data from the string is loaded without reference to the rowNum parameter.
+Also this behaviour is changed for xml and json data. In other words, we now
+load only rowNum number of rows even when the request consists of more rows.
+
+- fixed bug when posting values of input of type select set to multiple:true.
+Now in all editing modules the posted values in for multiselect are separated
+with comma 
+ 
+- fixed bug in the size option of multi select. If the size option is not set
+for multiselect the default value is 3
+
+Deprecated options
+----------------
+imgpath: "", in all modules
+sortascimg: "sort_asc.gif",
+sortdescimg: "sort_desc.gif",
+firstimg: "first.gif",
+previmg: "prev.gif",
+nextimg: "next.gif",
+lastimg: "last.gif",
+sortclass: "grid_sort",
+resizeclass: "grid_resize",
+
+Note that imgpath is not used anymore in all modules. 
+The altRows option is still here, but will have no effect until the jQuery
+UI Theme roller supports alternative rows.
+
+
+Note that the table element where we define the grid can not have a class
+scroll - i.e. class scroll in the table definition can be omitted, but this
+is NOT true for the pager element.
+
+New options
+-----------
+datatype can now set as 'script'. In other words, we now support script
+as datatype.
+
+reccount: numeric, Default 0. Determines the exact number of available
+grid rows. Can be <= from rowNum parameter
+
+autowidth: boolean, Default false. When set to true, the grid width is
+recalculated automatically to the width of the parent element. This is done
+only initially when the grid is created. In order to resize the grid when
+the parent element changes width you should apply custom code and use a
+setGridWidth method for this purpose.
+
+scrollOffset: numeric, Default 18. Determines the width of the vertical
+scrollbar. Since different browsers interpret this width differently (and it
+is difficult to calculate it in all  browsers) this can be changed.
+
+cellLayout: numeric, Default 5. This option determines the padding + border
+width of the cell. Usually this should not be changed, but if custom changes
+to td element are made in the grid css file this will need to be changed.
+
+subGridWidth: numeric, Default 20. Determines the width of the subgrid column
+if the subGrid option is set to true.
+
+multiselectWidth: numeric, Default 20. Determines the width of the multiselect
+column if multiselect is set to true.
+
+rownumbers: boolean, Default false. If this option is set to true, a new column
+at left of the grid is added. The purpose of this column is to count the number
+of available rows, beginning from 1. In this case colModel is extended
+automatically with new element with name - 'rn'. Also, be careful not to use
+the name 'rn' in colModel
+
+rownumWidth: numeric, Default 25. Determines the width of the row number column
+if rownumbers option is set to true.
+
+pagerpos: string, Default 'center'. Determines the position of the pager in the
+grid. By default the pager element when created is divided in 3 parts (one part
+for pager, one part for navigator buttons and one part for record information)
+
+recordpos: string, Default 'right'. Determines the position of the record
+information in the pager.
+
+toolbar now accepts another option: "both". When we set toolbar: [true,"both"]
+two toolbars are created -- one on the top of table data and one of the bottom
+of the table data. When we have two toolbars then we create two elements (div).
+The id of the top bar is constructed like "t_"+id of the grid and the bottom
+toolbar the id is "tb_"+id of the grid. In case when only one toolbar is
+created we have the id as "t_" + id of the grid, independent of where this
+toolbar is created (top or bottom)
+
+gridview: boolean, Default value false. In the previous versions of jqGrid,
+including 3.5 alfa, reading a relatively big data sets (Rows >=100 ) caused
+speed problems. The reason for this was that as every cell was inserted into
+the grid we applied about 5-6 jQuery calls to it. Now this problem is resolved;
+we now  insert the entry row at once with a jQuery append. The result is
+impressive - about 3-5 times faster. What will be the result if we insert all
+the data at once? Yes, this can be done with a help of gridview option when set
+to true. The result is a grid that is 5 to 10 times faster. Of course when this
+option is set to true we have some limitations. If set to true we can not use
+- treeGrid
+- subGrid, or 
+- afterInsertRow event.
+If you do not use these three options in the grid you can set this option to
+true and enjoy the speed.
+
+addRowData now is 1-2 times faster because we are using the concept to insert
+the row at once
+
+Added jQuery function parse (removed from json2.js module):
+jQuery.parse(jsonstring)
+To prevent JavaScript hijacking attacks, web application authors are encouraged
+to use this function. This returns a JSON representation of the variable. 
+
+Cyclic structures are detected and safely interrupted, but could not be further
+restored.
+1. The while(1); construct, located at the beginning of JSON text,
+2. Comments at the beginning and end of the text.
+JSON data providers are encouraged to use one or both of these methods to
+prevent data execution. Such JSON response may then look like this: 
+while(1);/*{[
+    {"name":"safe value 1"},
+    {"name":"safe value 2"},
+   ...
+]}*/
+jqGrid uses this function when obtaining a data with datatype:'json', also used
+in subGrid.
+
+Added jQuery function stringToDoc: jQuery.stringToDoc(xmlstring). This returns
+the xml document of xml string
+
+Added new method: jQuery("#mygrid").updateColumns(); this synchronizes the
+width of the headers with the data. Useful when used with table drag and drop.
+
+
+colModel changes and additions
+------------------------------
+searchhidden is removed from editrules object
+
+added searchoptions object to define properties, events and other settings when
+a search is performed
+searchoptions : {
+    dataUrl : value,
+    dataInit: function,
+    dataEvents : array,
+    defaultValue: value,
+    attr: object,
+    searchhidden: boolean,
+    sopt: array
+}
+To summarize - when we want to deal with search we should use the following
+options in colModel
+
+search : boolean , // true/false
+stype: value, // text/select
+searchoptions : object // see above
+
+Note: when the dataUrl is not used for the search type select, the definitions
+for the select are taken from editoptions value property - i.e
+editoptions:{value:"1:one;2:two",...}. See below for how to use these options in
+different search methods.
+
+
+Added new object formoptions to define various settings in form editing. Also
+valid only in this module.
+
+formoptions : {
+    elmprefix:value,
+    elmsuffix:value,
+    rowpos: number,
+    colpos:number,
+    label: value
+}
+See below for how to use
+
+The editoptions are extended with the following properties. Valid in all editing
+modules editoptions : {
+    dataUrl : value, dataInit: function, dataEvents : array, defaultValue:
+    value/function,
+} See below
+
+
+Changes in all editing modules
+==============================
+
+edittype property is extended with the support of the following input elements:
+button, image and file
+
+As described above in all editing modules we can add additional properties and
+events to the editing element:
+
+editoptions : {
+    dataUrl : value, dataInit: function, dataEvents : array, defaultValue:
+    value/function
+}
+-------------------------------------------------------------------------------
+dataUrl option is valid only for the elements of type select - i.e.,
+edittype:select
+
+When this option is set, the element will be filled with values from the ajax
+request. The data should be a valid html select element with the desired
+options. <select>
+    <option value="1">One</option> <option value="2">Two</option>
+</select>
+
+In form editing for add/edit this is called only once. In order to call it every
+time the form is launched you should set the option recreateForm:true or use
+other events like beforeShowForm (with another custom ajax call) to fill the
+desired element.
+
+In inline edit and cell edit this is fired every time you edit the row or cell
+element.
+--------------------------------------------------------------------------------
+dataInit : function (elem) {
+// do something
+}
+
+If set, this function is called only once ? when the element is created. The
+function is passed the specified element. This option is ideal for attaching
+date picker, time picker, etc. Example:
+
+dataInit : function (elem) {
+    $(elem).datepicker();
+}
+--------------------------------------------------------------------------------
+dataEvents: list of events to apply to the data element; uses
+$("#id").bind(type, [data], fn) to bind events to data element
+
+Should be described like this dataEvents: [
+    { type: 'click', data: { i: 7 }, fn: function(e) { console.log(e.data.i); }
+    }, { type: 'keypress', fn: function(e) { console.log('keypress'); } }
+]
+
+The event(s) are called only once when the element is created
+-------------------------------------------------------------------------------
+defaultValue: 'value' or function This option is valid only in Form Editing
+module when used with editGridRow method in add mode.If set this the input
+element is set with this value if only element is empty. If used in selects the
+text should be provided and not the key. Also when a function is used the
+function should return value.
+
+Now we can validate a url. The corresponding settings is in colModel
+editrules:{required:true, url:true}
+
+
+FormEditing
+===========
+In all methods that deal with the modals are added the following options (thanks
+to Faserline Team: www.faserline.com)
+
+jqModal: true. The default value is true. How it works. If set to true, first
+jqGrid checks if the jqModal plugin is available. If this plugin is available we
+create the modal according to the jqModal plugin. If this plugin is not
+available jqGrid create its own modal. The difference between the jqModal window
+and jqGrid modal window is that the overlay covers only the grid, but not the
+entry page as jqModal does. If this option is set to false, jqGrid will create
+its own modal as described above even if jqModal is available.
+
+The only exception here is searchGrid method created with the new searchFilter
+plugin, where this option is not available. In this method a jqGrid modal window
+is used.
+
+closeOnEscape : false. Default false. When set to true the modal window can be
+closed with ESC key.
+
+
+
+=======searchGrid==================
+From now on jqGrid use a new search engine
+thanks to wonderful plugin provided from Kasey Speakman (kasey@cornerspeed.com).
+This plugin can also be used separately. Detailed documentation is provided in
+the jquery.searchFilter.js which is provided with jqGrid package.
+
+These options are not used anymore in the searchGrid method
+----------------------------------------------------------
+top : 0,
+left: 0,
+width: 360,
+height: 80,
+modal: false,
+closeicon: 'ico-close.gif',
+dirty: false,
+processData: "",
+
+Added the following options
+---------------------------
+
+recreateFilter: false, This option construct the filter every time a search
+button is clicked.
+
+multipleSearch : false, When set to false the behaviour of the search is the
+same as those in versions before 3.5 When set to true: 1. We have a possibility
+to add/delete as many conditions as we want 2. The posted data to the server is
+string (actually a json array converted to string)
+
+sFilter: 'filters', This option has an effect only when the multipleSearch is
+set to true; it describes the name of the posted string. By default this, i.e.
+the posted data, can look like this
+
+filters ={
+ "groupOp":"AND","rules":[{"field":"id","op":"gt","data":"1"},
+{"field":"name","op":"bw","data":"Client"}]
+}
+
+groupOp determines the logical operator that can be used in the where statement
+of the select. The value can be AND or OR. This can be changed used a select box
+which is created at bottom of the search filter.
+
+The rules array describes actually which fields and how they are included in the
+where clause The field element describes the name of the field The op element
+describes the operator that should be used in the search The data element is the
+data that we want to search.
+
+The above example (if getted and constructed correctly) should generate the
+following where clause
+
+SELECT .... FROM table,... WHERE id > 1 AND name LIKE 'Client%'
+-------------------------------------------------------------------------------
+As described above the search is constructed according to the searchoptions in
+colModel
+
+search : boolean , // true/false stype: value, // text/select
+
+searchoptions : {
+    dataUrl : value,
+    dataInit: function,
+    dataEvents : array,
+    attr: object,
+    searchhidden: boolean,
+    sopt: array
+}
+Note that here is missing the defaultValue. The option is not implemented in
+this method.
+
+
+stype determines the search type - can be select or text. If not set a text is
+used
+
+searchoptions
+-------------------------------------------------------------------------------
+dataUrl option is valid only for the elements of type select, i.e.
+edittype:select
+
+When this option is set the element will be filled with values from the ajax
+request. The data should be a valid html select element with the desired
+options. <select>
+    <option value="1">One</option> <option value="2">Two</option>
+</select>
+
+This is called only once.
+
+-------------------------------------------------------------------------------
+dataInit : function (elem) {
+// do something
+}
+
+If set this function is called only once when the element is created. To the
+function is passed the element. Also this option is ideal for attaching date
+picker, time picker and etc. Example
+
+dataInit : function (elem) {
+    $(elem).datepicker();
+}
+--------------------------------------------------------------------------------
+dataEvents: list of events to apply to the data element; uses
+$("#id").bind(type, [data], fn) to bind events to data element
+
+Should be described like this
+dataEvents: [
+{ type: 'click', data: { i: 7 }, fn: function(e) { console.log(e.data.i); }},
+{ type: 'keypress', fn: function(e) { console.log('keypress'); } }
+]
+
+The event(s) are called only once when the element is created
+--------------------------------------------------------------------------------
+attr is object where we can set valid attributes to the created element
+
+attr : { title: "Some title" }
+------------------------------------------------------------------------------
+searchhidden : if set to true, the hidden element will appear in the search.
+-------------------------------------------------------------------------------
+array that correspond to the op element in the posted data and determines the
+operation. If not set all the available options will be used; if set only the
+set values will appear as selectboxes.
+
+All available option are sopt:
+['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc']
+
+The corresponding texts are in language file and mean the following ['equal',
+'not equal', 'less', 'less or equal','greater','greater or equal', 'begins
+with','does not begin with','is in','is not in','ends with','does not end
+with','contains','does not contain'],
+
+Note that the elements in sopt array can be mixed in any order.
+
+
+=========add/edit form==========
+In the editGridRow method the following options are no longer used
+
+closeicon: 'ico-close.gif',
+imgpath: ''
+
+Added new property formoptions (in colModel); thanks to Faserline Team
+(www.faserline.com)
+
+The purpose of these options is to reorder the elements in the form and to add
+some information before and after the editing element.
+
+formoptions : {
+    elmprefix:'',
+    elmsuffix:'',
+    rowpos:number,
+    colpos:number,
+    label: value
+}
+
+If you go to use this object in collModel it is recommended that all editing
+fields use this property and with at least the rowpos and colpos set.
+
+Elemprefix: if set, a text or html content appears before the input element
+
+Elemsuffix: if set, a text or html content appears after the input element
+
+Label: if set, this replace the name from colNames array that appears as label
+in the form.
+
+rowpos : number determines the row position of the element (again with the
+text-label) in the form; the count begins from 1
+
+colpos : number determines the column position of the element (again with the
+label) in the form beginning from 1
+
+Two elements can have equal row position, but different column position. This
+will place the two elements in one row on the form.
+
+=========== delete=================================
+In the delGridRow method the following options are no longer used
+
+closeicon: 'ico-close.gif',
+imgpath: '',
+
+
+
+============= view =============================
+Added viewGridRow method; thanks to Faserline Team (www.faserline.com)
+
+This method is similar to the editGridRow method except that the fields are not
+editable and we do not have any events attached to the form. Here are the
+options viewGridRow (options) where
+options = {
+    top : 0,
+    left: 0,
+    width: 0,
+    height: 0,
+    modal: false,
+    drag: true,
+    closeOnEscape : false,
+    labelswidth: '30%'
+}
+
+
+All the options have the same thing as these in editGridRow except the option
+labelswidth which default value is 30%. Since we construct the view with table
+element it is difficult to calculate, in this case, how much width is needed for
+the labels. Depending on the needs this value can be increased or decreased
+
+Custom method
+=============
+In the custom module is added new method filterToolbar.
+
+This method is the same as filterGrid, except that the search input elements are
+placed in the grid just below the header elements. When the header elements are
+resized the input search elements are also resized according to the new width.
+Another difference to the filterGrid is that the filter toolbar uses definitions
+from colModel just like the searchGrid
+
+Should be called like this
+
+jQuery("#mygrid").filterToolbar(options)
+
+where options are
+
+options = {
+    autosearch: true,
+    beforeSearch: null,
+    afterSearch: null,
+    beforeClear: null,
+    afterClear: null,
+    searchurl : ''
+}
+
+autosearch: true Search is performed according to the following rules For text
+element when a Enter key is pressed while inputting values a search is
+performed. For select element when the value changes.
+
+beforeSearch - event which fires before a search
+
+afterSearch - event which fires after a search
+
+beforeClear - event which fires before clearing entered values (i.e.,
+clearToolbar is activated)
+
+afterClear - event which fires after clearing entered values (i.e., clearToolbar
+is activated)
+
+The rules of creating toolbar search input elements are the same as searchGrid
+using the colModel
+searchoptions : {
+    dataUrl : value,
+    dataInit: function,
+    dataEvents : array,
+    defaultValue: value,
+    attr: object
+}
+
+Note the missing sopt element, but addition of defaultValue property
+
+This method has 3 new additional methods that can be used:
+
+triggerToolbar - when called perform a search dynamically
+
+clearToolbar - when called clear the search values and set the default one if
+available
+
+toggleToolbar - toggles the searchbar
+
+A typical call to these methods
+
+var sgrid = $("#mygrid")[0] sgrid.triggerToolbar();
+
+will trigger the search of mygrid.
+
+
+Import module
+=============
+added option importComplete event which fires after constructing the grid.
+
+
+Inline edit
+===========
+added afterrestorefunc as 9th parameter. The event fires after the row is
+restored
+
+treeGrid
+========
+the tree icons can be changed using the following grid parameter treeIcons. The
+default values are.
+treeIcons ={
+    plus:'ui-icon-triangle-1-e',
+    minus:'ui-icon-triangle-1-s',
+    leaf:'ui-icon-radio-off'
+};
+Note that icons from UI Theme should be used.
+
+formatter
+=========
+
+- the source format for date formatter (srcformat) now can accept month names
+- it is possible to enable checkboxes as editable when created with formatter In
+  the format options we should in this case checkbox : {disabled:false} The
+  default is false. To enable this option globally you can change this value in
+  the language file
+
+- the showLink now can accept custom name for the id The parameter is idName :
+  'id' The default is id. Can be changed in formatoptions or in the language
+  file.
+

tw2/jqplugins/jqgrid/static/jquery/plugins/jqGrid/4.2.0/js/i18n/grid.locale-ar.js

+;(function($){
+/**
+ * jqGrid Arabic Translation
+ * 
+ * http://trirand.com/blog/ 
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = {
+	defaults : {
+		recordtext: "تسجيل {0} - {1} على {2}",
+		emptyrecords: "لا يوجد تسجيل",
+		loadtext: "تحميل...",
+		pgtext : "صفحة {0} على {1}"
+	},
+	search : {
+		caption: "بحث...",
+		Find: "بحث",
+		Reset: "إلغاء",
+		odata : ['يساوي', 'يختلف', 'أقل', 'أقل أو يساوي','أكبر','أكبر أو يساوي', 'يبدأ بـ','لا يبدأ بـ','est dans',"n'est pas dans",'ينته بـ','لا ينته بـ','يحتوي','لا يحتوي'],
+		groupOps: [	{ op: "مع", text: "الكل" },	{ op: "أو",  text: "لا أحد" }	],
+		matchText: " توافق",
+		rulesText: " قواعد"
+	},
+	edit : {
+		addCaption: "اضافة",
+		editCaption: "تحديث",
+		bSubmit: "تثبيث",
+		bCancel: "إلغاء",
+		bClose: "غلق",
+		saveData: "تغيرت المعطيات هل تريد التسجيل ?",
+		bYes: "نعم",
+		bNo: "لا",
+		bExit: "إلغاء",
+		msg: {
+			required: "خانة إجبارية",
+			number: "سجل رقم صحيح",
+			minValue: "يجب أن تكون القيمة أكبر أو تساوي 0",
+			maxValue: "يجب أن تكون القيمة أقل أو تساوي 0",
+			email: "بريد غير صحيح",
+			integer: "سجل عدد طبييعي صحيح",
+			url: "ليس عنوانا صحيحا. البداية الصحيحة ('http://' أو 'https://')",
+			nodefined : " ليس محدد!",
+			novalue : " قيمة الرجوع مطلوبة!",
+			customarray : "يجب على الدالة الشخصية أن تنتج جدولا",
+			customfcheck : "الدالة الشخصية مطلوبة في حالة التحقق الشخصي"
+		}
+	},
+	view : {
+		caption: "رأيت التسجيلات",
+		bClose: "غلق"
+	},
+	del : {
+		caption: "حذف",
+		msg: "حذف التسجيلات المختارة ?",
+		bSubmit: "حذف",
+		bCancel: "إلغاء"
+	},
+	nav : {
+		edittext: " ",
+		edittitle: "تغيير التسجيل المختار",
+		addtext:" ",
+		addtitle: "إضافة تسجيل",
+		deltext: " ",
+		deltitle: "حذف التسجيل المختار",
+		searchtext: " ",
+		searchtitle: "بحث عن تسجيل",
+		refreshtext: "",
+		refreshtitle: "تحديث الجدول",
+		alertcap: "تحذير",
+		alerttext: "يرجى إختيار السطر",
+		viewtext: "",
+		viewtitle: "إظهار السطر المختار"
+	},
+	col : {
+		caption: "إظهار/إخفاء الأعمدة",
+		bSubmit: "تثبيث",
+		bCancel: "إلغاء"
+	},
+	errors : {
+		errcap : "خطأ",
+		nourl : "لا يوجد عنوان محدد",
+		norecords: "لا يوجد تسجيل للمعالجة",
+		model : "عدد العناوين (colNames) <> عدد التسجيلات (colModel)!"
+	},
+	formatter : {
+		integer : {thousandsSeparator: " ", defaultValue: '0'},
+		number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'},
+		currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0,00'},
+		date : {
+			dayNames:   [
+				"الأحد", "الإثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت",
+				"الأحد", "الإثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت"
+			],
+			monthNames: [
+				"جانفي", "فيفري", "مارس", "أفريل", "ماي", "جوان", "جويلية", "أوت", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر",
+				"جانفي", "فيفري", "مارس", "أفريل", "ماي", "جوان", "جويلية", "أوت", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"
+			],
+			AmPm : ["صباحا","مساءا","صباحا","مساءا"],
+			S: function (j) {return j == 1 ? 'er' : 'e';},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			masks : {
+				ISO8601Long:"Y-m-d H:i:s",
+				ISO8601Short:"Y-m-d",
+				ShortDate: "n/j/Y",
+				LongDate: "l, F d, Y",
+				FullDateTime: "l, F d, Y g:i:s A",
+				MonthDay: "F d",
+				ShortTime: "g:i A",
+				LongTime: "g:i:s A",
+				SortableDateTime: "Y-m-d\\TH:i:s",
+				UniversalSortableDateTime: "Y-m-d H:i:sO",
+				YearMonth: "F, Y"
+			},
+			reformatAfterEdit : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+};
+})(jQuery);

tw2/jqplugins/jqgrid/static/jquery/plugins/jqGrid/4.2.0/js/i18n/grid.locale-bg.js

+;(function($){
+/**
+ * jqGrid Bulgarian Translation 
+ * Tony Tomov tony@trirand.com
+ * http://trirand.com/blog/ 
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = {
+	defaults : {
+		recordtext: "{0} - {1} от {2}",
+		emptyrecords: "Няма запис(и)",
+		loadtext: "Зареждам...",
+		pgtext : "Стр. {0} от {1}"
+	},
+	search : {
+		caption: "Търсене...",
+		Find: "Намери",
+		Reset: "Изчисти",
+		odata : ['равно', 'различно', 'по-малко', 'по-малко или=','по-голямо','по-голямо или =', 'започва с','не започва с','се намира в','не се намира в','завършва с','не завършава с','съдържа', 'не съдържа' ],
+	    groupOps: [	{ op: "AND", text: "&nbsp;И " },	{ op: "OR",  text: "ИЛИ" }	],
+		matchText: " включи",
+		rulesText: " клауза"
+	},
+	edit : {
+		addCaption: "Нов Запис",
+		editCaption: "Редакция Запис",
+		bSubmit: "Запиши",
+		bCancel: "Изход",
+		bClose: "Затвори",
+		saveData: "Данните са променени! Да съхраня ли промените?",
+		bYes : "Да",
+		bNo : "Не",
+		bExit : "Отказ",
+		msg: {
+			required:"Полето е задължително",
+			number:"Въведете валидно число!",
+			minValue:"стойността трябва да е по-голяма или равна от",
+			maxValue:"стойността трябва да е по-малка или равна от",
+			email: "не е валиден ел. адрес",
+			integer: "Въведете валидно цяло число",
+			date: "Въведете валидна дата",
+			url: "e невалиден URL. Изискава се префикс('http://' или 'https://')",
+			nodefined : " е недефинирана!",
+			novalue : " изисква връщане на стойност!",
+			customarray : "Потреб. Функция трябва да върне масив!",
+			customfcheck : "Потребителска функция е задължителна при този тип елемент!"
+		}
+	},
+	view : {
+		caption: "Преглед запис",
+		bClose: "Затвори"
+	},
+	del : {
+		caption: "Изтриване",
+		msg: "Да изтрия ли избраният запис?",
+		bSubmit: "Изтрий",
+		bCancel: "Отказ"
+	},
+	nav : {
+		edittext: " ",
+		edittitle: "Редакция избран запис",
+		addtext:" ",
+		addtitle: "Добавяне нов запис",
+		deltext: " ",
+		deltitle: "Изтриване избран запис",
+		searchtext: " ",
+		searchtitle: "Търсене запис(и)",
+		refreshtext: "",
+		refreshtitle: "Обнови таблица",
+		alertcap: "Предупреждение",
+		alerttext: "Моля, изберете запис",
+		viewtext: "",
+		viewtitle: "Преглед избран запис"
+	},
+	col : {
+		caption: "Избери колони",
+		bSubmit: "Ок",
+		bCancel: "Изход"	
+	},
+	errors : {
+		errcap : "Грешка",
+		nourl : "Няма посочен url адрес",
+		norecords: "Няма запис за обработка",
+		model : "Модела не съответства на имената!"	
+	},
+	formatter : {
+		integer : {thousandsSeparator: " ", defaultValue: '0'},
+		number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'},
+		currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:" лв.", defaultValue: '0.00'},
+		date : {
+			dayNames:   [
+				"Нед", "Пон", "Вт", "Ср", "Чет", "Пет", "Съб",
+				"Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота"
+			],
+			monthNames: [
+				"Яну", "Фев", "Мар", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Нов", "Дек",
+				"Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"
+			],
+			AmPm : ["","","",""],
+			S: function (j) {
+				if(j==7 || j==8 || j== 27 || j== 28) {
+					return 'ми';
+				}
+				return ['ви', 'ри', 'ти'][Math.min((j - 1) % 10, 2)];
+			},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			masks : {
+				ISO8601Long:"Y-m-d H:i:s",
+				ISO8601Short:"Y-m-d",
+				ShortDate: "n/j/Y",
+				LongDate: "l, F d, Y",
+				FullDateTime: "l, F d, Y g:i:s A",
+				MonthDay: "F d",
+				ShortTime: "g:i A",
+				LongTime: "g:i:s A",
+				SortableDateTime: "Y-m-d\\TH:i:s",
+				UniversalSortableDateTime: "Y-m-d H:i:sO",
+				YearMonth: "F, Y"
+			},
+			reformatAfterEdit : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+};
+})(jQuery);

tw2/jqplugins/jqgrid/static/jquery/plugins/jqGrid/4.2.0/js/i18n/grid.locale-bg1251.js

+;(function($){
+/**
+ * jqGrid Bulgarian Translation 
+ * Tony Tomov tony@trirand.com
+ * http://trirand.com/blog/ 
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = {
+	defaults : {
+		recordtext: "{0} - {1} �� {2}",
+		emptyrecords: "���� �����(�)",
+		loadtext: "��������...",
+		pgtext : "���. {0} �� {1}"
+	},
+	search : {
+		caption: "�������...",
+		Find: "������",
+		Reset: "�������",
+		odata : ['�����', '��������', '��-�����', '��-����� ���=','��-������','��-������ ��� =', '������� �','�� ������� �','�� ������ �','�� �� ������ �','�������� �','�� ��������� �','�������', '�� �������' ],
+	    groupOps: [	{ op: "AND", text: " � " },	{ op: "OR",  text: "���" }	],
+		matchText: " ������",
+		rulesText: " ������"
+	},
+	edit : {
+		addCaption: "��� �����",
+		editCaption: "�������� �����",
+		bSubmit: "������",
+		bCancel: "�����",
+		bClose: "�������",
+		saveData: "������� �� ���������! �� ������� �� ���������?",
+		bYes : "��",
+		bNo : "��",
+		bExit : "�����",
+		msg: {
+		    required:"������ � ������������",
+		    number:"�������� ������� �����!",
+		    minValue:"���������� ������ �� � ��-������ ��� ����� ��",
+		    maxValue:"���������� ������ �� � ��-����� ��� ����� ��",
+		    email: "�� � ������� ��. �����",
+		    integer: "�������� ������� ���� �����",
+			date: "�������� ������� ����",
+			url: "e ��������� URL. �������� �� �������('http://' ��� 'https://')",
+			nodefined : " � ������������!",
+			novalue : " ������� ������� �� ��������!",
+			customarray : "������. ������� ������ �� ����� �����!",
+			customfcheck : "������������� ������� � ������������ ��� ���� ��� �������!"
+		}
+	},
+	view : {
+	    caption: "������� �����",