Ver Fonte

Add js libs impress, chosen, jqgrid using bower

jmontoyaa há 8 anos atrás
pai
commit
68db3c9c32
100 ficheiros alterados com 22878 adições e 6786 exclusões
  1. 56 0
      app/Resources/public/assets/chosen/.bower.json
  2. 15 0
      app/Resources/public/assets/chosen/.travis.yml
  3. 35 0
      app/Resources/public/assets/chosen/README.md
  4. 46 0
      app/Resources/public/assets/chosen/bower.json
  5. 0 0
      app/Resources/public/assets/chosen/chosen-sprite.png
  6. 0 0
      app/Resources/public/assets/chosen/chosen-sprite@2x.png
  7. 17 20
      app/Resources/public/assets/chosen/chosen.css
  8. 36 37
      app/Resources/public/assets/chosen/chosen.jquery.js
  9. 48 0
      app/Resources/public/assets/chosen/package.json
  10. 14 0
      app/Resources/public/assets/impress.js/.bower.json
  11. 326 0
      app/Resources/public/assets/impress.js/README.md
  12. BIN
      app/Resources/public/assets/impress.js/apple-touch-icon.png
  13. 1 1
      app/Resources/public/assets/impress.js/css/impress-demo.css
  14. BIN
      app/Resources/public/assets/impress.js/favicon.png
  15. 438 0
      app/Resources/public/assets/impress.js/index.html
  16. 0 0
      app/Resources/public/assets/impress.js/js/impress.js
  17. 22 0
      app/Resources/public/assets/jqgrid/.bower.json
  18. 6 0
      app/Resources/public/assets/jqgrid/.gitignore
  19. 18 0
      app/Resources/public/assets/jqgrid/README.md
  20. 12 0
      app/Resources/public/assets/jqgrid/bower.json
  21. 108 0
      app/Resources/public/assets/jqgrid/build.gradle
  22. 9 0
      app/Resources/public/assets/jqgrid/build.properties
  23. 87 0
      app/Resources/public/assets/jqgrid/build.xml
  24. 175 151
      app/Resources/public/assets/jqgrid/css/ui.jqgrid.css
  25. BIN
      app/Resources/public/assets/jqgrid/gradle/wrapper/gradle-wrapper.jar
  26. 6 0
      app/Resources/public/assets/jqgrid/gradle/wrapper/gradle-wrapper.properties
  27. 164 0
      app/Resources/public/assets/jqgrid/gradlew
  28. 90 0
      app/Resources/public/assets/jqgrid/gradlew.bat
  29. 0 0
      app/Resources/public/assets/jqgrid/install.txt
  30. 44 0
      app/Resources/public/assets/jqgrid/jqGrid.jquery.json
  31. 50 0
      app/Resources/public/assets/jqgrid/jquery.jqGrid.js
  32. 0 0
      app/Resources/public/assets/jqgrid/jquery.js
  33. 339 0
      app/Resources/public/assets/jqgrid/js/JsonXml.js
  34. 4014 0
      app/Resources/public/assets/jqgrid/js/grid.base.js
  35. 496 0
      app/Resources/public/assets/jqgrid/js/grid.celledit.js
  36. 689 0
      app/Resources/public/assets/jqgrid/js/grid.common.js
  37. 1004 0
      app/Resources/public/assets/jqgrid/js/grid.custom.js
  38. 712 0
      app/Resources/public/assets/jqgrid/js/grid.filter.js
  39. 2113 0
      app/Resources/public/assets/jqgrid/js/grid.formedit.js
  40. 533 0
      app/Resources/public/assets/jqgrid/js/grid.grouping.js
  41. 215 0
      app/Resources/public/assets/jqgrid/js/grid.import.js
  42. 652 0
      app/Resources/public/assets/jqgrid/js/grid.inlinedit.js
  43. 561 0
      app/Resources/public/assets/jqgrid/js/grid.jqueryui.js
  44. 505 0
      app/Resources/public/assets/jqgrid/js/grid.pivot.js
  45. 307 0
      app/Resources/public/assets/jqgrid/js/grid.subgrid.js
  46. 106 0
      app/Resources/public/assets/jqgrid/js/grid.tbltogrid.js
  47. 682 0
      app/Resources/public/assets/jqgrid/js/grid.treegrid.js
  48. 135 126
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-ar.js
  49. 142 132
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-bg.js
  50. 133 132
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-bg1251.js
  51. 137 128
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-cat.js
  52. 176 0
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-cn.js
  53. 137 128
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-cs.js
  54. 137 128
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-da.js
  55. 180 171
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-de.js
  56. 9 2
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-dk.js
  57. 135 126
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-el.js
  58. 177 168
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-en.js
  59. 137 128
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-es.js
  60. 153 144
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-fa.js
  61. 138 129
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-fi.js
  62. 135 126
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-fr.js
  63. 135 126
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-gl.js
  64. 136 127
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-he.js
  65. 9 2
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-hr.js
  66. 9 2
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-hr1250.js
  67. 138 129
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-hu.js
  68. 9 2
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-id.js
  69. 135 126
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-is.js
  70. 0 0
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-it.js
  71. 165 155
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-ja.js
  72. 9 2
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-kr.js
  73. 137 128
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-lt.js
  74. 137 128
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-mne.js
  75. 157 148
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-nl.js
  76. 0 0
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-no.js
  77. 14 5
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-pl.js
  78. 144 130
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-pt-br.js
  79. 134 125
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-pt.js
  80. 148 139
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-ro.js
  81. 136 0
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-ru.js
  82. 136 127
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-sk.js
  83. 9 2
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-sr-latin.js
  84. 137 128
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-sr.js
  85. 136 127
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-sv.js
  86. 137 128
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-th.js
  87. 135 126
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-tr.js
  88. 9 2
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-tw.js
  89. 136 127
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-ua.js
  90. 9 2
      app/Resources/public/assets/jqgrid/js/i18n/grid.locale-vi.js
  91. 71 0
      app/Resources/public/assets/jqgrid/js/jqDnR.js
  92. 68 0
      app/Resources/public/assets/jqgrid/js/jqModal.js
  93. 467 0
      app/Resources/public/assets/jqgrid/js/jquery.fmatter.js
  94. 2294 2561
      app/Resources/public/assets/jqgrid/js/jquery.jqGrid.js
  95. 4 0
      app/Resources/public/assets/jqgrid/js/minified/jquery.jqGrid.map.js
  96. 561 0
      app/Resources/public/assets/jqgrid/js/minified/jquery.jqGrid.min.js
  97. 5 5
      app/Resources/public/assets/jqgrid/plugins/grid.addons.js
  98. 0 0
      app/Resources/public/assets/jqgrid/plugins/grid.postext.js
  99. 0 0
      app/Resources/public/assets/jqgrid/plugins/grid.setcolumns.js
  100. 0 0
      app/Resources/public/assets/jqgrid/plugins/jquery.contextmenu.js

+ 56 - 0
app/Resources/public/assets/chosen/.bower.json

@@ -0,0 +1,56 @@
+{
+  "name": "chosen",
+  "description": "Chosen is a JavaScript plugin that makes select boxes user-friendly. It is currently available in both jQuery and Prototype flavors.",
+  "keywords": [
+    "select",
+    "multiselect",
+    "dropdown",
+    "form",
+    "input",
+    "ui"
+  ],
+  "homepage": "https://harvesthq.github.io/chosen/",
+  "license": "https://github.com/harvesthq/chosen/blob/master/LICENSE.md",
+  "authors": [
+    {
+      "name": "Patrick Filler",
+      "url": "https://github.com/pfiller"
+    },
+    {
+      "name": "Christophe Coevoet",
+      "url": "https://github.com/stof"
+    },
+    {
+      "name": "Ken Earley",
+      "url": "https://github.com/kenearley"
+    },
+    {
+      "name": "Koen Punt",
+      "url": "https://github.com/koenpunt"
+    }
+  ],
+  "dependencies": {
+    "jquery": ">=1.4.4"
+  },
+  "main": [
+    "chosen.jquery.js",
+    "chosen.css",
+    "chosen-sprite@2x.png",
+    "chosen-sprite.png"
+  ],
+  "ignore": [],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/harvesthq/chosen.git"
+  },
+  "version": "1.6.2",
+  "_release": "1.6.2",
+  "_resolution": {
+    "type": "version",
+    "tag": "v1.6.2",
+    "commit": "18b0f2a9ad5991cf84187d52e000769637c0b068"
+  },
+  "_source": "https://github.com/harvesthq/bower-chosen.git",
+  "_target": "*",
+  "_originalSource": "chosen"
+}

+ 15 - 0
app/Resources/public/assets/chosen/.travis.yml

@@ -0,0 +1,15 @@
+sudo: false
+
+language: node_js
+
+node_js:
+  - "node"
+
+deploy:
+  provider: npm
+  email: chosenjs@getharvest.com
+  api_key:
+    secure: jilkDlYp31lPr5AxNTSoC7cgeJv1k+HFyD97RdscUm7Oc45397H//62twQY1w8gUtonjqoncSUe+deElbBs8Zm1RXoX3F3YdcrdhLgmpUFa6Qt2L1ttSJRJ/HOn7NxupwNAHCFiLib5ffFED6FvntHJG/A1693yQeR9lycMsmrQ=
+  on:
+    tags: true
+    repo: harvesthq/chosen-package

+ 35 - 0
app/Resources/public/assets/chosen/README.md

@@ -0,0 +1,35 @@
+# Chosen
+
+Chosen is a library for making long, unwieldy select boxes more user friendly.
+
+- jQuery support: 1.4+
+- Prototype support: 1.7+
+
+For **documentation**, usage, and examples, see:
+http://harvesthq.github.io/chosen/
+
+For **downloads**, see:
+https://github.com/harvesthq/chosen/releases/
+
+### Bower Installation
+
+Chosen is available for Bower installation:
+`bower install chosen`
+
+The compiled files for the Bower package are automatically generated and stored in a [2nd Chosen repository](https://github.com/harvesthq/bower-chosen). No pull requests will be accepted to that repository.
+
+### Contributing to this project
+
+We welcome all to participate in making Chosen the best software it can be. The repository is maintained by only a few people, but has accepted contributions from over 50 authors after reviewing hundreds of pull requests related to thousands of issues. You can help reduce the maintainers' workload (and increase your chance of having an accepted contribution to Chosen) by following the
+[guidelines for contributing](contributing.md).
+
+* [Bug reports](contributing.md#bugs)
+* [Feature requests](contributing.md#features)
+* [Pull requests](contributing.md#pull-requests)
+
+### Chosen Credits
+
+- Concept and development by [Patrick Filler](http://patrickfiller.com) for [Harvest](http://getharvest.com/).
+- Design and CSS by [Matthew Lettini](http://matthewlettini.com/)
+- Repository maintained by [@pfiller](http://github.com/pfiller), [@kenearley](http://github.com/kenearley), [@stof](http://github.com/stof), [@koenpunt](http://github.com/koenpunt), and [@tjschuck](http://github.com/tjschuck).
+- Chosen includes [contributions by many fine folks](https://github.com/harvesthq/chosen/contributors).

+ 46 - 0
app/Resources/public/assets/chosen/bower.json

@@ -0,0 +1,46 @@
+{
+  "name": "chosen",
+  "description": "Chosen is a JavaScript plugin that makes select boxes user-friendly. It is currently available in both jQuery and Prototype flavors.",
+  "keywords": [
+    "select",
+    "multiselect",
+    "dropdown",
+    "form",
+    "input",
+    "ui"
+  ],
+  "homepage": "https://harvesthq.github.io/chosen/",
+  "license": "https://github.com/harvesthq/chosen/blob/master/LICENSE.md",
+  "authors": [
+    {
+      "name": "Patrick Filler",
+      "url": "https://github.com/pfiller"
+    },
+    {
+      "name": "Christophe Coevoet",
+      "url": "https://github.com/stof"
+    },
+    {
+      "name": "Ken Earley",
+      "url": "https://github.com/kenearley"
+    },
+    {
+      "name": "Koen Punt",
+      "url": "https://github.com/koenpunt"
+    }
+  ],
+  "dependencies": {
+    "jquery": ">=1.4.4"
+  },
+  "main": [
+    "chosen.jquery.js",
+    "chosen.css",
+    "chosen-sprite@2x.png",
+    "chosen-sprite.png"
+  ],
+  "ignore": [],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/harvesthq/chosen.git"
+  }
+}

+ 0 - 0
main/inc/lib/javascript/chosen/chosen-sprite.png → app/Resources/public/assets/chosen/chosen-sprite.png


+ 0 - 0
main/inc/lib/javascript/chosen/chosen-sprite@2x.png → app/Resources/public/assets/chosen/chosen-sprite@2x.png


+ 17 - 20
main/inc/lib/javascript/chosen/chosen.css → app/Resources/public/assets/chosen/chosen.css

@@ -2,9 +2,9 @@
 Chosen, a Select Box Enhancer for jQuery and Prototype
 by Patrick Filler for Harvest, http://getharvest.com
 
-Version 1.4.0
+Version 1.6.2
 Full source at https://github.com/harvesthq/chosen
-Copyright (c) 2011-2015 Harvest http://getharvest.com
+Copyright (c) 2011-2016 Harvest http://getharvest.com
 
 MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
 This file is generated by `grunt build`, do not edit it by hand.
@@ -16,8 +16,6 @@ This file is generated by `grunt build`, do not edit it by hand.
   display: inline-block;
   vertical-align: middle;
   font-size: 13px;
-  zoom: 1;
-  *display: inline;
   -webkit-user-select: none;
   -moz-user-select: none;
   user-select: none;
@@ -65,21 +63,21 @@ This file is generated by `grunt build`, do not edit it by hand.
   display: block;
   overflow: hidden;
   padding: 0 0 0 8px;
-  height: 35px;
+  height: 25px;
   border: 1px solid #aaa;
   border-radius: 5px;
   background-color: #fff;
   background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
-  background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
-  background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
-  background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
-  background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
+  background: -webkit-linear-gradient(#ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
+  background: -moz-linear-gradient(#ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
+  background: -o-linear-gradient(#ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
+  background: linear-gradient(#ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
   background-clip: padding-box;
   box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);
   color: #444;
   text-decoration: none;
   white-space: nowrap;
-  line-height: 30px;
+  line-height: 24px;
 }
 .chosen-container-single .chosen-default {
   color: #999;
@@ -122,7 +120,7 @@ This file is generated by `grunt build`, do not edit it by hand.
   display: block;
   width: 100%;
   height: 100%;
-  background: url('chosen-sprite.png') no-repeat 0px 7px;
+  background: url('chosen-sprite.png') no-repeat 0px 2px;
 }
 .chosen-container-single .chosen-search {
   position: relative;
@@ -162,8 +160,8 @@ This file is generated by `grunt build`, do not edit it by hand.
   position: relative;
   overflow-x: hidden;
   overflow-y: auto;
-  margin: 0;
-  padding: 0;
+  margin: 0 4px 4px 0;
+  padding: 0 0 0 4px;
   max-height: 240px;
   -webkit-overflow-scrolling: touch;
 }
@@ -220,8 +218,7 @@ This file is generated by `grunt build`, do not edit it by hand.
   margin: 0;
   padding: 0 5px;
   width: 100%;
-  height: auto !important;
-  height: 1%;
+  height: auto;
   border: 1px solid #aaa;
   background-color: #fff;
   background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
@@ -296,10 +293,10 @@ This file is generated by `grunt build`, do not edit it by hand.
   border: 1px solid #ccc;
   background-color: #e4e4e4;
   background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
-  background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
-  background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
-  background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
-  background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+  background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+  background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+  background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+  background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
   color: #666;
 }
 .chosen-container-multi .chosen-choices li.search-choice-focus {
@@ -342,7 +339,7 @@ This file is generated by `grunt build`, do not edit it by hand.
   background: transparent;
 }
 .chosen-container-active.chosen-with-drop .chosen-single div b {
-  background-position: -18px 7px;
+  background-position: -18px 2px;
 }
 .chosen-container-active .chosen-choices {
   border: 1px solid #5897fb;

+ 36 - 37
main/inc/lib/javascript/chosen/chosen.jquery.js → app/Resources/public/assets/chosen/chosen.jquery.js

@@ -1,15 +1,3 @@
-/*!
-Chosen, a Select Box Enhancer for jQuery and Prototype
-by Patrick Filler for Harvest, http://getharvest.com
-
-Version 1.4.0
-Full source at https://github.com/harvesthq/chosen
-Copyright (c) 2011-2015 Harvest http://getharvest.com
-
-MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
-This file is generated by `grunt build`, do not edit it by hand.
-*/
-
 (function() {
   var $, AbstractChosen, Chosen, SelectParser, _ref,
     __hasProp = {}.hasOwnProperty,
@@ -156,7 +144,9 @@ This file is generated by `grunt build`, do not edit it by hand.
       this.inherit_select_classes = this.options.inherit_select_classes || false;
       this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;
       this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;
-      return this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;
+      this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;
+      this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY;
+      return this.case_sensitive_search = this.options.case_sensitive_search || false;
     };
 
     AbstractChosen.prototype.set_default_text = function() {
@@ -212,23 +202,32 @@ This file is generated by `grunt build`, do not edit it by hand.
     };
 
     AbstractChosen.prototype.results_option_build = function(options) {
-      var content, data, _i, _len, _ref;
+      var content, data, data_content, shown_results, _i, _len, _ref;
       content = '';
+      shown_results = 0;
       _ref = this.results_data;
       for (_i = 0, _len = _ref.length; _i < _len; _i++) {
         data = _ref[_i];
+        data_content = '';
         if (data.group) {
-          content += this.result_add_group(data);
+          data_content = this.result_add_group(data);
         } else {
-          content += this.result_add_option(data);
+          data_content = this.result_add_option(data);
+        }
+        if (data_content !== '') {
+          shown_results++;
+          content += data_content;
         }
         if (options != null ? options.first : void 0) {
           if (data.selected && this.is_multiple) {
             this.choice_build(data);
           } else if (data.selected && !this.is_multiple) {
-            this.single_set_selected_text(data.html);
+            this.single_set_selected_text(this.choice_label(data));
           }
         }
+        if (shown_results >= this.max_shown_results) {
+          break;
+        }
       }
       return content;
     };
@@ -358,8 +357,8 @@ This file is generated by `grunt build`, do not edit it by hand.
             }
             results_group.active_options += 1;
           }
+          option.search_text = option.group ? option.label : option.html;
           if (!(option.group && !this.group_search)) {
-            option.search_text = option.group ? option.label : option.html;
             option.search_match = this.search_string_match(option.search_text, regex);
             if (option.search_match && !option.group) {
               results += 1;
@@ -390,9 +389,10 @@ This file is generated by `grunt build`, do not edit it by hand.
     };
 
     AbstractChosen.prototype.get_search_regex = function(escaped_search_string) {
-      var regex_anchor;
+      var regex_anchor, regex_flag;
       regex_anchor = this.search_contains ? "" : "^";
-      return new RegExp(regex_anchor + escaped_search_string, 'i');
+      regex_flag = this.case_sensitive_search ? "" : "i";
+      return new RegExp(regex_anchor + escaped_search_string, regex_flag);
     };
 
     AbstractChosen.prototype.search_string_match = function(search_string, regex) {
@@ -465,6 +465,7 @@ This file is generated by `grunt build`, do not edit it by hand.
         case 16:
         case 91:
         case 17:
+        case 18:
           break;
         default:
           return this.results_search();
@@ -526,17 +527,12 @@ This file is generated by `grunt build`, do not edit it by hand.
     };
 
     AbstractChosen.browser_is_supported = function() {
-      if (window.navigator.appName === "Microsoft Internet Explorer") {
+      if ("Microsoft Internet Explorer" === window.navigator.appName) {
         return document.documentMode >= 8;
       }
-      if (/iP(od|hone)/i.test(window.navigator.userAgent)) {
+      if (/iP(od|hone)/i.test(window.navigator.userAgent) || /IEMobile/i.test(window.navigator.userAgent) || /Windows Phone/i.test(window.navigator.userAgent) || /BlackBerry/i.test(window.navigator.userAgent) || /BB10/i.test(window.navigator.userAgent) || /Android.*Mobile/i.test(window.navigator.userAgent)) {
         return false;
       }
-      if (/Android/i.test(window.navigator.userAgent)) {
-        if (/Mobile/i.test(window.navigator.userAgent)) {
-          return false;
-        }
-      }
       return true;
     };
 
@@ -561,9 +557,13 @@ This file is generated by `grunt build`, do not edit it by hand.
         var $this, chosen;
         $this = $(this);
         chosen = $this.data('chosen');
-        if (options === 'destroy' && chosen instanceof Chosen) {
-          chosen.destroy();
-        } else if (!(chosen instanceof Chosen)) {
+        if (options === 'destroy') {
+          if (chosen instanceof Chosen) {
+            chosen.destroy();
+          }
+          return;
+        }
+        if (!(chosen instanceof Chosen)) {
           $this.data('chosen', new Chosen(this, options));
         }
       });
@@ -606,7 +606,7 @@ This file is generated by `grunt build`, do not edit it by hand.
       if (this.is_multiple) {
         this.container.html('<ul class="chosen-choices"><li class="search-field"><input type="text" value="' + this.default_text + '" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>');
       } else {
-        this.container.html('<a class="chosen-single chosen-default" tabindex="-1"><span>' + this.default_text + '</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>');
+        this.container.html('<a class="chosen-single chosen-default"><span>' + this.default_text + '</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>');
       }
       this.form_field_jq.hide().after(this.container);
       this.dropdown = this.container.find('div.chosen-drop').first();
@@ -636,9 +636,11 @@ This file is generated by `grunt build`, do not edit it by hand.
       var _this = this;
       this.container.bind('touchstart.chosen', function(evt) {
         _this.container_mousedown(evt);
+        return evt.preventDefault();
       });
       this.container.bind('touchend.chosen', function(evt) {
         _this.container_mouseup(evt);
+        return evt.preventDefault();
       });
       this.container.bind('mousedown.chosen', function(evt) {
         _this.container_mousedown(evt);
@@ -1032,6 +1034,7 @@ This file is generated by `grunt build`, do not edit it by hand.
         } else {
           this.reset_single_select_options();
         }
+        high.addClass("result-selected");
         item = this.results_data[high[0].getAttribute("data-option-array-index")];
         item.selected = true;
         this.form_field.options[item.options_index].selected = true;
@@ -1044,7 +1047,7 @@ This file is generated by `grunt build`, do not edit it by hand.
         if (!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) {
           this.results_hide();
         }
-        this.search_field.val("");
+        this.show_search_field_default();
         if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {
           this.form_field_jq.trigger("change", {
             'selected': this.form_field.options[item.options_index].value
@@ -1101,11 +1104,7 @@ This file is generated by `grunt build`, do not edit it by hand.
     };
 
     Chosen.prototype.get_search_text = function() {
-      if (this.search_field.val() === this.default_text) {
-        return "";
-      } else {
-        return $('<div/>').text($.trim(this.search_field.val())).html();
-      }
+      return $('<div/>').text($.trim(this.search_field.val())).html();
     };
 
     Chosen.prototype.winnow_results_set_highlight = function() {

+ 48 - 0
app/Resources/public/assets/chosen/package.json

@@ -0,0 +1,48 @@
+{
+  "name": "chosen-js",
+  "version": "1.6.2",
+  "description": "Chosen is a JavaScript plugin that makes select boxes user-friendly. It is currently available in both jQuery and Prototype flavors.",
+  "keywords": [
+    "select",
+    "multiselect",
+    "dropdown",
+    "form",
+    "input",
+    "ui"
+  ],
+  "homepage": "https://harvesthq.github.io/chosen/",
+  "bugs": "https://github.com/harvesthq/chosen/issues",
+  "license": "MIT",
+  "contributors": [
+    {
+      "name": "Patrick Filler",
+      "url": "https://github.com/pfiller"
+    },
+    {
+      "name": "Christophe Coevoet",
+      "url": "https://github.com/stof"
+    },
+    {
+      "name": "Ken Earley",
+      "url": "https://github.com/kenearley"
+    },
+    {
+      "name": "Koen Punt",
+      "url": "https://github.com/koenpunt"
+    }
+  ],
+  "dependencies": {
+    "jquery": ">=1.4.4"
+  },
+  "files": [
+    "chosen.jquery.js",
+    "chosen.css",
+    "chosen-sprite@2x.png",
+    "chosen-sprite.png"
+  ],
+  "main": "chosen.jquery.js",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/harvesthq/chosen.git"
+  }
+}

+ 14 - 0
app/Resources/public/assets/impress.js/.bower.json

@@ -0,0 +1,14 @@
+{
+  "name": "impress.js",
+  "homepage": "https://github.com/bartaz/impress.js",
+  "version": "0.5.3",
+  "_release": "0.5.3",
+  "_resolution": {
+    "type": "version",
+    "tag": "0.5.3",
+    "commit": "e8fbd0cc7599b2d4b4c03501d80be1694509878b"
+  },
+  "_source": "https://github.com/bartaz/impress.js.git",
+  "_target": "0.5.3",
+  "_originalSource": "impress.js"
+}

+ 326 - 0
app/Resources/public/assets/impress.js/README.md

@@ -0,0 +1,326 @@
+impress.js
+============
+
+It's a presentation framework based on the power of CSS3 transforms and 
+transitions in modern browsers and inspired by the idea behind prezi.com.
+
+**WARNING**
+
+impress.js may not help you if you have nothing interesting to say ;)
+
+
+ABOUT THE NAME
+----------------
+
+impress.js name in [courtesy of @skuzniak](http://twitter.com/skuzniak/status/143627215165333504).
+
+It's an (un)fortunate coincidence that a Open/LibreOffice presentation tool is called Impress ;)
+
+
+VERSION HISTORY
+-----------------
+
+### 0.5.3 ([browse](http://github.com/bartaz/impress.js/tree/0.5.3), [zip](http://github.com/bartaz/impress.js/zipball/0.5.3), [tar](http://github.com/bartaz/impress.js/tarball/0.5.3))
+
+#### BUGFIX RELEASE
+
+Version 0.5 introduced events including `impress:stepenter`, but this event was not triggered properly in some
+specific transition types (for example when only scale was changing between steps). It was caused by the fact that
+in such cases expected `transitionend` event was not triggered.
+
+This version fixes this issue. Unfortunately modern `transitionend` event is no longer used to detect when the
+transition has finished, but old school (and more reliable) `setTimeout` is used.
+
+
+### 0.5.2 ([browse](http://github.com/bartaz/impress.js/tree/0.5.2), [zip](http://github.com/bartaz/impress.js/zipball/0.5.2), [tar](http://github.com/bartaz/impress.js/tarball/0.5.2))
+
+#### DOCUMENTATION RELEASE
+
+More descriptive comments added to demo CSS and impress.js source file, so now not only `index.html` is worth reading ;)
+
+
+### 0.5.1 ([browse](http://github.com/bartaz/impress.js/tree/0.5.1), [zip](http://github.com/bartaz/impress.js/zipball/0.5.1), [tar](http://github.com/bartaz/impress.js/tarball/0.5.1))
+
+#### BUGFIX RELEASE
+
+Changes in version 0.5 introduced a bug (#126) that was preventing clicks on links (or any clickable elements) on
+currently active step. This release fixes this issue.
+
+
+
+### 0.5 ([browse](http://github.com/bartaz/impress.js/tree/0.5), [zip](http://github.com/bartaz/impress.js/zipball/0.5), [tar](http://github.com/bartaz/impress.js/tarball/0.5))
+
+#### CHANGELOG
+
+* API changed, so that `impress()` function no longer automatically initialize presentation; new method called `init`
+  was added to API and it should be used to start the presentation
+* event `impress:init` is triggered on root presentation element (`#impress` by default) when presentation is initialized
+* new CSS classes were added: `impress-disabled` is added to body element by the impress.js script and it's changed to 
+  `impress-enabled` when `init()` function is called
+* events added when step is entered and left - custom `impress:stepenter` and `impress:stepleave` events are triggered
+  on step elements and can be handled like any other DOM events (with `addEventListener`)
+* additional `past`, `present` and `future` classes are added to step elements
+    - `future` class appears on steps that were not yet visited
+    - `present` class appears on currently visible step - it's different from `active` class as `present` class
+       is added when transition finishes (step is entered)
+    - `past` class is added to already visited steps (when the step is left)
+* and good news, `goto()` API method is back! it seems that `goto` **was** a future reserved word but isn't anymore,
+  so we can use this short and pretty name instead of camelCassy `stepTo` - and yes, that means API changed again...
+* additionally `goto()` method now supports new types of parameters:
+    - you can give it a number of step you want to go to: `impress().goto(7)`
+    - or its id: `impress().goto("the-best-slide-ever")`
+    - of course DOM element is still acceptable: `impress().goto( document.getElementById("overview") )`
+* and if it's not enough, `goto()` also accepts second parameter to define the transition duration in ms, for example
+  `impress().goto("make-it-quick", 300)` or `impress().goto("now", 0)`
+
+#### UPGRADING FROM PREVIOUS VERSIONS
+
+In current version calling `impress()` doesn't automatically initialize the presentation. You need to call `init()`
+function from the API. So in a place were you called `impress()` to initialize impress.js simply change this call
+to `impress().init()`.
+
+Version 0.4 changed `goto` API method into `stepTo`. It turned out that `goto` is not a reserved word anymore, so it
+can be used in JavaScript. That's why version 0.5 brings it back and removes `stepTo`.
+
+So if you have been using version 0.4 and have any reference to `stepTo` API method make sure to change it to `goto`.
+
+
+
+### 0.4.1 ([browse](http://github.com/bartaz/impress.js/tree/0.4.1), [zip](http://github.com/bartaz/impress.js/zipball/0.4.1), [tar](http://github.com/bartaz/impress.js/tarball/0.4.1))
+
+#### BUGFIX RELEASE
+
+Changes is version 0.4 introduced a bug causing JavaScript errors being thrown all over the place in fallback mode.
+This release fixes this issue.
+
+It also adds a flag `impress.supported` that can be used in JavaScript to check if impress.js is supported in the browser.
+
+
+
+### 0.4 ([browse](http://github.com/bartaz/impress.js/tree/0.4), [zip](http://github.com/bartaz/impress.js/zipball/0.4), [tar](http://github.com/bartaz/impress.js/tarball/0.4))
+
+#### CHANGELOG
+
+* configuration options on `#impress` element: `data-perspective` (in px, defaults so 1000),
+  `data-transition-duration` (in ms, defaults to 1000)
+* automatic scaling to fit window size, with configuration options:  `data-width` (in px, defaults to 1024),
+  `data-height` (in px, defaults to 768), `max-scale` (defaults to 1), `min-scale` (defaults to 0)
+* `goto` API function was renamed to `stepTo` because `goto` is a future reserved work in JavaScript,
+  so **please make sure to update your code**
+* fallback `impress-not-supported` class is now set on `body` element instead of `#impress` element and it's
+  replaced with `impress-supported` when browser supports all required features
+* classes `step-ID` used to indicate progress of the presentation are now renamed to `impress-on-ID` and are
+  set on `body` element, so **please make sure to update your code**
+* basic validation of configuration options
+* couple of typos and bugs fixed
+* favicon added ;)
+
+
+#### UPGRADING FROM PREVIOUS VERSIONS
+
+If in your custom JavaScript code you were using `goto()` function from impress.js API make sure to change it
+to `stepTo()`.
+
+If in your CSS you were using classes based on currently active step with `step-` prefix, such as `step-bored`
+(where `bored` is the id of the step element) make sure to change it to `impress-on-` prefix
+(for example `impress-on-bored`). Also in previous versions these classes were assigned to `#impress` element
+and now they are added to `body` element, so if your CSS code depends on this, it also should be updated.
+
+Same happened to `impress-not-supported` class name - it was moved from `#impress` element to `body`, so update
+your CSS if it's needed.
+
+#### NOTE ON BLACKBERRY PLAYBOOK
+
+Changes and fixes added in this version have broken the experience on Blackberry Playbook with OS in version 1.0.
+It happened due to a bug in the Playbook browser in this version. Fortunately in version 2.0 of Playbook OS this
+bug was fixed and impress.js works fine.
+
+So currently impress.js work only on Blackberry Playbook with latest OS. Fortunately, [it seems that most of the
+users](http://twitter.com/n_adam_stanley/status/178188611827679233) [are quite quick with updating their devices]
+(http://twitter.com/brcewane/status/178230406196379648)
+
+
+
+### 0.3 ([browse](http://github.com/bartaz/impress.js/tree/0.3), [zip](http://github.com/bartaz/impress.js/zipball/0.3), [tar](http://github.com/bartaz/impress.js/tarball/0.3))
+
+#### CHANGELOG
+
+* minor CSS 3D fixes
+* basic API to control the presentation flow from JavaScript
+* touch event support
+* basic support for iPad (iOS 5 and iOS 4 with polyfills) and Blackberry Playbook
+
+#### UPGRADING FROM PREVIOUS VERSIONS
+
+Because API was introduced the way impress.js script is initialized was changed a bit. You not only has to include
+`impress.js` script file, but also call `impress()` function.
+
+See the source of `index.html` for example and more details.
+
+
+### 0.2 ([browse](http://github.com/bartaz/impress.js/tree/0.2), [zip](http://github.com/bartaz/impress.js/zipball/0.2), [tar](http://github.com/bartaz/impress.js/tarball/0.2))
+
+* tutorial/documentation added to `index.html` source file
+* being even more strict with strict mode
+* code clean-up
+* couple of small bug-fixes
+
+
+### 0.1 ([browse](http://github.com/bartaz/impress.js/tree/0.1), [zip](http://github.com/bartaz/impress.js/zipball/0.1), [tar](http://github.com/bartaz/impress.js/tarball/0.1))
+
+First release.
+
+Contains basic functionality for step placement and transitions between them
+with simple fallback for non-supporting browsers.
+
+
+
+HOW TO USE IT
+---------------
+
+[Use the source](http://github.com/bartaz/impress.js/blob/master/index.html), Luke ;)
+
+If you have no idea what I mean by that, or you just clicked that link above and got 
+very confused by all these strange characters that got displayed on your screen,
+it's a sign, that impress.js is not for you.
+
+Sorry.
+
+Fortunately there are some guys on GitHub that got quite excited with the idea of building
+editing tool for impress.js. Let's hope they will manage to do it.
+
+
+EXAMPLES AND DEMOS
+--------------------
+
+### Official demo
+
+[impress.js demo](http://bartaz.github.com/impress.js) by [@bartaz](http://twitter.com/bartaz)
+
+### Presentations
+
+[CSS 3D transforms](http://bartaz.github.com/meetjs/css3d-summit) from [meet.js summit](http://summit.meetjs.pl) by [@bartaz](http://twitter.com/bartaz)
+
+[What the Heck is Responsive Web Design](http://johnpolacek.github.com/WhatTheHeckIsResponsiveWebDesign-impressjs/) by John Polacek [@johnpolacek](http://twitter.com/johnpolacek)
+
+[12412.org presentation to Digibury](http://extra.12412.org/digibury/) by Stephen Fulljames [@fulljames](http://twitter.com/fulljames)
+
+[Data center virtualization with Wakame-VDC](http://wakame.jp/wiki/materials/20120114_TLUG/) by Andreas Kieckens [@Metallion98](https://twitter.com/#!/Metallion98)
+
+[Asynchronous JavaScript](http://www.medikoo.com/asynchronous-javascript/3d/) by Mariusz Nowak [@medikoo](http://twitter.com/medikoo)
+
+[Introduction to Responsive Design](http://www.alecrust.com/factory/rd-presentation/) by Alec Rust [@alecrust] (http://twitter.com/alecrust)
+
+[Bonne année 2012](http://duael.fr/voeux/2012/) by Edouard Cunibil [@DuaelFr](http://twitter.com/DuaelFr)
+
+[Careers in Free and Open Source Software](http://exequiel09.github.com/symposium-presentation/) by Exequiel Ceasar Navarrete [@ichigo1411](http://twitter.com/ichigo1411)
+
+[HTML5 Future : to infinity and beyond!](http://sylvainw.github.com/HTML5-Future/index_en.html) by Sylvain Weber [@sylvainw](http://twitter.com/sylvainw)
+
+### Websites and portfolios
+
+[lioshi.com](http://lioshi.com) by @lioshi
+
+[alingham.com](http://www.alingham.com) by Al Ingham [@alingham](http://twitter.com/alingham)
+
+[nice-shots.de](http://nice-shots.de) by [@NiceShots](http://twitter.com/NiceShots)
+
+[museum140](http://www.youtube.com/watch?v=ObLiikJEt94) Shorty Award promo video [entirely made with ImpressJS](http://thingsinjars.com/post/446/museum140-shorty/) by [@thingsinjars](http://twitter.com/thingsinjars)
+
+[electricanimal.co.uk](http://www.electricanimal.co.uk) by [@elecmal](http://twitter.com/elecmal)
+
+[t3kila.com](http://www.t3kila.com) by Romain Wurtz
+
+If you have used impress.js in your presentation (or website) and would like to have it listed here,
+please contact me via GitHub or send me a pull request to updated `README.md` file.
+
+
+
+WANT TO CONTRIBUTE?
+---------------------
+
+If you've found a bug or have a great idea for new feature let me know by [adding your suggestion]
+(http://github.com/bartaz/impress.js/issues/new) to [issues list](https://github.com/bartaz/impress.js/issues).
+
+If you have fixed a bug or implemented a feature that you'd like to share, send your pull request against [dev branch]
+(http://github.com/bartaz/impress.js/tree/dev). But remember that I only accept code that fits my vision of impress.js
+and my coding standards - so make sure you are open for discussion :)
+
+
+
+BROWSER SUPPORT
+-----------------
+
+### TL;DR;
+
+Currently impress.js works fine in latest Chrome/Chromium browser, Safari 5.1 and Firefox 10.
+With addition of some HTML5 polyfills (see below for details) it should work in Internet Explorer 10
+(currently available as Developers Preview).
+It doesn't work in Opera, as it doesn't support CSS 3D transforms.
+
+As a presentation tool it was not developed with mobile browsers in mind, but some tablets are good
+enough to run it, so it should work quite well on iPad (iOS 5, or iOS 4 with HTML5 polyfills) and 
+Blackberry Playbook.
+
+### Still interested? Read more...
+
+Additionally for the animations to run smoothly it's required to have hardware
+acceleration support in your browser. This depends on the browser, your operating
+system and even kind of graphic hardware you have in your machine.
+
+For browsers not supporting CSS3 3D transforms impress.js adds `impress-not-supported`
+class on `#impress` element, so fallback styles can be applied to make all the content accessible.
+
+
+### Even more explanation and technical stuff
+
+Let's put this straight -- wide browser support was (and is) not on top of my priority list for
+impress.js. It's built on top of fresh technologies that just start to appear in the browsers
+and I'd like to rather look forward and develop for the future than being slowed down by the past.
+
+But it's not "hard-coded" for any particular browser or engine. If any browser in future will
+support features required to run impress.js, it will just begin to work there without changes in
+the code.
+
+From technical point of view all the positioning of presentation elements in 3D requires CSS 3D
+transforms support. Transitions between presentation steps are based on CSS transitions.
+So these two features are required by impress.js to display presentation correctly.
+
+Unfortunately the support for CSS 3D transforms and transitions is not enough for animations to
+run smoothly. If the browser doesn't support hardware acceleration or the graphic card is not 
+good enough the transitions will be laggy.
+
+Additionally the code of impress.js relies on APIs proposed in HTML5 specification, including
+`classList` and `dataset` APIs. If they are not available in the browser, impress.js will not work.
+
+Fortunately, as these are JavaScript APIs there are polyfill libraries that patch older browsers
+with these APIs.
+
+For example IE10 is said to support CSS 3D transforms and transitions, but it doesn't have `classList`
+not `dataset` APIs implemented at the moment. So including polyfill libraries *should* help IE10
+with running impress.js.
+
+
+### And few more details about mobile support
+
+Mobile browsers are currently not supported. Even Android browsers that support CSS 3D transforms are
+forced into fallback view at this point.
+
+Fortunately some tablets seem to have good enough hardware support and browsers to handle it.
+Currently impress.js presentations should work on iPad and Blackberry Playbook.
+
+In theory iPhone should also be able to run it (as it runs the same software as iPad), but I haven't
+found a good way to handle it's small screen.
+
+Also note that iOS supports `classList` and `dataset` APIs starting with version 5, so iOS 4.X and older
+requires polyfills to work.
+
+
+LICENSE
+---------
+
+Copyright 2011-2012 Bartek Szopka
+
+Released under the MIT and GPL Licenses.
+
+

BIN
app/Resources/public/assets/impress.js/apple-touch-icon.png


+ 1 - 1
main/inc/lib/javascript/impress/impress-demo.css → app/Resources/public/assets/impress.js/css/impress-demo.css

@@ -426,7 +426,7 @@ body     { pointer-events: none; }
 
 .slide {
     display: block;
-    top: 400px;
+
     width: 900px;
     height: 700px;
 

BIN
app/Resources/public/assets/impress.js/favicon.png


+ 438 - 0
app/Resources/public/assets/impress.js/index.html

@@ -0,0 +1,438 @@
+<!doctype html>
+
+<!--
+
+    Welcome to the light side of the source, young padawan.
+
+    One step closer to learn something interesting you are...
+
+                               ____                  
+                            _.' :  `._               
+                        .-.'`.  ;   .'`.-.           
+               __      / : ___\ ;  /___ ; \      __  
+             ,'_ ""--.:__;".-.";: :".-.":__;.--"" _`,
+             :' `.t""--.. '<@.`;_  ',@:` ..--""j.' `;
+                  `:-.._J '-.-'L__ `-- ' L_..-;'     
+                    "-.__ ;  .-"  "-.  : __.-"       
+                        L ' /.------.\ ' J           
+                         "-.   "--"   .-"            
+                        __.l"-:_JL_;-";.__           
+                     .-j/'.;  ;""""  / .'\"-.        
+                   .' /:`. "-.:     .-" .';  `.      
+                .-"  / ;  "-. "-..-" .-"  :    "-.   
+             .+"-.  : :      "-.__.-"      ;-._   \  
+             ; \  `.; ;                    : : "+. ; 
+             :  ;   ; ;                    : ;  : \: 
+             ;  :   ; :                    ;:   ;  : 
+            : \  ;  :  ;                  : ;  /  :: 
+            ;  ; :   ; :                  ;   :   ;: 
+            :  :  ;  :  ;                : :  ;  : ; 
+            ;\    :   ; :                ; ;     ; ; 
+            : `."-;   :  ;              :  ;    /  ; 
+             ;    -:   ; :              ;  : .-"   : 
+             :\     \  :  ;            : \.-"      : 
+              ;`.    \  ; :            ;.'_..--  / ; 
+              :  "-.  "-:  ;          :/."      .'  :
+               \         \ :          ;/  __        :
+                \       .-`.\        /t-""  ":-+.   :
+                 `.  .-"    `l    __/ /`. :  ; ; \  ;
+                   \   .-" .-"-.-"  .' .'j \  /   ;/ 
+                    \ / .-"   /.     .'.' ;_:'    ;  
+                     :-""-.`./-.'     /    `.___.'   
+                           \ `t  ._  /               
+                            "-.t-._:'                
+
+-->
+
+<!--
+    
+    So you'd like to know how to use impress.js?
+    
+    You've made the first, very important step -- you're reading the source code.
+    And that's how impress.js presentations are built -- with HTML and CSS code.
+    
+    Believe me, you need quite decent HTML and CSS skills to be able to use impress.js effectively.
+    And what is even more important, you need to be a designer, too, because there are no default
+    styles for impress.js presentations, there is no default or automatic layout for them.
+    
+    You need to design and build it by hand.
+    
+    So...
+    
+    Would you still like to know how to use impress.js?
+    
+-->
+
+<html lang="en">
+<head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=1024" />
+    <meta name="apple-mobile-web-app-capable" content="yes" />
+    <title>impress.js | presentation tool based on the power of CSS3 transforms and transitions in modern browsers | by Bartek Szopka @bartaz</title>
+    
+    <meta name="description" content="impress.js is a presentation tool based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com." />
+    <meta name="author" content="Bartek Szopka" />
+
+    <link href="http://fonts.googleapis.com/css?family=Open+Sans:regular,semibold,italic,italicsemibold|PT+Sans:400,700,400italic,700italic|PT+Serif:400,700,400italic,700italic" rel="stylesheet" />
+
+    <!--
+        
+        Impress.js doesn't depend on any external stylesheet. Script adds all styles it needs for
+        presentation to work.
+        
+        This style below contains styles only for demo presentation. Browse it to see how impress.js
+        classes are used to style presentation steps, or how to apply fallback styles, but I don't want
+        you to use them directly in your presentation.
+        
+        Be creative, build your own. We don't really want all impress.js presentations to look the same,
+        do we?
+        
+        When creating your own presentation get rid of this file. Start from scratch, it's fun!
+        
+    -->
+    <link href="css/impress-demo.css" rel="stylesheet" />
+    
+    <link rel="shortcut icon" href="favicon.png" />
+    <link rel="apple-touch-icon" href="apple-touch-icon.png" />
+</head>
+
+<!--
+    
+    Body element is used by impress.js to set some useful class names, that will allow you to detect
+    the support and state of the presentation in CSS or other scripts.
+    
+    First very useful class name is `impress-not-supported`. This class means, that browser doesn't
+    support features required by impress.js, so you should apply some fallback styles in your CSS.
+    It's not necessary to add it manually on this element. If the script detects that browser is not
+    good enough it will add this class, but keeping it in HTML means that users without JavaScript
+    will also get fallback styles.
+    
+    When impress.js script detects that browser supports all required features, this class name will
+    be removed.
+    
+    The class name on body element also depends on currently active presentation step. More details about
+    it can be found later, when `hint` element is being described.
+    
+-->
+<body class="impress-not-supported">
+
+<!--
+    For example this fallback message is only visible when there is `impress-not-supported` class on body.
+-->
+<div class="fallback-message">
+    <p>Your browser <b>doesn't support the features required</b> by impress.js, so you are presented with a simplified version of this presentation.</p>
+    <p>For the best experience please use the latest <b>Chrome</b>, <b>Safari</b> or <b>Firefox</b> browser.</p>
+</div>
+
+<!--
+    
+    Now that's the core element used by impress.js.
+    
+    That's the wrapper for your presentation steps. In this element all the impress.js magic happens.
+    It doesn't have to be a `<div>`. Only `id` is important here as that's how the script find it.
+    
+    You probably won't need it now, but there are some configuration options that can be set on this element.
+    
+    To change the duration of the transition between slides use `data-transition-duration="2000"` giving it
+    a number of ms. It defaults to 1000 (1s).
+    
+    You can also control the perspective with `data-perspective="500"` giving it a number of pixels.
+    It defaults to 1000. You can set it to 0 if you don't want any 3D effects.
+    If you are willing to change this value make sure you understand how CSS perspective works:
+    https://developer.mozilla.org/en/CSS/perspective
+    
+    But as I said, you won't need it for now, so don't worry - there are some simple but interesing things
+    right around the corner of this tag ;)
+    
+-->
+<div id="impress">
+
+    <!--
+        
+        Here is where interesting thing start to happen.
+        
+        Each step of the presentation should be an element inside the `#impress` with a class name
+        of `step`. These step elements are positioned, rotated and scaled by impress.js, and
+        the 'camera' shows them on each step of the presentation.
+        
+        Positioning information is passed through data attributes.
+        
+        In the example below we only specify x and y position of the step element with `data-x="-1000"`
+        and `data-y="-1500` attributes. This means that **the center** of the element (yes, the center)
+        will be positioned in point x = -1000px and y = -1500px of the presentation 'canvas'.
+        
+        It will not be rotated or scaled.
+        
+    -->
+    <div id="bored" class="step slide" data-x="-1000" data-y="-1500">
+        <q>Aren't you just <b>bored</b> with all those slides-based presentations?</q>
+    </div>
+
+    <!--
+        
+        The `id` attribute of the step element is used to identify it in the URL, but it's optional.
+        If it is not defined, it will get a default value of `step-N` where N is a number of slide.
+        
+        So in the example below it'll be `step-2`.
+        
+        The hash part of the url when this step is active will be `#/step-2`.
+        
+        You can also use `#step-2` in a link, to point directly to this particular step.
+        
+        Please note, that while `#/step-2` (with slash) would also work in a link it's not recommended.
+        Using classic `id`-based links like `#step-2` makes these links usable also in fallback mode.
+        
+    -->
+    <div class="step slide" data-x="0" data-y="-1500">
+        <q>Don't you think that presentations given <strong>in modern browsers</strong> shouldn't <strong>copy the limits</strong> of 'classic' slide decks?</q>
+    </div>
+
+    <div class="step slide" data-x="1000" data-y="-1500">
+        <q>Would you like to <strong>impress your audience</strong> with <strong>stunning visualization</strong> of your talk?</q>
+    </div>
+
+    <!--
+        
+        This is an example of step element being scaled.
+        
+        Again, we use a `data-` attribute, this time it's `data-scale="4"`, so it means that this
+        element will be 4 times larger than the others.
+        From presentation and transitions point of view it means, that it will have to be scaled
+        down (4 times) to make it back to it's correct size.
+        
+    -->
+    <div id="title" class="step" data-x="0" data-y="0" data-scale="4">
+        <span class="try">then you should try</span>
+        <h1>impress.js<sup>*</sup></h1>
+        <span class="footnote"><sup>*</sup> no rhyme intended</span>
+    </div>
+
+    <!--
+        
+        This element introduces rotation.
+        
+        Notation shouldn't be a surprise. We use `data-rotate="90"` attribute, meaning that this
+        element should be rotated by 90 degrees clockwise.
+        
+    -->
+    <div id="its" class="step" data-x="850" data-y="3000" data-rotate="90" data-scale="5">
+        <p>It's a <strong>presentation tool</strong> <br/>
+        inspired by the idea behind <a href="http://prezi.com">prezi.com</a> <br/>
+        and based on the <strong>power of CSS3 transforms and transitions</strong> in modern browsers.</p>
+    </div>
+
+    <div id="big" class="step" data-x="3500" data-y="2100" data-rotate="180" data-scale="6">
+        <p>visualize your <b>big</b> <span class="thoughts">thoughts</span></p>
+    </div>
+
+    <!--
+        
+        And now it gets really exiting! We move into third dimension!
+        
+        Along with `data-x` and `data-y`, you can define the position on third (Z) axis, with
+        `data-z`. In the example below we use `data-z="-3000"` meaning that element should be
+        positioned far away from us (by 3000px).
+        
+    -->
+    <div id="tiny" class="step" data-x="2825" data-y="2325" data-z="-3000" data-rotate="300" data-scale="1">
+        <p>and <b>tiny</b> ideas</p>
+    </div>
+
+    <!--
+        
+        This step here doesn't introduce anything new when it comes to data attributes, but you
+        should notice in the demo that some words of this text are being animated.
+        It's a very basic CSS transition that is applied to the elements when this step element is
+        reached.
+        
+        At the very beginning of the presentation all step elements are given the class of `future`.
+        It means that they haven't been visited yet.
+        
+        When the presentation moves to given step `future` is changed to `present` class name.
+        That's how animation on this step works - text moves when the step has `present` class.
+        
+        Finally when the step is left the `present` class is removed from the element and `past`
+        class is added.
+        
+        So basically every step element has one of three classes: `future`, `present` and `past`.
+        Only one current step has the `present` class.
+        
+    -->
+    <div id="ing" class="step" data-x="3500" data-y="-850" data-rotate="270" data-scale="6">
+        <p>by <b class="positioning">positioning</b>, <b class="rotating">rotating</b> and <b class="scaling">scaling</b> them on an infinite canvas</p>
+    </div>
+
+    <div id="imagination" class="step" data-x="6700" data-y="-300" data-scale="6">
+        <p>the only <b>limit</b> is your <b class="imagination">imagination</b></p>
+    </div>
+
+    <div id="source" class="step" data-x="6300" data-y="2000" data-rotate="20" data-scale="4">
+        <p>want to know more?</p>
+        <q><a href="http://github.com/bartaz/impress.js">use the source</a>, Luke!</q>
+    </div>
+
+    <div id="one-more-thing" class="step" data-x="6000" data-y="4000" data-scale="2">
+        <p>one more thing...</p>
+    </div>
+
+    <!--
+        
+        And the last one shows full power and flexibility of impress.js.
+        
+        You can not only position element in 3D, but also rotate it around any axis.
+        So this one here will get rotated by -40 degrees (40 degrees anticlockwise) around X axis and
+        10 degrees (clockwise) around Y axis.
+        
+        You can of course rotate it around Z axis with `data-rotate-z` - it has exactly the same effect
+        as `data-rotate` (these two are basically aliases).
+        
+    -->
+    <div id="its-in-3d" class="step" data-x="6200" data-y="4300" data-z="-100" data-rotate-x="-40" data-rotate-y="10" data-scale="2">
+        <p><span class="have">have</span> <span class="you">you</span> <span class="noticed">noticed</span> <span class="its">it's</span> <span class="in">in</span> <b>3D<sup>*</sup></b>?</p>
+        <span class="footnote">* beat that, prezi ;)</span>
+    </div>
+
+    <!--
+        
+        So to make a summary of all the possible attributes used to position presentation steps, we have:
+        
+        * `data-x`, `data-y`, `data-z` -- they define the position of **the center** of step element on
+            the canvas in pixels; their default value is 0;
+        * `data-rotate-x`, `data-rotate-y`, 'data-rotate-z`, `data-rotate` -- they define the rotation of
+            the element around given axis in degrees; their default value is 0; `data-rotate` and `data-rotate-z`
+            are exactly the same;
+        * `data-scale` -- defines the scale of step element; default value is 1
+        
+        These values are used by impress.js in CSS transformation functions, so for more information consult
+        CSS transfrom docs: https://developer.mozilla.org/en/CSS/transform
+        
+    -->
+    <div id="overview" class="step" data-x="3000" data-y="1500" data-scale="10">
+    </div>
+
+</div>
+
+<!--
+    
+    Hint is not related to impress.js in any way.
+    
+    But it can show you how to use impress.js features in creative way.
+    
+    When the presentation step is shown (selected) its element gets the class of "active" and the body element
+    gets the class based on active step id `impress-on-ID` (where ID is the step's id)... It may not be
+    so clear because of all these "ids" in previous sentence, so for example when the first step (the one with
+    the id of `bored`) is active, body element gets a class of `impress-on-bored`.
+    
+    This class is used by this hint below. Check CSS file to see how it's shown with delayed CSS animation when
+    the first step of presentation is visible for a couple of seconds.
+    
+    ...
+    
+    And when it comes to this piece of JavaScript below ... kids, don't do this at home ;)
+    It's just a quick and dirty workaround to get different hint text for touch devices.
+    In a real world it should be at least placed in separate JS file ... and the touch content should be
+    probably just hidden somewhere in HTML - not hard-coded in the script.
+    
+    Just sayin' ;)
+    
+-->
+<div class="hint">
+    <p>Use a spacebar or arrow keys to navigate</p>
+</div>
+<script>
+if ("ontouchstart" in document.documentElement) { 
+    document.querySelector(".hint").innerHTML = "<p>Tap on the left or right to navigate</p>";
+}
+</script>
+
+<!--
+    
+    Last, but not least.
+    
+    To make all described above really work, you need to include impress.js in the page.
+    I strongly encourage to minify it first.
+    
+    In here I just include full source of the script to make it more readable.
+    
+    You also need to call a `impress().init()` function to initialize impress.js presentation.
+    And you should do it in the end of your document. Not only because it's a good practice, but also
+    because it should be done when the whole document is ready.
+    Of course you can wrap it in any kind of "DOM ready" event, but I was too lazy to do so ;)
+    
+-->
+<script src="js/impress.js"></script>
+<script>impress().init();</script>
+
+<!--
+    
+    The `impress()` function also gives you access to the API that controls the presentation.
+    
+    Just store the result of the call:
+    
+        var api = impress();
+    
+    and you will get three functions you can call:
+    
+        `api.init()` - initializes the presentation,
+        `api.next()` - moves to next step of the presentation,
+        `api.prev()` - moves to previous step of the presentation,
+        `api.goto( idx | id | element, [duration] )` - moves the presentation to the step given by its index number
+                id or the DOM element; second parameter can be used to define duration of the transition in ms,
+                but it's optional - if not provided default transition duration for the presentation will be used.
+    
+    You can also simply call `impress()` again to get the API, so `impress().next()` is also allowed.
+    Don't worry, it wont initialize the presentation again.
+    
+    For some example uses of this API check the last part of the source of impress.js where the API
+    is used in event handlers.
+    
+-->
+
+</body>
+</html>
+
+<!--
+    
+    Now you know more or less everything you need to build your first impress.js presentation, but before
+    you start...
+    
+    Oh, you've already cloned the code from GitHub?
+    
+    You have it open in text editor?
+    
+    Stop right there!
+    
+    That's not how you create awesome presentations. This is only a code. Implementation of the idea that
+    first needs to grow in your mind.
+    
+    So if you want to build great presentation take a pencil and piece of paper. And turn off the computer.
+    
+    Sketch, draw and write. Brainstorm your ideas on a paper. Try to build a mind-map of what you'd like
+    to present. It will get you closer and closer to the layout you'll build later with impress.js.
+    
+    Get back to the code only when you have your presentation ready on a paper. It doesn't make sense to do
+    it earlier, because you'll only waste your time fighting with positioning of useless points.
+    
+    If you think I'm crazy, please put your hands on a book called "Presentation Zen". It's all about 
+    creating awesome and engaging presentations.
+    
+    Think about it. 'Cause impress.js may not help you, if you have nothing interesting to say.
+    
+-->
+
+<!--
+    
+    Are you still reading this?
+    
+    For real?
+    
+    I'm impressed! Feel free to let me know that you got that far (I'm @bartaz on Twitter), 'cause I'd like
+    to congratulate you personally :)
+    
+    But you don't have to do it now. Take my advice and take some time off. Make yourself a cup of coffee, tea,
+    or anything you like to drink. And raise a glass for me ;)
+    
+    Cheers!
+    
+-->
+

+ 0 - 0
main/inc/lib/javascript/impress/impress.js → app/Resources/public/assets/impress.js/js/impress.js


+ 22 - 0
app/Resources/public/assets/jqgrid/.bower.json

@@ -0,0 +1,22 @@
+{
+  "name": "jqGrid",
+  "version": "4.7.0",
+  "main": [
+    "js/i18n/grid.locale-en.js",
+    "js/jquery.jqGrid.js",
+    "css/ui.jqgrid.css"
+  ],
+  "dependencies": {
+    "jquery": ">=1.7.0"
+  },
+  "homepage": "https://github.com/tonytomov/jqGrid",
+  "_release": "4.7.0",
+  "_resolution": {
+    "type": "version",
+    "tag": "v4.7.0",
+    "commit": "88e12ebeaa3866e7f2d60c6870b865e8902a7f0a"
+  },
+  "_source": "https://github.com/tonytomov/jqGrid.git",
+  "_target": "4.7.0",
+  "_originalSource": "jqgrid"
+}

+ 6 - 0
app/Resources/public/assets/jqgrid/.gitignore

@@ -0,0 +1,6 @@
+compiler.jar
+yuicompressor.jar
+dist
+nbproject
+.gradle
+.DS_Store

+ 18 - 0
app/Resources/public/assets/jqgrid/README.md

@@ -0,0 +1,18 @@
+jqGrid
+======
+
+jQuery grid plugin
+
+jqGrid is an Ajax-enabled JavaScript control that provides solutions for 
+representing and manipulating tabular data on the web. Since the grid is a 
+client-side solution loading data dynamically through Ajax callbacks, it can be
+integrated with any server-side technology, including PHP, ASP, Java Servlets, 
+JSP, ColdFusion, and Perl.
+
+jqGrid uses a jQuery JavaScript Library and is written as plugin for that 
+package. For more information on jQuery, please see <a href="http://jquery.com/">(jQuery.com)</a>.
+
+jqGrid's Home page can be found at <a href="http://www.trirand.com/blog">trirand.com</a>.
+
+Working examples of jqGrid, with explanations, can be found
+<a href="http://www.trirand.com/jqgrid/jqgrid.html">here</a>.

+ 12 - 0
app/Resources/public/assets/jqgrid/bower.json

@@ -0,0 +1,12 @@
+{
+	"name": "jqGrid",
+	"version": "4.7.0",
+	"main": [
+		"js/i18n/grid.locale-en.js",
+		"js/jquery.jqGrid.js",
+		"css/ui.jqgrid.css"
+	],
+	"dependencies": {
+		"jquery": ">=1.7.0"
+	}
+}

+ 108 - 0
app/Resources/public/assets/jqgrid/build.gradle

@@ -0,0 +1,108 @@
+configurations {
+    jscompiler
+}
+
+repositories {
+    mavenCentral()
+}
+
+dependencies {
+    jscompiler 'com.google.javascript:closure-compiler:v20141120'
+}
+
+def srcdir = new File('js')
+def distdir = new File('dist')
+
+def jqGridFile = new File(distdir, 'jquery.jqGrid.js')
+def jqGridMinFile = new File(distdir, 'jquery.jqGrid.min.js')
+def jqGridSrcMapFile = new File(distdir, 'jquery.jqGrid.map.js')
+
+task init() {
+    description = "Create distribution directory: $distdir.absolutePath"
+
+    outputs.dir distdir
+
+    doLast {
+        if (!distdir.exists()) {
+            distdir.mkdirs()
+        }
+    }
+}
+
+task jqgrid(dependsOn: 'init') {
+    description = "Concatinate all javascript files into one javascript file: $jqGridFile.absolutePath"
+    def files = fileTree(dir: srcdir, include: '*.js', exclude: 'jquery.jqGrid.js')
+    inputs.file files
+    outputs.file jqGridFile
+
+    doLast {
+        ant.concat(destfile: jqGridFile) {
+            files.each { fileset(file: it) }
+        }
+    }
+}
+
+task 'jqgrid-min'(dependsOn: 'jqgrid') {
+    description = "Minimize $jqGridFile.absolutePath to $jqGridMinFile.absolutePath"
+    inputs.file jqGridFile
+    outputs.file jqGridMinFile
+
+    doLast {
+        ant.taskdef(name: 'jscompile', classname: 'com.google.javascript.jscomp.ant.CompileTask', classpath: configurations.jscompiler.asPath)
+        ant.jscompile(output: jqGridMinFile, warning: 'QUIET', sourceMapFormat: 'V3', sourceMapOutputFile: jqGridSrcMapFile, debug: logger.debugEnabled) {
+            ant.sources(dir: jqGridFile.parent) {
+                ant.file(name: jqGridFile.name)
+            }
+        }
+    }
+}
+
+task 'min-files'(dependsOn: 'init') {
+    def minDir = new File(distdir, 'min')
+    description = "Minimize all javascript files to $minDir.absolutePath"
+    def files = fileTree(dir: srcdir, include: '*.js')
+    inputs.file files
+    outputs.dir minDir
+
+    doLast {
+        if (!minDir.exists()) {
+            minDir.mkdirs()
+        }
+        ant.taskdef(name: 'jscompile', classname: 'com.google.javascript.jscomp.ant.CompileTask', classpath: configurations.jscompiler.asPath)
+        files.each { File f ->
+            ant.jscompile(output: new File(minDir, f.name), warning: 'QUIET', debug: logger.debugEnabled) {
+                ant.sources(dir: f.parent) {
+                    ant.file(name: f.name)
+                }
+            }
+        }
+    }
+}
+
+task i18n(type: Copy, dependsOn: 'init') {
+    def i18nDir = new File(distdir, 'i18n')
+    description = "Copy all i18n files to $i18nDir.absolutePath"
+
+    from new File(srcdir, 'i18n')
+    into i18nDir
+    include('grid.locale-*.js')
+}
+
+task clean() {
+    description = "Delete distribution directory: $distdir.absolutePath"
+
+    doLast {
+        if (distdir.exists()) {
+            distdir.deleteDir()
+        }
+    }
+}
+
+task build(dependsOn: ['jqgrid-min', 'min-files', 'i18n']) {
+    description = "Build the entire distribution"
+}
+
+
+task wrap(type: Wrapper) {
+    gradleVersion = '1.0-milestone-8a'
+}

+ 9 - 0
app/Resources/public/assets/jqgrid/build.properties

@@ -0,0 +1,9 @@
+# Path for the Google Compiler jar file. By default in the same directory as this properties file.
+GoogleCompiler = compiler.jar
+
+srcdir = js
+distdir = dist
+
+target = jquery.jqGrid.js
+target.min = jquery.jqGrid.min.js
+target.map = jquery.jqGrid.min.map

+ 87 - 0
app/Resources/public/assets/jqgrid/build.xml

@@ -0,0 +1,87 @@
+<?xml version="1.0"?>
+<project name="jqGrid" default="build" basedir=".">
+
+    <!-- define the path of compressor in this file -->
+    <property file="build.properties" />
+
+    <target name="init">
+        <mkdir dir="${distdir}" />
+    </target>
+
+    <target name="jqgrid" depends="init">
+        <concat destfile="${distdir}/${target}">
+		<fileset file="js/grid.base.js"/>
+		<fileset file="js/grid.custom.js"/>
+		<fileset file="js/jqModal.js"/>
+		<fileset file="js/jqDnR.js"/>
+		<fileset file="js/JsonXml.js"/>
+		<fileset file="js/jquery.fmatter.js"/>
+		<fileset file="js/grid.common.js"/>
+		<fileset file="js/grid.filter.js"/>
+		<fileset file="js/grid.formedit.js"/>
+		<fileset file="js/grid.inlinedit.js"/>
+		<fileset file="js/grid.celledit.js"/>
+		<fileset file="js/grid.subgrid.js"/>
+		<fileset file="js/grid.treegrid.js"/>
+		<fileset file="js/grid.grouping.js"/>
+		<fileset file="js/grid.import.js"/>
+		<fileset file="js/grid.jqueryui.js"/>
+		<fileset file="js/grid.tbltogrid.js"/>
+		<fileset file="js/grid.pivot.js"/>
+        </concat>
+    </target>
+
+    <target name="jqgrid.min" depends="jqgrid">
+        <apply executable="java" parallel="false" verbose="true" failonerror="true" dest="${distdir}">
+            <fileset dir="${distdir}">
+                <include name="${target}" />
+            </fileset>
+            <arg line="-jar" />
+            <arg path="${GoogleCompiler}" />
+            <arg value="--warning_level" />
+            <arg value="QUIET" />
+            <arg value="--create_source_map" />
+            <arg value="${distdir}/${target.map}" />
+            <arg value="--js_output_file" />
+            <targetfile />
+            <arg value="--js" />
+            <mapper type="glob" from="${target}" to="${target.min}" />
+        </apply>
+      	<echo message="${target.min} built." />
+    </target>
+    
+    <target name="minfiles">
+      <mkdir dir="${distdir}/min" />
+	<apply executable="java" parallel="false" verbose="true" failonerror="true" dest="${distdir}/min">
+	    <fileset dir="${srcdir}">
+                <include name="*.js" />
+            </fileset>
+            <arg line="-jar" />
+            <arg path="${GoogleCompiler}" />
+            <arg value="--warning_level" />
+            <arg value="QUIET" />
+            <arg value="--js_output_file" />
+            <targetfile />
+            <arg value="--js" />
+	    <mapper type="glob" from="*.js" to="*.js" />
+        </apply>      
+    </target>
+    
+    <target name="i18n">
+        <mkdir dir="${distdir}/i18n" />
+        <copy todir="${distdir}/i18n" overwrite="true">
+            <fileset dir="${srcdir}/i18n">
+                <include name="grid.locale-*.js" />
+            </fileset>
+        </copy>
+    </target>
+
+    <target name="build" depends="jqgrid, jqgrid.min, i18n, minfiles"/>
+
+    <target name="clean">
+        <delete dir="${distdir}" />
+    </target>
+
+    <target name="all" depends="clean,build"/>
+
+</project>

+ 175 - 151
main/inc/lib/javascript/jqgrid/css/ui.jqgrid.css → app/Resources/public/assets/jqgrid/css/ui.jqgrid.css

@@ -1,151 +1,175 @@
-/*Grid*/
-.ui-jqgrid {position: relative;}
-.ui-jqgrid .ui-jqgrid-view {position: relative;left:0; top: 0; padding: 0; font-size:11px;}
-/* caption*/
-.ui-jqgrid .ui-jqgrid-titlebar {padding: .3em .2em .2em .3em; position: relative; border-left: 0 none;border-right: 0 none; border-top: 0 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: 0;padding: 0; overflow-x: hidden; border-left: 0 none !important; border-top : 0 none !important; border-right : 0 none !important;}
-.ui-jqgrid .ui-jqgrid-hbox {float: left; padding-right: 20px;}
-.ui-jqgrid .ui-jqgrid-htable {table-layout:fixed;margin:0;}
-.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 : 0 none;border-bottom : 0 none;}
-.ui-th-ltr, .ui-jqgrid .ui-jqgrid-htable th.ui-th-ltr {border-left : 0 none;}
-.ui-th-rtl, .ui-jqgrid .ui-jqgrid-htable th.ui-th-rtl {border-right : 0 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:0;height:16px;}
-.ui-jqgrid .ui-i-desc {margin-top:0;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 0 0 0}
-tr.ui-search-toolbar select {margin: 1px 0 0 0}
-/* body */ 
-.ui-jqgrid .ui-jqgrid-bdiv {position: relative; margin: 0; padding:0; overflow: auto; text-align:left;}
-.ui-jqgrid .ui-jqgrid-btable {table-layout:fixed; margin:0; 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: 0; border: 0 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; z-index: 99999;}
-/* footer */
-.ui-jqgrid .ui-jqgrid-sdiv {position: relative; margin: 0;padding: 0; overflow: hidden; border-left: 0 none !important; border-top : 0 none !important; border-right : 0 none !important;}
-.ui-jqgrid .ui-jqgrid-ftable {table-layout:fixed; margin-bottom:0;}
-.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: 0 none !important;border-right: 0 none !important; border-bottom: 0 none !important; margin: 0 !important; padding: 0 !important; position: relative; height: 25px;white-space: nowrap;overflow: hidden;font-size:11px;}
-.ui-jqgrid .ui-pager-control {position: relative;}
-.ui-jqgrid .ui-pg-table {position: relative; padding-bottom:2px; width:auto; margin: 0;}
-.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: 0; }
-.ui-jqgrid .ui-state-disabled:hover {padding:1px;}
-.ui-jqgrid .ui-pg-input { height:13px;font-size:.8em; margin: 0;}
-.ui-jqgrid .ui-pg-selbox {font-size:.8em; line-height:18px; display:block; height:18px; margin: 0;}
-.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;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: 0;}
-.ui-jqgrid td textarea {width:auto;height:auto;}
-.ui-jqgrid .ui-jqgrid-toppager {border-left: 0 none !important;border-right: 0 none !important; border-top: 0 none !important; margin: 0 !important; padding: 0 !important; position: relative; height: 25px !important;white-space: nowrap;overflow: hidden;}
-.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div {padding:1px 0;float:left;position:relative;}
-.ui-jqgrid .ui-jqgrid-toppager .ui-pg-button { cursor:pointer; }
-.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div  span.ui-icon {float:left;margin:0 2px;}
-/*subgrid*/
-.ui-jqgrid .ui-jqgrid-btable .ui-sgcollapsed span {display: block;}
-.ui-jqgrid .ui-subgrid {margin:0;padding:0; 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:  0 none !important;}
-.ui-jqgrid .ui-subgrid td.subgrid-cell {border-width: 0 0 1px 0;}
-.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; font-size:11px;}
-.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: 0 none;    border-right: 0 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;}
-.ui-jqdialog>.ui-resizable-se { bottom: -3px; right: -3px}
-/* end Modal window*/
-/* Form edit */
-.ui-jqdialog-content .FormGrid {margin: 0;}
-.ui-jqdialog-content .EditTable { width: 100%; margin-bottom:0;}
-.ui-jqdialog-content .DelTable { width: 100%; margin-bottom:0;}
-.EditTable td input, .EditTable td select, .EditTable td textarea {margin: 0;}
-.EditTable td textarea { width:auto; height:auto;}
-.ui-jqdialog-content td.EditButton {text-align: right;border-top: 0 none;border-left: 0 none;border-right: 0 none; padding-bottom:5px; padding-top:5px;}
-.ui-jqdialog-content td.navButton {text-align: center; border-left: 0 none;border-top: 0 none;border-right: 0 none; padding-bottom:5px; padding-top:5px;}
-.ui-jqdialog-content input.FormElement {padding:.3em}
-.ui-jqdialog-content select.FormElement {padding:.3em}
-.ui-jqdialog-content .data-line {padding-top:.1em;border: 0 none;}
-
-.ui-jqdialog-content .CaptionTD {vertical-align: middle;border: 0 none; padding: 2px;white-space: nowrap;}
-.ui-jqdialog-content .DataTD {padding: 2px; border: 0 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: 0 none;}
-/* inline edit actions button*/
-.ui-inline-del.ui-state-hover span, .ui-inline-edit.ui-state-hover span,
-.ui-inline-save.ui-state-hover span, .ui-inline-cancel.ui-state-hover span {
-    margin: -1px;
-}
-/* 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 0;}
-.ui-jqgrid .ui-jqgrid-resize-rtl {float: left;margin: -2px 0 -1px -3px;}
-.ui-jqgrid .ui-sort-rtl {left:0;}
-.ui-jqgrid .tree-wrap-ltr {float: left;}
-.ui-jqgrid .tree-wrap-rtl {float: right;}
-.ui-jqgrid .ui-ellipsis {text-overflow:ellipsis;}
-
-/* Toolbar Search Menu */
-.ui-search-menu { position: absolute; padding: 2px 5px;}
-.ui-jqgrid .ui-search-table { padding: 0px 0px; border: 0px none; height:20px; width:100%;}
-.ui-jqgrid .ui-search-table .ui-search-oper { width:20px; }
+/*Grid*/
+.ui-jqgrid {position: relative;}
+.ui-jqgrid .ui-jqgrid-view {position: relative;left:0; top: 0; padding: 0; font-size:11px;}
+/* caption*/
+.ui-jqgrid .ui-jqgrid-titlebar {padding: .3em .2em .2em .3em; position: relative; font-size: 12px; border-left: 0 none;border-right: 0 none; border-top: 0 none;}
+.ui-jqgrid .ui-jqgrid-caption {text-align: left;}
+.ui-jqgrid .ui-jqgrid-title { 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; cursor:pointer;}
+.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: 0;padding: 0; overflow: hidden; border-left: 0 none !important; border-top : 0 none !important; border-right : 0 none !important;}
+.ui-jqgrid .ui-jqgrid-hbox {float: left; padding-right: 20px;}
+.ui-jqgrid .ui-jqgrid-htable {table-layout:fixed;margin:0;}
+.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 : 0 none;border-bottom : 0 none;}
+.ui-th-ltr, .ui-jqgrid .ui-jqgrid-htable th.ui-th-ltr {border-left : 0 none;}
+.ui-th-rtl, .ui-jqgrid .ui-jqgrid-htable th.ui-th-rtl {border-right : 0 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:0;height:16px;}
+.ui-jqgrid .ui-i-desc {margin-top:0;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 }
+.ui-jqgrid tr.ui-search-toolbar input {margin: 1px 0 0 0}
+.ui-jqgrid tr.ui-search-toolbar select {margin: 1px 0 0 0}
+/* body */ 
+.ui-jqgrid .ui-jqgrid-bdiv {position: relative; margin: 0; padding:0; overflow: auto; text-align:left;}
+.ui-jqgrid .ui-jqgrid-btable {table-layout:fixed; margin:0; 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: 0; border: 0 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; z-index: 99999;}
+/* footer */
+.ui-jqgrid .ui-jqgrid-sdiv {position: relative; margin: 0;padding: 0; overflow: hidden; border-left: 0 none !important; border-top : 0 none !important; border-right : 0 none !important;}
+.ui-jqgrid .ui-jqgrid-ftable {table-layout:fixed; margin-bottom:0;}
+.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: 0 none !important;border-right: 0 none !important; border-bottom: 0 none !important; margin: 0 !important; padding: 0 !important; position: relative; height: 25px;white-space: nowrap;overflow: hidden;font-size:11px;}
+.ui-jqgrid .ui-pager-control {position: relative;}
+.ui-jqgrid .ui-pg-table {position: relative; padding-bottom:2px; width:auto; margin: 0;}
+.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: 0; }
+.ui-jqgrid .ui-state-disabled:hover {padding:1px;}
+.ui-jqgrid .ui-pg-input { height:13px;font-size:.8em; margin: 0;}
+.ui-jqgrid .ui-pg-selbox {font-size:.8em; line-height:18px; display:block; height:18px; margin: 0;}
+.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;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: 0;}
+.ui-jqgrid td textarea {width:auto;height:auto;}
+.ui-jqgrid .ui-jqgrid-toppager {border-left: 0 none !important;border-right: 0 none !important; border-top: 0 none !important; margin: 0 !important; padding: 0 !important; position: relative; height: 25px !important;white-space: nowrap;overflow: hidden;}
+.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div {padding:1px 0;float:left;position:relative;}
+.ui-jqgrid .ui-jqgrid-toppager .ui-pg-button { cursor:pointer; }
+.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div  span.ui-icon {float:left;margin:0 2px;}
+/*subgrid*/
+.ui-jqgrid .ui-jqgrid-btable .ui-sgcollapsed span {display: block;}
+.ui-jqgrid .ui-subgrid {margin:0;padding:0; 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:  0 none !important;}
+.ui-jqgrid .ui-subgrid td.subgrid-cell {border-width: 0 0 1px 0;}
+.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; font-size:11px;}
+.ui-jqgrid .jqgrid-overlay {display:none;z-index:100;}
+/* IE * 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;}
+/* IE width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');}*/
+/* end loading div */
+/* toolbar */
+.ui-jqgrid .ui-userdata {border-left: 0 none;    border-right: 0 none;	height : 21px;overflow: hidden;	}
+/*Modal Window */
+.ui-jqgrid .ui-jqdialog { font-size:11px; }
+.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; cursor:pointer;}
+
+.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;}
+.ui-jqdialog>.ui-resizable-se { bottom: -3px; right: -3px}
+.ui-jqgrid>.ui-resizable-se { bottom: -3px; right: -3px }
+/* end Modal window*/
+/* Form edit */
+.ui-jqdialog-content .FormGrid {margin: 0;}
+.ui-jqdialog-content .EditTable { width: 100%; margin-bottom:0;}
+.ui-jqdialog-content .DelTable { width: 100%; margin-bottom:0;}
+.EditTable td input, .EditTable td select, .EditTable td textarea {margin: 0;}
+.EditTable td textarea { width:auto; height:auto;}
+.ui-jqdialog-content td.EditButton {text-align: right;border-top: 0 none;border-left: 0 none;border-right: 0 none; padding-bottom:5px; padding-top:5px;}
+.ui-jqdialog-content td.navButton {text-align: center; border-left: 0 none;border-top: 0 none;border-right: 0 none; padding-bottom:5px; padding-top:5px;}
+.ui-jqdialog-content input.FormElement {padding:.3em}
+.ui-jqdialog-content select.FormElement {padding:.3em}
+.ui-jqdialog-content .data-line {padding-top:.1em;border: 0 none;}
+
+.ui-jqdialog-content .CaptionTD {vertical-align: middle;border: 0 none; padding: 2px;white-space: nowrap;}
+.ui-jqdialog-content .DataTD {padding: 2px; border: 0 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: 0 none;}
+/* inline edit actions button*/
+.ui-inline-del.ui-state-hover span, .ui-inline-edit.ui-state-hover span,
+.ui-inline-save.ui-state-hover span, .ui-inline-cancel.ui-state-hover span {
+    margin: -1px;
+}
+/* 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-caption-rtl {text-align: right;}
+.ui-jqgrid .ui-jqgrid-hbox-rtl {float: right; padding-left: 20px;}
+.ui-jqgrid .ui-jqgrid-resize-ltr {float: right;margin: -2px -2px -2px 0;}
+.ui-jqgrid .ui-jqgrid-resize-rtl {float: left;margin: -2px 0 -1px -3px;}
+.ui-jqgrid .ui-sort-rtl {left:0;}
+.ui-jqgrid .tree-wrap-ltr {float: left;}
+.ui-jqgrid .tree-wrap-rtl {float: right;}
+.ui-jqgrid .ui-ellipsis {-moz-text-overflow:ellipsis;text-overflow:ellipsis;}
+
+/* Toolbar Search Menu */
+.ui-search-menu { position: absolute; padding: 2px 5px;}
+.ui-search-menu.ui-menu .ui-menu-item { list-style-image: none; padding-right: 0; padding-left: 0; }
+.ui-search-menu.ui-menu .ui-menu-item a { display: block; }
+.ui-search-menu.ui-menu .ui-menu-item a.g-menu-item:hover { margin: -1px; font-weight: normal; }
+.ui-jqgrid .ui-search-table { padding: 0; border: 0 none; height:20px; width:100%;}
+.ui-jqgrid .ui-search-table .ui-search-oper { width:20px; }
+a.g-menu-item, a.soptclass, a.clearsearchclass { cursor: pointer; }
+.ui-jqgrid .ui-search-table .ui-search-input>input,
+.ui-jqgrid .ui-search-table .ui-search-input>select
+{
+    display: block;
+    -moz-box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+} 
+.ui-jqgrid .ui-jqgrid-view input,
+.ui-jqgrid .ui-jqgrid-view select,
+.ui-jqgrid .ui-jqgrid-view textarea,
+.ui-jqgrid .ui-jqgrid-view button {
+    font-size: 11px
+}

BIN
app/Resources/public/assets/jqgrid/gradle/wrapper/gradle-wrapper.jar


+ 6 - 0
app/Resources/public/assets/jqgrid/gradle/wrapper/gradle-wrapper.properties

@@ -0,0 +1,6 @@
+#Wed Mar 07 18:29:13 CET 2012
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.0-milestone-8a-bin.zip

+ 164 - 0
app/Resources/public/assets/jqgrid/gradlew

@@ -0,0 +1,164 @@
+#!/bin/bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/"
+APP_HOME="`pwd -P`"
+cd "$SAVED"
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query businessSystem maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    JAVA_OPTS="$JAVA_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

+ 90 - 0
app/Resources/public/assets/jqgrid/gradlew.bat

@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem  Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega

+ 0 - 0
main/inc/lib/javascript/jqgrid/js/install.txt → app/Resources/public/assets/jqgrid/install.txt


+ 44 - 0
app/Resources/public/assets/jqgrid/jqGrid.jquery.json

@@ -0,0 +1,44 @@
+{
+	"name": "jqGrid",
+	"title": "jQuery jqGrid",
+	"description": "jqGrid is an Ajax-enabled JavaScript control that provides solutions for representing and manipulating tabular data on the web.",
+	"keywords": [
+		"grid",
+		"table",
+		"treegrid",
+		"sorting",
+		"paging",
+		"editing",
+		"grouping",
+		"searching"
+	],
+	"version": "4.7.0",
+	"author": {
+		"name": "Tony Tomov",
+		"email": "tony@trirand.com",
+		"url": "http://trirand.com"
+	},
+	"maintainers": [
+		{
+			"name": "Tony Tomov",
+			"email": "tony@trirand.com",
+			"url": "http://trirand.com"
+		}
+	],
+	"licenses": [
+		{
+			"type": "MIT",
+			"url": "http://www.trirand.com/blog/?page_id=87"
+		},
+		{
+			"type": "GPLv2",
+			"url": "http://www.trirand.com/blog/?page_id=91"
+		}
+	],
+	"bugs": "https://github.com/tonytomov/jqGrid/issues",
+	"homepage": "http://www.trirand.com",
+	"docs": "http://www.trirand.com/jqgridwiki/doku.php",
+	"dependencies": {
+		"jquery": ">=1.7"
+	}
+}

+ 50 - 0
app/Resources/public/assets/jqgrid/jquery.jqGrid.js

@@ -0,0 +1,50 @@
+//This file should be used if you want to debug and develop
+function jqGridInclude()
+{
+    var pathtojsfiles = "js/"; // need to be ajusted
+    // set include to false if you do not want some modules to be included
+    var modules = [
+        { include: true, incfile:'i18n/grid.locale-en.js'}, // jqGrid translation
+        { include: true, incfile:'grid.base.js'}, // jqGrid base
+        { include: true, incfile:'grid.common.js'}, // jqGrid common for editing
+        { include: true, incfile:'grid.formedit.js'}, // jqGrid Form editing
+        { include: true, incfile:'grid.inlinedit.js'}, // jqGrid inline editing
+        { include: true, incfile:'grid.celledit.js'}, // jqGrid cell editing
+        { include: true, incfile:'grid.subgrid.js'}, //jqGrid subgrid
+        { include: true, incfile:'grid.treegrid.js'}, //jqGrid treegrid
+	{ include: true, incfile:'grid.grouping.js'}, //jqGrid grouping
+        { include: true, incfile:'grid.custom.js'}, //jqGrid custom 
+        { include: true, incfile:'grid.tbltogrid.js'}, //jqGrid table to grid 
+        { include: true, incfile:'grid.import.js'}, //jqGrid import
+        { include: true, incfile:'jquery.fmatter.js'}, //jqGrid formater
+        { include: true, incfile:'JsonXml.js'}, //xmljson utils
+        { include: true, incfile:'grid.jqueryui.js'}, //jQuery UI utils
+        { include: true, incfile:'grid.filter.js'} // filter Plugin
+    ];
+    var filename;
+    for(var i=0;i<modules.length; i++)
+    {
+        if(modules[i].include === true) {
+        	filename = pathtojsfiles+modules[i].incfile;
+			if(jQuery.browser.safari) {
+				jQuery.ajax({url:filename,dataType:'script', async:false, cache: true});
+			} else {
+				if (jQuery.browser.msie) {
+					document.write('<script charset="utf-8" type="text/javascript" src="'+filename+'"></script>');
+				} else {
+					IncludeJavaScript(filename);
+				}
+			}
+		}
+    }
+	function IncludeJavaScript(jsFile)
+    {
+        var oHead = document.getElementsByTagName('head')[0];
+        var oScript = document.createElement('script');
+        oScript.setAttribute('type', 'text/javascript');
+        oScript.setAttribute('language', 'javascript');
+        oScript.setAttribute('src', jsFile);
+        oHead.appendChild(oScript);
+    }
+}
+jqGridInclude();

+ 0 - 0
main/inc/lib/javascript/jqgrid/js/jquery-1.11.0.min.js → app/Resources/public/assets/jqgrid/jquery.js


+ 339 - 0
app/Resources/public/assets/jqgrid/js/JsonXml.js

@@ -0,0 +1,339 @@
+/*
+	The below work is licensed under Creative Commons GNU LGPL License.
+
+	Original work:
+
+	License:     http://creativecommons.org/licenses/LGPL/2.1/
+	Author:      Stefan Goessner/2006
+	Web:         http://goessner.net/ 
+
+	Modifications made:
+
+	Version:     0.9-p5
+	Description: Restructured code, JSLint validated (no strict whitespaces),
+	             added handling of empty arrays, empty strings, and int/floats values.
+	Author:      Michael Schøler/2008-01-29
+	Web:         http://michael.hinnerup.net/blog/2008/01/26/converting-json-to-xml-and-xml-to-json/
+	
+	Description: json2xml added support to convert functions as CDATA
+	             so it will be easy to write characters that cause some problems when convert
+	Author:      Tony Tomov
+*/
+
+/*global alert */
+var xmlJsonClass = {
+	// Param "xml": Element or document DOM node.
+	// Param "tab": Tab or indent string for pretty output formatting omit or use empty string "" to supress.
+	// Returns:     JSON string
+	xml2json: function(xml, tab) {
+		if (xml.nodeType === 9) {
+			// document node
+			xml = xml.documentElement;
+		}
+		var nws = this.removeWhite(xml);
+		var obj = this.toObj(nws);
+		var json = this.toJson(obj, xml.nodeName, "\t");
+		return "{\n" + tab + (tab ? json.replace(/\t/g, tab) : json.replace(/\t|\n/g, "")) + "\n}";
+	},
+
+	// Param "o":   JavaScript object
+	// Param "tab": tab or indent string for pretty output formatting omit or use empty string "" to supress.
+	// Returns:     XML string
+	json2xml: function(o, tab) {
+		var toXml = function(v, name, ind) {
+			var xml = "";
+			var i, n;
+			if (v instanceof Array) {
+				if (v.length === 0) {
+					xml += ind + "<"+name+">__EMPTY_ARRAY_</"+name+">\n";
+				}
+				else {
+					for (i = 0, n = v.length; i < n; i += 1) {
+						var sXml = ind + toXml(v[i], name, ind+"\t") + "\n";
+						xml += sXml;
+					}
+				}
+			}
+			else if (typeof(v) === "object") {
+				var hasChild = false;
+				xml += ind + "<" + name;
+				var m;
+				for (m in v) if (v.hasOwnProperty(m)) {
+					if (m.charAt(0) === "@") {
+						xml += " " + m.substr(1) + "=\"" + v[m].toString() + "\"";
+					}
+					else {
+						hasChild = true;
+					}
+				}
+				xml += hasChild ? ">" : "/>";
+				if (hasChild) {
+					for (m in v) if (v.hasOwnProperty(m)) {
+						if (m === "#text") {
+							xml += v[m];
+						}
+						else if (m === "#cdata") {
+							xml += "<![CDATA[" + v[m] + "]]>";
+						}
+						else if (m.charAt(0) !== "@") {
+							xml += toXml(v[m], m, ind+"\t");
+						}
+					}
+					xml += (xml.charAt(xml.length - 1) === "\n" ? ind : "") + "</" + name + ">";
+				}
+			}
+			else if (typeof(v) === "function") {
+				xml += ind + "<" + name + ">" + "<![CDATA[" + v + "]]>" + "</" + name + ">";
+			}
+			else {
+				if (v === undefined ) { v = ""; }
+				if (v.toString() === "\"\"" || v.toString().length === 0) {
+					xml += ind + "<" + name + ">__EMPTY_STRING_</" + name + ">";
+				} 
+				else {
+					xml += ind + "<" + name + ">" + v.toString() + "</" + name + ">";
+				}
+			}
+			return xml;
+		};
+		var xml = "";
+		var m;
+		for (m in o) if (o.hasOwnProperty(m)) {
+			xml += toXml(o[m], m, "");
+		}
+		return tab ? xml.replace(/\t/g, tab) : xml.replace(/\t|\n/g, "");
+	},
+	// Internal methods
+	toObj: function(xml) {
+		var o = {};
+		var FuncTest = /function/i;
+		if (xml.nodeType === 1) {
+			// element node ..
+			if (xml.attributes.length) {
+				// element with attributes ..
+				var i;
+				for (i = 0; i < xml.attributes.length; i += 1) {
+					o["@" + xml.attributes[i].nodeName] = (xml.attributes[i].nodeValue || "").toString();
+				}
+			}
+			if (xml.firstChild) {
+				// element has child nodes ..
+				var textChild = 0, cdataChild = 0, hasElementChild = false;
+				var n;
+				for (n = xml.firstChild; n; n = n.nextSibling) {
+					if (n.nodeType === 1) {
+						hasElementChild = true;
+					}
+					else if (n.nodeType === 3 && n.nodeValue.match(/[^ \f\n\r\t\v]/)) {
+						// non-whitespace text
+						textChild += 1;
+					}
+					else if (n.nodeType === 4) {
+						// cdata section node
+						cdataChild += 1;
+					}
+				}
+				if (hasElementChild) {
+					if (textChild < 2 && cdataChild < 2) {
+						// structured element with evtl. a single text or/and cdata node ..
+						this.removeWhite(xml);
+						for (n = xml.firstChild; n; n = n.nextSibling) {
+							if (n.nodeType === 3) {
+								// text node
+								o["#text"] = this.escape(n.nodeValue);
+							}
+							else if (n.nodeType === 4) {
+								// cdata node
+								if (FuncTest.test(n.nodeValue)) {
+									o[n.nodeName] = [o[n.nodeName], n.nodeValue];
+								} else {
+									o["#cdata"] = this.escape(n.nodeValue);
+								}
+							}
+							else if (o[n.nodeName]) {
+								// multiple occurence of element ..
+								if (o[n.nodeName] instanceof Array) {
+									o[n.nodeName][o[n.nodeName].length] = this.toObj(n);
+								}
+								else {
+									o[n.nodeName] = [o[n.nodeName], this.toObj(n)];
+								}
+							}
+							else {
+								// first occurence of element ..
+								o[n.nodeName] = this.toObj(n);
+							}
+						}
+					}
+					else {
+						// mixed content
+						if (!xml.attributes.length) {
+							o = this.escape(this.innerXml(xml));
+						}
+						else {
+							o["#text"] = this.escape(this.innerXml(xml));
+						}
+					}
+				}
+				else if (textChild) {
+					// pure text
+					if (!xml.attributes.length) {
+						o = this.escape(this.innerXml(xml));
+						if (o === "__EMPTY_ARRAY_") {
+							o = "[]";
+						} else if (o === "__EMPTY_STRING_") {
+							o = "";
+						}
+					}
+					else {
+						o["#text"] = this.escape(this.innerXml(xml));
+					}
+				}
+				else if (cdataChild) {
+					// cdata
+					if (cdataChild > 1) {
+						o = this.escape(this.innerXml(xml));
+					}
+					else {
+						for (n = xml.firstChild; n; n = n.nextSibling) {
+							if(FuncTest.test(xml.firstChild.nodeValue)) {
+								o = xml.firstChild.nodeValue;
+								break;
+							} else {
+								o["#cdata"] = this.escape(n.nodeValue);
+							}
+						}
+					}
+				}
+			}
+			if (!xml.attributes.length && !xml.firstChild) {
+				o = null;
+			}
+		}
+		else if (xml.nodeType === 9) {
+			// document.node
+			o = this.toObj(xml.documentElement);
+		}
+		else {
+			alert("unhandled node type: " + xml.nodeType);
+		}
+		return o;
+	},
+	toJson: function(o, name, ind, wellform) {
+		if(wellform === undefined) wellform = true;
+		var json = name ? ("\"" + name + "\"") : "", tab = "\t", newline = "\n";
+		if(!wellform) {
+			tab= ""; newline= "";
+		}
+
+		if (o === "[]") {
+			json += (name ? ":[]" : "[]");
+		}
+		else if (o instanceof Array) {
+			var n, i, ar=[];
+			for (i = 0, n = o.length; i < n; i += 1) {
+				ar[i] = this.toJson(o[i], "", ind + tab, wellform);
+			}
+			json += (name ? ":[" : "[") + (ar.length > 1 ? (newline + ind + tab + ar.join(","+newline + ind + tab) + newline + ind) : ar.join("")) + "]";
+		}
+		else if (o === null) {
+			json += (name && ":") + "null";
+		}
+		else if (typeof(o) === "object") {
+			var arr = [], m;
+			for (m in o) {
+				if (o.hasOwnProperty(m)) {
+					arr[arr.length] = this.toJson(o[m], m, ind + tab, wellform);
+			}
+		}
+			json += (name ? ":{" : "{") + (arr.length > 1 ? (newline + ind + tab + arr.join(","+newline + ind + tab) + newline + ind) : arr.join("")) + "}";
+		}
+		else if (typeof(o) === "string") {
+			/*
+			var objRegExp  = /(^-?\d+\.?\d*$)/;
+			var FuncTest = /function/i;
+			var os = o.toString();
+			if (objRegExp.test(os) || FuncTest.test(os) || os==="false" || os==="true") {
+				// int or float
+				json += (name && ":")  + "\"" +os + "\"";
+			} 
+			else {
+			*/
+				json += (name && ":") + "\"" + o.replace(/\\/g,'\\\\').replace(/\"/g,'\\"') + "\"";
+			//}
+			}
+		else {
+			json += (name && ":") +  o.toString();
+		}
+		return json;
+	},
+	innerXml: function(node) {
+		var s = "";
+		if ("innerHTML" in node) {
+			s = node.innerHTML;
+		}
+		else {
+			var asXml = function(n) {
+				var s = "", i;
+				if (n.nodeType === 1) {
+					s += "<" + n.nodeName;
+					for (i = 0; i < n.attributes.length; i += 1) {
+						s += " " + n.attributes[i].nodeName + "=\"" + (n.attributes[i].nodeValue || "").toString() + "\"";
+					}
+					if (n.firstChild) {
+						s += ">";
+						for (var c = n.firstChild; c; c = c.nextSibling) {
+							s += asXml(c);
+						}
+						s += "</" + n.nodeName + ">";
+					}
+					else {
+						s += "/>";
+					}
+				}
+				else if (n.nodeType === 3) {
+					s += n.nodeValue;
+				}
+				else if (n.nodeType === 4) {
+					s += "<![CDATA[" + n.nodeValue + "]]>";
+				}
+				return s;
+			};
+			for (var c = node.firstChild; c; c = c.nextSibling) {
+				s += asXml(c);
+			}
+		}
+		return s;
+	},
+	escape: function(txt) {
+		return txt.replace(/[\\]/g, "\\\\").replace(/[\"]/g, '\\"').replace(/[\n]/g, '\\n').replace(/[\r]/g, '\\r');
+	},
+	removeWhite: function(e) {
+		e.normalize();
+		var n;
+		for (n = e.firstChild; n; ) {
+			if (n.nodeType === 3) {
+				// text node
+				if (!n.nodeValue.match(/[^ \f\n\r\t\v]/)) {
+					// pure whitespace text node
+					var nxt = n.nextSibling;
+					e.removeChild(n);
+					n = nxt;
+				}
+				else {
+					n = n.nextSibling;
+				}
+			}
+			else if (n.nodeType === 1) {
+				// element node
+				this.removeWhite(n);
+				n = n.nextSibling;
+			}
+			else {
+				// any other node
+				n = n.nextSibling;
+			}
+		}
+		return e;
+	}
+};

+ 4014 - 0
app/Resources/public/assets/jqgrid/js/grid.base.js

@@ -0,0 +1,4014 @@
+// ==ClosureCompiler==
+// @compilation_level SIMPLE_OPTIMIZATIONS
+
+/**
+ * @license jqGrid  4.7.0 - jQuery Grid
+ * Copyright (c) 2008, Tony Tomov, tony@trirand.com
+ * Dual licensed under the MIT and GPL licenses
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl-2.0.html
+ * Date: 2014-12-08
+ */
+//jsHint options
+/*jshint evil:true, eqeqeq:false, eqnull:true, devel:true */
+/*global jQuery */
+
+(function ($) {
+"use strict";
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	version : "4.7.0",
+	htmlDecode : function(value){
+		if(value && (value==='&nbsp;' || value==='&#160;' || (value.length===1 && value.charCodeAt(0)===160))) { return "";}
+		return !value ? value : String(value).replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&quot;/g, '"').replace(/&amp;/g, "&");		
+	},
+	htmlEncode : function (value){
+		return !value ? value : String(value).replace(/&/g, "&amp;").replace(/\"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
+	},
+	format : function(format){ //jqgformat
+		var args = $.makeArray(arguments).slice(1);
+		if(format==null) { format = ""; }
+		return format.replace(/\{(\d+)\}/g, function(m, i){
+			return args[i];
+		});
+	},
+	msie : navigator.appName === 'Microsoft Internet Explorer',
+	msiever : function () {
+		var rv = -1;
+		var ua = navigator.userAgent;
+		var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
+		if (re.exec(ua) != null) {
+			rv = parseFloat( RegExp.$1 );
+		}
+		return rv;
+	},
+	getCellIndex : function (cell) {
+		var c = $(cell);
+		if (c.is('tr')) { return -1; }
+		c = (!c.is('td') && !c.is('th') ? c.closest("td,th") : c)[0];
+		if ($.jgrid.msie) { return $.inArray(c, c.parentNode.cells); }
+		return c.cellIndex;
+	},
+	stripHtml : function(v) {
+		v = String(v);
+		var regexp = /<("[^"]*"|'[^']*'|[^'">])*>/gi;
+		if (v) {
+			v = v.replace(regexp,"");
+			return (v && v !== '&nbsp;' && v !== '&#160;') ? v.replace(/\"/g,"'") : "";
+		} 
+			return v;
+	},
+	stripPref : function (pref, id) {
+		var obj = $.type( pref );
+		if( obj === "string" || obj === "number") {
+			pref =  String(pref);
+			id = pref !== "" ? String(id).replace(String(pref), "") : id;
+		}
+		return id;
+	},
+	parse : function(jsonString) {
+		var js = jsonString;
+		if (js.substr(0,9) === "while(1);") { js = js.substr(9); }
+		if (js.substr(0,2) === "/*") { js = js.substr(2,js.length-4); }
+		if(!js) { js = "{}"; }
+		return ($.jgrid.useJSON===true && typeof JSON === 'object' && typeof JSON.parse === 'function') ?
+			JSON.parse(js) :
+			eval('(' + js + ')');
+	},
+	parseDate : function(format, date, newformat, opts) {
+		var	token = /\\.|[dDjlNSwzWFmMntLoYyaABgGhHisueIOPTZcrU]/g,
+		timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
+		timezoneClip = /[^-+\dA-Z]/g,
+		msDateRegExp = new RegExp("^\/Date\\((([-+])?[0-9]+)(([-+])([0-9]{2})([0-9]{2}))?\\)\/$"),
+		msMatch = ((typeof date === 'string') ? date.match(msDateRegExp): null),
+		pad = function (value, length) {
+			value = String(value);
+			length = parseInt(length,10) || 2;
+			while (value.length < length)  { value = '0' + value; }
+			return value;
+		},
+		ts = {m : 1, d : 1, y : 1970, h : 0, i : 0, s : 0, u:0},
+		timestamp=0, dM, k,hl,
+		h12to24 = function(ampm, h){
+			if (ampm === 0){ if (h === 12) { h = 0;} }
+			else { if (h !== 12) { h += 12; } }
+			return h;
+		},
+		offset =0;
+		if(opts === undefined) {
+			opts = $.jgrid.formatter.date;
+		}
+		// old lang files
+		if(opts.parseRe === undefined ) {
+			opts.parseRe = /[#%\\\/:_;.,\t\s-]/;
+		}
+		if( opts.masks.hasOwnProperty(format) ) { format = opts.masks[format]; }
+		if(date && date != null) {
+			if( !isNaN( date - 0 ) && String(format).toLowerCase() === "u") {
+				//Unix timestamp
+				timestamp = new Date( parseFloat(date)*1000 );
+			} else if(date.constructor === Date) {
+				timestamp = date;
+				// Microsoft date format support
+			} else if( msMatch !== null ) {
+				timestamp = new Date(parseInt(msMatch[1], 10));
+				if (msMatch[3]) {
+					offset = Number(msMatch[5]) * 60 + Number(msMatch[6]);
+					offset *= ((msMatch[4] === '-') ? 1 : -1);
+					offset -= timestamp.getTimezoneOffset();
+					timestamp.setTime(Number(Number(timestamp) + (offset * 60 * 1000)));
+				}
+			} else {
+				//Support ISO8601Long that have Z at the end to indicate UTC timezone
+				if(opts.srcformat === 'ISO8601Long' && date.charAt(date.length - 1) === 'Z') {
+					offset -= (new Date()).getTimezoneOffset();
+				}
+				date = String(date).replace(/\T/g,"#").replace(/\t/,"%").split(opts.parseRe);
+				format = format.replace(/\T/g,"#").replace(/\t/,"%").split(opts.parseRe);
+				// parsing for month names
+				for(k=0,hl=format.length;k<hl;k++){
+					if(format[k] === 'M') {
+						dM = $.inArray(date[k],opts.monthNames);
+						if(dM !== -1 && dM < 12){date[k] = dM+1; ts.m = date[k];}
+					}
+					if(format[k] === 'F') {
+						dM = $.inArray(date[k],opts.monthNames,12);
+						if(dM !== -1 && dM > 11){date[k] = dM+1-12; ts.m = date[k];}
+					}
+					if(format[k] === 'a') {
+						dM = $.inArray(date[k],opts.AmPm);
+						if(dM !== -1 && dM < 2 && date[k] === opts.AmPm[dM]){
+							date[k] = dM;
+							ts.h = h12to24(date[k], ts.h);
+						}
+					}
+					if(format[k] === 'A') {
+						dM = $.inArray(date[k],opts.AmPm);
+						if(dM !== -1 && dM > 1 && date[k] === opts.AmPm[dM]){
+							date[k] = dM-2;
+							ts.h = h12to24(date[k], ts.h);
+						}
+					}
+					if (format[k] === 'g') {
+						ts.h = parseInt(date[k], 10);
+					}
+					if(date[k] !== undefined) {
+						ts[format[k].toLowerCase()] = parseInt(date[k],10);
+					}
+				}
+				if(ts.f) {ts.m = ts.f;}
+				if( ts.m === 0 && ts.y === 0 && ts.d === 0) {
+					return "&#160;" ;
+				}
+				ts.m = parseInt(ts.m,10)-1;
+				var ty = ts.y;
+				if (ty >= 70 && ty <= 99) {ts.y = 1900+ts.y;}
+				else if (ty >=0 && ty <=69) {ts.y= 2000+ts.y;}
+				timestamp = new Date(ts.y, ts.m, ts.d, ts.h, ts.i, ts.s, ts.u);
+				//Apply offset to show date as local time.
+				if(offset > 0) {
+					timestamp.setTime(Number(Number(timestamp) + (offset * 60 * 1000)));
+				}
+			}
+		} else {
+			timestamp = new Date(ts.y, ts.m, ts.d, ts.h, ts.i, ts.s, ts.u);
+		}
+		if(opts.userLocalTime && offset === 0) {
+			offset -= (new Date()).getTimezoneOffset();
+			if( offset > 0 ) {
+				timestamp.setTime(Number(Number(timestamp) + (offset * 60 * 1000)));
+			}
+		}
+		if( newformat === undefined ) {
+			return timestamp;
+		}
+		if( opts.masks.hasOwnProperty(newformat) )  {
+			newformat = opts.masks[newformat];
+		} else if ( !newformat ) {
+			newformat = 'Y-m-d';
+		}
+		var 
+			G = timestamp.getHours(),
+			i = timestamp.getMinutes(),
+			j = timestamp.getDate(),
+			n = timestamp.getMonth() + 1,
+			o = timestamp.getTimezoneOffset(),
+			s = timestamp.getSeconds(),
+			u = timestamp.getMilliseconds(),
+			w = timestamp.getDay(),
+			Y = timestamp.getFullYear(),
+			N = (w + 6) % 7 + 1,
+			z = (new Date(Y, n - 1, j) - new Date(Y, 0, 1)) / 86400000,
+			flags = {
+				// Day
+				d: pad(j),
+				D: opts.dayNames[w],
+				j: j,
+				l: opts.dayNames[w + 7],
+				N: N,
+				S: opts.S(j),
+				//j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th',
+				w: w,
+				z: z,
+				// Week
+				W: N < 5 ? Math.floor((z + N - 1) / 7) + 1 : Math.floor((z + N - 1) / 7) || ((new Date(Y - 1, 0, 1).getDay() + 6) % 7 < 4 ? 53 : 52),
+				// Month
+				F: opts.monthNames[n - 1 + 12],
+				m: pad(n),
+				M: opts.monthNames[n - 1],
+				n: n,
+				t: '?',
+				// Year
+				L: '?',
+				o: '?',
+				Y: Y,
+				y: String(Y).substring(2),
+				// Time
+				a: G < 12 ? opts.AmPm[0] : opts.AmPm[1],
+				A: G < 12 ? opts.AmPm[2] : opts.AmPm[3],
+				B: '?',
+				g: G % 12 || 12,
+				G: G,
+				h: pad(G % 12 || 12),
+				H: pad(G),
+				i: pad(i),
+				s: pad(s),
+				u: u,
+				// Timezone
+				e: '?',
+				I: '?',
+				O: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
+				P: '?',
+				T: (String(timestamp).match(timezone) || [""]).pop().replace(timezoneClip, ""),
+				Z: '?',
+				// Full Date/Time
+				c: '?',
+				r: '?',
+				U: Math.floor(timestamp / 1000)
+			};
+		return newformat.replace(token, function ($0) {
+			return flags.hasOwnProperty($0) ? flags[$0] : $0.substring(1);
+		});
+	},
+	jqID : function(sid){
+		return String(sid).replace(/[!"#$%&'()*+,.\/:; <=>?@\[\\\]\^`{|}~]/g,"\\$&");
+	},
+	guid : 1,
+	uidPref: 'jqg',
+	randId : function( prefix )	{
+		return (prefix || $.jgrid.uidPref) + ($.jgrid.guid++);
+	},
+	getAccessor : function(obj, expr) {
+		var ret,p,prm = [], i;
+		if( typeof expr === 'function') { return expr(obj); }
+		ret = obj[expr];
+		if(ret===undefined) {
+			try {
+				if ( typeof expr === 'string' ) {
+					prm = expr.split('.');
+				}
+				i = prm.length;
+				if( i ) {
+					ret = obj;
+					while (ret && i--) {
+						p = prm.shift();
+						ret = ret[p];
+					}
+				}
+			} catch (e) {}
+		}
+		return ret;
+	},
+	getXmlData: function (obj, expr, returnObj) {
+		var ret, m = typeof expr === 'string' ? expr.match(/^(.*)\[(\w+)\]$/) : null;
+		if (typeof expr === 'function') { return expr(obj); }
+		if (m && m[2]) {
+			// m[2] is the attribute selector
+			// m[1] is an optional element selector
+			// examples: "[id]", "rows[page]"
+			return m[1] ? $(m[1], obj).attr(m[2]) : $(obj).attr(m[2]);
+		}
+			ret = $(expr, obj);
+			if (returnObj) { return ret; }
+			//$(expr, obj).filter(':last'); // we use ':last' to be more compatible with old version of jqGrid
+			return ret.length > 0 ? $(ret).text() : undefined;
+	},
+	cellWidth : function () {
+		var $testDiv = $("<div class='ui-jqgrid' style='left:10000px'><table class='ui-jqgrid-btable' style='width:5px;'><tr class='jqgrow'><td style='width:5px;display:block;'></td></tr></table></div>"),
+		testCell = $testDiv.appendTo("body")
+			.find("td")
+			.width();
+		$testDiv.remove();
+		return Math.abs(testCell-5) > 0.1;
+	},
+	cell_width : true,
+	ajaxOptions: {},
+	from : function(source){
+		// Original Author Hugo Bonacci
+		// License MIT http://jlinq.codeplex.com/license
+		var QueryObject=function(d,q){
+		if(typeof d==="string"){
+			d=$.data(d);
+		}
+		var self=this,
+		_data=d,
+		_usecase=true,
+		_trim=false,
+		_query=q,
+		_stripNum = /[\$,%]/g,
+		_lastCommand=null,
+		_lastField=null,
+		_orDepth=0,
+		_negate=false,
+		_queuedOperator="",
+		_sorting=[],
+		_useProperties=true;
+		if(typeof d==="object"&&d.push) {
+			if(d.length>0){
+				if(typeof d[0]!=="object"){
+					_useProperties=false;
+				}else{
+					_useProperties=true;
+				}
+			}
+		}else{
+			throw "data provides is not an array";
+		}
+		this._hasData=function(){
+			return _data===null?false:_data.length===0?false:true;
+		};
+		this._getStr=function(s){
+			var phrase=[];
+			if(_trim){
+				phrase.push("jQuery.trim(");
+			}
+			phrase.push("String("+s+")");
+			if(_trim){
+				phrase.push(")");
+			}
+			if(!_usecase){
+				phrase.push(".toLowerCase()");
+			}
+			return phrase.join("");
+		};
+		this._strComp=function(val){
+			if(typeof val==="string"){
+				return".toString()";
+			}
+			return"";
+		};
+		this._group=function(f,u){
+			return({field:f.toString(),unique:u,items:[]});
+		};
+		this._toStr=function(phrase){
+			if(_trim){
+				phrase=$.trim(phrase);
+			}
+			phrase=phrase.toString().replace(/\\/g,'\\\\').replace(/\"/g,'\\"');
+			return _usecase ? phrase : phrase.toLowerCase();
+		};
+		this._funcLoop=function(func){
+			var results=[];
+			$.each(_data,function(i,v){
+				results.push(func(v));
+			});
+			return results;
+		};
+		this._append=function(s){
+			var i;
+			if(_query===null){
+				_query="";
+			} else {
+				_query+=_queuedOperator === "" ? " && " :_queuedOperator;
+			}
+			for (i=0;i<_orDepth;i++){
+				_query+="(";
+			}
+			if(_negate){
+				_query+="!";
+			}
+			_query+="("+s+")";
+			_negate=false;
+			_queuedOperator="";
+			_orDepth=0;
+		};
+		this._setCommand=function(f,c){
+			_lastCommand=f;
+			_lastField=c;
+		};
+		this._resetNegate=function(){
+			_negate=false;
+		};
+		this._repeatCommand=function(f,v){
+			if(_lastCommand===null){
+				return self;
+			}
+			if(f!==null&&v!==null){
+				return _lastCommand(f,v);
+			}
+			if(_lastField===null){
+				return _lastCommand(f);
+			}
+			if(!_useProperties){
+				return _lastCommand(f);
+			}
+			return _lastCommand(_lastField,f);
+		};
+		this._equals=function(a,b){
+			return(self._compare(a,b,1)===0);
+		};
+		this._compare=function(a,b,d){
+			var toString = Object.prototype.toString;
+			if( d === undefined) { d = 1; }
+			if(a===undefined) { a = null; }
+			if(b===undefined) { b = null; }
+			if(a===null && b===null){
+				return 0;
+			}
+			if(a===null&&b!==null){
+				return 1;
+			}
+			if(a!==null&&b===null){
+				return -1;
+			}
+			if (toString.call(a) === '[object Date]' && toString.call(b) === '[object Date]') {
+				if (a < b) { return -d; }
+				if (a > b) { return d; }
+				return 0;
+			}
+			if(!_usecase && typeof a !== "number" && typeof b !== "number" ) {
+				a=String(a);
+				b=String(b);
+			}
+			if(a<b){return -d;}
+			if(a>b){return d;}
+			return 0;
+		};
+		this._performSort=function(){
+			if(_sorting.length===0){return;}
+			_data=self._doSort(_data,0);
+		};
+		this._doSort=function(d,q){
+			var by=_sorting[q].by,
+			dir=_sorting[q].dir,
+			type = _sorting[q].type,
+			dfmt = _sorting[q].datefmt,
+			sfunc = _sorting[q].sfunc;
+			if(q===_sorting.length-1){
+				return self._getOrder(d, by, dir, type, dfmt, sfunc);
+			}
+			q++;
+			var values=self._getGroup(d,by,dir,type,dfmt), results=[], i, j, sorted;
+			for(i=0;i<values.length;i++){
+				sorted=self._doSort(values[i].items,q);
+				for(j=0;j<sorted.length;j++){
+					results.push(sorted[j]);
+				}
+			}
+			return results;
+		};
+		this._getOrder=function(data,by,dir,type, dfmt, sfunc){
+			var sortData=[],_sortData=[], newDir = dir==="a" ? 1 : -1, i,ab,j,
+			findSortKey;
+
+			if(type === undefined ) { type = "text"; }
+			if (type === 'float' || type=== 'number' || type=== 'currency' || type=== 'numeric') {
+				findSortKey = function($cell) {
+					var key = parseFloat( String($cell).replace(_stripNum, ''));
+					return isNaN(key) ? Number.NEGATIVE_INFINITY : key;
+				};
+			} else if (type==='int' || type==='integer') {
+				findSortKey = function($cell) {
+					return $cell ? parseFloat(String($cell).replace(_stripNum, '')) : Number.NEGATIVE_INFINITY;
+				};
+			} else if(type === 'date' || type === 'datetime') {
+				findSortKey = function($cell) {
+					return $.jgrid.parseDate(dfmt,$cell).getTime();
+				};
+			} else if($.isFunction(type)) {
+				findSortKey = type;
+			} else {
+				findSortKey = function($cell) {
+					$cell = $cell ? $.trim(String($cell)) : "";
+					return _usecase ? $cell : $cell.toLowerCase();
+				};
+			}
+			$.each(data,function(i,v){
+				ab = by!=="" ? $.jgrid.getAccessor(v,by) : v;
+				if(ab === undefined) { ab = ""; }
+				ab = findSortKey(ab, v);
+				_sortData.push({ 'vSort': ab,'index':i});
+			});
+			if($.isFunction(sfunc)) {
+				_sortData.sort(function(a,b){
+					a = a.vSort;
+					b = b.vSort;
+					return sfunc.call(this,a,b,newDir);
+				});
+			} else {
+				_sortData.sort(function(a,b){
+					a = a.vSort;
+					b = b.vSort;
+					return self._compare(a,b,newDir);
+				});
+			}
+			j=0;
+			var nrec= data.length;
+			// overhead, but we do not change the original data.
+			while(j<nrec) {
+				i = _sortData[j].index;
+				sortData.push(data[i]);
+				j++;
+			}
+			return sortData;
+		};
+		this._getGroup=function(data,by,dir,type, dfmt){
+			var results=[],
+			group=null,
+			last=null, val;
+			$.each(self._getOrder(data,by,dir,type, dfmt),function(i,v){
+				val = $.jgrid.getAccessor(v, by);
+				if(val == null) { val = ""; }
+				if(!self._equals(last,val)){
+					last=val;
+					if(group !== null){
+						results.push(group);
+					}
+					group=self._group(by,val);
+				}
+				group.items.push(v);
+			});
+			if(group !== null){
+				results.push(group);
+			}
+			return results;
+		};
+		this.ignoreCase=function(){
+			_usecase=false;
+			return self;
+		};
+		this.useCase=function(){
+			_usecase=true;
+			return self;
+		};
+		this.trim=function(){
+			_trim=true;
+			return self;
+		};
+		this.noTrim=function(){
+			_trim=false;
+			return self;
+		};
+		this.execute=function(){
+			var match=_query, results=[];
+			if(match === null){
+				return self;
+			}
+			$.each(_data,function(){
+				if(eval(match)){results.push(this);}
+			});
+			_data=results;
+			return self;
+		};
+		this.data=function(){
+			return _data;
+		};
+		this.select=function(f){
+			self._performSort();
+			if(!self._hasData()){ return[]; }
+			self.execute();
+			if($.isFunction(f)){
+				var results=[];
+				$.each(_data,function(i,v){
+					results.push(f(v));
+				});
+				return results;
+			}
+			return _data;
+		};
+		this.hasMatch=function(){
+			if(!self._hasData()) { return false; }
+			self.execute();
+			return _data.length>0;
+		};
+		this.andNot=function(f,v,x){
+			_negate=!_negate;
+			return self.and(f,v,x);
+		};
+		this.orNot=function(f,v,x){
+			_negate=!_negate;
+			return self.or(f,v,x);
+		};
+		this.not=function(f,v,x){
+			return self.andNot(f,v,x);
+		};
+		this.and=function(f,v,x){
+			_queuedOperator=" && ";
+			if(f===undefined){
+				return self;
+			}
+			return self._repeatCommand(f,v,x);
+		};
+		this.or=function(f,v,x){
+			_queuedOperator=" || ";
+			if(f===undefined) { return self; }
+			return self._repeatCommand(f,v,x);
+		};
+		this.orBegin=function(){
+			_orDepth++;
+			return self;
+		};
+		this.orEnd=function(){
+			if (_query !== null){
+				_query+=")";
+			}
+			return self;
+		};
+		this.isNot=function(f){
+			_negate=!_negate;
+			return self.is(f);
+		};
+		this.is=function(f){
+			self._append('this.'+f);
+			self._resetNegate();
+			return self;
+		};
+		this._compareValues=function(func,f,v,how,t){
+			var fld;
+			if(_useProperties){
+				fld='jQuery.jgrid.getAccessor(this,\''+f+'\')';
+			}else{
+				fld='this';
+			}
+			if(v===undefined) { v = null; }
+			//var val=v===null?f:v,
+			var val =v,
+			swst = t.stype === undefined ? "text" : t.stype;
+			if(v !== null) {
+			switch(swst) {
+				case 'int':
+				case 'integer':
+					val = (isNaN(Number(val)) || val==="") ? '0' : val; // To be fixed with more inteligent code
+					fld = 'parseInt('+fld+',10)';
+					val = 'parseInt('+val+',10)';
+					break;
+				case 'float':
+				case 'number':
+				case 'numeric':
+					val = String(val).replace(_stripNum, '');
+					val = (isNaN(Number(val)) || val==="") ? '0' : val; // To be fixed with more inteligent code
+					fld = 'parseFloat('+fld+')';
+					val = 'parseFloat('+val+')';
+					break;
+				case 'date':
+				case 'datetime':
+					val = String($.jgrid.parseDate(t.newfmt || 'Y-m-d',val).getTime());
+					fld = 'jQuery.jgrid.parseDate("'+t.srcfmt+'",'+fld+').getTime()';
+					break;
+				default :
+					fld=self._getStr(fld);
+					val=self._getStr('"'+self._toStr(val)+'"');
+			}
+			}
+			self._append(fld+' '+how+' '+val);
+			self._setCommand(func,f);
+			self._resetNegate();
+			return self;
+		};
+		this.equals=function(f,v,t){
+			return self._compareValues(self.equals,f,v,"==",t);
+		};
+		this.notEquals=function(f,v,t){
+			return self._compareValues(self.equals,f,v,"!==",t);
+		};
+		this.isNull = function(f,v,t){
+			return self._compareValues(self.equals,f,null,"===",t);
+		};
+		this.greater=function(f,v,t){
+			return self._compareValues(self.greater,f,v,">",t);
+		};
+		this.less=function(f,v,t){
+			return self._compareValues(self.less,f,v,"<",t);
+		};
+		this.greaterOrEquals=function(f,v,t){
+			return self._compareValues(self.greaterOrEquals,f,v,">=",t);
+		};
+		this.lessOrEquals=function(f,v,t){
+			return self._compareValues(self.lessOrEquals,f,v,"<=",t);
+		};
+		this.startsWith=function(f,v){
+			var val = (v==null) ? f: v,
+			length=_trim ? $.trim(val.toString()).length : val.toString().length;
+			if(_useProperties){
+				self._append(self._getStr('jQuery.jgrid.getAccessor(this,\''+f+'\')')+'.substr(0,'+length+') == '+self._getStr('"'+self._toStr(v)+'"'));
+			}else{
+				if (v!=null) { length=_trim?$.trim(v.toString()).length:v.toString().length; }
+				self._append(self._getStr('this')+'.substr(0,'+length+') == '+self._getStr('"'+self._toStr(f)+'"'));
+			}
+			self._setCommand(self.startsWith,f);
+			self._resetNegate();
+			return self;
+		};
+		this.endsWith=function(f,v){
+			var val = (v==null) ? f: v,
+			length=_trim ? $.trim(val.toString()).length:val.toString().length;
+			if(_useProperties){
+				self._append(self._getStr('jQuery.jgrid.getAccessor(this,\''+f+'\')')+'.substr('+self._getStr('jQuery.jgrid.getAccessor(this,\''+f+'\')')+'.length-'+length+','+length+') == "'+self._toStr(v)+'"');
+			} else {
+				self._append(self._getStr('this')+'.substr('+self._getStr('this')+'.length-"'+self._toStr(f)+'".length,"'+self._toStr(f)+'".length) == "'+self._toStr(f)+'"');
+			}
+			self._setCommand(self.endsWith,f);self._resetNegate();
+			return self;
+		};
+		this.contains=function(f,v){
+			if(_useProperties){
+				self._append(self._getStr('jQuery.jgrid.getAccessor(this,\''+f+'\')')+'.indexOf("'+self._toStr(v)+'",0) > -1');
+			}else{
+				self._append(self._getStr('this')+'.indexOf("'+self._toStr(f)+'",0) > -1');
+			}
+			self._setCommand(self.contains,f);
+			self._resetNegate();
+			return self;
+		};
+		this.groupBy=function(by,dir,type, datefmt){
+			if(!self._hasData()){
+				return null;
+			}
+			return self._getGroup(_data,by,dir,type, datefmt);
+		};
+		this.orderBy=function(by,dir,stype, dfmt, sfunc){
+			dir = dir == null ? "a" :$.trim(dir.toString().toLowerCase());
+			if(stype == null) { stype = "text"; }
+			if(dfmt == null) { dfmt = "Y-m-d"; }
+			if(sfunc == null) { sfunc = false; }
+			if(dir==="desc"||dir==="descending"){dir="d";}
+			if(dir==="asc"||dir==="ascending"){dir="a";}
+			_sorting.push({by:by,dir:dir,type:stype, datefmt: dfmt, sfunc: sfunc});
+			return self;
+		};
+		return self;
+		};
+	return new QueryObject(source,null);
+	},
+	getMethod: function (name) {
+        return this.getAccessor($.fn.jqGrid, name);
+	},
+	extend : function(methods) {
+		$.extend($.fn.jqGrid,methods);
+		if (!this.no_legacy_api) {
+			$.fn.extend(methods);
+		}
+	}
+});
+
+$.fn.jqGrid = function( pin ) {
+	if (typeof pin === 'string') {
+		var fn = $.jgrid.getMethod(pin);
+		if (!fn) {
+			throw ("jqGrid - No such method: " + pin);
+		}
+		var args = $.makeArray(arguments).slice(1);
+		return fn.apply(this,args);
+	}
+	return this.each( function() {
+		if(this.grid) {return;}
+		var localData;
+		if (pin != null && pin.data !== undefined) {
+			localData = pin.data;
+			pin.data = [];
+		}
+
+		var p = $.extend(true,{
+			url: "",
+			height: 150,
+			page: 1,
+			rowNum: 20,
+			rowTotal : null,
+			records: 0,
+			pager: "",
+			pgbuttons: true,
+			pginput: true,
+			colModel: [],
+			rowList: [],
+			colNames: [],
+			sortorder: "asc",
+			sortname: "",
+			datatype: "xml",
+			mtype: "GET",
+			altRows: false,
+			selarrrow: [],
+			savedRow: [],
+			shrinkToFit: true,
+			xmlReader: {},
+			jsonReader: {},
+			subGrid: false,
+			subGridModel :[],
+			reccount: 0,
+			lastpage: 0,
+			lastsort: 0,
+			selrow: null,
+			beforeSelectRow: null,
+			onSelectRow: null,
+			onSortCol: null,
+			ondblClickRow: null,
+			onRightClickRow: null,
+			onPaging: null,
+			onSelectAll: null,
+			onInitGrid : null,
+			loadComplete: null,
+			gridComplete: null,
+			loadError: null,
+			loadBeforeSend: null,
+			afterInsertRow: null,
+			beforeRequest: null,
+			beforeProcessing : null,
+			onHeaderClick: null,
+			viewrecords: false,
+			loadonce: false,
+			multiselect: false,
+			multikey: false,
+			editurl: null,
+			search: false,
+			caption: "",
+			hidegrid: true,
+			hiddengrid: false,
+			postData: {},
+			userData: {},
+			treeGrid : false,
+			treeGridModel : 'nested',
+			treeReader : {},
+			treeANode : -1,
+			ExpandColumn: null,
+			tree_root_level : 0,
+			prmNames: {page:"page",rows:"rows", sort: "sidx",order: "sord", search:"_search", nd:"nd", id:"id",oper:"oper",editoper:"edit",addoper:"add",deloper:"del", subgridid:"id", npage: null, totalrows:"totalrows"},
+			forceFit : false,
+			gridstate : "visible",
+			cellEdit: false,
+			cellsubmit: "remote",
+			nv:0,
+			loadui: "enable",
+			toolbar: [false,""],
+			scroll: false,
+			multiboxonly : false,
+			deselectAfterSort : true,
+			scrollrows : false,
+			autowidth: false,
+			scrollOffset :18,
+			cellLayout: 5,
+			subGridWidth: 20,
+			multiselectWidth: 20,
+			gridview: false,
+			rownumWidth: 25,
+			rownumbers : false,
+			pagerpos: 'center',
+			recordpos: 'right',
+			footerrow : false,
+			userDataOnFooter : false,
+			hoverrows : true,
+			altclass : 'ui-priority-secondary',
+			viewsortcols : [false,'vertical',true],
+			resizeclass : '',
+			autoencode : false,
+			remapColumns : [],
+			ajaxGridOptions :{},
+			direction : "ltr",
+			toppager: false,
+			headertitles: false,
+			scrollTimeout: 40,
+			data : [],
+			_index : {},
+			grouping : false,
+			groupingView : {groupField:[],groupOrder:[], groupText:[],groupColumnShow:[],groupSummary:[], showSummaryOnHide: false, sortitems:[], sortnames:[], summary:[],summaryval:[], plusicon: 'ui-icon-circlesmall-plus', minusicon: 'ui-icon-circlesmall-minus', displayField: [], groupSummaryPos:[], formatDisplayField : [], _locgr : false},
+			ignoreCase : false,
+			cmTemplate : {},
+			idPrefix : "",
+			multiSort :  false,
+			minColWidth : 33
+		}, $.jgrid.defaults, pin || {});
+		if (localData !== undefined) {
+			p.data = localData;
+			pin.data = localData;
+		}
+		var ts= this, grid={
+			headers:[],
+			cols:[],
+			footers: [],
+			dragStart: function(i,x,y) {
+				var gridLeftPos = $(this.bDiv).offset().left;
+				this.resizing = { idx: i, startX: x.pageX, sOL : x.pageX - gridLeftPos };
+				this.hDiv.style.cursor = "col-resize";
+				this.curGbox = $("#rs_m"+$.jgrid.jqID(p.id),"#gbox_"+$.jgrid.jqID(p.id));
+				this.curGbox.css({display:"block",left:x.pageX-gridLeftPos,top:y[1],height:y[2]});
+				$(ts).triggerHandler("jqGridResizeStart", [x, i]);
+				if($.isFunction(p.resizeStart)) { p.resizeStart.call(ts,x,i); }
+				document.onselectstart=function(){return false;};
+			},
+			dragMove: function(x) {
+				if(this.resizing) {
+					var diff = x.pageX-this.resizing.startX,
+					h = this.headers[this.resizing.idx],
+					newWidth = p.direction === "ltr" ? h.width + diff : h.width - diff, hn, nWn;
+					if(newWidth > 33) {
+						this.curGbox.css({left:this.resizing.sOL+diff});
+						if(p.forceFit===true ){
+							hn = this.headers[this.resizing.idx+p.nv];
+							nWn = p.direction === "ltr" ? hn.width - diff : hn.width + diff;
+							if(nWn > p.minColWidth ) {
+								h.newWidth = newWidth;
+								hn.newWidth = nWn;
+							}
+						} else {
+							this.newWidth = p.direction === "ltr" ? p.tblwidth+diff : p.tblwidth-diff;
+							h.newWidth = newWidth;
+						}
+					}
+				}
+			},
+			dragEnd: function() {
+				this.hDiv.style.cursor = "default";
+				if(this.resizing) {
+					var idx = this.resizing.idx,
+					nw = this.headers[idx].newWidth || this.headers[idx].width;
+					nw = parseInt(nw,10);
+					this.resizing = false;
+					$("#rs_m"+$.jgrid.jqID(p.id)).css("display","none");
+					p.colModel[idx].width = nw;
+					this.headers[idx].width = nw;
+					this.headers[idx].el.style.width = nw + "px";
+					this.cols[idx].style.width = nw+"px";
+					if(this.footers.length>0) {this.footers[idx].style.width = nw+"px";}
+					if(p.forceFit===true){
+						nw = this.headers[idx+p.nv].newWidth || this.headers[idx+p.nv].width;
+						this.headers[idx+p.nv].width = nw;
+						this.headers[idx+p.nv].el.style.width = nw + "px";
+						this.cols[idx+p.nv].style.width = nw+"px";
+						if(this.footers.length>0) {this.footers[idx+p.nv].style.width = nw+"px";}
+						p.colModel[idx+p.nv].width = nw;
+					} else {
+						p.tblwidth = this.newWidth || p.tblwidth;
+						$('table:first',this.bDiv).css("width",p.tblwidth+"px");
+						$('table:first',this.hDiv).css("width",p.tblwidth+"px");
+						this.hDiv.scrollLeft = this.bDiv.scrollLeft;
+						if(p.footerrow) {
+							$('table:first',this.sDiv).css("width",p.tblwidth+"px");
+							this.sDiv.scrollLeft = this.bDiv.scrollLeft;
+						}
+					}
+					$(ts).triggerHandler("jqGridResizeStop", [nw, idx]);
+					if($.isFunction(p.resizeStop)) { p.resizeStop.call(ts,nw,idx); }
+				}
+				this.curGbox = null;
+				document.onselectstart=function(){return true;};
+			},
+			populateVisible: function() {
+				if (grid.timer) { clearTimeout(grid.timer); }
+				grid.timer = null;
+				var dh = $(grid.bDiv).height();
+				if (!dh) { return; }
+				var table = $("table:first", grid.bDiv);
+				var rows, rh;
+				if(table[0].rows.length) {
+					try {
+						rows = table[0].rows[1];
+						rh = rows ? $(rows).outerHeight() || grid.prevRowHeight : grid.prevRowHeight;
+					} catch (pv) {
+						rh = grid.prevRowHeight;
+					}
+				}
+				if (!rh) { return; }
+				grid.prevRowHeight = rh;
+				var rn = p.rowNum;
+				var scrollTop = grid.scrollTop = grid.bDiv.scrollTop;
+				var ttop = Math.round(table.position().top) - scrollTop;
+				var tbot = ttop + table.height();
+				var div = rh * rn;
+				var page, npage, empty;
+				if ( tbot < dh && ttop <= 0 &&
+					(p.lastpage===undefined||(parseInt((tbot + scrollTop + div - 1) / div,10) || 0) <= p.lastpage))
+				{
+					npage = parseInt((dh - tbot + div - 1) / div,10) || 1;
+					if (tbot >= 0 || npage < 2 || p.scroll === true) {
+						page = ( Math.round((tbot + scrollTop) / div) || 0) + 1;
+						ttop = -1;
+					} else {
+						ttop = 1;
+					}
+				}
+				if (ttop > 0) {
+					page = ( parseInt(scrollTop / div,10) || 0 ) + 1;
+					npage = (parseInt((scrollTop + dh) / div,10) || 0) + 2 - page;
+					empty = true;
+				}
+				if (npage) {
+					if (p.lastpage && (page > p.lastpage || p.lastpage===1 || (page === p.page && page===p.lastpage)) ) {
+						return;
+					}
+					if (grid.hDiv.loading) {
+						grid.timer = setTimeout(grid.populateVisible, p.scrollTimeout);
+					} else {
+						p.page = page;
+						if (empty) {
+							grid.selectionPreserver(table[0]);
+							grid.emptyRows.call(table[0], false, false);
+						}
+						grid.populate(npage);
+					}
+				}
+			},
+			scrollGrid: function( e ) {
+				if(p.scroll) {
+					var scrollTop = grid.bDiv.scrollTop;
+					if(grid.scrollTop === undefined) { grid.scrollTop = 0; }
+					if (scrollTop !== grid.scrollTop) {
+						grid.scrollTop = scrollTop;
+						if (grid.timer) { clearTimeout(grid.timer); }
+						grid.timer = setTimeout(grid.populateVisible, p.scrollTimeout);
+					}
+				}
+				grid.hDiv.scrollLeft = grid.bDiv.scrollLeft;
+				if(p.footerrow) {
+					grid.sDiv.scrollLeft = grid.bDiv.scrollLeft;
+				}
+				if( e ) { e.stopPropagation(); }
+			},
+			selectionPreserver : function(ts) {
+				var p = ts.p,
+				sr = p.selrow, sra = p.selarrrow ? $.makeArray(p.selarrrow) : null,
+				left = ts.grid.bDiv.scrollLeft,
+				restoreSelection = function() {
+					var i;
+					p.selrow = null;
+					p.selarrrow = [];
+					if(p.multiselect && sra && sra.length>0) {
+						for(i=0;i<sra.length;i++){
+							if (sra[i] !== sr) {
+								$(ts).jqGrid("setSelection",sra[i],false, null);
+							}
+						}
+					}
+					if (sr) {
+						$(ts).jqGrid("setSelection",sr,false,null);
+					}
+					ts.grid.bDiv.scrollLeft = left;
+					$(ts).unbind('.selectionPreserver', restoreSelection);
+				};
+				$(ts).bind('jqGridGridComplete.selectionPreserver', restoreSelection);				
+			}
+		};
+		if(this.tagName.toUpperCase() !== 'TABLE' || this.id == null) {
+			alert("Element is not a table or has no id!");
+			return;
+		}
+		if(document.documentMode !== undefined ) { // IE only
+			if(document.documentMode <= 5) {
+				alert("Grid can not be used in this ('quirks') mode!");
+				return;
+			}
+		}
+		$(this).empty().attr("tabindex","0");
+		this.p = p ;
+		this.p.useProp = !!$.fn.prop;
+		var i, dir;
+		if(this.p.colNames.length === 0) {
+			for (i=0;i<this.p.colModel.length;i++){
+				this.p.colNames[i] = this.p.colModel[i].label || this.p.colModel[i].name;
+			}
+		}
+		if( this.p.colNames.length !== this.p.colModel.length ) {
+			alert($.jgrid.errors.model);
+			return;
+		}
+		var gv = $("<div class='ui-jqgrid-view' role='grid'></div>"),
+		isMSIE = $.jgrid.msie;
+		ts.p.direction = $.trim(ts.p.direction.toLowerCase());
+		if($.inArray(ts.p.direction,["ltr","rtl"]) === -1) { ts.p.direction = "ltr"; }
+		dir = ts.p.direction;
+
+		$(gv).insertBefore(this);
+		$(this).removeClass("scroll").appendTo(gv);
+		var eg = $("<div class='ui-jqgrid ui-widget ui-widget-content ui-corner-all'></div>");
+		$(eg).attr({"id" : "gbox_"+this.id,"dir":dir}).insertBefore(gv);
+		$(gv).attr("id","gview_"+this.id).appendTo(eg);
+		$("<div class='ui-widget-overlay jqgrid-overlay' id='lui_"+this.id+"'></div>").insertBefore(gv);
+		$("<div class='loading ui-state-default ui-state-active' id='load_"+this.id+"'>"+this.p.loadtext+"</div>").insertBefore(gv);
+		$(this).attr({cellspacing:"0",cellpadding:"0",border:"0","role":"presentation","aria-multiselectable":!!this.p.multiselect,"aria-labelledby":"gbox_"+this.id});
+		var sortkeys = ["shiftKey","altKey","ctrlKey"],
+		intNum = function(val,defval) {
+			val = parseInt(val,10);
+			if (isNaN(val)) { return defval || 0;}
+			return val;
+		},
+		formatCol = function (pos, rowInd, tv, rawObject, rowId, rdata){
+			var cm = ts.p.colModel[pos], cellAttrFunc,
+			ral = cm.align, result="style=\"", clas = cm.classes, nm = cm.name, celp, acp=[];
+			if(ral) { result += "text-align:"+ral+";"; }
+			if(cm.hidden===true) { result += "display:none;"; }
+			if(rowInd===0) {
+				result += "width: "+grid.headers[pos].width+"px;";
+			} else if ($.isFunction(cm.cellattr) || (typeof cm.cellattr === "string" && $.jgrid.cellattr != null && $.isFunction($.jgrid.cellattr[cm.cellattr]))) {
+				cellAttrFunc = $.isFunction(cm.cellattr) ? cm.cellattr : $.jgrid.cellattr[cm.cellattr];
+				celp = cellAttrFunc.call(ts, rowId, tv, rawObject, cm, rdata);
+				if(celp && typeof celp === "string") {
+					celp = celp.replace(/style/i,'style').replace(/title/i,'title');
+					if(celp.indexOf('title') > -1) { cm.title=false;}
+					if(celp.indexOf('class') > -1) { clas = undefined;}
+					acp = celp.replace(/\-style/g,'-sti').split(/style/);
+					if(acp.length === 2 ) {
+						acp[1] =  $.trim(acp[1].replace(/\-sti/g,'-style').replace("=",""));
+						if(acp[1].indexOf("'") === 0 || acp[1].indexOf('"') === 0) {
+							acp[1] = acp[1].substring(1);
+						}
+						result += acp[1].replace(/'/gi,'"');
+					} else {
+						result += "\"";
+					}
+				}
+			}
+			if(!acp.length) { acp[0] = ""; result += "\"";}
+			result += (clas !== undefined ? (" class=\""+clas+"\"") :"") + ((cm.title && tv) ? (" title=\""+$.jgrid.stripHtml(tv)+"\"") :"");
+			result += " aria-describedby=\""+ts.p.id+"_"+nm+"\"";
+			return result + acp[0];
+		},
+		cellVal =  function (val) {
+			return val == null || val === "" ? "&#160;" : (ts.p.autoencode ? $.jgrid.htmlEncode(val) : String(val));
+		},
+		formatter = function (rowId, cellval , colpos, rwdat, _act){
+			var cm = ts.p.colModel[colpos],v;
+			if(cm.formatter !== undefined) {
+				rowId = String(ts.p.idPrefix) !== "" ? $.jgrid.stripPref(ts.p.idPrefix, rowId) : rowId;
+				var opts= {rowId: rowId, colModel:cm, gid:ts.p.id, pos:colpos };
+				if($.isFunction( cm.formatter ) ) {
+					v = cm.formatter.call(ts,cellval,opts,rwdat,_act);
+				} else if($.fmatter){
+					v = $.fn.fmatter.call(ts,cm.formatter,cellval,opts,rwdat,_act);
+				} else {
+					v = cellVal(cellval);
+				}
+			} else {
+				v = cellVal(cellval);
+			}
+			return v;
+		},
+		addCell = function(rowId,cell,pos,irow, srvr, rdata) {
+			var v,prp;
+			v = formatter(rowId,cell,pos,srvr,'add');
+			prp = formatCol( pos,irow, v, srvr, rowId, rdata);
+			return "<td role=\"gridcell\" "+prp+">"+v+"</td>";
+		},
+		addMulti = function(rowid,pos,irow,checked){
+			var	v = "<input role=\"checkbox\" type=\"checkbox\""+" id=\"jqg_"+ts.p.id+"_"+rowid+"\" class=\"cbox\" name=\"jqg_"+ts.p.id+"_"+rowid+"\"" + (checked ? "checked=\"checked\"" : "")+"/>",
+			prp = formatCol( pos,irow,'',null, rowid, true);
+			return "<td role=\"gridcell\" "+prp+">"+v+"</td>";
+		},
+		addRowNum = function (pos,irow,pG,rN) {
+			var v =  (parseInt(pG,10)-1)*parseInt(rN,10)+1+irow,
+			prp = formatCol( pos,irow,v, null, irow, true);
+			return "<td role=\"gridcell\" class=\"ui-state-default jqgrid-rownum\" "+prp+">"+v+"</td>";
+		},
+		reader = function (datatype) {
+			var field, f=[], j=0, i;
+			for(i =0; i<ts.p.colModel.length; i++){
+				field = ts.p.colModel[i];
+				if (field.name !== 'cb' && field.name !=='subgrid' && field.name !=='rn') {
+					f[j]= datatype === "local" ?
+					field.name :
+					( (datatype==="xml" || datatype === "xmlstring") ? field.xmlmap || field.name : field.jsonmap || field.name );
+					if(ts.p.keyName !== false && field.key===true ) {
+						ts.p.keyName = f[j];
+					}
+					j++;
+				}
+			}
+			return f;
+		},
+		orderedCols = function (offset) {
+			var order = ts.p.remapColumns;
+			if (!order || !order.length) {
+				order = $.map(ts.p.colModel, function(v,i) { return i; });
+			}
+			if (offset) {
+				order = $.map(order, function(v) { return v<offset?null:v-offset; });
+			}
+			return order;
+		},
+		emptyRows = function (scroll, locdata) {
+			var firstrow;
+			if (this.p.deepempty) {
+				$(this.rows).slice(1).remove();
+			} else {
+				firstrow = this.rows.length > 0 ? this.rows[0] : null;
+				$(this.firstChild).empty().append(firstrow);
+			}
+			if (scroll && this.p.scroll) {
+				$(this.grid.bDiv.firstChild).css({height: "auto"});
+				$(this.grid.bDiv.firstChild.firstChild).css({height: 0, display: "none"});
+				if (this.grid.bDiv.scrollTop !== 0) {
+					this.grid.bDiv.scrollTop = 0;
+				}
+			}
+			if(locdata === true && this.p.treeGrid) {
+				this.p.data = []; this.p._index = {};
+			}
+		},
+		normalizeData = function() {
+			var p = ts.p, data = p.data, dataLength = data.length, i, j, cur, idn, idr, ccur, v, rd,
+			localReader = p.localReader,
+			colModel = p.colModel,
+			cellName = localReader.cell,
+			iOffset = (p.multiselect === true ? 1 : 0) + (p.subGrid === true ? 1 : 0) + (p.rownumbers === true ? 1 : 0),
+			br = p.scroll ? $.jgrid.randId() : 1,
+			arrayReader, objectReader, rowReader;
+
+			if (p.datatype !== "local" || localReader.repeatitems !== true) {
+				return; // nothing to do
+			}
+
+			arrayReader = orderedCols(iOffset);
+			objectReader = reader("local");
+			// read ALL input items and convert items to be read by
+			// $.jgrid.getAccessor with column name as the second parameter
+			idn = p.keyIndex === false ?
+				($.isFunction(localReader.id) ? localReader.id.call(ts, data) : localReader.id) :
+				p.keyIndex; 
+			for (i = 0; i < dataLength; i++) {
+				cur = data[i];
+				// read id in the same way like addJSONData do
+				// probably it would be better to start with "if (cellName) {...}"
+				// but the goal of the current implementation was just have THE SAME
+				// id values like in addJSONData ...
+				idr = $.jgrid.getAccessor(cur, idn);
+				if (idr === undefined) {
+					if (typeof idn === "number" && colModel[idn + iOffset] != null) {
+						// reread id by name
+						idr = $.jgrid.getAccessor(cur, colModel[idn + iOffset].name);
+					}
+					if (idr === undefined) {
+						idr = br + i;
+						if (cellName) {
+							ccur = $.jgrid.getAccessor(cur, cellName) || cur;
+							idr = ccur != null && ccur[idn] !== undefined ? ccur[idn] : idr;
+							ccur = null;
+						}
+					}
+				}
+				rd = { };
+				rd[localReader.id] = idr;
+				if (cellName) {
+					cur = $.jgrid.getAccessor(cur, cellName) || cur;
+				}
+				rowReader = $.isArray(cur) ? arrayReader : objectReader;
+				for (j = 0; j < rowReader.length; j++) {
+					v = $.jgrid.getAccessor(cur, rowReader[j]);
+					rd[colModel[j + iOffset].name] = v;
+				}
+				$.extend(true, data[i], rd);
+			}
+		},
+		refreshIndex = function() {
+			var datalen = ts.p.data.length, idname, i, val;
+
+			if(ts.p.keyName === false || ts.p.loadonce === true) {
+				idname = ts.p.localReader.id;
+			} else {
+				idname = ts.p.keyName;
+			}
+			ts.p._index = [];
+			for(i =0;i < datalen; i++) {
+				val = $.jgrid.getAccessor(ts.p.data[i],idname);
+				if (val === undefined) { val=String(i+1); }
+				ts.p._index[val] = i;
+			}
+		},
+		constructTr = function(id, hide, altClass, rd, cur, selected) {
+			var tabindex = '-1', restAttr = '', attrName, style = hide ? 'display:none;' : '',
+				classes = 'ui-widget-content jqgrow ui-row-' + ts.p.direction + (altClass ? ' ' + altClass : '') + (selected ? ' ui-state-highlight' : ''),
+				rowAttrObj = $(ts).triggerHandler("jqGridRowAttr", [rd, cur, id]);
+			if( typeof rowAttrObj !== "object" ) {
+				rowAttrObj = $.isFunction(ts.p.rowattr) ? ts.p.rowattr.call(ts, rd, cur, id) :
+					(typeof ts.p.rowattr === "string" && $.jgrid.rowattr != null && $.isFunction($.jgrid.rowattr[ts.p.rowattr]) ?
+					 $.jgrid.rowattr[ts.p.rowattr].call(ts, rd, cur, id) : {});
+			}
+			if(!$.isEmptyObject( rowAttrObj )) {
+				if (rowAttrObj.hasOwnProperty("id")) {
+					id = rowAttrObj.id;
+					delete rowAttrObj.id;
+				}
+				if (rowAttrObj.hasOwnProperty("tabindex")) {
+					tabindex = rowAttrObj.tabindex;
+					delete rowAttrObj.tabindex;
+				}
+				if (rowAttrObj.hasOwnProperty("style")) {
+					style += rowAttrObj.style;
+					delete rowAttrObj.style;
+				}
+				if (rowAttrObj.hasOwnProperty("class")) {
+					classes += ' ' + rowAttrObj['class'];
+					delete rowAttrObj['class'];
+				}
+				// dot't allow to change role attribute
+				try { delete rowAttrObj.role; } catch(ra){}
+				for (attrName in rowAttrObj) {
+					if (rowAttrObj.hasOwnProperty(attrName)) {
+						restAttr += ' ' + attrName + '=' + rowAttrObj[attrName];
+					}
+				}
+			}
+			return '<tr role="row" id="' + id + '" tabindex="' + tabindex + '" class="' + classes + '"' +
+				(style === '' ? '' : ' style="' + style + '"') + restAttr + '>';
+		},
+		addXmlData = function (xml,t, rcnt, more, adjust) {
+			var startReq = new Date(),
+			locdata = (ts.p.datatype !== "local" && ts.p.loadonce) || ts.p.datatype === "xmlstring",
+			xmlid = "_id_", xmlRd = ts.p.xmlReader,
+			frd = ts.p.datatype === "local" ? "local" : "xml";
+			if(locdata) {
+				ts.p.data = [];
+				ts.p._index = {};
+				ts.p.localReader.id = xmlid;
+			}
+			ts.p.reccount = 0;
+			if($.isXMLDoc(xml)) {
+				if(ts.p.treeANode===-1 && !ts.p.scroll) {
+					emptyRows.call(ts, false, true);
+					rcnt=1;
+				} else { rcnt = rcnt > 1 ? rcnt :1; }
+			} else { return; }
+			var self= $(ts), i,fpos,ir=0,v,gi=ts.p.multiselect===true?1:0,si=0,addSubGridCell,ni=ts.p.rownumbers===true?1:0,idn, getId,f=[],F,rd ={}, xmlr,rid, rowData=[], cn=(ts.p.altRows === true) ? ts.p.altclass:"",cn1;
+			if(ts.p.subGrid===true) {
+				si = 1;
+				addSubGridCell = $.jgrid.getMethod("addSubGridCell");
+			}
+			if(!xmlRd.repeatitems) {f = reader(frd);}
+			if( ts.p.keyName===false) {
+				idn = $.isFunction( xmlRd.id ) ?  xmlRd.id.call(ts, xml) : xmlRd.id;
+			} else {
+				idn = ts.p.keyName;
+			}
+			if( String(idn).indexOf("[") === -1 ) {
+				if (f.length) {
+					getId = function( trow, k) {return $(idn,trow).text() || k;};
+				} else {
+					getId = function( trow, k) {return $(xmlRd.cell,trow).eq(idn).text() || k;};
+				}
+			}
+			else {
+				getId = function( trow, k) {return trow.getAttribute(idn.replace(/[\[\]]/g,"")) || k;};
+			}
+			ts.p.userData = {};
+			ts.p.page = intNum($.jgrid.getXmlData(xml, xmlRd.page), ts.p.page);
+			ts.p.lastpage = intNum($.jgrid.getXmlData(xml, xmlRd.total), 1);
+			ts.p.records = intNum($.jgrid.getXmlData(xml, xmlRd.records));
+			if($.isFunction(xmlRd.userdata)) {
+				ts.p.userData = xmlRd.userdata.call(ts, xml) || {};
+			} else {
+				$.jgrid.getXmlData(xml, xmlRd.userdata, true).each(function() {ts.p.userData[this.getAttribute("name")]= $(this).text();});
+			}
+			var gxml = $.jgrid.getXmlData( xml, xmlRd.root, true);
+			gxml = $.jgrid.getXmlData( gxml, xmlRd.row, true);
+			if (!gxml) { gxml = []; }
+			var gl = gxml.length, j=0, grpdata=[], rn = parseInt(ts.p.rowNum,10), br=ts.p.scroll?$.jgrid.randId():1, altr;
+			if (gl > 0 &&  ts.p.page <= 0) { ts.p.page = 1; }
+			if(gxml && gl){
+			if (adjust) { rn *= adjust+1; }
+			var afterInsRow = $.isFunction(ts.p.afterInsertRow), hiderow=false, groupingPrepare;
+			if(ts.p.grouping)  {
+				hiderow = ts.p.groupingView.groupCollapse === true;
+				groupingPrepare = $.jgrid.getMethod("groupingPrepare");
+			}
+			while (j<gl) {
+				xmlr = gxml[j];
+				rid = getId(xmlr,br+j);
+				rid  = ts.p.idPrefix + rid;
+				altr = rcnt === 0 ? 0 : rcnt+1;
+				cn1 = (altr+j)%2 === 1 ? cn : '';
+				var iStartTrTag = rowData.length;
+				rowData.push("");
+				if( ni ) {
+					rowData.push( addRowNum(0,j,ts.p.page,ts.p.rowNum) );
+				}
+				if( gi ) {
+					rowData.push( addMulti(rid,ni,j, false) );
+				}
+				if( si ) {
+					rowData.push( addSubGridCell.call(self,gi+ni,j+rcnt) );
+				}
+				if(xmlRd.repeatitems){
+					if (!F) { F=orderedCols(gi+si+ni); }
+					var cells = $.jgrid.getXmlData( xmlr, xmlRd.cell, true);
+					$.each(F, function (k) {
+						var cell = cells[this];
+						if (!cell) { return false; }
+						v = cell.textContent || cell.text;
+						rd[ts.p.colModel[k+gi+si+ni].name] = v;
+						rowData.push( addCell(rid,v,k+gi+si+ni,j+rcnt,xmlr, rd) );
+					});
+				} else {
+					for(i = 0; i < f.length;i++) {
+						v = $.jgrid.getXmlData( xmlr, f[i]);
+						rd[ts.p.colModel[i+gi+si+ni].name] = v;
+						rowData.push( addCell(rid, v, i+gi+si+ni, j+rcnt, xmlr, rd) );
+					}
+				}
+				rowData[iStartTrTag] = constructTr(rid, hiderow, cn1, rd, xmlr, false);
+				rowData.push("</tr>");
+				if(ts.p.grouping) {
+					grpdata.push( rowData );
+					if(!ts.p.groupingView._locgr) {
+						groupingPrepare.call(self, rd, j );
+					}
+					rowData = [];
+				}
+				if(locdata || ts.p.treeGrid === true) {
+					rd[xmlid] = $.jgrid.stripPref(ts.p.idPrefix, rid);
+					ts.p.data.push(rd);
+					ts.p._index[rd[xmlid]] = ts.p.data.length-1;
+				}
+				if(ts.p.gridview === false ) {
+					$("tbody:first",t).append(rowData.join(''));
+					self.triggerHandler("jqGridAfterInsertRow", [rid, rd, xmlr]);
+					if(afterInsRow) {ts.p.afterInsertRow.call(ts,rid,rd,xmlr);}
+					rowData=[];
+				}
+				rd={};
+				ir++;
+				j++;
+				if(ir===rn) {break;}
+			}
+			}
+			if(ts.p.gridview === true) {
+				fpos = ts.p.treeANode > -1 ? ts.p.treeANode: 0;
+				if(ts.p.grouping) {
+					if(!locdata) {
+						self.jqGrid('groupingRender',grpdata,ts.p.colModel.length, ts.p.page, rn);
+						grpdata = null;
+					}
+				} else if(ts.p.treeGrid === true && fpos > 0) {
+					$(ts.rows[fpos]).after(rowData.join(''));
+				} else {
+					//$("tbody:first",t).append(rowData.join(''));
+					ts.firstElementChild.innerHTML += rowData.join(''); // append to innerHTML of tbody which contains the first row (.jqgfirstrow)
+					ts.grid.cols = ts.rows[0].cells; // update cached first row
+				}
+			}
+			if(ts.p.subGrid === true ) {
+				try {self.jqGrid("addSubGrid",gi+ni);} catch (_){}
+			}
+			ts.p.totaltime = new Date() - startReq;
+			if(ir>0) { if(ts.p.records===0) { ts.p.records=gl;} }
+			rowData =null;
+			if( ts.p.treeGrid === true) {
+				try {self.jqGrid("setTreeNode", fpos+1, ir+fpos+1);} catch (e) {}
+			}
+			//if(!ts.p.treeGrid && !ts.p.scroll) {ts.grid.bDiv.scrollTop = 0;}
+			ts.p.reccount=ir;
+			ts.p.treeANode = -1;
+			if(ts.p.userDataOnFooter) { self.jqGrid("footerData","set",ts.p.userData,true); }
+			if(locdata) {
+				ts.p.records = gl;
+				ts.p.lastpage = Math.ceil(gl/ rn);
+			}
+			if (!more) { ts.updatepager(false,true); }
+			if(locdata) {
+				while (ir<gl) {
+					xmlr = gxml[ir];
+					rid = getId(xmlr,ir+br);
+					rid  = ts.p.idPrefix + rid;
+					if(xmlRd.repeatitems){
+						if (!F) { F=orderedCols(gi+si+ni); }
+						var cells2 = $.jgrid.getXmlData( xmlr, xmlRd.cell, true);
+						$.each(F, function (k) {
+							var cell = cells2[this];
+							if (!cell) { return false; }
+							v = cell.textContent || cell.text;
+							rd[ts.p.colModel[k+gi+si+ni].name] = v;
+						});
+					} else {
+						for(i = 0; i < f.length;i++) {
+							v = $.jgrid.getXmlData( xmlr, f[i]);
+							rd[ts.p.colModel[i+gi+si+ni].name] = v;
+						}
+					}
+					rd[xmlid] = $.jgrid.stripPref(ts.p.idPrefix, rid);
+					if(ts.p.grouping) {
+						groupingPrepare.call(self, rd, ir );
+					}
+					ts.p.data.push(rd);
+					ts.p._index[rd[xmlid]] = ts.p.data.length-1;
+					rd = {};
+					ir++;
+				}
+				if(ts.p.grouping) {
+					ts.p.groupingView._locgr = true;
+					self.jqGrid('groupingRender', grpdata, ts.p.colModel.length, ts.p.page, rn);
+					grpdata = null;
+				}
+			}
+		},
+		addJSONData = function(data,t, rcnt, more, adjust) {
+			var startReq = new Date();
+			if(data) {
+				if(ts.p.treeANode === -1 && !ts.p.scroll) {
+					emptyRows.call(ts, false, true);
+					rcnt=1;
+				} else { rcnt = rcnt > 1 ? rcnt :1; }
+			} else { return; }
+
+			var dReader, locid = "_id_", frd,
+			locdata = (ts.p.datatype !== "local" && ts.p.loadonce) || ts.p.datatype === "jsonstring";
+			if(locdata) { ts.p.data = []; ts.p._index = {}; ts.p.localReader.id = locid;}
+			ts.p.reccount = 0;
+			if(ts.p.datatype === "local") {
+				dReader =  ts.p.localReader;
+				frd= 'local';
+			} else {
+				dReader =  ts.p.jsonReader;
+				frd='json';
+			}
+			var self = $(ts), ir=0,v,i,j,f=[],cur,gi=ts.p.multiselect?1:0,si=ts.p.subGrid===true?1:0,addSubGridCell,ni=ts.p.rownumbers===true?1:0,arrayReader=orderedCols(gi+si+ni),objectReader=reader(frd),rowReader,len,drows,idn,rd={}, fpos, idr,rowData=[],cn=(ts.p.altRows === true) ? ts.p.altclass:"",cn1;
+			ts.p.page = intNum($.jgrid.getAccessor(data,dReader.page), ts.p.page);
+			ts.p.lastpage = intNum($.jgrid.getAccessor(data,dReader.total), 1);
+			ts.p.records = intNum($.jgrid.getAccessor(data,dReader.records));
+			ts.p.userData = $.jgrid.getAccessor(data,dReader.userdata) || {};
+			if(si) {
+				addSubGridCell = $.jgrid.getMethod("addSubGridCell");
+			}
+			if( ts.p.keyName===false ) {
+				idn = $.isFunction(dReader.id) ? dReader.id.call(ts, data) : dReader.id; 
+			} else {
+				idn = ts.p.keyName;
+			}
+			drows = $.jgrid.getAccessor(data,dReader.root);
+			if (drows == null && $.isArray(data)) { drows = data; }
+			if (!drows) { drows = []; }
+			len = drows.length; i=0;
+			if (len > 0 && ts.p.page <= 0) { ts.p.page = 1; }
+			var rn = parseInt(ts.p.rowNum,10),br=ts.p.scroll?$.jgrid.randId():1, altr, selected=false, selr;
+			if (adjust) { rn *= adjust+1; }
+			if(ts.p.datatype === "local" && !ts.p.deselectAfterSort) {
+				selected = true;
+			}
+			var afterInsRow = $.isFunction(ts.p.afterInsertRow), grpdata=[],hiderow=false, groupingPrepare;
+			if(ts.p.grouping)  {
+				hiderow = ts.p.groupingView.groupCollapse === true;
+				groupingPrepare = $.jgrid.getMethod("groupingPrepare");
+			}
+			while (i<len) {
+				cur = drows[i];
+				idr = $.jgrid.getAccessor(cur,idn);
+				if(idr === undefined) {
+					if (typeof idn === "number" && ts.p.colModel[idn+gi+si+ni] != null) {
+						// reread id by name
+						idr = $.jgrid.getAccessor(cur,ts.p.colModel[idn+gi+si+ni].name);
+					}
+					if(idr === undefined) {
+						idr = br+i;
+						if(f.length===0){
+							if(dReader.cell){
+								var ccur = $.jgrid.getAccessor(cur,dReader.cell) || cur;
+								idr = ccur != null && ccur[idn] !== undefined ? ccur[idn] : idr;
+								ccur=null;
+							}
+						}
+					}
+				}
+				idr  = ts.p.idPrefix + idr;
+				altr = rcnt === 1 ? 0 : rcnt;
+				cn1 = (altr+i)%2 === 1 ? cn : '';
+				if( selected) {
+					if( ts.p.multiselect) {
+						selr = ($.inArray(idr, ts.p.selarrrow) !== -1);
+					} else {
+						selr = (idr === ts.p.selrow);
+					}
+				}
+				var iStartTrTag = rowData.length;
+				rowData.push("");
+				if( ni ) {
+					rowData.push( addRowNum(0,i,ts.p.page,ts.p.rowNum) );
+				}
+				if( gi ){
+					rowData.push( addMulti(idr,ni,i,selr) );
+				}
+				if( si ) {
+					rowData.push( addSubGridCell.call(self,gi+ni,i+rcnt) );
+				}
+				rowReader=objectReader;
+				if (dReader.repeatitems) {
+					if(dReader.cell) {cur = $.jgrid.getAccessor(cur,dReader.cell) || cur;}
+					if ($.isArray(cur)) { rowReader=arrayReader; }
+				}
+				for (j=0;j<rowReader.length;j++) {
+					v = $.jgrid.getAccessor(cur,rowReader[j]);
+					rd[ts.p.colModel[j+gi+si+ni].name] = v;
+					rowData.push( addCell(idr,v,j+gi+si+ni,i+rcnt,cur, rd) );
+				}
+				rowData[iStartTrTag] = constructTr(idr, hiderow, cn1, rd, cur, selr);
+				rowData.push( "</tr>" );
+				if(ts.p.grouping) {
+					grpdata.push( rowData );
+					if(!ts.p.groupingView._locgr) {
+						groupingPrepare.call(self, rd, i);
+					}
+					rowData = [];
+				}
+				if(locdata || ts.p.treeGrid===true) {
+					rd[locid] = $.jgrid.stripPref(ts.p.idPrefix, idr);
+					ts.p.data.push(rd);
+					ts.p._index[rd[locid]] = ts.p.data.length-1;
+				}
+				if(ts.p.gridview === false ) {
+					$("#"+$.jgrid.jqID(ts.p.id)+" tbody:first").append(rowData.join(''));
+					self.triggerHandler("jqGridAfterInsertRow", [idr, rd, cur]);
+					if(afterInsRow) {ts.p.afterInsertRow.call(ts,idr,rd,cur);}
+					rowData=[];//ari=0;
+				}
+				rd={};
+				ir++;
+				i++;
+				if(ir===rn) { break; }
+			}
+			if(ts.p.gridview === true ) {
+				fpos = ts.p.treeANode > -1 ? ts.p.treeANode: 0;
+				if(ts.p.grouping) {
+					if(!locdata) {
+						self.jqGrid('groupingRender', grpdata, ts.p.colModel.length, ts.p.page, rn);
+						grpdata = null;
+					}
+				} else if(ts.p.treeGrid === true && fpos > 0) {
+					$(ts.rows[fpos]).after(rowData.join(''));
+				} else {
+					//$("#"+$.jgrid.jqID(ts.p.id)+" tbody:first").append(rowData.join(''));
+					ts.firstElementChild.innerHTML += rowData.join(''); // append to innerHTML of tbody which contains the first row (.jqgfirstrow)
+					ts.grid.cols = ts.rows[0].cells; // update cached first row
+				}
+			}
+			if(ts.p.subGrid === true ) {
+				try { self.jqGrid("addSubGrid",gi+ni);} catch (_){}
+			}
+			ts.p.totaltime = new Date() - startReq;
+			if(ir>0) {
+				if(ts.p.records===0) { ts.p.records=len; }
+			}
+			rowData = null;
+			if( ts.p.treeGrid === true) {
+				try {self.jqGrid("setTreeNode", fpos+1, ir+fpos+1);} catch (e) {}
+			}
+			//if(!ts.p.treeGrid && !ts.p.scroll) {ts.grid.bDiv.scrollTop = 0;}
+			ts.p.reccount=ir;
+			ts.p.treeANode = -1;
+			if(ts.p.userDataOnFooter) { self.jqGrid("footerData","set",ts.p.userData,true); }
+			if(locdata) {
+				ts.p.records = len;
+				ts.p.lastpage = Math.ceil(len/ rn);
+			}
+			if (!more) { ts.updatepager(false,true); }
+			if(locdata) {
+				while (ir<len && drows[ir]) {
+					cur = drows[ir];
+					idr = $.jgrid.getAccessor(cur,idn);
+					if(idr === undefined) {
+						if (typeof idn === "number" && ts.p.colModel[idn+gi+si+ni] != null) {
+							// reread id by name
+							idr = $.jgrid.getAccessor(cur,ts.p.colModel[idn+gi+si+ni].name);
+						}
+						if(idr === undefined) {
+							idr = br+ir;
+							if(f.length===0){
+								if(dReader.cell){
+									var ccur2 = $.jgrid.getAccessor(cur,dReader.cell) || cur;
+									idr = ccur2 != null && ccur2[idn] !== undefined ? ccur2[idn] : idr;
+									ccur2=null;
+								}
+							}
+						}
+					}
+					if(cur) {
+						idr  = ts.p.idPrefix + idr;
+						rowReader=objectReader;
+						if (dReader.repeatitems) {
+							if(dReader.cell) {cur = $.jgrid.getAccessor(cur,dReader.cell) || cur;}
+							if ($.isArray(cur)) { rowReader=arrayReader; }
+						}
+
+						for (j=0;j<rowReader.length;j++) {
+							rd[ts.p.colModel[j+gi+si+ni].name] = $.jgrid.getAccessor(cur,rowReader[j]);
+						}
+						rd[locid] = $.jgrid.stripPref(ts.p.idPrefix, idr);
+						if(ts.p.grouping) {
+							groupingPrepare.call(self, rd, ir );
+						}
+						ts.p.data.push(rd);
+						ts.p._index[rd[locid]] = ts.p.data.length-1;
+						rd = {};
+					}
+					ir++;
+				}
+				if(ts.p.grouping) {
+					ts.p.groupingView._locgr = true;
+					self.jqGrid('groupingRender', grpdata, ts.p.colModel.length, ts.p.page, rn);
+					grpdata = null;
+				}
+			}
+		},
+		addLocalData = function() {
+			var st = ts.p.multiSort ? [] : "", sto=[], fndsort=false, cmtypes={}, grtypes=[], grindexes=[], srcformat, sorttype, newformat;
+			if(!$.isArray(ts.p.data)) {
+				return;
+			}
+			var grpview = ts.p.grouping ? ts.p.groupingView : false, lengrp, gin;
+			$.each(ts.p.colModel,function(){
+				sorttype = this.sorttype || "text";
+				if(sorttype === "date" || sorttype === "datetime") {
+					if(this.formatter && typeof this.formatter === 'string' && this.formatter === 'date') {
+						if(this.formatoptions && this.formatoptions.srcformat) {
+							srcformat = this.formatoptions.srcformat;
+						} else {
+							srcformat = $.jgrid.formatter.date.srcformat;
+						}
+						if(this.formatoptions && this.formatoptions.newformat) {
+							newformat = this.formatoptions.newformat;
+						} else {
+							newformat = $.jgrid.formatter.date.newformat;
+						}
+					} else {
+						srcformat = newformat = this.datefmt || "Y-m-d";
+					}
+					cmtypes[this.name] = {"stype": sorttype, "srcfmt": srcformat,"newfmt":newformat, "sfunc": this.sortfunc || null};
+				} else {
+					cmtypes[this.name] = {"stype": sorttype, "srcfmt":'',"newfmt":'', "sfunc": this.sortfunc || null};
+				}
+				if(ts.p.grouping ) {
+					for(gin =0, lengrp = grpview.groupField.length; gin< lengrp; gin++) {
+						if( this.name === grpview.groupField[gin]) {
+							var grindex = this.name;
+							if (this.index) {
+								grindex = this.index;
+							}
+							grtypes[gin] = cmtypes[grindex];
+							grindexes[gin]= grindex;
+						}
+					}
+				}
+				if(ts.p.multiSort) {
+					if(this.lso) {
+						st.push(this.name);
+						var tmplso= this.lso.split("-");
+						sto.push( tmplso[tmplso.length-1] );
+					}
+				} else {
+					if(!fndsort && (this.index === ts.p.sortname || this.name === ts.p.sortname)){
+						st = this.name; // ???
+						fndsort = true;
+					}
+				}
+			});
+			if(ts.p.treeGrid) {
+				$(ts).jqGrid("SortTree", st, ts.p.sortorder, cmtypes[st].stype || 'text', cmtypes[st].srcfmt || '');
+				return;
+			}
+			var compareFnMap = {
+				'eq':function(queryObj) {return queryObj.equals;},
+				'ne':function(queryObj) {return queryObj.notEquals;},
+				'lt':function(queryObj) {return queryObj.less;},
+				'le':function(queryObj) {return queryObj.lessOrEquals;},
+				'gt':function(queryObj) {return queryObj.greater;},
+				'ge':function(queryObj) {return queryObj.greaterOrEquals;},
+				'cn':function(queryObj) {return queryObj.contains;},
+				'nc':function(queryObj,op) {return op === "OR" ? queryObj.orNot().contains : queryObj.andNot().contains;},
+				'bw':function(queryObj) {return queryObj.startsWith;},
+				'bn':function(queryObj,op) {return op === "OR" ? queryObj.orNot().startsWith : queryObj.andNot().startsWith;},
+				'en':function(queryObj,op) {return op === "OR" ? queryObj.orNot().endsWith : queryObj.andNot().endsWith;},
+				'ew':function(queryObj) {return queryObj.endsWith;},
+				'ni':function(queryObj,op) {return op === "OR" ? queryObj.orNot().equals : queryObj.andNot().equals;},
+				'in':function(queryObj) {return queryObj.equals;},
+				'nu':function(queryObj) {return queryObj.isNull;},
+				'nn':function(queryObj,op) {return op === "OR" ? queryObj.orNot().isNull : queryObj.andNot().isNull;}
+
+			},
+			query = $.jgrid.from(ts.p.data);
+			if (ts.p.ignoreCase) { query = query.ignoreCase(); }
+			function tojLinq ( group ) {
+				var s = 0, index, gor, ror, opr, rule;
+				if (group.groups != null) {
+					gor = group.groups.length && group.groupOp.toString().toUpperCase() === "OR";
+					if (gor) {
+						query.orBegin();
+					}
+					for (index = 0; index < group.groups.length; index++) {
+						if (s > 0 && gor) {
+							query.or();
+						}
+						try {
+							tojLinq(group.groups[index]);
+						} catch (e) {alert(e);}
+						s++;
+					}
+					if (gor) {
+						query.orEnd();
+					}
+				}
+				if (group.rules != null) {
+					//if(s>0) {
+					//	var result = query.select();
+					//	query = $.jgrid.from( result);
+					//	if (ts.p.ignoreCase) { query = query.ignoreCase(); } 
+					//}
+					try{
+						ror = group.rules.length && group.groupOp.toString().toUpperCase() === "OR";
+						if (ror) {
+							query.orBegin();
+						}
+						for (index = 0; index < group.rules.length; index++) {
+							rule = group.rules[index];
+							opr = group.groupOp.toString().toUpperCase();
+							if (compareFnMap[rule.op] && rule.field ) {
+								if(s > 0 && opr && opr === "OR") {
+									query = query.or();
+								}
+								query = compareFnMap[rule.op](query, opr)(rule.field, rule.data, cmtypes[rule.field]);
+							}
+							s++;
+						}
+						if (ror) {
+							query.orEnd();
+						}
+					} catch (g) {alert(g);}
+				}
+			}
+
+			if (ts.p.search === true) {
+				var srules = ts.p.postData.filters;
+				if(srules) {
+					if(typeof srules === "string") { srules = $.jgrid.parse(srules);}
+					tojLinq( srules );
+				} else {
+					try {
+						query = compareFnMap[ts.p.postData.searchOper](query)(ts.p.postData.searchField, ts.p.postData.searchString,cmtypes[ts.p.postData.searchField]);
+					} catch (se){}
+				}
+			}
+			if(ts.p.grouping) {
+				for(gin=0; gin<lengrp;gin++) {
+					query.orderBy(grindexes[gin],grpview.groupOrder[gin],grtypes[gin].stype, grtypes[gin].srcfmt);
+				}
+			}
+			if(ts.p.multiSort) {
+				$.each(st,function(i){
+					query.orderBy(this, sto[i], cmtypes[this].stype, cmtypes[this].srcfmt, cmtypes[this].sfunc);
+				});
+			} else {
+				if (st && ts.p.sortorder && fndsort) {
+					if(ts.p.sortorder.toUpperCase() === "DESC") {
+						query.orderBy(ts.p.sortname, "d", cmtypes[st].stype, cmtypes[st].srcfmt, cmtypes[st].sfunc);
+					} else {
+						query.orderBy(ts.p.sortname, "a", cmtypes[st].stype, cmtypes[st].srcfmt, cmtypes[st].sfunc);
+					}
+				}
+			}
+			var queryResults = query.select(),
+			recordsperpage = parseInt(ts.p.rowNum,10),
+			total = queryResults.length,
+			page = parseInt(ts.p.page,10),
+			totalpages = Math.ceil(total / recordsperpage),
+			retresult = {};
+			if((ts.p.search || ts.p.resetsearch) && ts.p.grouping && ts.p.groupingView._locgr) {
+				ts.p.groupingView.groups =[];
+				var j, grPrepare = $.jgrid.getMethod("groupingPrepare"), key, udc;
+				if(ts.p.footerrow && ts.p.userDataOnFooter) {
+					for (key in ts.p.userData) {
+						if(ts.p.userData.hasOwnProperty(key)) {
+							ts.p.userData[key] = 0;
+						}
+					}
+					udc = true;
+				}
+				for(j=0; j<total; j++) {
+					if(udc) {
+						for(key in ts.p.userData){
+							ts.p.userData[key] += parseFloat(queryResults[j][key] || 0);
+						}
+					}
+					grPrepare.call($(ts),queryResults[j],j, recordsperpage );
+				}
+			}
+			queryResults = queryResults.slice( (page-1)*recordsperpage , page*recordsperpage );
+			query = null;
+			cmtypes = null;
+			retresult[ts.p.localReader.total] = totalpages;
+			retresult[ts.p.localReader.page] = page;
+			retresult[ts.p.localReader.records] = total;
+			retresult[ts.p.localReader.root] = queryResults;
+			retresult[ts.p.localReader.userdata] = ts.p.userData;
+			queryResults = null;
+			return  retresult;
+		},
+		updatepager = function(rn, dnd) {
+			var cp, last, base, from,to,tot,fmt, pgboxes = "", sppg,
+			tspg = ts.p.pager ? "_"+$.jgrid.jqID(ts.p.pager.substr(1)) : "",
+			tspg_t = ts.p.toppager ? "_"+ts.p.toppager.substr(1) : "";
+			base = parseInt(ts.p.page,10)-1;
+			if(base < 0) { base = 0; }
+			base = base*parseInt(ts.p.rowNum,10);
+			to = base + ts.p.reccount;
+			if (ts.p.scroll) {
+				var rows = $("tbody:first > tr:gt(0)", ts.grid.bDiv);
+				base = to - rows.length;
+				ts.p.reccount = rows.length;
+				var rh = rows.outerHeight() || ts.grid.prevRowHeight;
+				if (rh) {
+					var top = base * rh;
+					var height = parseInt(ts.p.records,10) * rh;
+					$(">div:first",ts.grid.bDiv).css({height : height}).children("div:first").css({height:top,display:top?"":"none"});
+					if (ts.grid.bDiv.scrollTop == 0 && ts.p.page > 1) {
+						ts.grid.bDiv.scrollTop = ts.p.rowNum * (ts.p.page - 1) * rh;
+					}
+				}
+				ts.grid.bDiv.scrollLeft = ts.grid.hDiv.scrollLeft;
+			}
+			pgboxes = ts.p.pager || "";
+			pgboxes += ts.p.toppager ?  (pgboxes ? "," + ts.p.toppager : ts.p.toppager) : "";
+			if(pgboxes) {
+				fmt = $.jgrid.formatter.integer || {};
+				cp = intNum(ts.p.page);
+				last = intNum(ts.p.lastpage);
+				$(".selbox",pgboxes)[ this.p.useProp ? 'prop' : 'attr' ]("disabled",false);
+				if(ts.p.pginput===true) {
+					$('.ui-pg-input',pgboxes).val(ts.p.page);
+					sppg = ts.p.toppager ? '#sp_1'+tspg+",#sp_1"+tspg_t : '#sp_1'+tspg;
+					$(sppg).html($.fmatter ? $.fmatter.util.NumberFormat(ts.p.lastpage,fmt):ts.p.lastpage);
+
+				}
+				if (ts.p.viewrecords){
+					if(ts.p.reccount === 0) {
+						$(".ui-paging-info",pgboxes).html(ts.p.emptyrecords);
+					} else {
+						from = base+1;
+						tot=ts.p.records;
+						if($.fmatter) {
+							from = $.fmatter.util.NumberFormat(from,fmt);
+							to = $.fmatter.util.NumberFormat(to,fmt);
+							tot = $.fmatter.util.NumberFormat(tot,fmt);
+						}
+						$(".ui-paging-info",pgboxes).html($.jgrid.format(ts.p.recordtext,from,to,tot));
+					}
+				}
+				if(ts.p.pgbuttons===true) {
+					if(cp<=0) {cp = last = 0;}
+					if(cp===1 || cp === 0) {
+						$("#first"+tspg+", #prev"+tspg).addClass('ui-state-disabled').removeClass('ui-state-hover');
+						if(ts.p.toppager) { $("#first_t"+tspg_t+", #prev_t"+tspg_t).addClass('ui-state-disabled').removeClass('ui-state-hover'); }
+					} else {
+						$("#first"+tspg+", #prev"+tspg).removeClass('ui-state-disabled');
+						if(ts.p.toppager) { $("#first_t"+tspg_t+", #prev_t"+tspg_t).removeClass('ui-state-disabled'); }
+					}
+					if(cp===last || cp === 0) {
+						$("#next"+tspg+", #last"+tspg).addClass('ui-state-disabled').removeClass('ui-state-hover');
+						if(ts.p.toppager) { $("#next_t"+tspg_t+", #last_t"+tspg_t).addClass('ui-state-disabled').removeClass('ui-state-hover'); }
+					} else {
+						$("#next"+tspg+", #last"+tspg).removeClass('ui-state-disabled');
+						if(ts.p.toppager) { $("#next_t"+tspg_t+", #last_t"+tspg_t).removeClass('ui-state-disabled'); }
+					}
+				}
+			}
+			if(rn===true && ts.p.rownumbers === true) {
+				$(">td.jqgrid-rownum",ts.rows).each(function(i){
+					$(this).html(base+1+i);
+				});
+			}
+			if(dnd && ts.p.jqgdnd) { $(ts).jqGrid('gridDnD','updateDnD');}
+			$(ts).triggerHandler("jqGridGridComplete");
+			if($.isFunction(ts.p.gridComplete)) {ts.p.gridComplete.call(ts);}
+			$(ts).triggerHandler("jqGridAfterGridComplete");
+		},
+		beginReq = function() {
+			ts.grid.hDiv.loading = true;
+			if(ts.p.hiddengrid) { return;}
+			$(ts).jqGrid("progressBar", {method:"show", loadtype : ts.p.loadui, htmlcontent: ts.p.loadtext });
+		},
+		endReq = function() {
+			ts.grid.hDiv.loading = false;
+			$(ts).jqGrid("progressBar", {method:"hide", loadtype : ts.p.loadui });
+		},
+		populate = function (npage) {
+			if(!ts.grid.hDiv.loading) {
+				var pvis = ts.p.scroll && npage === false,
+				prm = {}, dt, dstr, pN=ts.p.prmNames;
+				if(ts.p.page <=0) { ts.p.page = Math.min(1,ts.p.lastpage); }
+				if(pN.search !== null) {prm[pN.search] = ts.p.search;} if(pN.nd !== null) {prm[pN.nd] = new Date().getTime();}
+				if(pN.rows !== null) {prm[pN.rows]= ts.p.rowNum;} if(pN.page !== null) {prm[pN.page]= ts.p.page;}
+				if(pN.sort !== null) {prm[pN.sort]= ts.p.sortname;} if(pN.order !== null) {prm[pN.order]= ts.p.sortorder;}
+				if(ts.p.rowTotal !== null && pN.totalrows !== null) { prm[pN.totalrows]= ts.p.rowTotal; }
+				var lcf = $.isFunction(ts.p.loadComplete), lc = lcf ? ts.p.loadComplete : null;
+				var adjust = 0;
+				npage = npage || 1;
+				if (npage > 1) {
+					if(pN.npage !== null) {
+						prm[pN.npage] = npage;
+						adjust = npage - 1;
+						npage = 1;
+					} else {
+						lc = function(req) {
+							ts.p.page++;
+							ts.grid.hDiv.loading = false;
+							if (lcf) {
+								ts.p.loadComplete.call(ts,req);
+							}
+							populate(npage-1);
+						};
+					}
+				} else if (pN.npage !== null) {
+					delete ts.p.postData[pN.npage];
+				}
+				if(ts.p.grouping) {
+					$(ts).jqGrid('groupingSetup');
+					var grp = ts.p.groupingView, gi, gs="";
+					for(gi=0;gi<grp.groupField.length;gi++) {
+						var index = grp.groupField[gi];
+						$.each(ts.p.colModel, function(cmIndex, cmValue) {
+							if (cmValue.name === index && cmValue.index){
+								index = cmValue.index;
+							}
+						} );
+						gs += index +" "+grp.groupOrder[gi]+", ";
+					}
+					prm[pN.sort] = gs + prm[pN.sort];
+				}
+				$.extend(ts.p.postData,prm);
+				var rcnt = !ts.p.scroll ? 1 : ts.rows.length-1;
+				var bfr = $(ts).triggerHandler("jqGridBeforeRequest");
+				if (bfr === false || bfr === 'stop') { return; }
+				if ($.isFunction(ts.p.datatype)) { ts.p.datatype.call(ts,ts.p.postData,"load_"+ts.p.id, rcnt, npage, adjust); return;}
+				if ($.isFunction(ts.p.beforeRequest)) {
+					bfr = ts.p.beforeRequest.call(ts);
+					if(bfr === undefined) { bfr = true; }
+					if ( bfr === false ) { return; }
+				}
+				dt = ts.p.datatype.toLowerCase();
+				switch(dt)
+				{
+				case "json":
+				case "jsonp":
+				case "xml":
+				case "script":
+					$.ajax($.extend({
+						url:ts.p.url,
+						type:ts.p.mtype,
+						dataType: dt ,
+						data: $.isFunction(ts.p.serializeGridData)? ts.p.serializeGridData.call(ts,ts.p.postData) : ts.p.postData,
+						success:function(data,st, xhr) {
+							if ($.isFunction(ts.p.beforeProcessing)) {
+								if (ts.p.beforeProcessing.call(ts, data, st, xhr) === false) {
+									endReq();
+									return;
+								}
+							}
+							if(dt === "xml") { addXmlData(data,ts.grid.bDiv,rcnt,npage>1,adjust); }
+							else { addJSONData(data,ts.grid.bDiv,rcnt,npage>1,adjust); }
+							$(ts).triggerHandler("jqGridLoadComplete", [data]);
+							if(lc) { lc.call(ts,data); }
+							$(ts).triggerHandler("jqGridAfterLoadComplete", [data]);
+							if (pvis) { ts.grid.populateVisible(); }
+							if( ts.p.loadonce || ts.p.treeGrid) {ts.p.datatype = "local";}
+							data=null;
+							if (npage === 1) { endReq(); }
+						},
+						error:function(xhr,st,err){
+							if($.isFunction(ts.p.loadError)) { ts.p.loadError.call(ts,xhr,st,err); }
+							if (npage === 1) { endReq(); }
+							xhr=null;
+						},
+						beforeSend: function(xhr, settings ){
+							var gotoreq = true;
+							if($.isFunction(ts.p.loadBeforeSend)) {
+								gotoreq = ts.p.loadBeforeSend.call(ts,xhr, settings); 
+							}
+							if(gotoreq === undefined) { gotoreq = true; }
+							if(gotoreq === false) {
+								return false;
+							}
+								beginReq();
+							}
+					},$.jgrid.ajaxOptions, ts.p.ajaxGridOptions));
+				break;
+				case "xmlstring":
+					beginReq();
+					dstr = typeof ts.p.datastr !== 'string' ? ts.p.datastr : $.parseXML(ts.p.datastr);
+					addXmlData(dstr,ts.grid.bDiv);
+					$(ts).triggerHandler("jqGridLoadComplete", [dstr]);
+					if(lcf) {ts.p.loadComplete.call(ts,dstr);}
+					$(ts).triggerHandler("jqGridAfterLoadComplete", [dstr]);
+					ts.p.datatype = "local";
+					ts.p.datastr = null;
+					endReq();
+				break;
+				case "jsonstring":
+					beginReq();
+					if(typeof ts.p.datastr === 'string') { dstr = $.jgrid.parse(ts.p.datastr); }
+					else { dstr = ts.p.datastr; }
+					addJSONData(dstr,ts.grid.bDiv);
+					$(ts).triggerHandler("jqGridLoadComplete", [dstr]);
+					if(lcf) {ts.p.loadComplete.call(ts,dstr);}
+					$(ts).triggerHandler("jqGridAfterLoadComplete", [dstr]);
+					ts.p.datatype = "local";
+					ts.p.datastr = null;
+					endReq();
+				break;
+				case "local":
+				case "clientside":
+					beginReq();
+					ts.p.datatype = "local";
+					var req = addLocalData();
+					addJSONData(req,ts.grid.bDiv,rcnt,npage>1,adjust);
+					$(ts).triggerHandler("jqGridLoadComplete", [req]);
+					if(lc) { lc.call(ts,req); }
+					$(ts).triggerHandler("jqGridAfterLoadComplete", [req]);
+					if (pvis) { ts.grid.populateVisible(); }
+					endReq();
+				break;
+				}
+			}
+		},
+		setHeadCheckBox = function ( checked ) {
+			$('#cb_'+$.jgrid.jqID(ts.p.id),ts.grid.hDiv)[ts.p.useProp ? 'prop': 'attr']("checked", checked);
+			var fid = ts.p.frozenColumns ? ts.p.id+"_frozen" : "";
+			if(fid) {
+				$('#cb_'+$.jgrid.jqID(ts.p.id),ts.grid.fhDiv)[ts.p.useProp ? 'prop': 'attr']("checked", checked);
+			}
+		},
+		setPager = function (pgid, tp){
+			// TBD - consider escaping pgid with pgid = $.jgrid.jqID(pgid);
+			var sep = "<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='ui-separator'></span></td>",
+			pginp = "",
+			pgl="<table cellspacing='0' cellpadding='0' border='0' style='table-layout:auto;' class='ui-pg-table'><tbody><tr>",
+			str="", pgcnt, lft, cent, rgt, twd, tdw, i,
+			clearVals = function(onpaging){
+				var ret;
+				if ($.isFunction(ts.p.onPaging) ) { ret = ts.p.onPaging.call(ts,onpaging); }
+				if(ret==='stop') {return false;}
+				ts.p.selrow = null;
+				if(ts.p.multiselect) {ts.p.selarrrow =[]; setHeadCheckBox( false );}
+				ts.p.savedRow = [];
+				return true;
+			};
+			pgid = pgid.substr(1);
+			tp += "_" + pgid;
+			pgcnt = "pg_"+pgid;
+			lft = pgid+"_left"; cent = pgid+"_center"; rgt = pgid+"_right";
+			$("#"+$.jgrid.jqID(pgid) )
+			.append("<div id='"+pgcnt+"' class='ui-pager-control' role='group'><table cellspacing='0' cellpadding='0' border='0' class='ui-pg-table' style='width:100%;table-layout:fixed;height:100%;' role='row'><tbody><tr><td id='"+lft+"' align='left'></td><td id='"+cent+"' align='center' style='white-space:pre;'></td><td id='"+rgt+"' align='right'></td></tr></tbody></table></div>")
+			.attr("dir","ltr"); //explicit setting
+			if(ts.p.rowList.length >0){
+				str = "<td dir='"+dir+"'>";
+				str +="<select class='ui-pg-selbox' role='listbox' " + (ts.p.pgrecs ? "title='"+ts.p.pgrecs +"'" : "")+ ">";
+				var strnm;
+				for(i=0;i<ts.p.rowList.length;i++){
+					strnm = ts.p.rowList[i].toString().split(":");
+					if(strnm.length === 1) {
+						strnm[1] = strnm[0];
+					}
+					str +="<option role=\"option\" value=\""+strnm[0]+"\""+(( intNum(ts.p.rowNum,0) === intNum(strnm[0],0))?" selected=\"selected\"":"")+">"+strnm[1]+"</option>";
+				}
+				str +="</select></td>";
+			}
+			if(dir==="rtl") { pgl += str; }
+			if(ts.p.pginput===true) { pginp= "<td dir='"+dir+"'>"+$.jgrid.format(ts.p.pgtext || "","<input class='ui-pg-input' type='text' size='2' maxlength='7' value='0' role='textbox'/>","<span id='sp_1_"+$.jgrid.jqID(pgid)+"'></span>")+"</td>";}
+			if(ts.p.pgbuttons===true) {
+				var po=["first"+tp,"prev"+tp, "next"+tp,"last"+tp]; if(dir==="rtl") { po.reverse(); }
+				pgl += "<td id='"+po[0]+"' class='ui-pg-button ui-corner-all' " + (ts.p.pgfirst ? "title='"+ts.p.pgfirst +"'" : "")+"><span class='ui-icon ui-icon-seek-first'></span></td>";
+				pgl += "<td id='"+po[1]+"' class='ui-pg-button ui-corner-all' " + (ts.p.pgprev ? "title='"+ts.p.pgprev +"'" : "")+"><span class='ui-icon ui-icon-seek-prev'></span></td>";
+				pgl += pginp !== "" ? sep+pginp+sep:"";
+				pgl += "<td id='"+po[2]+"' class='ui-pg-button ui-corner-all' " + (ts.p.pgnext ? "title='"+ts.p.pgnext +"'" : "")+"><span class='ui-icon ui-icon-seek-next'></span></td>";
+				pgl += "<td id='"+po[3]+"' class='ui-pg-button ui-corner-all' " + (ts.p.pglast ? "title='"+ts.p.pglast +"'" : "")+"><span class='ui-icon ui-icon-seek-end'></span></td>";
+			} else if (pginp !== "") { pgl += pginp; }
+			if(dir==="ltr") { pgl += str; }
+			pgl += "</tr></tbody></table>";
+			if(ts.p.viewrecords===true) {$("td#"+pgid+"_"+ts.p.recordpos,"#"+pgcnt).append("<div dir='"+dir+"' style='text-align:"+ts.p.recordpos+"' class='ui-paging-info'></div>");}
+			$("td#"+pgid+"_"+ts.p.pagerpos,"#"+pgcnt).append(pgl);
+			tdw = $(".ui-jqgrid").css("font-size") || "11px";
+			$(document.body).append("<div id='testpg' class='ui-jqgrid ui-widget ui-widget-content' style='font-size:"+tdw+";visibility:hidden;' ></div>");
+			twd = $(pgl).clone().appendTo("#testpg").width();
+			$("#testpg").remove();
+			if(twd > 0) {
+				if(pginp !== "") { twd += 50; } //should be param
+				$("td#"+pgid+"_"+ts.p.pagerpos,"#"+pgcnt).width(twd);
+			}
+			ts.p._nvtd = [];
+			ts.p._nvtd[0] = twd ? Math.floor((ts.p.width - twd)/2) : Math.floor(ts.p.width/3);
+			ts.p._nvtd[1] = 0;
+			pgl=null;
+			$('.ui-pg-selbox',"#"+pgcnt).bind('change',function() {
+				if(!clearVals('records')) { return false; }
+				ts.p.page = Math.round(ts.p.rowNum*(ts.p.page-1)/this.value-0.5)+1;
+				ts.p.rowNum = this.value;
+				if(ts.p.pager) { $('.ui-pg-selbox',ts.p.pager).val(this.value); }
+				if(ts.p.toppager) { $('.ui-pg-selbox',ts.p.toppager).val(this.value); }
+				populate();
+				return false;
+			});
+			if(ts.p.pgbuttons===true) {
+			$(".ui-pg-button","#"+pgcnt).hover(function(){
+				if($(this).hasClass('ui-state-disabled')) {
+					this.style.cursor='default';
+				} else {
+					$(this).addClass('ui-state-hover');
+					this.style.cursor='pointer';
+				}
+			},function() {
+				if(!$(this).hasClass('ui-state-disabled')) {
+					$(this).removeClass('ui-state-hover');
+					this.style.cursor= "default";
+				}
+			});
+			$("#first"+$.jgrid.jqID(tp)+", #prev"+$.jgrid.jqID(tp)+", #next"+$.jgrid.jqID(tp)+", #last"+$.jgrid.jqID(tp)).click( function() {
+				if ($(this).hasClass("ui-state-disabled")) {
+					return false;
+				}
+				var cp = intNum(ts.p.page,1),
+				last = intNum(ts.p.lastpage,1), selclick = false,
+				fp=true, pp=true, np=true,lp=true;
+				if(last ===0 || last===1) {fp=false;pp=false;np=false;lp=false; }
+				else if( last>1 && cp >=1) {
+					if( cp === 1) { fp=false; pp=false; }
+					//else if( cp>1 && cp <last){ }
+					else if( cp===last){ np=false;lp=false; }
+				} else if( last>1 && cp===0 ) { np=false;lp=false; cp=last-1;}
+				if(!clearVals(this.id)) { return false; }
+				if( this.id === 'first'+tp && fp ) { ts.p.page=1; selclick=true;}
+				if( this.id === 'prev'+tp && pp) { ts.p.page=(cp-1); selclick=true;}
+				if( this.id === 'next'+tp && np) { ts.p.page=(cp+1); selclick=true;}
+				if( this.id === 'last'+tp && lp) { ts.p.page=last; selclick=true;}
+				if(selclick) {
+					populate();
+				}
+				return false;
+			});
+			}
+			if(ts.p.pginput===true) {
+			$('input.ui-pg-input',"#"+pgcnt).keypress( function(e) {
+				var key = e.charCode || e.keyCode || 0;
+				if(key === 13) {
+					if(!clearVals('user')) { return false; }
+					$(this).val( intNum( $(this).val(), 1));
+					ts.p.page = ($(this).val()>0) ? $(this).val():ts.p.page;
+					populate();
+					return false;
+				}
+				return this;
+			});
+			}
+		},
+		multiSort = function(iCol, obj ) {
+			var splas, sort="", cm = ts.p.colModel, fs=false, ls, 
+					selTh = ts.p.frozenColumns ?  obj : ts.grid.headers[iCol].el, so="";
+			$("span.ui-grid-ico-sort",selTh).addClass('ui-state-disabled');
+			$(selTh).attr("aria-selected","false");
+
+			if(cm[iCol].lso) {
+				if(cm[iCol].lso==="asc") {
+					cm[iCol].lso += "-desc";
+					so = "desc";
+				} else if(cm[iCol].lso==="desc") {
+					cm[iCol].lso += "-asc";
+					so = "asc";
+				} else if(cm[iCol].lso==="asc-desc" || cm[iCol].lso==="desc-asc") {
+					cm[iCol].lso="";
+				}
+			} else {
+				cm[iCol].lso = so = cm[iCol].firstsortorder || 'asc';
+			}
+			if( so ) {
+				$("span.s-ico",selTh).show();
+				$("span.ui-icon-"+so,selTh).removeClass('ui-state-disabled');
+				$(selTh).attr("aria-selected","true");
+			} else {
+				if(!ts.p.viewsortcols[0]) {
+					$("span.s-ico",selTh).hide();
+				}
+			}
+			ts.p.sortorder = "";
+			$.each(cm, function(i){
+				if(this.lso) {
+					if(i>0 && fs) {
+						sort += ", ";
+					}
+					splas = this.lso.split("-");
+					sort += cm[i].index || cm[i].name;
+					sort += " "+splas[splas.length-1];
+					fs = true;
+					ts.p.sortorder = splas[splas.length-1];
+				}
+			});
+			ls = sort.lastIndexOf(ts.p.sortorder);
+			sort = sort.substring(0, ls);
+			ts.p.sortname = sort;
+		},
+		sortData = function (index, idxcol,reload,sor, obj){
+			if(!ts.p.colModel[idxcol].sortable) { return; }
+			if(ts.p.savedRow.length > 0) {return;}
+			if(!reload) {
+				if( ts.p.lastsort === idxcol && ts.p.sortname !== "" ) {
+					if( ts.p.sortorder === 'asc') {
+						ts.p.sortorder = 'desc';
+					} else if(ts.p.sortorder === 'desc') { ts.p.sortorder = 'asc';}
+				} else { ts.p.sortorder = ts.p.colModel[idxcol].firstsortorder || 'asc'; }
+				ts.p.page = 1;
+			}
+			if(ts.p.multiSort) {
+				multiSort( idxcol, obj);
+			} else {
+				if(sor) {
+					if(ts.p.lastsort === idxcol && ts.p.sortorder === sor && !reload) { return; }
+					ts.p.sortorder = sor;
+				}
+				var previousSelectedTh = ts.grid.headers[ts.p.lastsort].el, newSelectedTh = ts.p.frozenColumns ?  obj : ts.grid.headers[idxcol].el;
+
+				$("span.ui-grid-ico-sort",previousSelectedTh).addClass('ui-state-disabled');
+				$(previousSelectedTh).attr("aria-selected","false");
+				if(ts.p.frozenColumns) {
+					ts.grid.fhDiv.find("span.ui-grid-ico-sort").addClass('ui-state-disabled');
+					ts.grid.fhDiv.find("th").attr("aria-selected","false");
+				}
+				$("span.ui-icon-"+ts.p.sortorder,newSelectedTh).removeClass('ui-state-disabled');
+				$(newSelectedTh).attr("aria-selected","true");
+				if(!ts.p.viewsortcols[0]) {
+					if(ts.p.lastsort !== idxcol) {
+						if(ts.p.frozenColumns){
+							ts.grid.fhDiv.find("span.s-ico").hide();
+						}
+						$("span.s-ico",previousSelectedTh).hide();
+						$("span.s-ico",newSelectedTh).show();
+					} else if (ts.p.sortname === "") { // if ts.p.lastsort === idxcol but ts.p.sortname === ""
+						$("span.s-ico",newSelectedTh).show();
+					}
+				}
+				index = index.substring(5 + ts.p.id.length + 1); // bad to be changed!?!
+				ts.p.sortname = ts.p.colModel[idxcol].index || index;
+			}
+			if ($(ts).triggerHandler("jqGridSortCol", [ts.p.sortname, idxcol, ts.p.sortorder]) === 'stop') {
+				ts.p.lastsort = idxcol;
+				return;
+			}
+			if($.isFunction(ts.p.onSortCol)) {if (ts.p.onSortCol.call(ts, ts.p.sortname, idxcol, ts.p.sortorder)==='stop') {ts.p.lastsort = idxcol; return;}}
+			if(ts.p.datatype === "local") {
+				if(ts.p.deselectAfterSort) {$(ts).jqGrid("resetSelection");}
+			} else {
+				ts.p.selrow = null;
+				if(ts.p.multiselect){setHeadCheckBox( false );}
+				ts.p.selarrrow =[];
+				ts.p.savedRow =[];
+			}
+			if(ts.p.scroll) {
+				var sscroll = ts.grid.bDiv.scrollLeft;
+				emptyRows.call(ts, true, false);
+				ts.grid.hDiv.scrollLeft = sscroll;
+			}
+			if(ts.p.subGrid && ts.p.datatype === 'local') {
+				$("td.sgexpanded","#"+$.jgrid.jqID(ts.p.id)).each(function(){
+					$(this).trigger("click");
+				});
+			}
+			populate();
+			ts.p.lastsort = idxcol;
+			if(ts.p.sortname !== index && idxcol) {ts.p.lastsort = idxcol;}
+		},
+		setColWidth = function () {
+			var initwidth = 0, brd=$.jgrid.cell_width? 0: intNum(ts.p.cellLayout,0), vc=0, lvc, scw=intNum(ts.p.scrollOffset,0),cw,hs=false,aw,gw=0,cr;
+			$.each(ts.p.colModel, function() {
+				if(this.hidden === undefined) {this.hidden=false;}
+				if(ts.p.grouping && ts.p.autowidth) {
+					var ind = $.inArray(this.name, ts.p.groupingView.groupField);
+					if(ind >= 0 && ts.p.groupingView.groupColumnShow.length > ind) {
+						this.hidden = !ts.p.groupingView.groupColumnShow[ind];
+					}
+				}
+				this.widthOrg = cw = intNum(this.width,0);
+				if(this.hidden===false){
+					initwidth += cw+brd;
+					if(this.fixed) {
+						gw += cw+brd;
+					} else {
+						vc++;
+					}
+				}
+			});
+			if(isNaN(ts.p.width)) {
+				ts.p.width  = initwidth + ((ts.p.shrinkToFit ===false && !isNaN(ts.p.height)) ? scw : 0);
+			}
+			grid.width = ts.p.width;
+			ts.p.tblwidth = initwidth;
+			if(ts.p.shrinkToFit ===false && ts.p.forceFit === true) {ts.p.forceFit=false;}
+			if(ts.p.shrinkToFit===true && vc > 0) {
+				aw = grid.width-brd*vc-gw;
+				if(!isNaN(ts.p.height)) {
+					aw -= scw;
+					hs = true;
+				}
+				initwidth =0;
+				$.each(ts.p.colModel, function(i) {
+					if(this.hidden === false && !this.fixed){
+						cw = Math.round(aw*this.width/(ts.p.tblwidth-brd*vc-gw));
+						this.width =cw;
+						initwidth += cw;
+						lvc = i;
+					}
+				});
+				cr =0;
+				if (hs) {
+					if(grid.width-gw-(initwidth+brd*vc) !== scw){
+						cr = grid.width-gw-(initwidth+brd*vc)-scw;
+					}
+				} else if(!hs && Math.abs(grid.width-gw-(initwidth+brd*vc)) !== 1) {
+					cr = grid.width-gw-(initwidth+brd*vc);
+				}
+				ts.p.colModel[lvc].width += cr;
+				ts.p.tblwidth = initwidth+cr+brd*vc+gw;
+				if(ts.p.tblwidth > ts.p.width) {
+					ts.p.colModel[lvc].width -= (ts.p.tblwidth - parseInt(ts.p.width,10));
+					ts.p.tblwidth = ts.p.width;
+				}
+			}
+		},
+		nextVisible= function(iCol) {
+			var ret = iCol, j=iCol, i;
+			for (i = iCol+1;i<ts.p.colModel.length;i++){
+				if(ts.p.colModel[i].hidden !== true ) {
+					j=i; break;
+				}
+			}
+			return j-ret;
+		},
+		getOffset = function (iCol) {
+			var $th = $(ts.grid.headers[iCol].el), ret = [$th.position().left + $th.outerWidth()];
+			if(ts.p.direction==="rtl") { ret[0] = ts.p.width - ret[0]; }
+			ret[0] -= ts.grid.bDiv.scrollLeft;
+			ret.push($(ts.grid.hDiv).position().top);
+			ret.push($(ts.grid.bDiv).offset().top - $(ts.grid.hDiv).offset().top + $(ts.grid.bDiv).height());
+			return ret;
+		},
+		getColumnHeaderIndex = function (th) {
+			var i, headers = ts.grid.headers, ci = $.jgrid.getCellIndex(th);
+			for (i = 0; i < headers.length; i++) {
+				if (th === headers[i].el) {
+					ci = i;
+					break;
+				}
+			}
+			return ci;
+		},
+		colTemplate;
+		this.p.id = this.id;
+		if ($.inArray(ts.p.multikey,sortkeys) === -1 ) {ts.p.multikey = false;}
+		ts.p.keyName=false;
+		for (i=0; i<ts.p.colModel.length;i++) {
+			colTemplate = typeof ts.p.colModel[i].template === "string" ?
+				($.jgrid.cmTemplate != null && typeof $.jgrid.cmTemplate[ts.p.colModel[i].template] === "object" ? $.jgrid.cmTemplate[ts.p.colModel[i].template]: {}) :
+				ts.p.colModel[i].template;
+			ts.p.colModel[i] = $.extend(true, {}, ts.p.cmTemplate, colTemplate || {}, ts.p.colModel[i]);
+			if (ts.p.keyName === false && ts.p.colModel[i].key===true) {
+				ts.p.keyName = ts.p.colModel[i].name;
+			}
+		}
+		ts.p.sortorder = ts.p.sortorder.toLowerCase();
+		$.jgrid.cell_width = $.jgrid.cellWidth();
+		if(ts.p.grouping===true) {
+			ts.p.scroll = false;
+			ts.p.rownumbers = false;
+			//ts.p.subGrid = false; expiremental
+			ts.p.treeGrid = false;
+			ts.p.gridview = true;
+		}
+		if(this.p.treeGrid === true) {
+			try { $(this).jqGrid("setTreeGrid");} catch (_) {}
+			if(ts.p.datatype !== "local") { ts.p.localReader = {id: "_id_"};	}
+		}
+		if(this.p.subGrid) {
+			try { $(ts).jqGrid("setSubGrid");} catch (s){}
+		}
+		if(this.p.multiselect) {
+			this.p.colNames.unshift("<input role='checkbox' id='cb_"+this.p.id+"' class='cbox' type='checkbox'/>");
+			this.p.colModel.unshift({name:'cb',width:$.jgrid.cell_width ? ts.p.multiselectWidth+ts.p.cellLayout : ts.p.multiselectWidth,sortable:false,resizable:false,hidedlg:true,search:false,align:'center',fixed:true});
+		}
+		if(this.p.rownumbers) {
+			this.p.colNames.unshift("");
+			this.p.colModel.unshift({name:'rn',width:ts.p.rownumWidth,sortable:false,resizable:false,hidedlg:true,search:false,align:'center',fixed:true});
+		}
+		ts.p.xmlReader = $.extend(true,{
+			root: "rows",
+			row: "row",
+			page: "rows>page",
+			total: "rows>total",
+			records : "rows>records",
+			repeatitems: true,
+			cell: "cell",
+			id: "[id]",
+			userdata: "userdata",
+			subgrid: {root:"rows", row: "row", repeatitems: true, cell:"cell"}
+		}, ts.p.xmlReader);
+		ts.p.jsonReader = $.extend(true,{
+			root: "rows",
+			page: "page",
+			total: "total",
+			records: "records",
+			repeatitems: true,
+			cell: "cell",
+			id: "id",
+			userdata: "userdata",
+			subgrid: {root:"rows", repeatitems: true, cell:"cell"}
+		},ts.p.jsonReader);
+		ts.p.localReader = $.extend(true,{
+			root: "rows",
+			page: "page",
+			total: "total",
+			records: "records",
+			repeatitems: false,
+			cell: "cell",
+			id: "id",
+			userdata: "userdata",
+			subgrid: {root:"rows", repeatitems: true, cell:"cell"}
+		},ts.p.localReader);
+		if(ts.p.scroll){
+			ts.p.pgbuttons = false; ts.p.pginput=false; ts.p.rowList=[];
+		}
+		if(ts.p.data.length) { normalizeData(); refreshIndex(); }
+		var thead = "<thead><tr class='ui-jqgrid-labels' role='row'>",
+		tdc, idn, w, res, sort,
+		td, ptr, tbody, imgs,iac="",idc="",sortarr=[], sortord=[], sotmp=[];
+		if(ts.p.shrinkToFit===true && ts.p.forceFit===true) {
+			for (i=ts.p.colModel.length-1;i>=0;i--){
+				if(!ts.p.colModel[i].hidden) {
+					ts.p.colModel[i].resizable=false;
+					break;
+				}
+			}
+		}
+		if(ts.p.viewsortcols[1] === 'horizontal') {iac=" ui-i-asc";idc=" ui-i-desc";}
+		tdc = isMSIE ?  "class='ui-th-div-ie'" :"";
+		imgs = "<span class='s-ico' style='display:none'><span sort='asc' class='ui-grid-ico-sort ui-icon-asc"+iac+" ui-state-disabled ui-icon ui-icon-triangle-1-n ui-sort-"+dir+"'></span>";
+		imgs += "<span sort='desc' class='ui-grid-ico-sort ui-icon-desc"+idc+" ui-state-disabled ui-icon ui-icon-triangle-1-s ui-sort-"+dir+"'></span></span>";
+		if(ts.p.multiSort) {
+			sortarr = ts.p.sortname.split(",");
+			for (i=0; i<sortarr.length; i++) {
+				sotmp = $.trim(sortarr[i]).split(" ");
+				sortarr[i] = $.trim(sotmp[0]);
+				sortord[i] = sotmp[1] ? $.trim(sotmp[1]) : ts.p.sortorder || "asc";
+			}
+		}
+		for(i=0;i<this.p.colNames.length;i++){
+			var tooltip = ts.p.headertitles ? (" title=\""+$.jgrid.stripHtml(ts.p.colNames[i])+"\"") :"";
+			thead += "<th id='"+ts.p.id+"_"+ts.p.colModel[i].name+"' role='columnheader' class='ui-state-default ui-th-column ui-th-"+dir+"'"+ tooltip+">";
+			idn = ts.p.colModel[i].index || ts.p.colModel[i].name;
+			thead += "<div id='jqgh_"+ts.p.id+"_"+ts.p.colModel[i].name+"' "+tdc+">"+ts.p.colNames[i];
+			if(!ts.p.colModel[i].width)  { ts.p.colModel[i].width = 150; }
+			else { ts.p.colModel[i].width = parseInt(ts.p.colModel[i].width,10); }
+			if(typeof ts.p.colModel[i].title !== "boolean") { ts.p.colModel[i].title = true; }
+			ts.p.colModel[i].lso = "";
+			if (idn === ts.p.sortname) {
+				ts.p.lastsort = i;
+			}
+			if(ts.p.multiSort) {
+				sotmp = $.inArray(idn,sortarr);
+				if( sotmp !== -1 ) {
+					ts.p.colModel[i].lso = sortord[sotmp];
+				}
+			}
+			thead += imgs+"</div></th>";
+		}
+		thead += "</tr></thead>";
+		imgs = null;
+		$(this).append(thead);
+		$("thead tr:first th",this).hover(function(){$(this).addClass('ui-state-hover');},function(){$(this).removeClass('ui-state-hover');});
+		if(this.p.multiselect) {
+			var emp=[], chk;
+			$('#cb_'+$.jgrid.jqID(ts.p.id),this).bind('click',function(){
+				ts.p.selarrrow = [];
+				var froz = ts.p.frozenColumns === true ? ts.p.id + "_frozen" : "";
+				if (this.checked) {
+					$(ts.rows).each(function(i) {
+						if (i>0) {
+							if(!$(this).hasClass("ui-subgrid") && !$(this).hasClass("jqgroup") && !$(this).hasClass('ui-state-disabled') && !$(this).hasClass("jqfoot")){
+								$("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id) )[ts.p.useProp ? 'prop': 'attr']("checked",true);
+								$(this).addClass("ui-state-highlight").attr("aria-selected","true");  
+								ts.p.selarrrow.push(this.id);
+								ts.p.selrow = this.id;
+								if(froz) {
+									$("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id), ts.grid.fbDiv )[ts.p.useProp ? 'prop': 'attr']("checked",true);
+									$("#"+$.jgrid.jqID(this.id), ts.grid.fbDiv).addClass("ui-state-highlight");
+								}
+							}
+						}
+					});
+					chk=true;
+					emp=[];
+				}
+				else {
+					$(ts.rows).each(function(i) {
+						if(i>0) {
+							if(!$(this).hasClass("ui-subgrid") && !$(this).hasClass("jqgroup") && !$(this).hasClass('ui-state-disabled') && !$(this).hasClass("jqfoot")){
+								$("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id) )[ts.p.useProp ? 'prop': 'attr']("checked", false);
+								$(this).removeClass("ui-state-highlight").attr("aria-selected","false");
+								emp.push(this.id);
+								if(froz) {
+									$("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id), ts.grid.fbDiv )[ts.p.useProp ? 'prop': 'attr']("checked",false);
+									$("#"+$.jgrid.jqID(this.id), ts.grid.fbDiv).removeClass("ui-state-highlight");
+								}
+							}
+						}
+					});
+					ts.p.selrow = null;
+					chk=false;
+				}
+				$(ts).triggerHandler("jqGridSelectAll", [chk ? ts.p.selarrrow : emp, chk]);
+				if($.isFunction(ts.p.onSelectAll)) {ts.p.onSelectAll.call(ts, chk ? ts.p.selarrrow : emp,chk);}
+			});
+		}
+
+		if(ts.p.autowidth===true) {
+			var pw = $(eg).innerWidth();
+			ts.p.width = pw > 0?  pw: 'nw';
+		}
+		setColWidth();
+		$(eg).css("width",grid.width+"px").append("<div class='ui-jqgrid-resize-mark' id='rs_m"+ts.p.id+"'>&#160;</div>");
+		$(gv).css("width",grid.width+"px");
+		thead = $("thead:first",ts).get(0);
+		var	tfoot = "";
+		if(ts.p.footerrow) { tfoot += "<table role='presentation' style='width:"+ts.p.tblwidth+"px' class='ui-jqgrid-ftable' cellspacing='0' cellpadding='0' border='0'><tbody><tr role='row' class='ui-widget-content footrow footrow-"+dir+"'>"; }
+		var thr = $("tr:first",thead),
+		firstr = "<tr class='jqgfirstrow' role='row' style='height:auto'>";
+		ts.p.disableClick=false;
+		$("th",thr).each(function ( j ) {
+			w = ts.p.colModel[j].width;
+			if(ts.p.colModel[j].resizable === undefined) {ts.p.colModel[j].resizable = true;}
+			if(ts.p.colModel[j].resizable){
+				res = document.createElement("span");
+				$(res).html("&#160;").addClass('ui-jqgrid-resize ui-jqgrid-resize-'+dir)
+				.css("cursor","col-resize");
+				$(this).addClass(ts.p.resizeclass);
+			} else {
+				res = "";
+			}
+			$(this).css("width",w+"px").prepend(res);
+			res = null;
+			var hdcol = "";
+			if( ts.p.colModel[j].hidden ) {
+				$(this).css("display","none");
+				hdcol = "display:none;";
+			}
+			firstr += "<td role='gridcell' style='height:0px;width:"+w+"px;"+hdcol+"'></td>";
+			grid.headers[j] = { width: w, el: this };
+			sort = ts.p.colModel[j].sortable;
+			if( typeof sort !== 'boolean') {ts.p.colModel[j].sortable =  true; sort=true;}
+			var nm = ts.p.colModel[j].name;
+			if( !(nm === 'cb' || nm==='subgrid' || nm==='rn') ) {
+				if(ts.p.viewsortcols[2]){
+					$(">div",this).addClass('ui-jqgrid-sortable');
+				}
+			}
+			if(sort) {
+				if(ts.p.multiSort) {
+					if(ts.p.viewsortcols[0]) {
+						$("div span.s-ico",this).show(); 
+						if(ts.p.colModel[j].lso){ 
+							$("div span.ui-icon-"+ts.p.colModel[j].lso,this).removeClass("ui-state-disabled");
+						}
+					} else if( ts.p.colModel[j].lso) {
+						$("div span.s-ico",this).show();
+						$("div span.ui-icon-"+ts.p.colModel[j].lso,this).removeClass("ui-state-disabled");
+					}
+				} else {
+					if(ts.p.viewsortcols[0]) {$("div span.s-ico",this).show(); if(j===ts.p.lastsort){ $("div span.ui-icon-"+ts.p.sortorder,this).removeClass("ui-state-disabled");}}
+					else if(j === ts.p.lastsort && ts.p.sortname !== "") {$("div span.s-ico",this).show();$("div span.ui-icon-"+ts.p.sortorder,this).removeClass("ui-state-disabled");}
+				}
+			}
+			if(ts.p.footerrow) { tfoot += "<td role='gridcell' "+formatCol(j,0,'', null, '', false)+">&#160;</td>"; }
+		}).mousedown(function(e) {
+			if ($(e.target).closest("th>span.ui-jqgrid-resize").length !== 1) { return; }
+			var ci = getColumnHeaderIndex(this);
+			if(ts.p.forceFit===true) {ts.p.nv= nextVisible(ci);}
+			grid.dragStart(ci, e, getOffset(ci));
+			return false;
+		}).click(function(e) {
+			if (ts.p.disableClick) {
+				ts.p.disableClick = false;
+				return false;
+			}
+			var s = "th>div.ui-jqgrid-sortable",r,d;
+			if (!ts.p.viewsortcols[2]) { s = "th>div>span>span.ui-grid-ico-sort"; }
+			var t = $(e.target).closest(s);
+			if (t.length !== 1) { return; }
+			var ci;
+			if(ts.p.frozenColumns) {
+				var tid =  $(this)[0].id.substring( ts.p.id.length + 1 );
+				$(ts.p.colModel).each(function(i){
+					if (this.name === tid) {
+						ci = i;return false;
+					}
+				});
+			} else {
+				ci = getColumnHeaderIndex(this);
+			}
+			if (!ts.p.viewsortcols[2]) { r=true;d=t.attr("sort"); }
+			if(ci != null){
+				sortData( $('div',this)[0].id, ci, r, d, this);
+			}
+			return false;
+		});
+		if (ts.p.sortable && $.fn.sortable) {
+			try {
+				$(ts).jqGrid("sortableColumns", thr);
+			} catch (e){}
+		}
+		if(ts.p.footerrow) { tfoot += "</tr></tbody></table>"; }
+		firstr += "</tr>";
+		tbody = document.createElement("tbody");
+		this.appendChild(tbody);
+		$(this).addClass('ui-jqgrid-btable').append(firstr);
+		firstr = null;
+		var hTable = $("<table class='ui-jqgrid-htable' style='width:"+ts.p.tblwidth+"px' role='presentation' aria-labelledby='gbox_"+this.id+"' cellspacing='0' cellpadding='0' border='0'></table>").append(thead),
+		hg = (ts.p.caption && ts.p.hiddengrid===true) ? true : false,
+		hb = $("<div class='ui-jqgrid-hbox" + (dir==="rtl" ? "-rtl" : "" )+"'></div>");
+		thead = null;
+		grid.hDiv = document.createElement("div");
+		$(grid.hDiv)
+			.css({ width: grid.width+"px"})
+			.addClass("ui-state-default ui-jqgrid-hdiv")
+			.append(hb);
+		$(hb).append(hTable);
+		hTable = null;
+		if(hg) { $(grid.hDiv).hide(); }
+		if(ts.p.pager){
+			// TBD -- escape ts.p.pager here?
+			if(typeof ts.p.pager === "string") {if(ts.p.pager.substr(0,1) !== "#") { ts.p.pager = "#"+ts.p.pager;} }
+			else { ts.p.pager = "#"+ $(ts.p.pager).attr("id");}
+			$(ts.p.pager).css({width: grid.width+"px"}).addClass('ui-state-default ui-jqgrid-pager ui-corner-bottom').appendTo(eg);
+			if(hg) {$(ts.p.pager).hide();}
+			setPager(ts.p.pager,'');
+		}
+		if( ts.p.cellEdit === false && ts.p.hoverrows === true) {
+		$(ts).bind('mouseover',function(e) {
+			ptr = $(e.target).closest("tr.jqgrow");
+			if($(ptr).attr("class") !== "ui-subgrid") {
+				$(ptr).addClass("ui-state-hover");
+			}
+		}).bind('mouseout',function(e) {
+			ptr = $(e.target).closest("tr.jqgrow");
+			$(ptr).removeClass("ui-state-hover");
+		});
+		}
+		var ri,ci, tdHtml;
+		$(ts).before(grid.hDiv).click(function(e) {
+			td = e.target;
+			ptr = $(td,ts.rows).closest("tr.jqgrow");
+			if($(ptr).length === 0 || ptr[0].className.indexOf( 'ui-state-disabled' ) > -1 || ($(td,ts).closest("table.ui-jqgrid-btable").attr('id') || '').replace("_frozen","") !== ts.id ) {
+				return this;
+			}
+			var scb = $(td).hasClass("cbox"),
+			cSel = $(ts).triggerHandler("jqGridBeforeSelectRow", [ptr[0].id, e]);
+			cSel = (cSel === false || cSel === 'stop') ? false : true;
+			if ($.isFunction(ts.p.beforeSelectRow)) {
+				 var allowRowSelect = ts.p.beforeSelectRow.call(ts, ptr[0].id, e);
+				 if (allowRowSelect === false || allowRowSelect === 'stop') {
+				 	cSel = false;
+				 }
+			}
+			if (td.tagName === 'A' || ((td.tagName === 'INPUT' || td.tagName === 'TEXTAREA' || td.tagName === 'OPTION' || td.tagName === 'SELECT' ) && !scb) ) { return; }
+			ri = ptr[0].id;
+			td = $(td).closest("tr.jqgrow>td");
+			if (td.length > 0) {
+				ci = $.jgrid.getCellIndex(td);
+				tdHtml = $(td).closest("td,th").html();
+				$(ts).triggerHandler("jqGridCellSelect", [ri,ci,tdHtml,e]);
+				if($.isFunction(ts.p.onCellSelect)) {
+					ts.p.onCellSelect.call(ts,ri,ci,tdHtml,e);
+				}
+			}
+			if(ts.p.cellEdit === true) {
+				if(ts.p.multiselect && scb && cSel){
+					$(ts).jqGrid("setSelection", ri ,true,e);
+				} else if (td.length > 0) {
+					ri = ptr[0].rowIndex;
+					try {$(ts).jqGrid("editCell",ri,ci,true);} catch (_) {}
+				}
+			}
+			if (!cSel) {
+				return;
+			}
+			if ( !ts.p.multikey ) {
+				if(ts.p.multiselect && ts.p.multiboxonly) {
+					if(scb){$(ts).jqGrid("setSelection",ri,true,e);}
+					else {
+						var frz = ts.p.frozenColumns ? ts.p.id+"_frozen" : "";
+						$(ts.p.selarrrow).each(function(i,n){
+							var trid = $(ts).jqGrid('getGridRowById',n);
+							if(trid) { $( trid ).removeClass("ui-state-highlight"); }
+							$("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(n))[ts.p.useProp ? 'prop': 'attr']("checked", false);
+							if(frz) {
+								$("#"+$.jgrid.jqID(n), "#"+$.jgrid.jqID(frz)).removeClass("ui-state-highlight");
+								$("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(n), "#"+$.jgrid.jqID(frz))[ts.p.useProp ? 'prop': 'attr']("checked", false);
+							}
+						});
+						ts.p.selarrrow = [];
+						$(ts).jqGrid("setSelection",ri,true,e);
+					}
+				} else {
+					$(ts).jqGrid("setSelection",ri,true,e);
+				}
+			} else {
+				if(e[ts.p.multikey]) {
+					$(ts).jqGrid("setSelection",ri,true,e);
+				} else if(ts.p.multiselect && scb) {
+					scb = $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+ri).is(":checked");
+					$("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+ri)[ts.p.useProp ? 'prop' : 'attr']("checked", scb);
+				}
+			}
+		}).bind('reloadGrid', function(e,opts) {
+			if(ts.p.treeGrid ===true) {	ts.p.datatype = ts.p.treedatatype;}
+			if (opts && opts.current) {
+				ts.grid.selectionPreserver(ts);
+			}
+			if(ts.p.datatype==="local"){ $(ts).jqGrid("resetSelection");  if(ts.p.data.length) { normalizeData(); refreshIndex();} }
+			else if(!ts.p.treeGrid) {
+				ts.p.selrow=null;
+				if(ts.p.multiselect) {ts.p.selarrrow =[];setHeadCheckBox(false);}
+				ts.p.savedRow = [];
+			}
+			if(ts.p.scroll) {emptyRows.call(ts, true, false);}
+			if (opts && opts.page) {
+				var page = opts.page;
+				if (page > ts.p.lastpage) { page = ts.p.lastpage; }
+				if (page < 1) { page = 1; }
+				ts.p.page = page;
+				if (ts.grid.prevRowHeight) {
+					ts.grid.bDiv.scrollTop = (page - 1) * ts.grid.prevRowHeight * ts.p.rowNum;
+				} else {
+					ts.grid.bDiv.scrollTop = 0;
+				}
+			}
+			if (ts.grid.prevRowHeight && ts.p.scroll) {
+				delete ts.p.lastpage;
+				ts.grid.populateVisible();
+			} else {
+				ts.grid.populate();
+			}
+			if(ts.p._inlinenav===true) {$(ts).jqGrid('showAddEditButtons');}
+			return false;
+		})
+		.dblclick(function(e) {
+			td = e.target;
+			ptr = $(td,ts.rows).closest("tr.jqgrow");
+			if($(ptr).length === 0 ){return;}
+			ri = ptr[0].rowIndex;
+			ci = $.jgrid.getCellIndex(td);
+			var dbcr = $(ts).triggerHandler("jqGridDblClickRow", [$(ptr).attr("id"),ri,ci,e]);
+			if( dbcr != null) { return dbcr; }
+			if ($.isFunction(ts.p.ondblClickRow)) { 
+				dbcr = ts.p.ondblClickRow.call(ts,$(ptr).attr("id"),ri,ci, e); 
+				if( dbcr != null) { return dbcr; }
+			}
+		})
+		.bind('contextmenu', function(e) {
+			td = e.target;
+			ptr = $(td,ts.rows).closest("tr.jqgrow");
+			if($(ptr).length === 0 ){return;}
+			if(!ts.p.multiselect) {	$(ts).jqGrid("setSelection",ptr[0].id,true,e);	}
+			ri = ptr[0].rowIndex;
+			ci = $.jgrid.getCellIndex(td);
+			var rcr = $(ts).triggerHandler("jqGridRightClickRow", [$(ptr).attr("id"),ri,ci,e]);
+			if( rcr != null) { return rcr; }
+			if ($.isFunction(ts.p.onRightClickRow)) { 
+				rcr = ts.p.onRightClickRow.call(ts,$(ptr).attr("id"),ri,ci, e); 
+				if( rcr != null) { return rcr; }
+			}
+		});
+		grid.bDiv = document.createElement("div");
+		if(isMSIE) { if(String(ts.p.height).toLowerCase() === "auto") { ts.p.height = "100%"; } }
+		$(grid.bDiv)
+			.append($('<div style="position:relative;'+(isMSIE && $.jgrid.msiever() < 8 ? "height:0.01%;" : "")+'"></div>').append('<div></div>').append(this))
+			.addClass("ui-jqgrid-bdiv")
+			.css({ height: ts.p.height+(isNaN(ts.p.height)?"":"px"), width: (grid.width)+"px"})
+			.scroll(grid.scrollGrid);
+		$("table:first",grid.bDiv).css({width:ts.p.tblwidth+"px"});
+		if( !$.support.tbody ) { //IE
+			if( $("tbody",this).length === 2 ) { $("tbody:gt(0)",this).remove();}
+		}
+		if(ts.p.multikey){
+			if( $.jgrid.msie) {
+				$(grid.bDiv).bind("selectstart",function(){return false;});
+			} else {
+				$(grid.bDiv).bind("mousedown",function(){return false;});
+			}
+		}
+		if(hg) {$(grid.bDiv).hide();}
+		grid.cDiv = document.createElement("div");
+		var arf = ts.p.hidegrid===true ? $("<a role='link' class='ui-jqgrid-titlebar-close ui-corner-all HeaderButton' " + (ts.p.showhide ? "title='"+ts.p.showhide+"'" : "")+" />").hover(
+			function(){ arf.addClass('ui-state-hover');},
+			function() {arf.removeClass('ui-state-hover');})
+		.append("<span class='ui-icon ui-icon-circle-triangle-n'></span>").css((dir==="rtl"?"left":"right"),"0px") : "";
+		$(grid.cDiv).append(arf).append("<span class='ui-jqgrid-title'>"+ts.p.caption+"</span>")
+		.addClass("ui-jqgrid-titlebar ui-jqgrid-caption"+(dir==="rtl" ? "-rtl" :"" )+" ui-widget-header ui-corner-top ui-helper-clearfix");
+		$(grid.cDiv).insertBefore(grid.hDiv);
+		if( ts.p.toolbar[0] ) {
+			grid.uDiv = document.createElement("div");
+			if(ts.p.toolbar[1] === "top") {$(grid.uDiv).insertBefore(grid.hDiv);}
+			else if (ts.p.toolbar[1]==="bottom" ) {$(grid.uDiv).insertAfter(grid.hDiv);}
+			if(ts.p.toolbar[1]==="both") {
+				grid.ubDiv = document.createElement("div");
+				$(grid.uDiv).addClass("ui-userdata ui-state-default").attr("id","t_"+this.id).insertBefore(grid.hDiv);
+				$(grid.ubDiv).addClass("ui-userdata ui-state-default").attr("id","tb_"+this.id).insertAfter(grid.hDiv);
+				if(hg)  {$(grid.ubDiv).hide();}
+			} else {
+				$(grid.uDiv).width(grid.width).addClass("ui-userdata ui-state-default").attr("id","t_"+this.id);
+			}
+			if(hg) {$(grid.uDiv).hide();}
+		}
+		if(ts.p.toppager) {
+			ts.p.toppager = $.jgrid.jqID(ts.p.id)+"_toppager";
+			grid.topDiv = $("<div id='"+ts.p.toppager+"'></div>")[0];
+			ts.p.toppager = "#"+ts.p.toppager;
+			$(grid.topDiv).addClass('ui-state-default ui-jqgrid-toppager').width(grid.width).insertBefore(grid.hDiv);
+			setPager(ts.p.toppager,'_t');
+		}
+		if(ts.p.footerrow) {
+			grid.sDiv = $("<div class='ui-jqgrid-sdiv'></div>")[0];
+			hb = $("<div class='ui-jqgrid-hbox"+(dir==="rtl"?"-rtl":"")+"'></div>");
+			$(grid.sDiv).append(hb).width(grid.width).insertAfter(grid.hDiv);
+			$(hb).append(tfoot);
+			grid.footers = $(".ui-jqgrid-ftable",grid.sDiv)[0].rows[0].cells;
+			if(ts.p.rownumbers) { grid.footers[0].className = 'ui-state-default jqgrid-rownum'; }
+			if(hg) {$(grid.sDiv).hide();}
+		}
+		hb = null;
+		if(ts.p.caption) {
+			var tdt = ts.p.datatype;
+			if(ts.p.hidegrid===true) {
+				$(".ui-jqgrid-titlebar-close",grid.cDiv).click( function(e){
+					var onHdCl = $.isFunction(ts.p.onHeaderClick),
+					elems = ".ui-jqgrid-bdiv, .ui-jqgrid-hdiv, .ui-jqgrid-pager, .ui-jqgrid-sdiv",
+					counter, self = this;
+					if(ts.p.toolbar[0]===true) {
+						if( ts.p.toolbar[1]==='both') {
+							elems += ', #' + $(grid.ubDiv).attr('id');
+						}
+						elems += ', #' + $(grid.uDiv).attr('id');
+					}
+					counter = $(elems,"#gview_"+$.jgrid.jqID(ts.p.id)).length;
+
+					if(ts.p.gridstate === 'visible') {
+						$(elems,"#gbox_"+$.jgrid.jqID(ts.p.id)).slideUp("fast", function() {
+							counter--;
+							if (counter === 0) {
+								$("span",self).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s");
+								ts.p.gridstate = 'hidden';
+								if($("#gbox_"+$.jgrid.jqID(ts.p.id)).hasClass("ui-resizable")) { $(".ui-resizable-handle","#gbox_"+$.jgrid.jqID(ts.p.id)).hide(); }
+								$(ts).triggerHandler("jqGridHeaderClick", [ts.p.gridstate,e]);
+								if(onHdCl) {if(!hg) {ts.p.onHeaderClick.call(ts,ts.p.gridstate,e);}}
+							}
+						});
+					} else if(ts.p.gridstate === 'hidden'){
+						$(elems,"#gbox_"+$.jgrid.jqID(ts.p.id)).slideDown("fast", function() {
+							counter--;
+							if (counter === 0) {
+								$("span",self).removeClass("ui-icon-circle-triangle-s").addClass("ui-icon-circle-triangle-n");
+								if(hg) {ts.p.datatype = tdt;populate();hg=false;}
+								ts.p.gridstate = 'visible';
+								if($("#gbox_"+$.jgrid.jqID(ts.p.id)).hasClass("ui-resizable")) { $(".ui-resizable-handle","#gbox_"+$.jgrid.jqID(ts.p.id)).show(); }
+								$(ts).triggerHandler("jqGridHeaderClick", [ts.p.gridstate,e]);
+								if(onHdCl) {if(!hg) {ts.p.onHeaderClick.call(ts,ts.p.gridstate,e);}}
+							}
+						});
+					}
+					return false;
+				});
+				if(hg) {ts.p.datatype="local"; $(".ui-jqgrid-titlebar-close",grid.cDiv).trigger("click");}
+			}
+		} else {
+			$(grid.cDiv).hide();
+			$(grid.hDiv).addClass('ui-corner-top');
+		}
+		$(grid.hDiv).after(grid.bDiv)
+		.mousemove(function (e) {
+			if(grid.resizing){grid.dragMove(e);return false;}
+		});
+		$(".ui-jqgrid-labels",grid.hDiv).bind("selectstart", function () { return false; });
+		$(document).bind( "mouseup.jqGrid" + ts.p.id, function () {
+			if(grid.resizing) {	grid.dragEnd(); return false;}
+			return true;
+		});
+		ts.formatCol = formatCol;
+		ts.sortData = sortData;
+		ts.updatepager = updatepager;
+		ts.refreshIndex = refreshIndex;
+		ts.setHeadCheckBox = setHeadCheckBox;
+		ts.constructTr = constructTr;
+		ts.formatter = function ( rowId, cellval , colpos, rwdat, act){return formatter(rowId, cellval , colpos, rwdat, act);};
+		$.extend(grid,{populate : populate, emptyRows: emptyRows, beginReq: beginReq, endReq: endReq});
+		this.grid = grid;
+		ts.addXmlData = function(d) {addXmlData(d,ts.grid.bDiv);};
+		ts.addJSONData = function(d) {addJSONData(d,ts.grid.bDiv);};
+		this.grid.cols = this.rows[0].cells;
+		$(ts).triggerHandler("jqGridInitGrid");
+		if ($.isFunction( ts.p.onInitGrid )) { ts.p.onInitGrid.call(ts); }
+
+		populate();ts.p.hiddengrid=false;
+	});
+};
+$.jgrid.extend({
+	getGridParam : function(pName) {
+		var $t = this[0];
+		if (!$t || !$t.grid) {return;}
+		if (!pName) { return $t.p; }
+		return $t.p[pName] !== undefined ? $t.p[pName] : null;
+	},
+	setGridParam : function (newParams, overwrite){
+		return this.each(function(){
+			if(overwrite == null) {
+				overwrite = false;
+			}
+			if (this.grid && typeof newParams === 'object') {
+				if(overwrite === true) {
+					var params = $.extend({}, this.p, newParams);
+					this.p = params;
+				} else {
+					$.extend(true,this.p,newParams);
+				}
+			}
+		});
+	},
+	getGridRowById: function ( rowid ) {
+		var row;
+		this.each( function(){
+			try {
+				//row = this.rows.namedItem( rowid );
+				var i = this.rows.length;
+				while(i--) {
+					if( rowid.toString() === this.rows[i].id) {
+						row = this.rows[i];
+						break;
+					}
+				}
+			} catch ( e ) {
+				row = $(this.grid.bDiv).find( "#" + $.jgrid.jqID( rowid ));
+			}
+		});
+		return row;
+	},
+	getDataIDs : function () {
+		var ids=[], i=0, len, j=0;
+		this.each(function(){
+			len = this.rows.length;
+			if(len && len>0){
+				while(i<len) {
+					if($(this.rows[i]).hasClass('jqgrow')) {
+						ids[j] = this.rows[i].id;
+						j++;
+					}
+					i++;
+				}
+			}
+		});
+		return ids;
+	},
+	setSelection : function(selection,onsr, e) {
+		return this.each(function(){
+			var $t = this, stat,pt, ner, ia, tpsr, fid, csr;
+			if(selection === undefined) { return; }
+			onsr = onsr === false ? false : true;
+			pt=$($t).jqGrid('getGridRowById', selection);
+			if(!pt || !pt.className || pt.className.indexOf( 'ui-state-disabled' ) > -1 ) { return; }
+			function scrGrid(iR){
+				var ch = $($t.grid.bDiv)[0].clientHeight,
+				st = $($t.grid.bDiv)[0].scrollTop,
+				rpos = $($t.rows[iR]).position().top,
+				rh = $t.rows[iR].clientHeight;
+				if(rpos+rh >= ch+st) { $($t.grid.bDiv)[0].scrollTop = rpos-(ch+st)+rh+st; }
+				else if(rpos < ch+st) {
+					if(rpos < st) {
+						$($t.grid.bDiv)[0].scrollTop = rpos;
+					}
+				}
+			}
+			if($t.p.scrollrows===true) {
+				ner = $($t).jqGrid('getGridRowById',selection).rowIndex;
+				if(ner >=0 ){
+					scrGrid(ner);
+				}
+			}
+			if($t.p.frozenColumns === true ) {
+				fid = $t.p.id+"_frozen";
+			}
+			if(!$t.p.multiselect) {	
+				if(pt.className !== "ui-subgrid") {
+					if( $t.p.selrow !== pt.id ) {
+						csr = $($t).jqGrid('getGridRowById', $t.p.selrow);
+						if( csr ) {
+							$(  csr ).removeClass("ui-state-highlight").attr({"aria-selected":"false", "tabindex" : "-1"});
+						}
+						$(pt).addClass("ui-state-highlight").attr({"aria-selected":"true", "tabindex" : "0"});//.focus();
+						if(fid) {
+							$("#"+$.jgrid.jqID($t.p.selrow), "#"+$.jgrid.jqID(fid)).removeClass("ui-state-highlight");
+							$("#"+$.jgrid.jqID(selection), "#"+$.jgrid.jqID(fid)).addClass("ui-state-highlight");
+						}
+						stat = true;
+					} else {
+						stat = false;
+					}
+					$t.p.selrow = pt.id;
+					if( onsr ) { 
+						$($t).triggerHandler("jqGridSelectRow", [pt.id, stat, e]);
+						if( $t.p.onSelectRow) { $t.p.onSelectRow.call($t, pt.id, stat, e); }
+					}
+				}
+			} else {
+				//unselect selectall checkbox when deselecting a specific row
+				$t.setHeadCheckBox( false );
+				$t.p.selrow = pt.id;
+				ia = $.inArray($t.p.selrow,$t.p.selarrrow);
+				if (  ia === -1 ){
+					if(pt.className !== "ui-subgrid") { $(pt).addClass("ui-state-highlight").attr("aria-selected","true");}
+					stat = true;
+					$t.p.selarrrow.push($t.p.selrow);
+				} else {
+					if(pt.className !== "ui-subgrid") { $(pt).removeClass("ui-state-highlight").attr("aria-selected","false");}
+					stat = false;
+					$t.p.selarrrow.splice(ia,1);
+					tpsr = $t.p.selarrrow[0];
+					$t.p.selrow = (tpsr === undefined) ? null : tpsr;
+				}
+				$("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID(pt.id))[$t.p.useProp ? 'prop': 'attr']("checked",stat);
+				if(fid) {
+					if(ia === -1) {
+						$("#"+$.jgrid.jqID(selection), "#"+$.jgrid.jqID(fid)).addClass("ui-state-highlight");
+					} else {
+						$("#"+$.jgrid.jqID(selection), "#"+$.jgrid.jqID(fid)).removeClass("ui-state-highlight");
+					}
+					$("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID(selection), "#"+$.jgrid.jqID(fid))[$t.p.useProp ? 'prop': 'attr']("checked",stat);
+				}
+				if( onsr ) {
+					$($t).triggerHandler("jqGridSelectRow", [pt.id, stat, e]);
+					if( $t.p.onSelectRow) { $t.p.onSelectRow.call($t, pt.id , stat, e); }
+				}
+			}
+		});
+	},
+	resetSelection : function( rowid ){
+		return this.each(function(){
+			var t = this, sr, fid;
+			if( t.p.frozenColumns === true ) {
+				fid = t.p.id+"_frozen";
+			}
+			if(rowid !== undefined ) {
+				sr = rowid === t.p.selrow ? t.p.selrow : rowid;
+				$("#"+$.jgrid.jqID(t.p.id)+" tbody:first tr#"+$.jgrid.jqID(sr)).removeClass("ui-state-highlight").attr("aria-selected","false");
+				if (fid) { $("#"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(fid)).removeClass("ui-state-highlight"); }
+				if(t.p.multiselect) {
+					$("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(t.p.id))[t.p.useProp ? 'prop': 'attr']("checked",false);
+					if(fid) { $("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(fid))[t.p.useProp ? 'prop': 'attr']("checked",false); }
+					t.setHeadCheckBox( false);
+					var ia = $.inArray($.jgrid.jqID(sr), t.p.selarrrow);
+					if (  ia !== -1 ){
+						t.p.selarrrow.splice(ia,1);
+					}
+				}
+				sr = null;
+			} else if(!t.p.multiselect) {
+				if(t.p.selrow) {
+					$("#"+$.jgrid.jqID(t.p.id)+" tbody:first tr#"+$.jgrid.jqID(t.p.selrow)).removeClass("ui-state-highlight").attr("aria-selected","false");
+					if(fid) { $("#"+$.jgrid.jqID(t.p.selrow), "#"+$.jgrid.jqID(fid)).removeClass("ui-state-highlight"); }
+					t.p.selrow = null;
+				}
+			} else {
+				$(t.p.selarrrow).each(function(i,n){
+					$( $(t).jqGrid('getGridRowById',n) ).removeClass("ui-state-highlight").attr("aria-selected","false");
+					$("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(n))[t.p.useProp ? 'prop': 'attr']("checked",false);
+					if(fid) { 
+						$("#"+$.jgrid.jqID(n), "#"+$.jgrid.jqID(fid)).removeClass("ui-state-highlight"); 
+						$("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(n), "#"+$.jgrid.jqID(fid))[t.p.useProp ? 'prop': 'attr']("checked",false);
+					}
+				});
+				t.setHeadCheckBox( false );
+				t.p.selarrrow = [];
+				t.p.selrow = null;
+			}
+			if(t.p.cellEdit === true) {
+				if(parseInt(t.p.iCol,10)>=0  && parseInt(t.p.iRow,10)>=0) {
+					$("td:eq("+t.p.iCol+")",t.rows[t.p.iRow]).removeClass("edit-cell ui-state-highlight");
+					$(t.rows[t.p.iRow]).removeClass("selected-row ui-state-hover");
+				}
+			}
+			t.p.savedRow = [];
+		});
+	},
+	getRowData : function( rowid ) {
+		var res = {}, resall, getall=false, len, j=0;
+		this.each(function(){
+			var $t = this,nm,ind;
+			if(rowid === undefined) {
+				getall = true;
+				resall = [];
+				len = $t.rows.length;
+			} else {
+				ind = $($t).jqGrid('getGridRowById', rowid);
+				if(!ind) { return res; }
+				len = 2;
+			}
+			while(j<len){
+				if(getall) { ind = $t.rows[j]; }
+				if( $(ind).hasClass('jqgrow') ) {
+					$('td[role="gridcell"]',ind).each( function(i) {
+						nm = $t.p.colModel[i].name;
+						if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn') {
+							if($t.p.treeGrid===true && nm === $t.p.ExpandColumn) {
+								res[nm] = $.jgrid.htmlDecode($("span:first",this).html());
+							} else {
+								try {
+									res[nm] = $.unformat.call($t,this,{rowId:ind.id, colModel:$t.p.colModel[i]},i);
+								} catch (e){
+									res[nm] = $.jgrid.htmlDecode($(this).html());
+								}
+							}
+						}
+					});
+					if(getall) { resall.push(res); res={}; }
+				}
+				j++;
+			}
+		});
+		return resall || res;
+	},
+	delRowData : function(rowid) {
+		var success = false, rowInd, ia, nextRow;
+		this.each(function() {
+			var $t = this;
+			rowInd = $($t).jqGrid('getGridRowById', rowid);
+			if(!rowInd) {return false;}
+				if($t.p.subGrid) {
+					nextRow = $(rowInd).next();
+					if(nextRow.hasClass('ui-subgrid')) {
+						nextRow.remove();
+					}
+				}
+				$(rowInd).remove();
+				$t.p.records--;
+				$t.p.reccount--;
+				$t.updatepager(true,false);
+				success=true;
+				if($t.p.multiselect) {
+					ia = $.inArray(rowid,$t.p.selarrrow);
+					if(ia !== -1) { $t.p.selarrrow.splice(ia,1);}
+				}
+				if ($t.p.multiselect && $t.p.selarrrow.length > 0) {
+					$t.p.selrow = $t.p.selarrrow[$t.p.selarrrow.length-1];
+				} else {
+					$t.p.selrow = null;
+				}
+			if($t.p.datatype === 'local') {
+				var id = $.jgrid.stripPref($t.p.idPrefix, rowid),
+				pos = $t.p._index[id];
+				if(pos !== undefined) {
+					$t.p.data.splice(pos,1);
+					$t.refreshIndex();
+				}
+			}
+			if( $t.p.altRows === true && success ) {
+				var cn = $t.p.altclass;
+				$($t.rows).each(function(i){
+					if(i % 2 === 1) { $(this).addClass(cn); }
+					else { $(this).removeClass(cn); }
+				});
+			}
+		});
+		return success;
+	},
+	setRowData : function(rowid, data, cssp) {
+		var nm, success=true, title;
+		this.each(function(){
+			if(!this.grid) {return false;}
+			var t = this, vl, ind, cp = typeof cssp, lcdata={};
+			ind = $(this).jqGrid('getGridRowById', rowid);
+			if(!ind) { return false; }
+			if( data ) {
+				try {
+					$(this.p.colModel).each(function(i){
+						nm = this.name;
+						var dval =$.jgrid.getAccessor(data,nm);
+						if( dval !== undefined) {
+							lcdata[nm] = this.formatter && typeof this.formatter === 'string' && this.formatter === 'date' ? $.unformat.date.call(t,dval,this) : dval;
+							vl = t.formatter( rowid, lcdata[nm], i, data, 'edit');
+							title = this.title ? {"title":$.jgrid.stripHtml(vl)} : {};
+							if(t.p.treeGrid===true && nm === t.p.ExpandColumn) {
+								$("td[role='gridcell']:eq("+i+") > span:first",ind).html(vl).attr(title);
+							} else {
+								$("td[role='gridcell']:eq("+i+")",ind).html(vl).attr(title);
+							}
+						}
+					});
+					if(t.p.datatype === 'local') {
+						var id = $.jgrid.stripPref(t.p.idPrefix, rowid),
+						pos = t.p._index[id], key;
+						if(t.p.treeGrid) {
+							for(key in t.p.treeReader){
+								if(t.p.treeReader.hasOwnProperty(key)) {
+									delete lcdata[t.p.treeReader[key]];
+								}
+							}
+						}
+						if(pos !== undefined) {
+							t.p.data[pos] = $.extend(true, t.p.data[pos], lcdata);
+						}
+						lcdata = null;
+					}
+				} catch (e) {
+					success = false;
+				}
+			}
+			if(success) {
+				if(cp === 'string') {$(ind).addClass(cssp);} else if(cssp !== null && cp === 'object') {$(ind).css(cssp);}
+				$(t).triggerHandler("jqGridAfterGridComplete");
+			}
+		});
+		return success;
+	},
+	addRowData : function(rowid,rdata,pos,src) {
+		if(["first", "last", "before", "after"].indexOf(pos) == -1) {pos = "last";}
+		var success = false, nm, row, gi, si, ni,sind, i, v, prp="", aradd, cnm, cn, data, cm, id;
+		if(rdata) {
+			if($.isArray(rdata)) {
+				aradd=true;
+				//pos = "last";
+				cnm = rowid;
+			} else {
+				rdata = [rdata];
+				aradd = false;
+			}
+			this.each(function() {
+				var t = this, datalen = rdata.length;
+				ni = t.p.rownumbers===true ? 1 :0;
+				gi = t.p.multiselect ===true ? 1 :0;
+				si = t.p.subGrid===true ? 1 :0;
+				if(!aradd) {
+					if(rowid !== undefined) { rowid = String(rowid);}
+					else {
+						rowid = $.jgrid.randId();
+						if(t.p.keyName !== false) {
+							cnm = t.p.keyName;
+							if(rdata[0][cnm] !== undefined) { rowid = rdata[0][cnm]; }
+						}
+					}
+				}
+				cn = t.p.altclass;
+				var k = 0, cna ="", lcdata = {},
+				air = $.isFunction(t.p.afterInsertRow) ? true : false;
+				while(k < datalen) {
+					data = rdata[k];
+					row=[];
+					if(aradd) {
+						try {
+							rowid = data[cnm];
+							if(rowid===undefined) {
+								rowid = $.jgrid.randId();
+							}
+						}
+						catch (e) {rowid = $.jgrid.randId();}
+						cna = t.p.altRows === true ?  (t.rows.length-1)%2 === 0 ? cn : "" : "";
+					}
+					id = rowid;
+					rowid  = t.p.idPrefix + rowid;
+					if(ni){
+						prp = t.formatCol(0,1,'',null,rowid, true);
+						row[row.length] = "<td role=\"gridcell\" class=\"ui-state-default jqgrid-rownum\" "+prp+">0</td>";
+					}
+					if(gi) {
+						v = "<input role=\"checkbox\" type=\"checkbox\""+" id=\"jqg_"+t.p.id+"_"+rowid+"\" class=\"cbox\"/>";
+						prp = t.formatCol(ni,1,'', null, rowid, true);
+						row[row.length] = "<td role=\"gridcell\" "+prp+">"+v+"</td>";
+					}
+					if(si) {
+						row[row.length] = $(t).jqGrid("addSubGridCell",gi+ni,1);
+					}
+					for(i = gi+si+ni; i < t.p.colModel.length;i++){
+						cm = t.p.colModel[i];
+						nm = cm.name;
+						lcdata[nm] = data[nm];
+						v = t.formatter( rowid, $.jgrid.getAccessor(data,nm), i, data );
+						prp = t.formatCol(i,1,v, data, rowid, lcdata);
+						row[row.length] = "<td role=\"gridcell\" "+prp+">"+v+"</td>";
+					}
+					row.unshift( t.constructTr(rowid, false, cna, lcdata, data, false ) );
+					row[row.length] = "</tr>";
+					if(t.rows.length === 0){
+						$("table:first",t.grid.bDiv).append(row.join(''));
+					} else {
+						switch (pos) {
+							case 'last':
+								$(t.rows[t.rows.length-1]).after(row.join(''));
+								sind = t.rows.length-1;
+								break;
+							case 'first':
+								$(t.rows[0]).after(row.join(''));
+								sind = 1;
+								break;
+							case 'after':
+								sind = $(t).jqGrid('getGridRowById', src);
+								if (sind) {
+									if($(t.rows[sind.rowIndex+1]).hasClass("ui-subgrid")) { $(t.rows[sind.rowIndex+1]).after(row); }
+									else { $(sind).after(row.join('')); }
+									sind=sind.rowIndex + 1;
+								}	
+								break;
+							case 'before':
+								sind = $(t).jqGrid('getGridRowById', src);
+								if(sind) {
+									$(sind).before(row.join(''));
+									sind=sind.rowIndex - 1;
+								}
+								break;
+						}
+					}
+					if(t.p.subGrid===true) {
+						$(t).jqGrid("addSubGrid",gi+ni, sind);
+					}
+					t.p.records++;
+					t.p.reccount++;
+					$(t).triggerHandler("jqGridAfterInsertRow", [rowid,data,data]);
+					if(air) { t.p.afterInsertRow.call(t,rowid,data,data); }
+					k++;
+					if(t.p.datatype === 'local') {
+						lcdata[t.p.localReader.id] = id;
+						t.p._index[id] = t.p.data.length;
+						t.p.data.push(lcdata);
+						lcdata = {};
+					}
+				}
+				if( t.p.altRows === true && !aradd) {
+					if (pos === "last") {
+						if ((t.rows.length-1)%2 === 1)  {$(t.rows[t.rows.length-1]).addClass(cn);}
+					} else {
+						$(t.rows).each(function(i){
+							if(i % 2 ===1) { $(this).addClass(cn); }
+							else { $(this).removeClass(cn); }
+						});
+					}
+				}
+				t.updatepager(true,true);
+				success = true;
+			});
+		}
+		return success;
+	},
+	footerData : function(action,data, format) {
+		var nm, success=false, res={}, title;
+		function isEmpty(obj) {
+			var i;
+			for(i in obj) {
+				if (obj.hasOwnProperty(i)) { return false; }
+			}
+			return true;
+		}
+		if(action == undefined) { action = "get"; }
+		if(typeof format !== "boolean") { format  = true; }
+		action = action.toLowerCase();
+		this.each(function(){
+			var t = this, vl;
+			if(!t.grid || !t.p.footerrow) {return false;}
+			if(action === "set") { if(isEmpty(data)) { return false; } }
+			success=true;
+			$(this.p.colModel).each(function(i){
+				nm = this.name;
+				if(action === "set") {
+					if( data[nm] !== undefined) {
+						vl = format ? t.formatter( "", data[nm], i, data, 'edit') : data[nm];
+						title = this.title ? {"title":$.jgrid.stripHtml(vl)} : {};
+						$("tr.footrow td:eq("+i+")",t.grid.sDiv).html(vl).attr(title);
+						success = true;
+					}
+				} else if(action === "get") {
+					res[nm] = $("tr.footrow td:eq("+i+")",t.grid.sDiv).html();
+				}
+			});
+		});
+		return action === "get" ? res : success;
+	},
+	showHideCol : function(colname,show) {
+		return this.each(function() {
+			var $t = this, fndh=false, brd=$.jgrid.cell_width ? 0: $t.p.cellLayout, cw;
+			if (!$t.grid ) {return;}
+			if( typeof colname === 'string') {colname=[colname];}
+			show = show !== "none" ? "" : "none";
+			var sw = show === "" ? true :false,
+			gh = $t.p.groupHeader && (typeof $t.p.groupHeader === 'object' || $.isFunction($t.p.groupHeader) );
+			if(gh) { $($t).jqGrid('destroyGroupHeader', false); }
+			$(this.p.colModel).each(function(i) {
+				if ($.inArray(this.name,colname) !== -1 && this.hidden === sw) {
+					if($t.p.frozenColumns === true && this.frozen === true) {
+						return true;
+					}
+					$("tr[role=row]",$t.grid.hDiv).each(function(){
+						$(this.cells[i]).css("display", show);
+					});
+					$($t.rows).each(function(){
+						if (!$(this).hasClass("jqgroup")) {
+							$(this.cells[i]).css("display", show);
+						}
+					});
+					if($t.p.footerrow) { $("tr.footrow td:eq("+i+")", $t.grid.sDiv).css("display", show); }
+					cw =  parseInt(this.width,10);
+					if(show === "none") {
+						$t.p.tblwidth -= cw+brd;
+					} else {
+						$t.p.tblwidth += cw+brd;
+					}
+					this.hidden = !sw;
+					fndh=true;
+					$($t).triggerHandler("jqGridShowHideCol", [sw,this.name,i]);
+				}
+			});
+			if(fndh===true) {
+				if($t.p.shrinkToFit === true && !isNaN($t.p.height)) { $t.p.tblwidth += parseInt($t.p.scrollOffset,10);}
+				$($t).jqGrid("setGridWidth",$t.p.shrinkToFit === true ? $t.p.tblwidth : $t.p.width );
+			}
+			if( gh )  {
+				$($t).jqGrid('setGroupHeaders',$t.p.groupHeader);
+			}
+		});
+	},
+	hideCol : function (colname) {
+		return this.each(function(){$(this).jqGrid("showHideCol",colname,"none");});
+	},
+	showCol : function(colname) {
+		return this.each(function(){$(this).jqGrid("showHideCol",colname,"");});
+	},
+	remapColumns : function(permutation, updateCells, keepHeader)
+	{
+		function resortArray(a) {
+			var ac;
+			if (a.length) {
+				ac = $.makeArray(a);
+			} else {
+				ac = $.extend({}, a);
+			}
+			$.each(permutation, function(i) {
+				a[i] = ac[this];
+			});
+		}
+		var ts = this.get(0);
+		function resortRows(parent, clobj) {
+			$(">tr"+(clobj||""), parent).each(function() {
+				var row = this;
+				var elems = $.makeArray(row.cells);
+				$.each(permutation, function() {
+					var e = elems[this];
+					if (e) {
+						row.appendChild(e);
+					}
+				});
+			});
+		}
+		resortArray(ts.p.colModel);
+		resortArray(ts.p.colNames);
+		resortArray(ts.grid.headers);
+		resortRows($("thead:first", ts.grid.hDiv), keepHeader && ":not(.ui-jqgrid-labels)");
+		if (updateCells) {
+			resortRows($("#"+$.jgrid.jqID(ts.p.id)+" tbody:first"), ".jqgfirstrow, tr.jqgrow, tr.jqfoot");
+		}
+		if (ts.p.footerrow) {
+			resortRows($("tbody:first", ts.grid.sDiv));
+		}
+		if (ts.p.remapColumns) {
+			if (!ts.p.remapColumns.length){
+				ts.p.remapColumns = $.makeArray(permutation);
+			} else {
+				resortArray(ts.p.remapColumns);
+			}
+		}
+		ts.p.lastsort = $.inArray(ts.p.lastsort, permutation);
+		if(ts.p.treeGrid) { ts.p.expColInd = $.inArray(ts.p.expColInd, permutation); }
+		$(ts).triggerHandler("jqGridRemapColumns", [permutation, updateCells, keepHeader]);
+	},
+	setGridWidth : function(nwidth, shrink) {
+		return this.each(function(){
+			if (!this.grid ) {return;}
+			var $t = this, cw,
+			initwidth = 0, brd=$.jgrid.cell_width ? 0: $t.p.cellLayout, lvc, vc=0, hs=false, scw=$t.p.scrollOffset, aw, gw=0, cr;
+			if(typeof shrink !== 'boolean') {
+				shrink=$t.p.shrinkToFit;
+			}
+			if(isNaN(nwidth)) {return;}
+			nwidth = parseInt(nwidth,10); 
+			$t.grid.width = $t.p.width = nwidth;
+			$("#gbox_"+$.jgrid.jqID($t.p.id)).css("width",nwidth+"px");
+			$("#gview_"+$.jgrid.jqID($t.p.id)).css("width",nwidth+"px");
+			$($t.grid.bDiv).css("width",nwidth+"px");
+			$($t.grid.hDiv).css("width",nwidth+"px");
+			if($t.p.pager ) {$($t.p.pager).css("width",nwidth+"px");}
+			if($t.p.toppager ) {$($t.p.toppager).css("width",nwidth+"px");}
+			if($t.p.toolbar[0] === true){
+				$($t.grid.uDiv).css("width",nwidth+"px");
+				if($t.p.toolbar[1]==="both") {$($t.grid.ubDiv).css("width",nwidth+"px");}
+			}
+			if($t.p.footerrow) { $($t.grid.sDiv).css("width",nwidth+"px"); }
+			if(shrink ===false && $t.p.forceFit === true) {$t.p.forceFit=false;}
+			if(shrink===true) {
+				$.each($t.p.colModel, function() {
+					if(this.hidden===false){
+						cw = this.widthOrg;
+						initwidth += cw+brd;
+						if(this.fixed) {
+							gw += cw+brd;
+						} else {
+							vc++;
+						}
+					}
+				});
+				if(vc  === 0) { return; }
+				$t.p.tblwidth = initwidth;
+				aw = nwidth-brd*vc-gw;
+				if(!isNaN($t.p.height)) {
+					if($($t.grid.bDiv)[0].clientHeight < $($t.grid.bDiv)[0].scrollHeight || $t.rows.length === 1){
+						hs = true;
+						aw -= scw;
+					}
+				}
+				initwidth =0;
+				var cle = $t.grid.cols.length >0;
+				$.each($t.p.colModel, function(i) {
+					if(this.hidden === false && !this.fixed){
+						cw = this.widthOrg;
+						cw = Math.round(aw*cw/($t.p.tblwidth-brd*vc-gw));
+						if (cw < 0) { return; }
+						this.width =cw;
+						initwidth += cw;
+						$t.grid.headers[i].width=cw;
+						$t.grid.headers[i].el.style.width=cw+"px";
+						if($t.p.footerrow) { $t.grid.footers[i].style.width = cw+"px"; }
+						if(cle) { $t.grid.cols[i].style.width = cw+"px"; }
+						lvc = i;
+					}
+				});
+
+				if (!lvc) { return; }
+
+				cr =0;
+				if (hs) {
+					if(nwidth-gw-(initwidth+brd*vc) !== scw){
+						cr = nwidth-gw-(initwidth+brd*vc)-scw;
+					}
+				} else if( Math.abs(nwidth-gw-(initwidth+brd*vc)) !== 1) {
+					cr = nwidth-gw-(initwidth+brd*vc);
+				}
+				$t.p.colModel[lvc].width += cr;
+				$t.p.tblwidth = initwidth+cr+brd*vc+gw;
+				if($t.p.tblwidth > nwidth) {
+					var delta = $t.p.tblwidth - parseInt(nwidth,10);
+					$t.p.tblwidth = nwidth;
+					cw = $t.p.colModel[lvc].width = $t.p.colModel[lvc].width-delta;
+				} else {
+					cw= $t.p.colModel[lvc].width;
+				}
+				$t.grid.headers[lvc].width = cw;
+				$t.grid.headers[lvc].el.style.width=cw+"px";
+				if(cle) { $t.grid.cols[lvc].style.width = cw+"px"; }
+				if($t.p.footerrow) {
+					$t.grid.footers[lvc].style.width = cw+"px";
+				}
+			}
+			if($t.p.tblwidth) {
+				$('table:first',$t.grid.bDiv).css("width",$t.p.tblwidth+"px");
+				$('table:first',$t.grid.hDiv).css("width",$t.p.tblwidth+"px");
+				$t.grid.hDiv.scrollLeft = $t.grid.bDiv.scrollLeft;
+				if($t.p.footerrow) {
+					$('table:first',$t.grid.sDiv).css("width",$t.p.tblwidth+"px");
+				}
+			}
+		});
+	},
+	setGridHeight : function (nh) {
+		return this.each(function (){
+			var $t = this;
+			if(!$t.grid) {return;}
+			var bDiv = $($t.grid.bDiv);
+			bDiv.css({height: nh+(isNaN(nh)?"":"px")});
+			if($t.p.frozenColumns === true){
+				//follow the original set height to use 16, better scrollbar width detection
+				$('#'+$.jgrid.jqID($t.p.id)+"_frozen").parent().height(bDiv.height() - 16);
+			}
+			$t.p.height = nh;
+			if ($t.p.scroll) { $t.grid.populateVisible(); }
+		});
+	},
+	setCaption : function (newcap){
+		return this.each(function(){
+			this.p.caption=newcap;
+			$("span.ui-jqgrid-title, span.ui-jqgrid-title-rtl",this.grid.cDiv).html(newcap);
+			$(this.grid.cDiv).show();
+			$(this.grid.hDiv).removeClass('ui-corner-top');
+		});
+	},
+	setLabel : function(colname, nData, prop, attrp ){
+		return this.each(function(){
+			var $t = this, pos=-1;
+			if(!$t.grid) {return;}
+			if(colname !== undefined) {
+				$($t.p.colModel).each(function(i){
+					if (this.name === colname) {
+						pos = i;return false;
+					}
+				});
+			} else { return; }
+			if(pos>=0) {
+				var thecol = $("tr.ui-jqgrid-labels th:eq("+pos+")",$t.grid.hDiv);
+				if (nData){
+					var ico = $(".s-ico",thecol);
+					$("[id^=jqgh_]",thecol).empty().html(nData).append(ico);
+					$t.p.colNames[pos] = nData;
+				}
+				if (prop) {
+					if(typeof prop === 'string') {$(thecol).addClass(prop);} else {$(thecol).css(prop);}
+				}
+				if(typeof attrp === 'object') {$(thecol).attr(attrp);}
+			}
+		});
+	},
+	setCell : function(rowid,colname,nData,cssp,attrp, forceupd) {
+		return this.each(function(){
+			var $t = this, pos =-1,v, title;
+			if(!$t.grid) {return;}
+			if(isNaN(colname)) {
+				$($t.p.colModel).each(function(i){
+					if (this.name === colname) {
+						pos = i;return false;
+					}
+				});
+			} else {pos = parseInt(colname,10);}
+			if(pos>=0) {
+				var ind = $($t).jqGrid('getGridRowById', rowid); 
+				if (ind){
+					var tcell = $("td:eq("+pos+")",ind), cl=0, rawdat=[];
+					if(nData !== "" || forceupd === true) {
+						while(cl<ind.cells.length) {
+							// slow down speed
+							rawdat.push(ind.cells[cl].innerHTML);
+							cl++;
+						}
+						v = $t.formatter(rowid, nData, pos, rawdat, 'edit');
+						title = $t.p.colModel[pos].title ? {"title":$.jgrid.stripHtml(v)} : {};
+						if($t.p.treeGrid && $(".tree-wrap",$(tcell)).length>0) {
+							$("span",$(tcell)).html(v).attr(title);
+						} else {
+							$(tcell).html(v).attr(title);
+						}
+						if($t.p.datatype === "local") {
+							var cm = $t.p.colModel[pos], index;
+							nData = cm.formatter && typeof cm.formatter === 'string' && cm.formatter === 'date' ? $.unformat.date.call($t,nData,cm) : nData;
+							index = $t.p._index[$.jgrid.stripPref($t.p.idPrefix, rowid)];
+							if(index !== undefined) {
+								$t.p.data[index][cm.name] = nData;
+							}
+						}
+					}
+					if(typeof cssp === 'string'){
+						$(tcell).addClass(cssp);
+					} else if(cssp) {
+						$(tcell).css(cssp);
+					}
+					if(typeof attrp === 'object') {$(tcell).attr(attrp);}
+				}
+			}
+		});
+	},
+	getCell : function(rowid,col) {
+		var ret = false;
+		this.each(function(){
+			var $t=this, pos=-1;
+			if(!$t.grid) {return;}
+			if(isNaN(col)) {
+				$($t.p.colModel).each(function(i){
+					if (this.name === col) {
+						pos = i;return false;
+					}
+				});
+			} else {pos = parseInt(col,10);}
+			if(pos>=0) {
+				var ind = $($t).jqGrid('getGridRowById', rowid);
+				if(ind) {
+					try {
+						ret = $.unformat.call($t,$("td:eq("+pos+")",ind),{rowId:ind.id, colModel:$t.p.colModel[pos]},pos);
+					} catch (e){
+						ret = $.jgrid.htmlDecode($("td:eq("+pos+")",ind).html());
+					}
+				}
+			}
+		});
+		return ret;
+	},
+	getCol : function (col, obj, mathopr) {
+		var ret = [], val, sum=0, min, max, v;
+		obj = typeof obj !== 'boolean' ? false : obj;
+		if(mathopr === undefined) { mathopr = false; }
+		this.each(function(){
+			var $t=this, pos=-1;
+			if(!$t.grid) {return;}
+			if(isNaN(col)) {
+				$($t.p.colModel).each(function(i){
+					if (this.name === col) {
+						pos = i;return false;
+					}
+				});
+			} else {pos = parseInt(col,10);}
+			if(pos>=0) {
+				var ln = $t.rows.length, i =0, dlen=0;
+				if (ln && ln>0){
+					while(i<ln){
+						if($($t.rows[i]).hasClass('jqgrow')) {
+							try {
+								val = $.unformat.call($t,$($t.rows[i].cells[pos]),{rowId:$t.rows[i].id, colModel:$t.p.colModel[pos]},pos);
+							} catch (e) {
+								val = $.jgrid.htmlDecode($t.rows[i].cells[pos].innerHTML);
+							}
+							if(mathopr) {
+								v = parseFloat(val);
+								if(!isNaN(v)) {
+									sum += v;
+									if (max === undefined) {max = min = v;}
+									min = Math.min(min, v);
+									max = Math.max(max, v);
+									dlen++;
+								}
+							}
+							else if(obj) { ret.push( {id:$t.rows[i].id,value:val} ); }
+							else { ret.push( val ); }
+						}
+						i++;
+					}
+					if(mathopr) {
+						switch(mathopr.toLowerCase()){
+							case 'sum': ret =sum; break;
+							case 'avg': ret = sum/dlen; break;
+							case 'count': ret = (ln-1); break;
+							case 'min': ret = min; break;
+							case 'max': ret = max; break;
+						}
+					}
+				}
+			}
+		});
+		return ret;
+	},
+	clearGridData : function(clearfooter) {
+		return this.each(function(){
+			var $t = this;
+			if(!$t.grid) {return;}
+			if(typeof clearfooter !== 'boolean') { clearfooter = false; }
+			if($t.p.deepempty) {$("#"+$.jgrid.jqID($t.p.id)+" tbody:first tr:gt(0)").remove();}
+			else {
+				var trf = $("#"+$.jgrid.jqID($t.p.id)+" tbody:first tr:first")[0];
+				$("#"+$.jgrid.jqID($t.p.id)+" tbody:first").empty().append(trf);
+			}
+			if($t.p.footerrow && clearfooter) { $(".ui-jqgrid-ftable td",$t.grid.sDiv).html("&#160;"); }
+			$t.p.selrow = null; $t.p.selarrrow= []; $t.p.savedRow = [];
+			$t.p.records = 0;$t.p.page=1;$t.p.lastpage=0;$t.p.reccount=0;
+			$t.p.data = []; $t.p._index = {};
+			$t.updatepager(true,false);
+		});
+	},
+	getInd : function(rowid,rc){
+		var ret =false,rw;
+		this.each(function(){
+			rw = $(this).jqGrid('getGridRowById', rowid);
+			if(rw) {
+				ret = rc===true ? rw: rw.rowIndex;
+			}
+		});
+		return ret;
+	},
+	bindKeys : function( settings ){
+		var o = $.extend({
+			onEnter: null,
+			onSpace: null,
+			onLeftKey: null,
+			onRightKey: null,
+			scrollingRows : true
+		},settings || {});
+		return this.each(function(){
+			var $t = this;
+			if( !$('body').is('[role]') ){$('body').attr('role','application');}
+			$t.p.scrollrows = o.scrollingRows;
+			$($t).keydown(function(event){
+				var target = $($t).find('tr[tabindex=0]')[0], id, r, mind,
+				expanded = $t.p.treeReader.expanded_field;
+				//check for arrow keys
+				if(target) {
+					mind = $t.p._index[$.jgrid.stripPref($t.p.idPrefix, target.id)];
+					if(event.keyCode === 37 || event.keyCode === 38 || event.keyCode === 39 || event.keyCode === 40){
+						// up key
+						if(event.keyCode === 38 ){
+							r = target.previousSibling;
+							id = "";
+							if(r) {
+								if($(r).is(":hidden")) {
+									while(r) {
+										r = r.previousSibling;
+										if(!$(r).is(":hidden") && $(r).hasClass('jqgrow')) {id = r.id;break;}
+									}
+								} else {
+									id = r.id;
+								}
+							}
+							$($t).jqGrid('setSelection', id, true, event);
+							event.preventDefault();
+						}
+						//if key is down arrow
+						if(event.keyCode === 40){
+							r = target.nextSibling;
+							id ="";
+							if(r) {
+								if($(r).is(":hidden")) {
+									while(r) {
+										r = r.nextSibling;
+										if(!$(r).is(":hidden") && $(r).hasClass('jqgrow') ) {id = r.id;break;}
+									}
+								} else {
+									id = r.id;
+								}
+							}
+							$($t).jqGrid('setSelection', id, true, event);
+							event.preventDefault();
+						}
+						// left
+						if(event.keyCode === 37 ){
+							if($t.p.treeGrid && $t.p.data[mind][expanded]) {
+								$(target).find("div.treeclick").trigger('click');
+							}
+							$($t).triggerHandler("jqGridKeyLeft", [$t.p.selrow]);
+							if($.isFunction(o.onLeftKey)) {
+								o.onLeftKey.call($t, $t.p.selrow);
+							}
+						}
+						// right
+						if(event.keyCode === 39 ){
+							if($t.p.treeGrid && !$t.p.data[mind][expanded]) {
+								$(target).find("div.treeclick").trigger('click');
+							}
+							$($t).triggerHandler("jqGridKeyRight", [$t.p.selrow]);
+							if($.isFunction(o.onRightKey)) {
+								o.onRightKey.call($t, $t.p.selrow);
+							}
+						}
+					}
+					//check if enter was pressed on a grid or treegrid node
+					else if( event.keyCode === 13 ){
+						$($t).triggerHandler("jqGridKeyEnter", [$t.p.selrow]);
+						if($.isFunction(o.onEnter)) {
+							o.onEnter.call($t, $t.p.selrow);
+						}
+					} else if(event.keyCode === 32) {
+						$($t).triggerHandler("jqGridKeySpace", [$t.p.selrow]);
+						if($.isFunction(o.onSpace)) {
+							o.onSpace.call($t, $t.p.selrow);
+						}
+					}
+				}
+			});
+		});
+	},
+	unbindKeys : function(){
+		return this.each(function(){
+			$(this).unbind('keydown');
+		});
+	},
+	getLocalRow : function (rowid) {
+		var ret = false, ind;
+		this.each(function(){
+			if(rowid !== undefined) {
+				ind = this.p._index[$.jgrid.stripPref(this.p.idPrefix, rowid)];
+				if(ind >= 0 ) {
+					ret = this.p.data[ind];
+				}
+			}
+		});
+		return ret;
+	},
+	progressBar : function ( p ) {
+		p = $.extend({
+			htmlcontent : "",
+			method : "hide",
+			loadtype : "disable" 
+		}, p || {});
+		return this.each(function(){
+			var sh = p.method==="show" ? true : false;
+			if(p.htmlcontent !== "") {
+				$("#load_"+$.jgrid.jqID(this.p.id)).html( p.htmlcontent );
+			}
+			switch(p.loadtype) {
+				case "disable":
+					break;
+				case "enable":
+					$("#load_"+$.jgrid.jqID(this.p.id)).toggle( sh );
+					break;
+				case "block":
+					$("#lui_"+$.jgrid.jqID(this.p.id)).toggle( sh );
+					$("#load_"+$.jgrid.jqID(this.p.id)).toggle( sh );
+					break;
+			}
+		});
+	}
+});
+})(jQuery);

+ 496 - 0
app/Resources/public/assets/jqgrid/js/grid.celledit.js

@@ -0,0 +1,496 @@
+/*jshint eqeqeq:false */
+/*global jQuery */
+(function($){
+/*
+**
+ * jqGrid extension for cellediting Grid Data
+ * 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-2.0.html
+**/ 
+/**
+ * all events and options here are aded anonynous and not in the base grid
+ * since the array is to big. Here is the order of execution.
+ * From this point we use jQuery isFunction
+ * formatCell
+ * beforeEditCell,
+ * onSelectCell (used only for noneditable cels)
+ * afterEditCell,
+ * beforeSaveCell, (called before validation of values if any)
+ * beforeSubmitCell (if cellsubmit remote (ajax))
+ * afterSubmitCell(if cellsubmit remote (ajax)),
+ * afterSaveCell,
+ * errorCell,
+ * serializeCellData - new
+ * Options
+ * cellsubmit (remote,clientArray) (added in grid options)
+ * cellurl
+ * ajaxCellOptions
+* */
+"use strict";
+$.jgrid.extend({
+	editCell : function (iRow,iCol, ed){
+		return this.each(function (){
+			var $t = this, nm, tmp,cc, cm;
+			if (!$t.grid || $t.p.cellEdit !== true) {return;}
+			iCol = parseInt(iCol,10);
+			// select the row that can be used for other methods
+			$t.p.selrow = $t.rows[iRow].id;
+			if (!$t.p.knv) {$($t).jqGrid("GridNav");}
+			// check to see if we have already edited cell
+			if ($t.p.savedRow.length>0) {
+				// prevent second click on that field and enable selects
+				if (ed===true ) {
+					if(iRow == $t.p.iRow && iCol == $t.p.iCol){
+						return;
+					}
+				}
+				// save the cell
+				$($t).jqGrid("saveCell",$t.p.savedRow[0].id,$t.p.savedRow[0].ic);
+			} else {
+				window.setTimeout(function () { $("#"+$.jgrid.jqID($t.p.knv)).attr("tabindex","-1").focus();},1);
+			}
+			cm = $t.p.colModel[iCol];
+			nm = cm.name;
+			if (nm==='subgrid' || nm==='cb' || nm==='rn') {return;}
+			cc = $("td:eq("+iCol+")",$t.rows[iRow]);
+			if (cm.editable===true && ed===true && !cc.hasClass("not-editable-cell")) {
+				if(parseInt($t.p.iCol,10)>=0  && parseInt($t.p.iRow,10)>=0) {
+					$("td:eq("+$t.p.iCol+")",$t.rows[$t.p.iRow]).removeClass("edit-cell ui-state-highlight");
+					$($t.rows[$t.p.iRow]).removeClass("selected-row ui-state-hover");
+				}
+				$(cc).addClass("edit-cell ui-state-highlight");
+				$($t.rows[iRow]).addClass("selected-row ui-state-hover");
+				try {
+					tmp =  $.unformat.call($t,cc,{rowId: $t.rows[iRow].id, colModel:cm},iCol);
+				} catch (_) {
+					tmp = ( cm.edittype && cm.edittype === 'textarea' ) ? $(cc).text() : $(cc).html();
+				}
+				if($t.p.autoencode) { tmp = $.jgrid.htmlDecode(tmp); }
+				if (!cm.edittype) {cm.edittype = "text";}
+				$t.p.savedRow.push({id:iRow,ic:iCol,name:nm,v:tmp});
+				if(tmp === "&nbsp;" || tmp === "&#160;" || (tmp.length===1 && tmp.charCodeAt(0)===160) ) {tmp='';}
+				if($.isFunction($t.p.formatCell)) {
+					var tmp2 = $t.p.formatCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol);
+					if(tmp2 !== undefined ) {tmp = tmp2;}
+				}
+				$($t).triggerHandler("jqGridBeforeEditCell", [$t.rows[iRow].id, nm, tmp, iRow, iCol]);
+				if ($.isFunction($t.p.beforeEditCell)) {
+					$t.p.beforeEditCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol);
+				}
+				var opt = $.extend({}, cm.editoptions || {} ,{id:iRow+"_"+nm,name:nm,rowId: $t.rows[iRow].id});
+				var elc = $.jgrid.createEl.call($t,cm.edittype,opt,tmp,true,$.extend({},$.jgrid.ajaxOptions,$t.p.ajaxSelectOptions || {}));
+				$(cc).html("").append(elc).attr("tabindex","0");
+				$.jgrid.bindEv.call($t, elc, opt);
+				window.setTimeout(function () { $(elc).focus();},1);
+				$("input, select, textarea",cc).bind("keydown",function(e) {
+					if (e.keyCode === 27) {
+						if($("input.hasDatepicker",cc).length >0) {
+							if( $(".ui-datepicker").is(":hidden") )  { $($t).jqGrid("restoreCell",iRow,iCol); }
+							else { $("input.hasDatepicker",cc).datepicker('hide'); }
+						} else {
+							$($t).jqGrid("restoreCell",iRow,iCol);
+						}
+					} //ESC
+					if (e.keyCode === 13 && !e.shiftKey) {
+						$($t).jqGrid("saveCell",iRow,iCol);
+						// Prevent default action
+						return false;
+					} //Enter
+					if (e.keyCode === 9)  {
+						if(!$t.grid.hDiv.loading ) {
+							if (e.shiftKey) {$($t).jqGrid("prevCell",iRow,iCol);} //Shift TAb
+							else {$($t).jqGrid("nextCell",iRow,iCol);} //Tab
+						} else {
+							return false;
+						}
+					}
+					e.stopPropagation();
+				});
+				$($t).triggerHandler("jqGridAfterEditCell", [$t.rows[iRow].id, nm, tmp, iRow, iCol]);
+				if ($.isFunction($t.p.afterEditCell)) {
+					$t.p.afterEditCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol);
+				}
+			} else {
+				if (parseInt($t.p.iCol,10)>=0  && parseInt($t.p.iRow,10)>=0) {
+					$("td:eq("+$t.p.iCol+")",$t.rows[$t.p.iRow]).removeClass("edit-cell ui-state-highlight");
+					$($t.rows[$t.p.iRow]).removeClass("selected-row ui-state-hover");
+				}
+				cc.addClass("edit-cell ui-state-highlight");
+				$($t.rows[iRow]).addClass("selected-row ui-state-hover");
+				tmp = cc.html().replace(/\&#160\;/ig,'');
+				$($t).triggerHandler("jqGridSelectCell", [$t.rows[iRow].id, nm, tmp, iRow, iCol]);
+				if ($.isFunction($t.p.onSelectCell)) {
+					$t.p.onSelectCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol);
+				}
+			}
+			$t.p.iCol = iCol; $t.p.iRow = iRow;
+		});
+	},
+	saveCell : function (iRow, iCol){
+		return this.each(function(){
+			var $t= this, fr;
+			if (!$t.grid || $t.p.cellEdit !== true) {return;}
+			if ( $t.p.savedRow.length >= 1) {fr = 0;} else {fr=null;} 
+			if(fr !== null) {
+				var cc = $("td:eq("+iCol+")",$t.rows[iRow]),v,v2,
+				cm = $t.p.colModel[iCol], nm = cm.name, nmjq = $.jgrid.jqID(nm) ;
+				switch (cm.edittype) {
+					case "select":
+						if(!cm.editoptions.multiple) {
+							v = $("#"+iRow+"_"+nmjq+" option:selected",$t.rows[iRow]).val();
+							v2 = $("#"+iRow+"_"+nmjq+" option:selected",$t.rows[iRow]).text();
+						} else {
+							var sel = $("#"+iRow+"_"+nmjq,$t.rows[iRow]), selectedText = [];
+							v = $(sel).val();
+							if(v) { v.join(",");} else { v=""; }
+							$("option:selected",sel).each(
+								function(i,selected){
+									selectedText[i] = $(selected).text();
+								}
+							);
+							v2 = selectedText.join(",");
+						}
+						if(cm.formatter) { v2 = v; }
+						break;
+					case "checkbox":
+						var cbv  = ["Yes","No"];
+						if(cm.editoptions){
+							cbv = cm.editoptions.value.split(":");
+						}
+						v = $("#"+iRow+"_"+nmjq,$t.rows[iRow]).is(":checked") ? cbv[0] : cbv[1];
+						v2=v;
+						break;
+					case "password":
+					case "text":
+					case "textarea":
+					case "button" :
+						v = $("#"+iRow+"_"+nmjq,$t.rows[iRow]).val();
+						v2=v;
+						break;
+					case 'custom' :
+						try {
+							if(cm.editoptions && $.isFunction(cm.editoptions.custom_value)) {
+								v = cm.editoptions.custom_value.call($t, $(".customelement",cc),'get');
+								if (v===undefined) { throw "e2";} else { v2=v; }
+							} else { throw "e1"; }
+						} catch (e) {
+							if (e==="e1") { $.jgrid.info_dialog($.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.nodefined,$.jgrid.edit.bClose); }
+							if (e==="e2") { $.jgrid.info_dialog($.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.novalue,$.jgrid.edit.bClose); }
+							else {$.jgrid.info_dialog($.jgrid.errors.errcap,e.message,$.jgrid.edit.bClose); }
+						}
+						break;
+				}
+				// The common approach is if nothing changed do not do anything
+				if (v2 !== $t.p.savedRow[fr].v){
+					var vvv = $($t).triggerHandler("jqGridBeforeSaveCell", [$t.rows[iRow].id, nm, v, iRow, iCol]);
+					if (vvv) {v = vvv; v2=vvv;}
+					if ($.isFunction($t.p.beforeSaveCell)) {
+						var vv = $t.p.beforeSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);
+						if (vv) {v = vv; v2=vv;}
+					}
+					var cv = $.jgrid.checkValues.call($t,v,iCol);
+					if(cv[0] === true) {
+						var addpost = $($t).triggerHandler("jqGridBeforeSubmitCell", [$t.rows[iRow].id, nm, v, iRow, iCol]) || {};
+						if ($.isFunction($t.p.beforeSubmitCell)) {
+							addpost = $t.p.beforeSubmitCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);
+							if (!addpost) {addpost={};}
+						}
+						if( $("input.hasDatepicker",cc).length >0) { $("input.hasDatepicker",cc).datepicker('hide'); }
+						if ($t.p.cellsubmit === 'remote') {
+							if ($t.p.cellurl) {
+								var postdata = {};
+								if($t.p.autoencode) { v = $.jgrid.htmlEncode(v); }
+								postdata[nm] = v;
+								var idname,oper, opers;
+								opers = $t.p.prmNames;
+								idname = opers.id;
+								oper = opers.oper;
+								postdata[idname] = $.jgrid.stripPref($t.p.idPrefix, $t.rows[iRow].id);
+								postdata[oper] = opers.editoper;
+								postdata = $.extend(addpost,postdata);
+								$($t).jqGrid("progressBar", {method:"show", loadtype : $t.p.loadui, htmlcontent: $.jgrid.defaults.savetext || "Saving..." });
+								$t.grid.hDiv.loading = true;
+								$.ajax( $.extend( {
+									url: $t.p.cellurl,
+									data :$.isFunction($t.p.serializeCellData) ? $t.p.serializeCellData.call($t, postdata) : postdata,
+									type: "POST",
+									complete: function (result, stat) {
+										$($t).jqGrid("progressBar", {method:"hide", loadtype : $t.p.loadui });
+										$t.grid.hDiv.loading = false;
+										if (stat === 'success') {
+											var ret = $($t).triggerHandler("jqGridAfterSubmitCell", [$t, result, postdata.id, nm, v, iRow, iCol]) || [true, ''];
+											if (ret[0] === true && $.isFunction($t.p.afterSubmitCell)) {
+												ret = $t.p.afterSubmitCell.call($t, result,postdata.id,nm,v,iRow,iCol);
+											}
+											if(ret[0] === true){
+												$(cc).empty();
+												$($t).jqGrid("setCell",$t.rows[iRow].id, iCol, v2, false, false, true);
+												$(cc).addClass("dirty-cell");
+												$($t.rows[iRow]).addClass("edited");
+												$($t).triggerHandler("jqGridAfterSaveCell", [$t.rows[iRow].id, nm, v, iRow, iCol]);
+												if ($.isFunction($t.p.afterSaveCell)) {
+													$t.p.afterSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);
+												}
+												$t.p.savedRow.splice(0,1);
+											} else {
+												$.jgrid.info_dialog($.jgrid.errors.errcap,ret[1],$.jgrid.edit.bClose);
+												$($t).jqGrid("restoreCell",iRow,iCol);
+											}
+										}
+									},
+									error:function(res,stat,err) {
+										$("#lui_"+$.jgrid.jqID($t.p.id)).hide();
+										$t.grid.hDiv.loading = false;
+										$($t).triggerHandler("jqGridErrorCell", [res, stat, err]);
+										if ($.isFunction($t.p.errorCell)) {
+											$t.p.errorCell.call($t, res,stat,err);
+											$($t).jqGrid("restoreCell",iRow,iCol);
+										} else {
+											$.jgrid.info_dialog($.jgrid.errors.errcap,res.status+" : "+res.statusText+"<br/>"+stat,$.jgrid.edit.bClose);
+											$($t).jqGrid("restoreCell",iRow,iCol);
+										}
+									}
+								}, $.jgrid.ajaxOptions, $t.p.ajaxCellOptions || {}));
+							} else {
+								try {
+									$.jgrid.info_dialog($.jgrid.errors.errcap,$.jgrid.errors.nourl,$.jgrid.edit.bClose);
+									$($t).jqGrid("restoreCell",iRow,iCol);
+								} catch (e) {}
+							}
+						}
+						if ($t.p.cellsubmit === 'clientArray') {
+							$(cc).empty();
+							$($t).jqGrid("setCell",$t.rows[iRow].id,iCol, v2, false, false, true);
+							$(cc).addClass("dirty-cell");
+							$($t.rows[iRow]).addClass("edited");
+							$($t).triggerHandler("jqGridAfterSaveCell", [$t.rows[iRow].id, nm, v, iRow, iCol]);
+							if ($.isFunction($t.p.afterSaveCell)) {
+								$t.p.afterSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);
+							}
+							$t.p.savedRow.splice(0,1);
+						}
+					} else {
+						try {
+							window.setTimeout(function(){$.jgrid.info_dialog($.jgrid.errors.errcap,v+" "+cv[1],$.jgrid.edit.bClose);},100);
+							$($t).jqGrid("restoreCell",iRow,iCol);
+						} catch (e) {}
+					}
+				} else {
+					$($t).jqGrid("restoreCell",iRow,iCol);
+				}
+			}
+			window.setTimeout(function () { $("#"+$.jgrid.jqID($t.p.knv)).attr("tabindex","-1").focus();},0);
+		});
+	},
+	restoreCell : function(iRow, iCol) {
+		return this.each(function(){
+			var $t= this, fr;
+			if (!$t.grid || $t.p.cellEdit !== true ) {return;}
+			if ( $t.p.savedRow.length >= 1) {fr = 0;} else {fr=null;}
+			if(fr !== null) {
+				var cc = $("td:eq("+iCol+")",$t.rows[iRow]);
+				// datepicker fix
+				if($.isFunction($.fn.datepicker)) {
+					try {
+						$("input.hasDatepicker",cc).datepicker('hide');
+					} catch (e) {}
+				}
+				$(cc).empty().attr("tabindex","-1");
+				$($t).jqGrid("setCell",$t.rows[iRow].id, iCol, $t.p.savedRow[fr].v, false, false, true);
+				$($t).triggerHandler("jqGridAfterRestoreCell", [$t.rows[iRow].id, $t.p.savedRow[fr].v, iRow, iCol]);
+				if ($.isFunction($t.p.afterRestoreCell)) {
+					$t.p.afterRestoreCell.call($t, $t.rows[iRow].id, $t.p.savedRow[fr].v, iRow, iCol);
+				}				
+				$t.p.savedRow.splice(0,1);
+			}
+			window.setTimeout(function () { $("#"+$t.p.knv).attr("tabindex","-1").focus();},0);
+		});
+	},
+	nextCell : function (iRow,iCol) {
+		return this.each(function (){
+			var $t = this, nCol=false, i;
+			if (!$t.grid || $t.p.cellEdit !== true) {return;}
+			// try to find next editable cell
+			for (i=iCol+1; i<$t.p.colModel.length; i++) {
+				if ( $t.p.colModel[i].editable ===true) {
+					nCol = i; break;
+				}
+			}
+			if(nCol !== false) {
+				$($t).jqGrid("editCell",iRow,nCol,true);
+			} else {
+				if ($t.p.savedRow.length >0) {
+					$($t).jqGrid("saveCell",iRow,iCol);
+				}
+			}
+		});
+	},
+	prevCell : function (iRow,iCol) {
+		return this.each(function (){
+			var $t = this, nCol=false, i;
+			if (!$t.grid || $t.p.cellEdit !== true) {return;}
+			// try to find next editable cell
+			for (i=iCol-1; i>=0; i--) {
+				if ( $t.p.colModel[i].editable ===true) {
+					nCol = i; break;
+				}
+			}
+			if(nCol !== false) {
+				$($t).jqGrid("editCell",iRow,nCol,true);
+			} else {
+				if ($t.p.savedRow.length >0) {
+					$($t).jqGrid("saveCell",iRow,iCol);
+				}
+			}
+		});
+	},
+	GridNav : function() {
+		return this.each(function () {
+			var  $t = this;
+			if (!$t.grid || $t.p.cellEdit !== true ) {return;}
+			// trick to process keydown on non input elements
+			$t.p.knv = $t.p.id + "_kn";
+			var selection = $("<div style='position:fixed;top:0px;width:1px;height:1px;' tabindex='0'><div tabindex='-1' style='width:1px;height:1px;' id='"+$t.p.knv+"'></div></div>"),
+			i, kdir;
+			function scrollGrid(iR, iC, tp){
+				if (tp.substr(0,1)==='v') {
+					var ch = $($t.grid.bDiv)[0].clientHeight,
+					st = $($t.grid.bDiv)[0].scrollTop,
+					nROT = $t.rows[iR].offsetTop+$t.rows[iR].clientHeight,
+					pROT = $t.rows[iR].offsetTop;
+					if(tp === 'vd') {
+						if(nROT >= ch) {
+							$($t.grid.bDiv)[0].scrollTop = $($t.grid.bDiv)[0].scrollTop + $t.rows[iR].clientHeight;
+						}
+					}
+					if(tp === 'vu'){
+						if (pROT < st ) {
+							$($t.grid.bDiv)[0].scrollTop = $($t.grid.bDiv)[0].scrollTop - $t.rows[iR].clientHeight;
+						}
+					}
+				}
+				if(tp==='h') {
+					var cw = $($t.grid.bDiv)[0].clientWidth,
+					sl = $($t.grid.bDiv)[0].scrollLeft,
+					nCOL = $t.rows[iR].cells[iC].offsetLeft+$t.rows[iR].cells[iC].clientWidth,
+					pCOL = $t.rows[iR].cells[iC].offsetLeft;
+					if(nCOL >= cw+parseInt(sl,10)) {
+						$($t.grid.bDiv)[0].scrollLeft = $($t.grid.bDiv)[0].scrollLeft + $t.rows[iR].cells[iC].clientWidth;
+					} else if (pCOL < sl) {
+						$($t.grid.bDiv)[0].scrollLeft = $($t.grid.bDiv)[0].scrollLeft - $t.rows[iR].cells[iC].clientWidth;
+					}
+				}
+			}
+			function findNextVisible(iC,act){
+				var ind, i;
+				if(act === 'lft') {
+					ind = iC+1;
+					for (i=iC;i>=0;i--){
+						if ($t.p.colModel[i].hidden !== true) {
+							ind = i;
+							break;
+						}
+					}
+				}
+				if(act === 'rgt') {
+					ind = iC-1;
+					for (i=iC; i<$t.p.colModel.length;i++){
+						if ($t.p.colModel[i].hidden !== true) {
+							ind = i;
+							break;
+						}						
+					}
+				}
+				return ind;
+			}
+
+			$(selection).insertBefore($t.grid.cDiv);
+			$("#"+$t.p.knv)
+			.focus()
+			.keydown(function (e){
+				kdir = e.keyCode;
+				if($t.p.direction === "rtl") {
+					if(kdir===37) { kdir = 39;}
+					else if (kdir===39) { kdir = 37; }
+				}
+				switch (kdir) {
+					case 38:
+						if ($t.p.iRow-1 >0 ) {
+							scrollGrid($t.p.iRow-1,$t.p.iCol,'vu');
+							$($t).jqGrid("editCell",$t.p.iRow-1,$t.p.iCol,false);
+						}
+					break;
+					case 40 :
+						if ($t.p.iRow+1 <=  $t.rows.length-1) {
+							scrollGrid($t.p.iRow+1,$t.p.iCol,'vd');
+							$($t).jqGrid("editCell",$t.p.iRow+1,$t.p.iCol,false);
+						}
+					break;
+					case 37 :
+						if ($t.p.iCol -1 >=  0) {
+							i = findNextVisible($t.p.iCol-1,'lft');
+							scrollGrid($t.p.iRow, i,'h');
+							$($t).jqGrid("editCell",$t.p.iRow, i,false);
+						}
+					break;
+					case 39 :
+						if ($t.p.iCol +1 <=  $t.p.colModel.length-1) {
+							i = findNextVisible($t.p.iCol+1,'rgt');
+							scrollGrid($t.p.iRow,i,'h');
+							$($t).jqGrid("editCell",$t.p.iRow,i,false);
+						}
+					break;
+					case 13:
+						if (parseInt($t.p.iCol,10)>=0 && parseInt($t.p.iRow,10)>=0) {
+							$($t).jqGrid("editCell",$t.p.iRow,$t.p.iCol,true);
+						}
+					break;
+					default :
+						return true;
+				}
+				return false;
+			});
+		});
+	},
+	getChangedCells : function (mthd) {
+		var ret=[];
+		if (!mthd) {mthd='all';}
+		this.each(function(){
+			var $t= this,nm;
+			if (!$t.grid || $t.p.cellEdit !== true ) {return;}
+			$($t.rows).each(function(j){
+				var res = {};
+				if ($(this).hasClass("edited")) {
+					$('td',this).each( function(i) {
+						nm = $t.p.colModel[i].name;
+						if ( nm !== 'cb' && nm !== 'subgrid') {
+							if (mthd==='dirty') {
+								if ($(this).hasClass('dirty-cell')) {
+									try {
+										res[nm] = $.unformat.call($t,this,{rowId:$t.rows[j].id, colModel:$t.p.colModel[i]},i);
+									} catch (e){
+										res[nm] = $.jgrid.htmlDecode($(this).html());
+									}
+								}
+							} else {
+								try {
+									res[nm] = $.unformat.call($t,this,{rowId:$t.rows[j].id,colModel:$t.p.colModel[i]},i);
+								} catch (e) {
+									res[nm] = $.jgrid.htmlDecode($(this).html());
+								}
+							}
+						}
+					});
+					res.id = this.id;
+					ret.push(res);
+				}
+			});
+		});
+		return ret;
+	}
+/// end  cell editing
+});
+})(jQuery);

+ 689 - 0
app/Resources/public/assets/jqgrid/js/grid.common.js

@@ -0,0 +1,689 @@
+/*jshint eqeqeq:false */
+/*global jQuery */
+(function($){
+/*
+ * jqGrid common function
+ * 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-2.0.html
+*/
+"use strict";
+$.extend($.jgrid,{
+// Modal functions
+	showModal : function(h) {
+		h.w.show();
+	},
+	closeModal : function(h) {
+		h.w.hide().attr("aria-hidden","true");
+		if(h.o) {h.o.remove();}
+	},
+	hideModal : function (selector,o) {
+		o = $.extend({jqm : true, gb :'', removemodal: false, formprop: false, form : ''}, o || {});
+		var thisgrid = o.gb && typeof o.gb === "string" && o.gb.substr(0,6) === "#gbox_" ? $("#" + o.gb.substr(6))[0] : false;
+		if(o.onClose) {
+			var oncret = thisgrid ? o.onClose.call(thisgrid, selector) : o.onClose(selector);
+			if (typeof oncret === 'boolean'  && !oncret ) { return; }
+		}
+		if( o.formprop && thisgrid  && o.form) {
+			var fh = $(selector)[0].style.height;
+			if(fh.indexOf("px") > -1 ) {
+				fh = parseFloat(fh);
+			}
+			var frmgr, frmdata;
+			if(o.form==='edit'){
+				frmgr = '#' +$.jgrid.jqID("FrmGrid_"+ o.gb.substr(6));
+				frmdata = "formProp";
+			} else if( o.form === 'view') {
+				frmgr = '#' +$.jgrid.jqID("ViewGrid_"+ o.gb.substr(6));
+				frmdata = "viewProp";
+			}
+			$(thisgrid).data(frmdata, {
+				top:parseFloat($(selector).css("top")),
+				left : parseFloat($(selector).css("left")),
+				width : $(selector).width(),
+				height : fh,
+				dataheight : $(frmgr).height(),
+				datawidth: $(frmgr).width()
+			});
+		}
+		if ($.fn.jqm && o.jqm === true) {
+			$(selector).attr("aria-hidden","true").jqmHide();
+		} else {
+			if(o.gb !== '') {
+				try {$(".jqgrid-overlay:first",o.gb).hide();} catch (e){}
+			}
+			$(selector).hide().attr("aria-hidden","true");
+		}
+		if( o.removemodal ) {
+			$(selector).remove();
+		}
+	},
+//Helper functions
+	findPos : function(obj) {
+		var curleft = 0, curtop = 0;
+		if (obj.offsetParent) {
+			do {
+				curleft += obj.offsetLeft;
+				curtop += obj.offsetTop;
+			} while (obj = obj.offsetParent);
+			//do not change obj == obj.offsetParent
+		}
+		return [curleft,curtop];
+	},
+	createModal : function(aIDs, content, p, insertSelector, posSelector, appendsel, css) {
+		p = $.extend(true, {}, $.jgrid.jqModal || {}, p);
+		var mw  = document.createElement('div'), rtlsup, self = this;
+		css = $.extend({}, css || {});
+		rtlsup = $(p.gbox).attr("dir") === "rtl" ? true : false;
+		mw.className= "ui-widget ui-widget-content ui-corner-all ui-jqdialog";
+		mw.id = aIDs.themodal;
+		var mh = document.createElement('div');
+		mh.className = "ui-jqdialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix";
+		mh.id = aIDs.modalhead;
+		$(mh).append("<span class='ui-jqdialog-title'>"+p.caption+"</span>");
+		var ahr= $("<a class='ui-jqdialog-titlebar-close ui-corner-all'></a>")
+		.hover(function(){ahr.addClass('ui-state-hover');},
+			function(){ahr.removeClass('ui-state-hover');})
+		.append("<span class='ui-icon ui-icon-closethick'></span>");
+		$(mh).append(ahr);
+		if(rtlsup) {
+			mw.dir = "rtl";
+			$(".ui-jqdialog-title",mh).css("float","right");
+			$(".ui-jqdialog-titlebar-close",mh).css("left",0.3+"em");
+		} else {
+			mw.dir = "ltr";
+			$(".ui-jqdialog-title",mh).css("float","left");
+			$(".ui-jqdialog-titlebar-close",mh).css("right",0.3+"em");
+		}
+		var mc = document.createElement('div');
+		$(mc).addClass("ui-jqdialog-content ui-widget-content").attr("id",aIDs.modalcontent);
+		$(mc).append(content);
+		mw.appendChild(mc);
+		$(mw).prepend(mh);
+		if(appendsel===true) { $('body').append(mw); } //append as first child in body -for alert dialog
+		else if (typeof appendsel === "string") {
+			$(appendsel).append(mw);
+		} else {$(mw).insertBefore(insertSelector);}
+		$(mw).css(css);
+		if(p.jqModal === undefined) {p.jqModal = true;} // internal use
+		var coord = {};
+		if ( $.fn.jqm && p.jqModal === true) {
+			if(p.left ===0 && p.top===0 && p.overlay) {
+				var pos = [];
+				pos = $.jgrid.findPos(posSelector);
+				p.left = pos[0] + 4;
+				p.top = pos[1] + 4;
+			}
+			coord.top = p.top+"px";
+			coord.left = p.left;
+		} else if(p.left !==0 || p.top!==0) {
+			coord.left = p.left;
+			coord.top = p.top+"px";
+		}
+		$("a.ui-jqdialog-titlebar-close",mh).click(function(){
+			var oncm = $("#"+$.jgrid.jqID(aIDs.themodal)).data("onClose") || p.onClose;
+			var gboxclose = $("#"+$.jgrid.jqID(aIDs.themodal)).data("gbox") || p.gbox;
+			self.hideModal("#"+$.jgrid.jqID(aIDs.themodal),{gb:gboxclose,jqm:p.jqModal,onClose:oncm, removemodal: p.removemodal || false, formprop : !p.recreateForm || false, form: p.form || ''});
+			return false;
+		});
+		if (p.width === 0 || !p.width) {p.width = 300;}
+		if(p.height === 0 || !p.height) {p.height =200;}
+		if(!p.zIndex) {
+			var parentZ = $(insertSelector).parents("*[role=dialog]").filter(':first').css("z-index");
+			if(parentZ) {
+				p.zIndex = parseInt(parentZ,10)+2;
+			} else {
+				p.zIndex = 950;
+			}
+		}
+		var rtlt = 0;
+		if( rtlsup && coord.left && !appendsel) {
+			rtlt = $(p.gbox).width()- (!isNaN(p.width) ? parseInt(p.width,10) :0) - 8; // to do
+		// just in case
+			coord.left = parseInt(coord.left,10) + parseInt(rtlt,10);
+		}
+		if(coord.left) { coord.left += "px"; }
+		$(mw).css($.extend({
+			width: isNaN(p.width) ? "auto": p.width+"px",
+			height:isNaN(p.height) ? "auto" : p.height + "px",
+			zIndex:p.zIndex,
+			overflow: 'hidden'
+		},coord))
+		.attr({tabIndex: "-1","role":"dialog","aria-labelledby":aIDs.modalhead,"aria-hidden":"true"});
+		if(p.drag === undefined) { p.drag=true;}
+		if(p.resize === undefined) {p.resize=true;}
+		if (p.drag) {
+			$(mh).css('cursor','move');
+			if($.fn.jqDrag) {
+				$(mw).jqDrag(mh);
+			} else {
+				try {
+					$(mw).draggable({handle: $("#"+$.jgrid.jqID(mh.id))});
+				} catch (e) {}
+			}
+		}
+		if(p.resize) {
+			if($.fn.jqResize) {
+				$(mw).append("<div class='jqResize ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se'></div>");
+				$("#"+$.jgrid.jqID(aIDs.themodal)).jqResize(".jqResize",aIDs.scrollelm ? "#"+$.jgrid.jqID(aIDs.scrollelm) : false);
+			} else {
+				try {
+					$(mw).resizable({handles: 'se, sw',alsoResize: aIDs.scrollelm ? "#"+$.jgrid.jqID(aIDs.scrollelm) : false});
+				} catch (r) {}
+			}
+		}
+		if(p.closeOnEscape === true){
+			$(mw).keydown( function( e ) {
+				if( e.which === 27 ) {
+					var cone = $("#"+$.jgrid.jqID(aIDs.themodal)).data("onClose") || p.onClose;
+					self.hideModal("#"+$.jgrid.jqID(aIDs.themodal),{gb:p.gbox,jqm:p.jqModal,onClose: cone, removemodal: p.removemodal || false, formprop : !p.recreateForm || false, form: p.form || ''});
+				}
+			});
+		}
+	},
+	viewModal : function (selector,o){
+		o = $.extend({
+			toTop: true,
+			overlay: 10,
+			modal: false,
+			overlayClass : 'ui-widget-overlay',
+			onShow: $.jgrid.showModal,
+			onHide: $.jgrid.closeModal,
+			gbox: '',
+			jqm : true,
+			jqM : true
+		}, o || {});
+		if ($.fn.jqm && o.jqm === true) {
+			if(o.jqM) { $(selector).attr("aria-hidden","false").jqm(o).jqmShow(); }
+			else {$(selector).attr("aria-hidden","false").jqmShow();}
+		} else {
+			if(o.gbox !== '') {
+				$(".jqgrid-overlay:first",o.gbox).show();
+				$(selector).data("gbox",o.gbox);
+			}
+			$(selector).show().attr("aria-hidden","false");
+			try{$(':input:visible',selector)[0].focus();}catch(_){}
+		}
+	},
+	info_dialog : function(caption, content,c_b, modalopt) {
+		var mopt = {
+			width:290,
+			height:'auto',
+			dataheight: 'auto',
+			drag: true,
+			resize: false,
+			left:250,
+			top:170,
+			zIndex : 1000,
+			jqModal : true,
+			modal : false,
+			closeOnEscape : true,
+			align: 'center',
+			buttonalign : 'center',
+			buttons : []
+		// {text:'textbutt', id:"buttid", onClick : function(){...}}
+		// if the id is not provided we set it like info_button_+ the index in the array - i.e info_button_0,info_button_1...
+		};
+		$.extend(true, mopt, $.jgrid.jqModal || {}, {caption:"<b>"+caption+"</b>"}, modalopt || {});
+		var jm = mopt.jqModal, self = this;
+		if($.fn.jqm && !jm) { jm = false; }
+		// in case there is no jqModal
+		var buttstr ="", i;
+		if(mopt.buttons.length > 0) {
+			for(i=0;i<mopt.buttons.length;i++) {
+				if(mopt.buttons[i].id === undefined) { mopt.buttons[i].id = "info_button_"+i; }
+				buttstr += "<a id='"+mopt.buttons[i].id+"' class='fm-button ui-state-default ui-corner-all'>"+mopt.buttons[i].text+"</a>";
+			}
+		}
+		var dh = isNaN(mopt.dataheight) ? mopt.dataheight : mopt.dataheight+"px",
+		cn = "text-align:"+mopt.align+";";
+		var cnt = "<div id='info_id'>";
+		cnt += "<div id='infocnt' style='margin:0px;padding-bottom:1em;width:100%;overflow:auto;position:relative;height:"+dh+";"+cn+"'>"+content+"</div>";
+		cnt += c_b ? "<div class='ui-widget-content ui-helper-clearfix' style='text-align:"+mopt.buttonalign+";padding-bottom:0.8em;padding-top:0.5em;background-image: none;border-width: 1px 0 0 0;'><a id='closedialog' class='fm-button ui-state-default ui-corner-all'>"+c_b+"</a>"+buttstr+"</div>" :
+			buttstr !== ""  ? "<div class='ui-widget-content ui-helper-clearfix' style='text-align:"+mopt.buttonalign+";padding-bottom:0.8em;padding-top:0.5em;background-image: none;border-width: 1px 0 0 0;'>"+buttstr+"</div>" : "";
+		cnt += "</div>";
+
+		try {
+			if($("#info_dialog").attr("aria-hidden") === "false") {
+				$.jgrid.hideModal("#info_dialog",{jqm:jm});
+			}
+			$("#info_dialog").remove();
+		} catch (e){}
+		$.jgrid.createModal({
+			themodal:'info_dialog',
+			modalhead:'info_head',
+			modalcontent:'info_content',
+			scrollelm: 'infocnt'},
+			cnt,
+			mopt,
+			'','',true
+		);
+		// attach onclick after inserting into the dom
+		if(buttstr) {
+			$.each(mopt.buttons,function(i){
+				$("#"+$.jgrid.jqID(this.id),"#info_id").bind('click',function(){mopt.buttons[i].onClick.call($("#info_dialog")); return false;});
+			});
+		}
+		$("#closedialog", "#info_id").click(function(){
+			self.hideModal("#info_dialog",{
+				jqm:jm,
+				onClose: $("#info_dialog").data("onClose") || mopt.onClose,
+				gb: $("#info_dialog").data("gbox") || mopt.gbox
+			});
+			return false;
+		});
+		$(".fm-button","#info_dialog").hover(
+			function(){$(this).addClass('ui-state-hover');},
+			function(){$(this).removeClass('ui-state-hover');}
+		);
+		if($.isFunction(mopt.beforeOpen) ) { mopt.beforeOpen(); }
+		$.jgrid.viewModal("#info_dialog",{
+			onHide: function(h) {
+				h.w.hide().remove();
+				if(h.o) { h.o.remove(); }
+			},
+			modal :mopt.modal,
+			jqm:jm
+		});
+		if($.isFunction(mopt.afterOpen) ) { mopt.afterOpen(); }
+		try{ $("#info_dialog").focus();} catch (m){}
+	},
+	bindEv: function  (el, opt) {
+		var $t = this;
+		if($.isFunction(opt.dataInit)) {
+			opt.dataInit.call($t,el,opt);
+		}
+		if(opt.dataEvents) {
+			$.each(opt.dataEvents, function() {
+				if (this.data !== undefined) {
+					$(el).bind(this.type, this.data, this.fn);
+				} else {
+					$(el).bind(this.type, this.fn);
+				}
+			});
+		}
+	},
+// Form Functions
+	createEl : function(eltype,options,vl,autowidth, ajaxso) {
+		var elem = "", $t = this;
+		function setAttributes(elm, atr, exl ) {
+			var exclude = ['dataInit','dataEvents','dataUrl', 'buildSelect','sopt', 'searchhidden', 'defaultValue', 'attr', 'custom_element', 'custom_value'];
+			if(exl !== undefined && $.isArray(exl)) {
+				$.merge(exclude, exl);
+			}
+			$.each(atr, function(key, value){
+				if($.inArray(key, exclude) === -1) {
+					$(elm).attr(key,value);
+				}
+			});
+			if(!atr.hasOwnProperty('id')) {
+				$(elm).attr('id', $.jgrid.randId());
+			}
+		}
+		switch (eltype)
+		{
+			case "textarea" :
+				elem = document.createElement("textarea");
+				if(autowidth) {
+					if(!options.cols) { $(elem).css({width:"98%"});}
+				} else if (!options.cols) { options.cols = 20; }
+				if(!options.rows) { options.rows = 2; }
+				if(vl==='&nbsp;' || vl==='&#160;' || (vl.length===1 && vl.charCodeAt(0)===160)) {vl="";}
+				elem.value = vl;
+				setAttributes(elem, options);
+				$(elem).attr({"role":"textbox","multiline":"true"});
+			break;
+			case "checkbox" : //what code for simple checkbox
+				elem = document.createElement("input");
+				elem.type = "checkbox";
+				if( !options.value ) {
+					var vl1 = (vl+"").toLowerCase();
+					if(vl1.search(/(false|f|0|no|n|off|undefined)/i)<0 && vl1!=="") {
+						elem.checked=true;
+						elem.defaultChecked=true;
+						elem.value = vl;
+					} else {
+						elem.value = "on";
+					}
+					$(elem).attr("offval","off");
+				} else {
+					var cbval = options.value.split(":");
+					if(vl === cbval[0]) {
+						elem.checked=true;
+						elem.defaultChecked=true;
+					}
+					elem.value = cbval[0];
+					$(elem).attr("offval",cbval[1]);
+				}
+				setAttributes(elem, options, ['value']);
+				$(elem).attr("role","checkbox");
+			break;
+			case "select" :
+				elem = document.createElement("select");
+				elem.setAttribute("role","select");
+				var msl, ovm = [];
+				if(options.multiple===true) {
+					msl = true;
+					elem.multiple="multiple";
+					$(elem).attr("aria-multiselectable","true");
+				} else { msl = false; }
+				if(options.dataUrl !== undefined) {
+					var rowid = null, postData = options.postData || ajaxso.postData;
+					try {
+						rowid = options.rowId;
+					} catch(e) {}
+
+					if ($t.p && $t.p.idPrefix) {
+						rowid = $.jgrid.stripPref($t.p.idPrefix, rowid);
+					}
+					$.ajax($.extend({
+						url: $.isFunction(options.dataUrl) ? options.dataUrl.call($t, rowid, vl, String(options.name)) : options.dataUrl,
+						type : "GET",
+						dataType: "html",
+						data: $.isFunction(postData) ? postData.call($t, rowid, vl, String(options.name)) : postData,
+						context: {elem:elem, options:options, vl:vl},
+						success: function(data){
+							var ovm = [], elem = this.elem, vl = this.vl,
+							options = $.extend({},this.options),
+							msl = options.multiple===true,
+							a = $.isFunction(options.buildSelect) ? options.buildSelect.call($t,data) : data;
+							if(typeof a === 'string') {
+								a = $( $.trim( a ) ).html();
+							}
+							if(a) {
+								$(elem).append(a);
+								setAttributes(elem, options, postData ? ['postData'] : undefined );
+								if(options.size === undefined) { options.size =  msl ? 3 : 1;}
+								if(msl) {
+									ovm = vl.split(",");
+									ovm = $.map(ovm,function(n){return $.trim(n);});
+								} else {
+									ovm[0] = $.trim(vl);
+								}
+								//$(elem).attr(options);
+								setTimeout(function(){
+									$("option",elem).each(function(i){
+										//if(i===0) { this.selected = ""; }
+										// fix IE8/IE7 problem with selecting of the first item on multiple=true
+										if (i === 0 && elem.multiple) { this.selected = false; }
+										$(this).attr("role","option");
+										if($.inArray($.trim($(this).text()),ovm) > -1 || $.inArray($.trim($(this).val()),ovm) > -1 ) {
+											this.selected= "selected";
+										}
+									});
+								},0);
+							}
+						}
+					},ajaxso || {}));
+				} else if(options.value) {
+					var i;
+					if(options.size === undefined) {
+						options.size = msl ? 3 : 1;
+					}
+					if(msl) {
+						ovm = vl.split(",");
+						ovm = $.map(ovm,function(n){return $.trim(n);});
+					}
+					if(typeof options.value === 'function') { options.value = options.value(); }
+					var so,sv, ov, 
+					sep = options.separator === undefined ? ":" : options.separator,
+					delim = options.delimiter === undefined ? ";" : options.delimiter;
+					if(typeof options.value === 'string') {
+						so = options.value.split(delim);
+						for(i=0; i<so.length;i++){
+							sv = so[i].split(sep);
+							if(sv.length > 2 ) {
+								sv[1] = $.map(sv,function(n,ii){if(ii>0) { return n;} }).join(sep);
+							}
+							ov = document.createElement("option");
+							ov.setAttribute("role","option");
+							ov.value = sv[0]; ov.innerHTML = sv[1];
+							elem.appendChild(ov);
+							if (!msl &&  ($.trim(sv[0]) === $.trim(vl) || $.trim(sv[1]) === $.trim(vl))) { ov.selected ="selected"; }
+							if (msl && ($.inArray($.trim(sv[1]), ovm)>-1 || $.inArray($.trim(sv[0]), ovm)>-1)) {ov.selected ="selected";}
+						}
+					} else if (typeof options.value === 'object') {
+						var oSv = options.value, key;
+						for (key in oSv) {
+							if (oSv.hasOwnProperty(key ) ){
+								ov = document.createElement("option");
+								ov.setAttribute("role","option");
+								ov.value = key; ov.innerHTML = oSv[key];
+								elem.appendChild(ov);
+								if (!msl &&  ( $.trim(key) === $.trim(vl) || $.trim(oSv[key]) === $.trim(vl)) ) { ov.selected ="selected"; }
+								if (msl && ($.inArray($.trim(oSv[key]),ovm)>-1 || $.inArray($.trim(key),ovm)>-1)) { ov.selected ="selected"; }
+							}
+						}
+					}
+					setAttributes(elem, options, ['value']);
+				}
+			break;
+			case "text" :
+			case "password" :
+			case "button" :
+				var role;
+				if(eltype==="button") { role = "button"; }
+				else { role = "textbox"; }
+				elem = document.createElement("input");
+				elem.type = eltype;
+				elem.value = vl;
+				setAttributes(elem, options);
+				if(eltype !== "button"){
+					if(autowidth) {
+						if(!options.size) { $(elem).css({width:"98%"}); }
+					} else if (!options.size) { options.size = 20; }
+				}
+				$(elem).attr("role",role);
+			break;
+			case "image" :
+			case "file" :
+				elem = document.createElement("input");
+				elem.type = eltype;
+				setAttributes(elem, options);
+				break;
+			case "custom" :
+				elem = document.createElement("span");
+				try {
+					if($.isFunction(options.custom_element)) {
+						var celm = options.custom_element.call($t,vl,options);
+						if(celm) {
+							celm = $(celm).addClass("customelement").attr({id:options.id,name:options.name});
+							$(elem).empty().append(celm);
+						} else {
+							throw "e2";
+						}
+					} else {
+						throw "e1";
+					}
+				} catch (e) {
+					if (e==="e1") { $.jgrid.info_dialog($.jgrid.errors.errcap,"function 'custom_element' "+$.jgrid.edit.msg.nodefined, $.jgrid.edit.bClose);}
+					if (e==="e2") { $.jgrid.info_dialog($.jgrid.errors.errcap,"function 'custom_element' "+$.jgrid.edit.msg.novalue,$.jgrid.edit.bClose);}
+					else { $.jgrid.info_dialog($.jgrid.errors.errcap,typeof e==="string"?e:e.message,$.jgrid.edit.bClose); }
+				}
+			break;
+		}
+		return elem;
+	},
+// Date Validation Javascript
+	checkDate : function (format, date) {
+		var daysInFebruary = function(year){
+		// February has 29 days in any year evenly divisible by four,
+		// EXCEPT for centurial years which are not also divisible by 400.
+			return (((year % 4 === 0) && ( year % 100 !== 0 || (year % 400 === 0))) ? 29 : 28 );
+		},
+		tsp = {}, sep;
+		format = format.toLowerCase();
+		//we search for /,-,. for the date separator
+		if(format.indexOf("/") !== -1) {
+			sep = "/";
+		} else if(format.indexOf("-") !== -1) {
+			sep = "-";
+		} else if(format.indexOf(".") !== -1) {
+			sep = ".";
+		} else {
+			sep = "/";
+		}
+		format = format.split(sep);
+		date = date.split(sep);
+		if (date.length !== 3) { return false; }
+		var j=-1,yln, dln=-1, mln=-1, i;
+		for(i=0;i<format.length;i++){
+			var dv =  isNaN(date[i]) ? 0 : parseInt(date[i],10);
+			tsp[format[i]] = dv;
+			yln = format[i];
+			if(yln.indexOf("y") !== -1) { j=i; }
+			if(yln.indexOf("m") !== -1) { mln=i; }
+			if(yln.indexOf("d") !== -1) { dln=i; }
+		}
+		if (format[j] === "y" || format[j] === "yyyy") {
+			yln=4;
+		} else if(format[j] ==="yy"){
+			yln = 2;
+		} else {
+			yln = -1;
+		}
+		var daysInMonth = [0,31,29,31,30,31,30,31,31,30,31,30,31],
+		strDate;
+		if (j === -1) {
+			return false;
+		}
+			strDate = tsp[format[j]].toString();
+			if(yln === 2 && strDate.length === 1) {yln = 1;}
+			if (strDate.length !== yln || (tsp[format[j]]===0 && date[j]!=="00")){
+				return false;
+			}
+		if(mln === -1) {
+			return false;
+		}
+			strDate = tsp[format[mln]].toString();
+			if (strDate.length<1 || tsp[format[mln]]<1 || tsp[format[mln]]>12){
+				return false;
+			}
+		if(dln === -1) {
+			return false;
+		}
+			strDate = tsp[format[dln]].toString();
+			if (strDate.length<1 || tsp[format[dln]]<1 || tsp[format[dln]]>31 || (tsp[format[mln]]===2 && tsp[format[dln]]>daysInFebruary(tsp[format[j]])) || tsp[format[dln]] > daysInMonth[tsp[format[mln]]]){
+				return false;
+			}
+		return true;
+	},
+	isEmpty : function(val)
+	{
+		if (val.match(/^\s+$/) || val === "")	{
+			return true;
+		}
+			return false;
+	},
+	checkTime : function(time){
+	// checks only hh:ss (and optional am/pm)
+		var re = /^(\d{1,2}):(\d{2})([apAP][Mm])?$/,regs;
+		if(!$.jgrid.isEmpty(time))
+		{
+			regs = time.match(re);
+			if(regs) {
+				if(regs[3]) {
+					if(regs[1] < 1 || regs[1] > 12) { return false; }
+				} else {
+					if(regs[1] > 23) { return false; }
+				}
+				if(regs[2] > 59) {
+					return false;
+				}
+			} else {
+				return false;
+			}
+		}
+		return true;
+	},
+	checkValues : function(val, valref, customobject, nam) {
+		var edtrul,i, nm, dft, len, g = this, cm = g.p.colModel;
+		if(customobject === undefined) {
+			if(typeof valref==='string'){
+				for( i =0, len=cm.length;i<len; i++){
+					if(cm[i].name===valref) {
+						edtrul = cm[i].editrules;
+						valref = i;
+						if(cm[i].formoptions != null) { nm = cm[i].formoptions.label; }
+						break;
+					}
+				}
+			} else if(valref >=0) {
+				edtrul = cm[valref].editrules;
+			}
+		} else {
+			edtrul = customobject;
+			nm = nam===undefined ? "_" : nam;
+		}
+		if(edtrul) {
+			if(!nm) { nm = g.p.colNames != null ? g.p.colNames[valref] : cm[valref].label; }
+			if(edtrul.required === true) {
+				if( $.jgrid.isEmpty(val) )  { return [false,nm+": "+$.jgrid.edit.msg.required,""]; }
+			}
+			// force required
+			var rqfield = edtrul.required === false ? false : true;
+			if(edtrul.number === true) {
+				if( !(rqfield === false && $.jgrid.isEmpty(val)) ) {
+					if(isNaN(val)) { return [false,nm+": "+$.jgrid.edit.msg.number,""]; }
+				}
+			}
+			if(edtrul.minValue !== undefined && !isNaN(edtrul.minValue)) {
+				if (parseFloat(val) < parseFloat(edtrul.minValue) ) { return [false,nm+": "+$.jgrid.edit.msg.minValue+" "+edtrul.minValue,""];}
+			}
+			if(edtrul.maxValue !== undefined && !isNaN(edtrul.maxValue)) {
+				if (parseFloat(val) > parseFloat(edtrul.maxValue) ) { return [false,nm+": "+$.jgrid.edit.msg.maxValue+" "+edtrul.maxValue,""];}
+			}
+			var filter;
+			if(edtrul.email === true) {
+				if( !(rqfield === false && $.jgrid.isEmpty(val)) ) {
+				// taken from $ Validate plugin
+					filter = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i;
+					if(!filter.test(val)) {return [false,nm+": "+$.jgrid.edit.msg.email,""];}
+				}
+			}
+			if(edtrul.integer === true) {
+				if( !(rqfield === false && $.jgrid.isEmpty(val)) ) {
+					if(isNaN(val)) { return [false,nm+": "+$.jgrid.edit.msg.integer,""]; }
+					if ((val % 1 !== 0) || (val.indexOf('.') !== -1)) { return [false,nm+": "+$.jgrid.edit.msg.integer,""];}
+				}
+			}
+			if(edtrul.date === true) {
+				if( !(rqfield === false && $.jgrid.isEmpty(val)) ) {
+					if(cm[valref].formatoptions && cm[valref].formatoptions.newformat) {
+						dft = cm[valref].formatoptions.newformat;
+						if( $.jgrid.formatter.date.masks.hasOwnProperty(dft) ) {
+							dft = $.jgrid.formatter.date.masks[dft];
+						}
+					} else {
+						dft = cm[valref].datefmt || "Y-m-d";
+					}
+					if(!$.jgrid.checkDate (dft, val)) { return [false,nm+": "+$.jgrid.edit.msg.date+" - "+dft,""]; }
+				}
+			}
+			if(edtrul.time === true) {
+				if( !(rqfield === false && $.jgrid.isEmpty(val)) ) {
+					if(!$.jgrid.checkTime (val)) { return [false,nm+": "+$.jgrid.edit.msg.date+" - hh:mm (am/pm)",""]; }
+				}
+			}
+			if(edtrul.url === true) {
+				if( !(rqfield === false && $.jgrid.isEmpty(val)) ) {
+					filter = /^(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;
+					if(!filter.test(val)) {return [false,nm+": "+$.jgrid.edit.msg.url,""];}
+				}
+			}
+			if(edtrul.custom === true) {
+				if( !(rqfield === false && $.jgrid.isEmpty(val)) ) {
+					if($.isFunction(edtrul.custom_func)) {
+						var ret = edtrul.custom_func.call(g,val,nm,valref);
+						return $.isArray(ret) ? ret : [false,$.jgrid.edit.msg.customarray,""];
+					}
+					return [false,$.jgrid.edit.msg.customfcheck,""];
+				}
+			}
+		}
+		return [true,"",""];
+	}
+});
+})(jQuery);

+ 1004 - 0
app/Resources/public/assets/jqgrid/js/grid.custom.js

@@ -0,0 +1,1004 @@
+/*jshint eqeqeq:false */
+/*global jQuery */
+(function($){
+/**
+ * jqGrid extension for custom methods
+ * Tony Tomov tony@trirand.com
+ * http://trirand.com/blog/ 
+ * 
+ * Wildraid wildraid@mail.ru
+ * Oleg Kiriljuk oleg.kiriljuk@ok-soft-gmbh.com
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl-2.0.html
+**/
+"use strict";
+$.jgrid.extend({
+	getColProp : function(colname){
+		var ret ={}, $t = this[0];
+		if ( !$t.grid ) { return false; }
+		var cM = $t.p.colModel, i;
+		for ( i=0;i<cM.length;i++ ) {
+			if ( cM[i].name === colname ) {
+				ret = cM[i];
+				break;
+			}
+		}
+		return ret;
+	},
+	setColProp : function(colname, obj){
+		//do not set width will not work
+		return this.each(function(){
+			if ( this.grid ) {
+				if ( obj ) {
+					var cM = this.p.colModel, i;
+					for ( i=0;i<cM.length;i++ ) {
+						if ( cM[i].name === colname ) {
+							$.extend(true, this.p.colModel[i],obj);
+							break;
+						}
+					}
+				}
+			}
+		});
+	},
+	sortGrid : function(colname,reload, sor){
+		return this.each(function(){
+			var $t=this,idx=-1,i, sobj=false;
+			if ( !$t.grid ) { return;}
+			if ( !colname ) { colname = $t.p.sortname; }
+			for ( i=0;i<$t.p.colModel.length;i++ ) {
+				if ( $t.p.colModel[i].index === colname || $t.p.colModel[i].name === colname ) {
+					idx = i;
+					if($t.p.frozenColumns === true && $t.p.colModel[i].frozen === true) {
+						sobj = $t.grid.fhDiv.find("#" + $t.p.id + "_" + colname);
+					}
+					break;
+				}
+			}
+			if ( idx !== -1 ){
+				var sort = $t.p.colModel[idx].sortable;
+				if(!sobj) {
+					sobj = $t.grid.headers[idx].el;
+				}
+				if ( typeof sort !== 'boolean' ) { sort =  true; }
+				if ( typeof reload !=='boolean' ) { reload = false; }
+				if ( sort ) { $t.sortData("jqgh_"+$t.p.id+"_" + colname, idx, reload, sor, sobj); }
+			}
+		});
+	},
+	clearBeforeUnload : function () {
+		return this.each(function(){
+			var grid = this.grid;
+			if ($.isFunction(grid.emptyRows)) {
+				grid.emptyRows.call(this, true, true); // this work quick enough and reduce the size of memory leaks if we have someone
+			}
+
+			$(document).unbind("mouseup.jqGrid" + this.p.id ); 
+			$(grid.hDiv).unbind("mousemove"); // TODO add namespace
+			$(this).unbind();
+
+			grid.dragEnd = null;
+			grid.dragMove = null;
+			grid.dragStart = null;
+			grid.emptyRows = null;
+			grid.populate = null;
+			grid.populateVisible = null;
+			grid.scrollGrid = null;
+			grid.selectionPreserver = null;
+
+			grid.bDiv = null;
+			grid.cDiv = null;
+			grid.hDiv = null;
+			grid.cols = null;
+			var i, l = grid.headers.length;
+			for (i = 0; i < l; i++) {
+				grid.headers[i].el = null;
+			}
+
+			this.formatCol = null;
+			this.sortData = null;
+			this.updatepager = null;
+			this.refreshIndex = null;
+			this.setHeadCheckBox = null;
+			this.constructTr = null;
+			this.formatter = null;
+			this.addXmlData = null;
+			this.addJSONData = null;
+			this.grid = null;
+		});
+	},
+	GridDestroy : function () {
+		return this.each(function(){
+			if ( this.grid ) { 
+				if ( this.p.pager ) { // if not part of grid
+					$(this.p.pager).remove();
+				}
+				try {
+					$(this).jqGrid('clearBeforeUnload');
+					$("#gbox_"+$.jgrid.jqID(this.id)).remove();
+					$("#alertmod_"+$.jgrid.jqID(this.id)).remove();
+				} catch (_) {}
+			}
+		});
+	},
+	GridUnload : function(){
+		return this.each(function(){
+			if ( !this.grid ) {return;}
+			var defgrid = {id: $(this).attr('id'),cl: $(this).attr('class')};
+			if (this.p.pager) {
+				$(this.p.pager).empty().removeClass("ui-state-default ui-jqgrid-pager ui-corner-bottom");
+			}
+			var newtable = document.createElement('table');
+			$(newtable).attr({id:defgrid.id});
+			newtable.className = defgrid.cl;
+			var gid = $.jgrid.jqID(this.id);
+			$(newtable).removeClass("ui-jqgrid-btable");
+			if( $(this.p.pager).parents("#gbox_"+gid).length === 1 ) {
+				$(newtable).insertBefore("#gbox_"+gid).show();
+				$(this.p.pager).insertBefore("#gbox_"+gid);
+			} else {
+				$(newtable).insertBefore("#gbox_"+gid).show();
+			}
+			$(this).jqGrid('clearBeforeUnload');
+			$("#gbox_"+gid).remove();
+		});
+	},
+	setGridState : function(state) {
+		return this.each(function(){
+			if ( !this.grid ) {return;}
+			var $t = this;
+			if(state === 'hidden'){
+				$(".ui-jqgrid-bdiv, .ui-jqgrid-hdiv","#gview_"+$.jgrid.jqID($t.p.id)).slideUp("fast");
+				if($t.p.pager) {$($t.p.pager).slideUp("fast");}
+				if($t.p.toppager) {$($t.p.toppager).slideUp("fast");}
+				if($t.p.toolbar[0]===true) {
+					if( $t.p.toolbar[1] === 'both') {
+						$($t.grid.ubDiv).slideUp("fast");
+					}
+					$($t.grid.uDiv).slideUp("fast");
+				}
+				if($t.p.footerrow) { $(".ui-jqgrid-sdiv","#gbox_"+$.jgrid.jqID($t.p.id)).slideUp("fast"); }
+				$(".ui-jqgrid-titlebar-close span",$t.grid.cDiv).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s");
+				$t.p.gridstate = 'hidden';
+			} else if(state === 'visible') {
+				$(".ui-jqgrid-hdiv, .ui-jqgrid-bdiv","#gview_"+$.jgrid.jqID($t.p.id)).slideDown("fast");
+				if($t.p.pager) {$($t.p.pager).slideDown("fast");}
+				if($t.p.toppager) {$($t.p.toppager).slideDown("fast");}
+				if($t.p.toolbar[0]===true) {
+					if( $t.p.toolbar[1] === 'both') {
+						$($t.grid.ubDiv).slideDown("fast");
+					}
+					$($t.grid.uDiv).slideDown("fast");
+				}
+				if($t.p.footerrow) { $(".ui-jqgrid-sdiv","#gbox_"+$.jgrid.jqID($t.p.id)).slideDown("fast"); }
+				$(".ui-jqgrid-titlebar-close span",$t.grid.cDiv).removeClass("ui-icon-circle-triangle-s").addClass("ui-icon-circle-triangle-n");
+				$t.p.gridstate = 'visible';
+			}
+
+		});
+	},
+	filterToolbar : function(p){
+		p = $.extend({
+			autosearch: true,
+			autosearchDelay: 500,
+			searchOnEnter : true,
+			beforeSearch: null,
+			afterSearch: null,
+			beforeClear: null,
+			afterClear: null,
+			searchurl : '',
+			stringResult: false,
+			groupOp: 'AND',
+			defaultSearch : "bw",
+			searchOperators : false,
+			resetIcon : "x",
+			operands : { "eq" :"==", "ne":"!","lt":"<","le":"<=","gt":">","ge":">=","bw":"^","bn":"!^","in":"=","ni":"!=","ew":"|","en":"!@","cn":"~","nc":"!~","nu":"#","nn":"!#"}
+		}, $.jgrid.search , p  || {});
+		return this.each(function(){
+			var $t = this;
+			if(this.ftoolbar) { return; }
+			var triggerToolbar = function() {
+				var sdata={}, j=0, v, nm, sopt={},so;
+				$.each($t.p.colModel,function(){
+					var $elem = $("#gs_"+$.jgrid.jqID(this.name), (this.frozen===true && $t.p.frozenColumns === true) ?  $t.grid.fhDiv : $t.grid.hDiv);
+					nm = this.index || this.name;
+					if(p.searchOperators ) {
+						so = $elem.parent().prev().children("a").attr("soper") || p.defaultSearch;
+					} else {
+						so  = (this.searchoptions && this.searchoptions.sopt) ? this.searchoptions.sopt[0] : this.stype==='select'?  'eq' : p.defaultSearch;
+					}
+					v = this.stype === "custom" && $.isFunction(this.searchoptions.custom_value) && $elem.length > 0 && $elem[0].nodeName.toUpperCase() === "SPAN" ?
+						this.searchoptions.custom_value.call($t, $elem.children(".customelement:first"), "get") :
+						$elem.val();
+					if(v || so==="nu" || so==="nn") {
+						sdata[nm] = v;
+						sopt[nm] = so;
+						j++;
+					} else {
+						try {
+							delete $t.p.postData[nm];
+						} catch (z) {}
+					}
+				});
+				var sd =  j>0 ? true : false;
+				if(p.stringResult === true || $t.p.datatype === "local" || p.searchOperators === true) {
+					var ruleGroup = "{\"groupOp\":\"" + p.groupOp + "\",\"rules\":[";
+					var gi=0;
+					$.each(sdata,function(i,n){
+						if (gi > 0) {ruleGroup += ",";}
+						ruleGroup += "{\"field\":\"" + i + "\",";
+						ruleGroup += "\"op\":\"" + sopt[i] + "\",";
+						n+="";
+						ruleGroup += "\"data\":\"" + n.replace(/\\/g,'\\\\').replace(/\"/g,'\\"') + "\"}";
+						gi++;
+					});
+					ruleGroup += "]}";
+					$.extend($t.p.postData,{filters:ruleGroup});
+					$.each(['searchField', 'searchString', 'searchOper'], function(i, n){
+						if($t.p.postData.hasOwnProperty(n)) { delete $t.p.postData[n];}
+					});
+				} else {
+					$.extend($t.p.postData,sdata);
+				}
+				var saveurl;
+				if($t.p.searchurl) {
+					saveurl = $t.p.url;
+					$($t).jqGrid("setGridParam",{url:$t.p.searchurl});
+				}
+				var bsr = $($t).triggerHandler("jqGridToolbarBeforeSearch") === 'stop' ? true : false;
+				if(!bsr && $.isFunction(p.beforeSearch)){bsr = p.beforeSearch.call($t);}
+				if(!bsr) { $($t).jqGrid("setGridParam",{search:sd}).trigger("reloadGrid",[{page:1}]); }
+				if(saveurl) {$($t).jqGrid("setGridParam",{url:saveurl});}
+				$($t).triggerHandler("jqGridToolbarAfterSearch");
+				if($.isFunction(p.afterSearch)){p.afterSearch.call($t);}
+			},
+			clearToolbar = function(trigger){
+				var sdata={}, j=0, nm;
+				trigger = (typeof trigger !== 'boolean') ? true : trigger;
+				$.each($t.p.colModel,function(){
+					var v, $elem = $("#gs_"+$.jgrid.jqID(this.name),(this.frozen===true && $t.p.frozenColumns === true) ?  $t.grid.fhDiv : $t.grid.hDiv);
+					if(this.searchoptions && this.searchoptions.defaultValue !== undefined) { v = this.searchoptions.defaultValue; }
+					nm = this.index || this.name;
+					switch (this.stype) {
+						case 'select' :
+							$elem.find("option").each(function (i){
+								if(i===0) { this.selected = true; }
+								if ($(this).val() === v) {
+									this.selected = true;
+									return false;
+								}
+							});
+							if ( v !== undefined ) {
+								// post the key and not the text
+								sdata[nm] = v;
+								j++;
+							} else {
+								try {
+									delete $t.p.postData[nm];
+								} catch(e) {}
+							}
+							break;
+						case 'text':
+							$elem.val(v || "");
+							if(v !== undefined) {
+								sdata[nm] = v;
+								j++;
+							} else {
+								try {
+									delete $t.p.postData[nm];
+								} catch (y){}
+							}
+							break;
+						case 'custom':
+							if ($.isFunction(this.searchoptions.custom_value) && $elem.length > 0 && $elem[0].nodeName.toUpperCase() === "SPAN") {
+								this.searchoptions.custom_value.call($t, $elem.children(".customelement:first"), "set", v || "");
+							}
+							break;
+					}
+				});
+				var sd =  j>0 ? true : false;
+				$t.p.resetsearch =  true;
+				if(p.stringResult === true || $t.p.datatype === "local") {
+					var ruleGroup = "{\"groupOp\":\"" + p.groupOp + "\",\"rules\":[";
+					var gi=0;
+					$.each(sdata,function(i,n){
+						if (gi > 0) {ruleGroup += ",";}
+						ruleGroup += "{\"field\":\"" + i + "\",";
+						ruleGroup += "\"op\":\"" + "eq" + "\",";
+						n+="";
+						ruleGroup += "\"data\":\"" + n.replace(/\\/g,'\\\\').replace(/\"/g,'\\"') + "\"}";
+						gi++;
+					});
+					ruleGroup += "]}";
+					$.extend($t.p.postData,{filters:ruleGroup});
+					$.each(['searchField', 'searchString', 'searchOper'], function(i, n){
+						if($t.p.postData.hasOwnProperty(n)) { delete $t.p.postData[n];}
+					});
+				} else {
+					$.extend($t.p.postData,sdata);
+				}
+				var saveurl;
+				if($t.p.searchurl) {
+					saveurl = $t.p.url;
+					$($t).jqGrid("setGridParam",{url:$t.p.searchurl});
+				}
+				var bcv = $($t).triggerHandler("jqGridToolbarBeforeClear") === 'stop' ? true : false;
+				if(!bcv && $.isFunction(p.beforeClear)){bcv = p.beforeClear.call($t);}
+				if(!bcv) {
+					if(trigger) {
+						$($t).jqGrid("setGridParam",{search:sd}).trigger("reloadGrid",[{page:1}]);
+					}
+				}
+				if(saveurl) {$($t).jqGrid("setGridParam",{url:saveurl});}
+				$($t).triggerHandler("jqGridToolbarAfterClear");
+				if($.isFunction(p.afterClear)){p.afterClear();}
+			},
+			toggleToolbar = function(){
+				var trow = $("tr.ui-search-toolbar",$t.grid.hDiv),
+				trow2 = $t.p.frozenColumns === true ?  $("tr.ui-search-toolbar",$t.grid.fhDiv) : false;
+				if(trow.css("display") === 'none') {
+					trow.show(); 
+					if(trow2) {
+						trow2.show();
+					}
+				} else { 
+					trow.hide(); 
+					if(trow2) {
+						trow2.hide();
+					}
+				}
+			},
+			buildRuleMenu = function( elem, left, top ){
+				$("#sopt_menu").remove();
+
+				left=parseInt(left,10);
+				top=parseInt(top,10) + 18;
+
+				var fs =  $('.ui-jqgrid-view').css('font-size') || '11px';
+				var str = '<ul id="sopt_menu" class="ui-search-menu" role="menu" tabindex="0" style="font-size:'+fs+';left:'+left+'px;top:'+top+'px;">',
+				selected = $(elem).attr("soper"), selclass,
+				aoprs = [], ina;
+				var i=0, nm =$(elem).attr("colname"),len = $t.p.colModel.length;
+				while(i<len) {
+					if($t.p.colModel[i].name === nm) {
+						break;
+					}
+					i++;
+				}
+				var cm = $t.p.colModel[i], options = $.extend({}, cm.searchoptions);
+				if(!options.sopt) {
+					options.sopt = [];
+					options.sopt[0]= cm.stype==='select' ?  'eq' : p.defaultSearch;
+				}
+				$.each(p.odata, function() { aoprs.push(this.oper); });
+				for ( i = 0 ; i < options.sopt.length; i++) {
+					ina = $.inArray(options.sopt[i],aoprs);
+					if(ina !== -1) {
+						selclass = selected === p.odata[ina].oper ? "ui-state-highlight" : "";
+						str += '<li class="ui-menu-item '+selclass+'" role="presentation"><a class="ui-corner-all g-menu-item" tabindex="0" role="menuitem" value="'+p.odata[ina].oper+'" oper="'+p.operands[p.odata[ina].oper]+'"><table cellspacing="0" cellpadding="0" border="0"><tr><td width="25px">'+p.operands[p.odata[ina].oper]+'</td><td>'+ p.odata[ina].text+'</td></tr></table></a></li>';
+					}
+				}
+				str += "</ul>";
+				$('body').append(str);
+				$("#sopt_menu").addClass("ui-menu ui-widget ui-widget-content ui-corner-all");
+				$("#sopt_menu > li > a").hover(
+					function(){ $(this).addClass("ui-state-hover"); },
+					function(){ $(this).removeClass("ui-state-hover"); }
+				).click(function( e ){
+					var v = $(this).attr("value"),
+					oper = $(this).attr("oper");
+					$($t).triggerHandler("jqGridToolbarSelectOper", [v, oper, elem]);
+					$("#sopt_menu").hide();
+					$(elem).text(oper).attr("soper",v);
+					if(p.autosearch===true){
+						var inpelm = $(elem).parent().next().children()[0];
+						if( $(inpelm).val() || v==="nu" || v ==="nn") {
+							triggerToolbar();
+						}
+					}
+				});
+			};
+			// create the row
+			var tr = $("<tr class='ui-search-toolbar' role='row'></tr>");
+			var timeoutHnd;
+			$.each($t.p.colModel,function(ci){
+				var cm=this, soptions, surl, self, select = "", sot="=", so, i,
+				th = $("<th role='columnheader' class='ui-state-default ui-th-column ui-th-"+$t.p.direction+"'></th>"),
+				thd = $("<div style='position:relative;height:auto;padding-right:0.3em;padding-left:0.3em;'></div>"),
+				stbl = $("<table class='ui-search-table' cellspacing='0'><tr><td class='ui-search-oper'></td><td class='ui-search-input'></td><td class='ui-search-clear'></td></tr></table>");
+				if(this.hidden===true) { $(th).css("display","none");}
+				this.search = this.search === false ? false : true;
+				if(this.stype === undefined) {this.stype='text';}
+				soptions = $.extend({},this.searchoptions || {});
+				if(this.search){
+					if(p.searchOperators) {
+						so  = (soptions.sopt) ? soptions.sopt[0] : cm.stype==='select' ?  'eq' : p.defaultSearch;
+						for(i = 0;i<p.odata.length;i++) {
+							if(p.odata[i].oper === so) {
+								sot = p.operands[so] || "";
+								break;
+							}
+						}
+						var st = soptions.searchtitle != null ? soptions.searchtitle : p.operandTitle;
+						select = "<a title='"+st+"' style='padding-right: 0.5em;' soper='"+so+"' class='soptclass' colname='"+this.name+"'>"+sot+"</a>";
+					}
+					$("td:eq(0)",stbl).attr("colindex",ci).append(select);
+					if(soptions.clearSearch === undefined) {
+						soptions.clearSearch = true;
+					}
+					if(soptions.clearSearch) {
+						var csv = p.resetTitle || 'Clear Search Value';
+						$("td:eq(2)",stbl).append("<a title='"+csv+"' style='padding-right: 0.3em;padding-left: 0.3em;' class='clearsearchclass'>"+p.resetIcon+"</a>");
+					} else {
+						$("td:eq(2)", stbl).hide();
+					}
+					switch (this.stype)
+					{
+					case "select":
+						surl = this.surl || soptions.dataUrl;
+						if(surl) {
+							// data returned should have already constructed html select
+							// primitive jQuery load
+							self = thd;
+							$(self).append(stbl);
+							$.ajax($.extend({
+								url: surl,
+								dataType: "html",
+								success: function(res) {
+									if(soptions.buildSelect !== undefined) {
+										var d = soptions.buildSelect(res);
+										if (d) {
+											$("td:eq(1)",stbl).append(d);
+										}
+									} else {
+										$("td:eq(1)",stbl).append(res);
+									}
+									if(soptions.defaultValue !== undefined) { $("select",self).val(soptions.defaultValue); }
+									$("select",self).attr({name:cm.index || cm.name, id: "gs_"+cm.name});
+									if(soptions.attr) {$("select",self).attr(soptions.attr);}
+									$("select",self).css({width: "100%"});
+									// preserve autoserch
+									$.jgrid.bindEv.call($t, $("select",self)[0], soptions);
+									if(p.autosearch===true){
+										$("select",self).change(function(){
+											triggerToolbar();
+											return false;
+										});
+									}
+									res=null;
+								}
+							}, $.jgrid.ajaxOptions, $t.p.ajaxSelectOptions || {} ));
+						} else {
+							var oSv, sep, delim;
+							if(cm.searchoptions) {
+								oSv = cm.searchoptions.value === undefined ? "" : cm.searchoptions.value;
+								sep = cm.searchoptions.separator === undefined ? ":" : cm.searchoptions.separator;
+								delim = cm.searchoptions.delimiter === undefined ? ";" : cm.searchoptions.delimiter;
+							} else if(cm.editoptions) {
+								oSv = cm.editoptions.value === undefined ? "" : cm.editoptions.value;
+								sep = cm.editoptions.separator === undefined ? ":" : cm.editoptions.separator;
+								delim = cm.editoptions.delimiter === undefined ? ";" : cm.editoptions.delimiter;
+							}
+							if (oSv) {	
+								var elem = document.createElement("select");
+								elem.style.width = "100%";
+								$(elem).attr({name:cm.index || cm.name, id: "gs_"+cm.name});
+								var sv, ov, key, k;
+								if(typeof oSv === "string") {
+									so = oSv.split(delim);
+									for(k=0; k<so.length;k++){
+										sv = so[k].split(sep);
+										ov = document.createElement("option");
+										ov.value = sv[0]; ov.innerHTML = sv[1];
+										elem.appendChild(ov);
+									}
+								} else if(typeof oSv === "object" ) {
+									for (key in oSv) {
+										if(oSv.hasOwnProperty(key)) {
+											ov = document.createElement("option");
+											ov.value = key; ov.innerHTML = oSv[key];
+											elem.appendChild(ov);
+										}
+									}
+								}
+								if(soptions.defaultValue !== undefined) { $(elem).val(soptions.defaultValue); }
+								if(soptions.attr) {$(elem).attr(soptions.attr);}
+								$(thd).append(stbl);
+								$.jgrid.bindEv.call($t, elem , soptions);
+								$("td:eq(1)",stbl).append( elem );
+								if(p.autosearch===true){
+									$(elem).change(function(){
+										triggerToolbar();
+										return false;
+									});
+								}
+							}
+						}
+						break;
+					case "text":
+						var df = soptions.defaultValue !== undefined ? soptions.defaultValue: "";
+
+						$("td:eq(1)",stbl).append("<input type='text' style='width:100%;padding:0px;' name='"+(cm.index || cm.name)+"' id='gs_"+cm.name+"' value='"+df+"'/>");
+						$(thd).append(stbl);
+
+						if(soptions.attr) {$("input",thd).attr(soptions.attr);}
+						$.jgrid.bindEv.call($t, $("input",thd)[0], soptions);
+						if(p.autosearch===true){
+							if(p.searchOnEnter) {
+								$("input",thd).keypress(function(e){
+									var key = e.charCode || e.keyCode || 0;
+									if(key === 13){
+										triggerToolbar();
+										return false;
+									}
+									return this;
+								});
+							} else {
+								$("input",thd).keydown(function(e){
+									var key = e.which;
+									switch (key) {
+										case 13:
+											return false;
+										case 9 :
+										case 16:
+										case 37:
+										case 38:
+										case 39:
+										case 40:
+										case 27:
+											break;
+										default :
+											if(timeoutHnd) { clearTimeout(timeoutHnd); }
+											timeoutHnd = setTimeout(function(){triggerToolbar();}, p.autosearchDelay);
+									}
+								});
+							}
+						}
+						break;
+					case "custom":
+						$("td:eq(1)",stbl).append("<span style='width:95%;padding:0px;' name='"+(cm.index || cm.name)+"' id='gs_"+cm.name+"'/>");
+						$(thd).append(stbl);
+						try {
+							if($.isFunction(soptions.custom_element)) {
+								var celm = soptions.custom_element.call($t,soptions.defaultValue !== undefined ? soptions.defaultValue: "",soptions);
+								if(celm) {
+									celm = $(celm).addClass("customelement");
+									$(thd).find("span[name='" + (cm.index || cm.name) + "']").append(celm);
+								} else {
+									throw "e2";
+								}
+							} else {
+								throw "e1";
+							}
+						} catch (e) {
+							if (e === "e1") { $.jgrid.info_dialog($.jgrid.errors.errcap,"function 'custom_element' "+$.jgrid.edit.msg.nodefined,$.jgrid.edit.bClose);}
+							if (e === "e2") { $.jgrid.info_dialog($.jgrid.errors.errcap,"function 'custom_element' "+$.jgrid.edit.msg.novalue,$.jgrid.edit.bClose);}
+							else { $.jgrid.info_dialog($.jgrid.errors.errcap,typeof e==="string"?e:e.message,$.jgrid.edit.bClose); }
+						}
+						break;
+					}
+				}
+				$(th).append(thd);
+				$(tr).append(th);
+				if(!p.searchOperators) {
+					$("td:eq(0)",stbl).hide();
+				}
+			});
+			$("table thead",$t.grid.hDiv).append(tr);
+			if(p.searchOperators) {
+				$(".soptclass",tr).click(function(e){
+					var offset = $(this).offset(),
+					left = ( offset.left ),
+					top = ( offset.top);
+					buildRuleMenu(this, left, top );
+					e.stopPropagation();
+				});
+				$("body").on('click', function(e){
+					if(e.target.className !== "soptclass") {
+						$("#sopt_menu").hide();
+					}
+				});
+			}
+			$(".clearsearchclass",tr).click(function(e){
+				var ptr = $(this).parents("tr:first"),
+				coli = parseInt($("td.ui-search-oper", ptr).attr('colindex'),10),
+				sval  = $.extend({},$t.p.colModel[coli].searchoptions || {}),
+				dval = sval.defaultValue ? sval.defaultValue : "";
+				if($t.p.colModel[coli].stype === "select") {
+					if(dval) {
+						$("td.ui-search-input select", ptr).val( dval );
+					} else {
+						$("td.ui-search-input select", ptr)[0].selectedIndex = 0;
+					}
+				} else {
+					$("td.ui-search-input input", ptr).val( dval );
+				}
+				// ToDo custom search type
+				if(p.autosearch===true){
+					triggerToolbar();
+				}
+
+			});
+			this.ftoolbar = true;
+			this.triggerToolbar = triggerToolbar;
+			this.clearToolbar = clearToolbar;
+			this.toggleToolbar = toggleToolbar;
+		});
+	},
+	destroyFilterToolbar: function () {
+		return this.each(function () {
+			if (!this.ftoolbar) {
+				return;
+			}
+			this.triggerToolbar = null;
+			this.clearToolbar = null;
+			this.toggleToolbar = null;
+			this.ftoolbar = false;
+			$(this.grid.hDiv).find("table thead tr.ui-search-toolbar").remove();
+		});
+	},
+	destroyGroupHeader : function(nullHeader)
+	{
+		if(nullHeader === undefined) {
+			nullHeader = true;
+		}
+		return this.each(function()
+		{
+			var $t = this, $tr, i, l, headers, $th, $resizing, grid = $t.grid,
+			thead = $("table.ui-jqgrid-htable thead", grid.hDiv), cm = $t.p.colModel, hc;
+			if(!grid) { return; }
+
+			$(this).unbind('.setGroupHeaders');
+			$tr = $("<tr>", {role: "row"}).addClass("ui-jqgrid-labels");
+			headers = grid.headers;
+			for (i = 0, l = headers.length; i < l; i++) {
+				hc = cm[i].hidden ? "none" : "";
+				$th = $(headers[i].el)
+					.width(headers[i].width)
+					.css('display',hc);
+				try {
+					$th.removeAttr("rowSpan");
+				} catch (rs) {
+					//IE 6/7
+					$th.attr("rowSpan",1);
+				}
+				$tr.append($th);
+				$resizing = $th.children("span.ui-jqgrid-resize");
+				if ($resizing.length>0) {// resizable column
+					$resizing[0].style.height = "";
+				}
+				$th.children("div")[0].style.top = "";
+			}
+			$(thead).children('tr.ui-jqgrid-labels').remove();
+			$(thead).prepend($tr);
+
+			if(nullHeader === true) {
+				$($t).jqGrid('setGridParam',{ 'groupHeader': null});
+			}
+		});
+	},
+	setGroupHeaders : function ( o ) {
+		o = $.extend({
+			useColSpanStyle :  false,
+			groupHeaders: []
+		},o  || {});
+		return this.each(function(){
+			this.p.groupHeader = o;
+			var ts = this,
+			i, cmi, skip = 0, $tr, $colHeader, th, $th, thStyle,
+			iCol,
+			cghi,
+			//startColumnName,
+			numberOfColumns,
+			titleText,
+			cVisibleColumns,
+			colModel = ts.p.colModel,
+			cml = colModel.length,
+			ths = ts.grid.headers,
+			$htable = $("table.ui-jqgrid-htable", ts.grid.hDiv),
+			$trLabels = $htable.children("thead").children("tr.ui-jqgrid-labels:last").addClass("jqg-second-row-header"),
+			$thead = $htable.children("thead"),
+			$theadInTable,
+			$firstHeaderRow = $htable.find(".jqg-first-row-header");
+			if($firstHeaderRow[0] === undefined) {
+				$firstHeaderRow = $('<tr>', {role: "row", "aria-hidden": "true"}).addClass("jqg-first-row-header").css("height", "auto");
+			} else {
+				$firstHeaderRow.empty();
+			}
+			var $firstRow,
+			inColumnHeader = function (text, columnHeaders) {
+				var length = columnHeaders.length, i;
+				for (i = 0; i < length; i++) {
+					if (columnHeaders[i].startColumnName === text) {
+						return i;
+					}
+				}
+				return -1;
+			};
+
+			$(ts).prepend($thead);
+			$tr = $('<tr>', {role: "row"}).addClass("ui-jqgrid-labels jqg-third-row-header");
+			for (i = 0; i < cml; i++) {
+				th = ths[i].el;
+				$th = $(th);
+				cmi = colModel[i];
+				// build the next cell for the first header row
+				thStyle = { height: '0px', width: ths[i].width + 'px', display: (cmi.hidden ? 'none' : '')};
+				$("<th>", {role: 'gridcell'}).css(thStyle).addClass("ui-first-th-"+ts.p.direction).appendTo($firstHeaderRow);
+
+				th.style.width = ""; // remove unneeded style
+				iCol = inColumnHeader(cmi.name, o.groupHeaders);
+				if (iCol >= 0) {
+					cghi = o.groupHeaders[iCol];
+					numberOfColumns = cghi.numberOfColumns;
+					titleText = cghi.titleText;
+
+					// caclulate the number of visible columns from the next numberOfColumns columns
+					for (cVisibleColumns = 0, iCol = 0; iCol < numberOfColumns && (i + iCol < cml); iCol++) {
+						if (!colModel[i + iCol].hidden) {
+							cVisibleColumns++;
+						}
+					}
+
+					// The next numberOfColumns headers will be moved in the next row
+					// in the current row will be placed the new column header with the titleText.
+					// The text will be over the cVisibleColumns columns
+					$colHeader = $('<th>').attr({role: "columnheader"})
+						.addClass("ui-state-default ui-th-column-header ui-th-"+ts.p.direction)
+						.css({'height':'22px', 'border-top': '0 none'})
+						.html(titleText);
+					if(cVisibleColumns > 0) {
+						$colHeader.attr("colspan", String(cVisibleColumns));
+					}
+					if (ts.p.headertitles) {
+						$colHeader.attr("title", $colHeader.text());
+					}
+					// hide if not a visible cols
+					if( cVisibleColumns === 0) {
+						$colHeader.hide();
+					}
+
+					$th.before($colHeader); // insert new column header before the current
+					$tr.append(th);         // move the current header in the next row
+
+					// set the coumter of headers which will be moved in the next row
+					skip = numberOfColumns - 1;
+				} else {
+					if (skip === 0) {
+						if (o.useColSpanStyle) {
+							// expand the header height to two rows
+							$th.attr("rowspan", "2");
+						} else {
+							$('<th>', {role: "columnheader"})
+								.addClass("ui-state-default ui-th-column-header ui-th-"+ts.p.direction)
+								.css({"display": cmi.hidden ? 'none' : '', 'border-top': '0 none'})
+								.insertBefore($th);
+							$tr.append(th);
+						}
+					} else {
+						// move the header to the next row
+						//$th.css({"padding-top": "2px", height: "19px"});
+						$tr.append(th);
+						skip--;
+					}
+				}
+			}
+			$theadInTable = $(ts).children("thead");
+			$theadInTable.prepend($firstHeaderRow);
+			$tr.insertAfter($trLabels);
+			$htable.append($theadInTable);
+
+			if (o.useColSpanStyle) {
+				// Increase the height of resizing span of visible headers
+				$htable.find("span.ui-jqgrid-resize").each(function () {
+					var $parent = $(this).parent();
+					if ($parent.is(":visible")) {
+						this.style.cssText = 'height: ' + $parent.height() + 'px !important; cursor: col-resize;';
+					}
+				});
+
+				// Set position of the sortable div (the main lable)
+				// with the column header text to the middle of the cell.
+				// One should not do this for hidden headers.
+				$htable.find("div.ui-jqgrid-sortable").each(function () {
+					var $ts = $(this), $parent = $ts.parent();
+					if ($parent.is(":visible") && $parent.is(":has(span.ui-jqgrid-resize)")) {
+						$ts.css('top', ($parent.height() - $ts.outerHeight()) / 2 + 'px');
+					}
+				});
+			}
+
+			$firstRow = $theadInTable.find("tr.jqg-first-row-header");
+			$(ts).bind('jqGridResizeStop.setGroupHeaders', function (e, nw, idx) {
+				$firstRow.find('th').eq(idx).width(nw);
+			});
+		});				
+	},
+	setFrozenColumns : function () {
+		return this.each(function() {
+			if ( !this.grid ) {return;}
+			var $t = this, cm = $t.p.colModel,i=0, len = cm.length, maxfrozen = -1, frozen= false;
+			// TODO treeGrid and grouping  Support
+			if($t.p.subGrid === true || $t.p.treeGrid === true || $t.p.cellEdit === true || $t.p.sortable || $t.p.scroll )
+			{
+				return;
+			}
+			if($t.p.rownumbers) { i++; }
+			if($t.p.multiselect) { i++; }
+			
+			// get the max index of frozen col
+			while(i<len)
+			{
+				// from left, no breaking frozen
+				if(cm[i].frozen === true)
+				{
+					frozen = true;
+					maxfrozen = i;
+				} else {
+					break;
+				}
+				i++;
+			}
+			if( maxfrozen>=0 && frozen) {
+				var top = $t.p.caption ? $($t.grid.cDiv).outerHeight() : 0,
+				hth = $(".ui-jqgrid-htable","#gview_"+$.jgrid.jqID($t.p.id)).height();
+				//headers
+				if($t.p.toppager) {
+					top = top + $($t.grid.topDiv).outerHeight();
+				}
+				if($t.p.toolbar[0] === true) {
+					if($t.p.toolbar[1] !== "bottom") {
+						top = top + $($t.grid.uDiv).outerHeight();
+					}
+				}
+				$t.grid.fhDiv = $('<div style="position:absolute;left:0px;top:'+top+'px;height:'+hth+'px;" class="frozen-div ui-state-default ui-jqgrid-hdiv"></div>');
+				$t.grid.fbDiv = $('<div style="position:absolute;left:0px;top:'+(parseInt(top,10)+parseInt(hth,10) + 1)+'px;overflow-y:hidden" class="frozen-bdiv ui-jqgrid-bdiv"></div>');
+				$("#gview_"+$.jgrid.jqID($t.p.id)).append($t.grid.fhDiv);
+				var htbl = $(".ui-jqgrid-htable","#gview_"+$.jgrid.jqID($t.p.id)).clone(true);
+				// groupheader support - only if useColSpanstyle is false
+				if($t.p.groupHeader) {
+					$("tr.jqg-first-row-header, tr.jqg-third-row-header", htbl).each(function(){
+						$("th:gt("+maxfrozen+")",this).remove();
+					});
+					var swapfroz = -1, fdel = -1, cs, rs;
+					$("tr.jqg-second-row-header th", htbl).each(function(){
+						cs= parseInt($(this).attr("colspan"),10);
+						rs= parseInt($(this).attr("rowspan"),10);
+						if(rs) {
+							swapfroz++;
+							fdel++;
+						}
+						if(cs) {
+							swapfroz = swapfroz+cs;
+							fdel++;
+						}
+						if(swapfroz === maxfrozen) {
+							return false;
+						}
+					});
+					if(swapfroz !== maxfrozen) {
+						fdel = maxfrozen;
+					}
+					$("tr.jqg-second-row-header", htbl).each(function(){
+						$("th:gt("+fdel+")",this).remove();
+					});
+				} else {
+					$("tr",htbl).each(function(){
+						$("th:gt("+maxfrozen+")",this).remove();
+					});
+				}
+				$(htbl).width(1);
+				// resizing stuff
+				$($t.grid.fhDiv).append(htbl)
+				.mousemove(function (e) {
+					if($t.grid.resizing){ $t.grid.dragMove(e);return false; }
+				});
+				if($t.p.footerrow) {
+					var hbd = $(".ui-jqgrid-bdiv","#gview_"+$.jgrid.jqID($t.p.id)).height();
+
+					$t.grid.fsDiv = $('<div style="position:absolute;left:0px;top:'+(parseInt(top,10)+parseInt(hth,10) + parseInt(hbd,10)+1)+'px;" class="frozen-sdiv ui-jqgrid-sdiv"></div>');
+					$("#gview_"+$.jgrid.jqID($t.p.id)).append($t.grid.fsDiv);
+					var ftbl = $(".ui-jqgrid-ftable","#gview_"+$.jgrid.jqID($t.p.id)).clone(true);
+					$("tr",ftbl).each(function(){
+						$("td:gt("+maxfrozen+")",this).remove();
+					});
+					$(ftbl).width(1);
+					$($t.grid.fsDiv).append(ftbl);
+				}
+				$($t).bind('jqGridResizeStop.setFrozenColumns', function (e, w, index) {
+					var rhth = $(".ui-jqgrid-htable",$t.grid.fhDiv);
+					$("th:eq("+index+")",rhth).width( w ); 
+					var btd = $(".ui-jqgrid-btable",$t.grid.fbDiv);
+					$("tr:first td:eq("+index+")",btd).width( w );
+					if($t.p.footerrow) {
+						var ftd = $(".ui-jqgrid-ftable",$t.grid.fsDiv);
+						$("tr:first td:eq("+index+")",ftd).width( w );
+					}
+				});
+				// sorting stuff
+				$($t).bind('jqGridSortCol.setFrozenColumns', function (e, index, idxcol) {
+
+					var previousSelectedTh = $("tr.ui-jqgrid-labels:last th:eq("+$t.p.lastsort+")",$t.grid.fhDiv), newSelectedTh = $("tr.ui-jqgrid-labels:last th:eq("+idxcol+")",$t.grid.fhDiv);
+
+					$("span.ui-grid-ico-sort",previousSelectedTh).addClass('ui-state-disabled');
+					$(previousSelectedTh).attr("aria-selected","false");
+					$("span.ui-icon-"+$t.p.sortorder,newSelectedTh).removeClass('ui-state-disabled');
+					$(newSelectedTh).attr("aria-selected","true");
+					if(!$t.p.viewsortcols[0]) {
+						if($t.p.lastsort !== idxcol) {
+							$("span.s-ico",previousSelectedTh).hide();
+							$("span.s-ico",newSelectedTh).show();
+						}
+					}
+				});
+				
+				// data stuff
+				//TODO support for setRowData
+				$("#gview_"+$.jgrid.jqID($t.p.id)).append($t.grid.fbDiv);
+				$($t.grid.bDiv).scroll(function () {
+					$($t.grid.fbDiv).scrollTop($(this).scrollTop());
+				});
+				if($t.p.hoverrows === true) {
+					$("#"+$.jgrid.jqID($t.p.id)).unbind('mouseover').unbind('mouseout');
+				}
+				$($t).bind('jqGridAfterGridComplete.setFrozenColumns', function () {
+					$("#"+$.jgrid.jqID($t.p.id)+"_frozen").remove();
+					$($t.grid.fbDiv).height($($t.grid.bDiv).height()-16);
+					var btbl = $("#"+$.jgrid.jqID($t.p.id)).clone(true);
+					$("tr[role=row]",btbl).each(function(){
+						$("td[role=gridcell]:gt("+maxfrozen+")",this).remove();
+					});
+
+					$(btbl).width(1).attr("id",$t.p.id+"_frozen");
+					$($t.grid.fbDiv).append(btbl);
+					if($t.p.hoverrows === true) {
+						$("tr.jqgrow", btbl).hover(
+							function(){ $(this).addClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)).addClass("ui-state-hover"); },
+							function(){ $(this).removeClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)).removeClass("ui-state-hover"); }
+						);
+						$("tr.jqgrow", "#"+$.jgrid.jqID($t.p.id)).hover(
+							function(){ $(this).addClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)+"_frozen").addClass("ui-state-hover");},
+							function(){ $(this).removeClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)+"_frozen").removeClass("ui-state-hover"); }
+						);
+					}
+					btbl=null;
+				});
+				if(!$t.grid.hDiv.loading) {
+					$($t).triggerHandler("jqGridAfterGridComplete");
+				}
+				$t.p.frozenColumns = true;
+			}
+		});
+	},
+	destroyFrozenColumns :  function() {
+		return this.each(function() {
+			if ( !this.grid ) {return;}
+			if(this.p.frozenColumns === true) {
+				var $t = this;
+				$($t.grid.fhDiv).remove();
+				$($t.grid.fbDiv).remove();
+				$t.grid.fhDiv = null; $t.grid.fbDiv=null;
+				if($t.p.footerrow) {
+					$($t.grid.fsDiv).remove();
+					$t.grid.fsDiv = null;
+				}
+				$(this).unbind('.setFrozenColumns');
+				if($t.p.hoverrows === true) {
+					var ptr;
+					$("#"+$.jgrid.jqID($t.p.id)).bind('mouseover',function(e) {
+						ptr = $(e.target).closest("tr.jqgrow");
+						if($(ptr).attr("class") !== "ui-subgrid") {
+						$(ptr).addClass("ui-state-hover");
+					}
+					}).bind('mouseout',function(e) {
+						ptr = $(e.target).closest("tr.jqgrow");
+						$(ptr).removeClass("ui-state-hover");
+					});
+				}
+				this.p.frozenColumns = false;
+			}
+		});
+	}
+});
+})(jQuery);

+ 712 - 0
app/Resources/public/assets/jqgrid/js/grid.filter.js

@@ -0,0 +1,712 @@
+/*
+ * jqFilter  jQuery jqGrid filter addon.
+ * Copyright (c) 2011, Tony Tomov, tony@trirand.com
+ * Dual licensed under the MIT and GPL licenses
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl-2.0.html
+ * 
+ * The work is inspired from this Stefan Pirvu
+ * http://www.codeproject.com/KB/scripting/json-filtering.aspx
+ *
+ * The filter uses JSON entities to hold filter rules and groups. Here is an example of a filter:
+
+{ "groupOp": "AND",
+      "groups" : [ 
+        { "groupOp": "OR",
+            "rules": [
+                { "field": "name", "op": "eq", "data": "England" }, 
+                { "field": "id", "op": "le", "data": "5"}
+             ]
+        } 
+      ],
+      "rules": [
+        { "field": "name", "op": "eq", "data": "Romania" }, 
+        { "field": "id", "op": "le", "data": "1"}
+      ]
+}
+*/
+/*jshint eqeqeq:false, eqnull:true, devel:true */
+/*global jQuery */
+
+(function ($) {
+"use strict";
+
+$.fn.jqFilter = function( arg ) {
+	if (typeof arg === 'string') {
+		
+		var fn = $.fn.jqFilter[arg];
+		if (!fn) {
+			throw ("jqFilter - No such method: " + arg);
+		}
+		var args = $.makeArray(arguments).slice(1);
+		return fn.apply(this,args);
+	}
+
+	var p = $.extend(true,{
+		filter: null,
+		columns: [],
+		onChange : null,
+		afterRedraw : null,
+		checkValues : null,
+		error: false,
+		errmsg : "",
+		errorcheck : true,
+		showQuery : true,
+		sopt : null,
+		ops : [],
+		operands : null,
+		numopts : ['eq','ne', 'lt', 'le', 'gt', 'ge', 'nu', 'nn', 'in', 'ni'],
+		stropts : ['eq', 'ne', 'bw', 'bn', 'ew', 'en', 'cn', 'nc', 'nu', 'nn', 'in', 'ni'],
+		strarr : ['text', 'string', 'blob'],
+		groupOps : [{ op: "AND", text: "AND" },	{ op: "OR",  text: "OR" }],
+		groupButton : true,
+		ruleButtons : true,
+		direction : "ltr"
+	}, $.jgrid.filter, arg || {});
+	return this.each( function() {
+		if (this.filter) {return;}
+		this.p = p;
+		// setup filter in case if they is not defined
+		if (this.p.filter === null || this.p.filter === undefined) {
+			this.p.filter = {
+				groupOp: this.p.groupOps[0].op,
+				rules: [],
+				groups: []
+			};
+		}
+		var i, len = this.p.columns.length, cl,
+		isIE = /msie/i.test(navigator.userAgent) && !window.opera;
+
+		// translating the options
+		this.p.initFilter = $.extend(true,{},this.p.filter);
+
+		// set default values for the columns if they are not set
+		if( !len ) {return;}
+		for(i=0; i < len; i++) {
+			cl = this.p.columns[i];
+			if( cl.stype ) {
+				// grid compatibility
+				cl.inputtype = cl.stype;
+			} else if(!cl.inputtype) {
+				cl.inputtype = 'text';
+			}
+			if( cl.sorttype ) {
+				// grid compatibility
+				cl.searchtype = cl.sorttype;
+			} else if (!cl.searchtype) {
+				cl.searchtype = 'string';
+			}
+			if(cl.hidden === undefined) {
+				// jqGrid compatibility
+				cl.hidden = false;
+			}
+			if(!cl.label) {
+				cl.label = cl.name;
+			}
+			if(cl.index) {
+				cl.name = cl.index;
+			}
+			if(!cl.hasOwnProperty('searchoptions')) {
+				cl.searchoptions = {};
+			}
+			if(!cl.hasOwnProperty('searchrules')) {
+				cl.searchrules = {};
+			}
+
+		}
+		if(this.p.showQuery) {
+			$(this).append("<table class='queryresult ui-widget ui-widget-content' style='display:block;max-width:440px;border:0px none;' dir='"+this.p.direction+"'><tbody><tr><td class='query'></td></tr></tbody></table>");
+		}
+		var getGrid = function () {
+			return $("#" + $.jgrid.jqID(p.id))[0] || null;
+		};
+		/*
+		 *Perform checking.
+		 *
+		*/
+		var checkData = function(val, colModelItem) {
+			var ret = [true,""], $t = getGrid();
+			if($.isFunction(colModelItem.searchrules)) {
+				ret = colModelItem.searchrules.call($t, val, colModelItem);
+			} else if($.jgrid && $.jgrid.checkValues) {
+				try {
+					ret = $.jgrid.checkValues.call($t, val, -1, colModelItem.searchrules, colModelItem.label);
+				} catch (e) {}
+			}
+			if(ret && ret.length && ret[0] === false) {
+				p.error = !ret[0];
+				p.errmsg = ret[1];
+			}
+		};
+		/* moving to common
+		randId = function() {
+			return Math.floor(Math.random()*10000).toString();
+		};
+		*/
+
+		this.onchange = function (  ){
+			// clear any error 
+			this.p.error = false;
+			this.p.errmsg="";
+			return $.isFunction(this.p.onChange) ? this.p.onChange.call( this, this.p ) : false;
+		};
+		/*
+		 * Redraw the filter every time when new field is added/deleted
+		 * and field is  changed
+		 */
+		this.reDraw = function() {
+			$("table.group:first",this).remove();
+			var t = this.createTableForGroup(p.filter, null);
+			$(this).append(t);
+			if($.isFunction(this.p.afterRedraw) ) {
+				this.p.afterRedraw.call(this, this.p);
+			}
+		};
+		/*
+		 * Creates a grouping data for the filter
+		 * @param group - object
+		 * @param parentgroup - object
+		 */
+		this.createTableForGroup = function(group, parentgroup) {
+			var that = this,  i;
+			// this table will hold all the group (tables) and rules (rows)
+			var table = $("<table class='group ui-widget ui-widget-content' style='border:0px none;'><tbody></tbody></table>"),
+			// create error message row
+			align = "left";
+			if(this.p.direction === "rtl") {
+				align = "right";
+				table.attr("dir","rtl");
+			}
+			if(parentgroup === null) {
+				table.append("<tr class='error' style='display:none;'><th colspan='5' class='ui-state-error' align='"+align+"'></th></tr>");
+			}
+
+			var tr = $("<tr></tr>");
+			table.append(tr);
+			// this header will hold the group operator type and group action buttons for
+			// creating subgroup "+ {}", creating rule "+" or deleting the group "-"
+			var th = $("<th colspan='5' align='"+align+"'></th>");
+			tr.append(th);
+
+			if(this.p.ruleButtons === true) {
+			// dropdown for: choosing group operator type
+			var groupOpSelect = $("<select class='opsel'></select>");
+			th.append(groupOpSelect);
+			// populate dropdown with all posible group operators: or, and
+			var str= "", selected;
+			for (i = 0; i < p.groupOps.length; i++) {
+				selected =  group.groupOp === that.p.groupOps[i].op ? " selected='selected'" :"";
+				str += "<option value='"+that.p.groupOps[i].op+"'" + selected+">"+that.p.groupOps[i].text+"</option>";
+			}
+
+			groupOpSelect
+			.append(str)
+			.bind('change',function() {
+				group.groupOp = $(groupOpSelect).val();
+				that.onchange(); // signals that the filter has changed
+			});
+			}
+			// button for adding a new subgroup
+			var inputAddSubgroup ="<span></span>";
+			if(this.p.groupButton) {
+				inputAddSubgroup = $("<input type='button' value='+ {}' title='Add subgroup' class='add-group'/>");
+				inputAddSubgroup.bind('click',function() {
+					if (group.groups === undefined ) {
+						group.groups = [];
+					}
+
+					group.groups.push({
+						groupOp: p.groupOps[0].op,
+						rules: [],
+						groups: []
+					}); // adding a new group
+
+					that.reDraw(); // the html has changed, force reDraw
+
+					that.onchange(); // signals that the filter has changed
+					return false;
+				});
+			}
+			th.append(inputAddSubgroup);
+			if(this.p.ruleButtons === true) {
+			// button for adding a new rule
+			var inputAddRule = $("<input type='button' value='+' title='Add rule' class='add-rule ui-add'/>"), cm;
+			inputAddRule.bind('click',function() {
+				//if(!group) { group = {};}
+				if (group.rules === undefined) {
+					group.rules = [];
+				}
+				for (i = 0; i < that.p.columns.length; i++) {
+				// but show only serchable and serchhidden = true fields
+					var searchable = (that.p.columns[i].search === undefined) ?  true: that.p.columns[i].search,
+					hidden = (that.p.columns[i].hidden === true),
+					ignoreHiding = (that.p.columns[i].searchoptions.searchhidden === true);
+					if ((ignoreHiding && searchable) || (searchable && !hidden)) {
+						cm = that.p.columns[i];
+						break;
+					}
+				}
+				
+				var opr;
+				if( cm.searchoptions.sopt ) {opr = cm.searchoptions.sopt;}
+				else if(that.p.sopt) { opr= that.p.sopt; }
+				else if  ( $.inArray(cm.searchtype, that.p.strarr) !== -1 ) {opr = that.p.stropts;}
+				else {opr = that.p.numopts;}
+
+				group.rules.push({
+					field: cm.name,
+					op: opr[0],
+					data: ""
+				}); // adding a new rule
+
+				that.reDraw(); // the html has changed, force reDraw
+				// for the moment no change have been made to the rule, so
+				// this will not trigger onchange event
+				return false;
+			});
+			th.append(inputAddRule);
+			}
+
+			// button for delete the group
+			if (parentgroup !== null) { // ignore the first group
+				var inputDeleteGroup = $("<input type='button' value='-' title='Delete group' class='delete-group'/>");
+				th.append(inputDeleteGroup);
+				inputDeleteGroup.bind('click',function() {
+				// remove group from parent
+					for (i = 0; i < parentgroup.groups.length; i++) {
+						if (parentgroup.groups[i] === group) {
+							parentgroup.groups.splice(i, 1);
+							break;
+						}
+					}
+
+					that.reDraw(); // the html has changed, force reDraw
+
+					that.onchange(); // signals that the filter has changed
+					return false;
+				});
+			}
+
+			// append subgroup rows
+			if (group.groups !== undefined) {
+				for (i = 0; i < group.groups.length; i++) {
+					var trHolderForSubgroup = $("<tr></tr>");
+					table.append(trHolderForSubgroup);
+
+					var tdFirstHolderForSubgroup = $("<td class='first'></td>");
+					trHolderForSubgroup.append(tdFirstHolderForSubgroup);
+
+					var tdMainHolderForSubgroup = $("<td colspan='4'></td>");
+					tdMainHolderForSubgroup.append(this.createTableForGroup(group.groups[i], group));
+					trHolderForSubgroup.append(tdMainHolderForSubgroup);
+				}
+			}
+			if(group.groupOp === undefined) {
+				group.groupOp = that.p.groupOps[0].op;
+			}
+
+			// append rules rows
+			if (group.rules !== undefined) {
+				for (i = 0; i < group.rules.length; i++) {
+					table.append(
+                       this.createTableRowForRule(group.rules[i], group)
+					);
+				}
+			}
+
+			return table;
+		};
+		/*
+		 * Create the rule data for the filter
+		 */
+		this.createTableRowForRule = function(rule, group ) {
+			// save current entity in a variable so that it could
+			// be referenced in anonimous method calls
+
+			var that=this, $t = getGrid(), tr = $("<tr></tr>"),
+			//document.createElement("tr"),
+
+			// first column used for padding
+			//tdFirstHolderForRule = document.createElement("td"),
+			i, op, trpar, cm, str="", selected;
+			//tdFirstHolderForRule.setAttribute("class", "first");
+			tr.append("<td class='first'></td>");
+
+
+			// create field container
+			var ruleFieldTd = $("<td class='columns'></td>");
+			tr.append(ruleFieldTd);
+
+
+			// dropdown for: choosing field
+			var ruleFieldSelect = $("<select></select>"), ina, aoprs = [];
+			ruleFieldTd.append(ruleFieldSelect);
+			ruleFieldSelect.bind('change',function() {
+				rule.field = $(ruleFieldSelect).val();
+
+				trpar = $(this).parents("tr:first");
+				for (i=0;i<that.p.columns.length;i++) {
+					if(that.p.columns[i].name ===  rule.field) {
+						cm = that.p.columns[i];
+						break;
+					}
+				}
+				if(!cm) {return;}
+				cm.searchoptions.id = $.jgrid.randId();
+				if(isIE && cm.inputtype === "text") {
+					if(!cm.searchoptions.size) {
+						cm.searchoptions.size = 10;
+					}
+				}
+				var elm = $.jgrid.createEl.call($t, cm.inputtype,cm.searchoptions, "", true, that.p.ajaxSelectOptions || {}, true);
+				$(elm).addClass("input-elm");
+				//that.createElement(rule, "");
+
+				if( cm.searchoptions.sopt ) {op = cm.searchoptions.sopt;}
+				else if(that.p.sopt) { op= that.p.sopt; }
+				else if  ($.inArray(cm.searchtype, that.p.strarr) !== -1) {op = that.p.stropts;}
+				else {op = that.p.numopts;}
+				// operators
+				var s ="", so = 0;
+				aoprs = [];
+				$.each(that.p.ops, function() { aoprs.push(this.oper); });
+				for ( i = 0 ; i < op.length; i++) {
+					ina = $.inArray(op[i],aoprs);
+					if(ina !== -1) {
+						if(so===0) {
+							rule.op = that.p.ops[ina].oper;
+						}
+						s += "<option value='"+that.p.ops[ina].oper+"'>"+that.p.ops[ina].text+"</option>";
+						so++;
+					}
+				}
+				$(".selectopts",trpar).empty().append( s );
+				$(".selectopts",trpar)[0].selectedIndex = 0;
+				if( $.jgrid.msie && $.jgrid.msiever() < 9) {
+					var sw = parseInt($("select.selectopts",trpar)[0].offsetWidth, 10) + 1;
+					$(".selectopts",trpar).width( sw );
+					$(".selectopts",trpar).css("width","auto");
+				}
+				// data
+				$(".data",trpar).empty().append( elm );
+				$.jgrid.bindEv.call($t, elm, cm.searchoptions);
+				$(".input-elm",trpar).bind('change',function( e ) {
+					var elem = e.target;
+					rule.data = elem.nodeName.toUpperCase() === "SPAN" && cm.searchoptions && $.isFunction(cm.searchoptions.custom_value) ?
+						cm.searchoptions.custom_value.call($t, $(elem).children(".customelement:first"), 'get') : elem.value;
+					that.onchange(); // signals that the filter has changed
+				});
+				setTimeout(function(){ //IE, Opera, Chrome
+				rule.data = $(elm).val();
+				that.onchange();  // signals that the filter has changed
+				}, 0);
+			});
+
+			// populate drop down with user provided column definitions
+			var j=0;
+			for (i = 0; i < that.p.columns.length; i++) {
+				// but show only serchable and serchhidden = true fields
+				var searchable = (that.p.columns[i].search === undefined) ? true: that.p.columns[i].search,
+				hidden = (that.p.columns[i].hidden === true),
+				ignoreHiding = (that.p.columns[i].searchoptions.searchhidden === true);
+				if ((ignoreHiding && searchable) || (searchable && !hidden)) {
+					selected = "";
+					if(rule.field === that.p.columns[i].name) {
+						selected = " selected='selected'";
+						j=i;
+					}
+					str += "<option value='"+that.p.columns[i].name+"'" +selected+">"+that.p.columns[i].label+"</option>";
+				}
+			}
+			ruleFieldSelect.append( str );
+
+
+			// create operator container
+			var ruleOperatorTd = $("<td class='operators'></td>");
+			tr.append(ruleOperatorTd);
+			cm = p.columns[j];
+			// create it here so it can be referentiated in the onchange event
+			//var RD = that.createElement(rule, rule.data);
+			cm.searchoptions.id = $.jgrid.randId();
+			if(isIE && cm.inputtype === "text") {
+				if(!cm.searchoptions.size) {
+					cm.searchoptions.size = 10;
+				}
+			}
+			var ruleDataInput = $.jgrid.createEl.call($t, cm.inputtype,cm.searchoptions, rule.data, true, that.p.ajaxSelectOptions || {}, true);
+			if(rule.op === 'nu' || rule.op === 'nn') {
+				$(ruleDataInput).attr('readonly','true');
+				$(ruleDataInput).attr('disabled','true');
+			} //retain the state of disabled text fields in case of null ops
+			// dropdown for: choosing operator
+			var ruleOperatorSelect = $("<select class='selectopts'></select>");
+			ruleOperatorTd.append(ruleOperatorSelect);
+			ruleOperatorSelect.bind('change',function() {
+				rule.op = $(ruleOperatorSelect).val();
+				trpar = $(this).parents("tr:first");
+				var rd = $(".input-elm",trpar)[0];
+				if (rule.op === "nu" || rule.op === "nn") { // disable for operator "is null" and "is not null"
+					rule.data = "";
+					if(rd.tagName.toUpperCase() !== 'SELECT') rd.value = "";
+					rd.setAttribute("readonly", "true");
+					rd.setAttribute("disabled", "true");
+				} else {
+					if(rd.tagName.toUpperCase() === 'SELECT') rule.data = rd.value;
+					rd.removeAttribute("readonly");
+					rd.removeAttribute("disabled");
+				}
+
+				that.onchange();  // signals that the filter has changed
+			});
+
+			// populate drop down with all available operators
+			if( cm.searchoptions.sopt ) {op = cm.searchoptions.sopt;}
+			else if(that.p.sopt) { op= that.p.sopt; }
+			else if  ($.inArray(cm.searchtype, that.p.strarr) !== -1) {op = that.p.stropts;}
+			else {op = that.p.numopts;}
+			str="";
+			$.each(that.p.ops, function() { aoprs.push(this.oper); });
+			for ( i = 0; i < op.length; i++) {
+				ina = $.inArray(op[i],aoprs);
+				if(ina !== -1) {
+					selected = rule.op === that.p.ops[ina].oper ? " selected='selected'" : "";
+					str += "<option value='"+that.p.ops[ina].oper+"'"+selected+">"+that.p.ops[ina].text+"</option>";
+				}
+			}
+			ruleOperatorSelect.append( str );
+			// create data container
+			var ruleDataTd = $("<td class='data'></td>");
+			tr.append(ruleDataTd);
+
+			// textbox for: data
+			// is created previously
+			//ruleDataInput.setAttribute("type", "text");
+			ruleDataTd.append(ruleDataInput);
+			$.jgrid.bindEv.call($t, ruleDataInput, cm.searchoptions);
+			$(ruleDataInput)
+			.addClass("input-elm")
+			.bind('change', function() {
+				rule.data = cm.inputtype === 'custom' ? cm.searchoptions.custom_value.call($t, $(this).children(".customelement:first"),'get') : $(this).val();
+				that.onchange(); // signals that the filter has changed
+			});
+
+			// create action container
+			var ruleDeleteTd = $("<td></td>");
+			tr.append(ruleDeleteTd);
+
+			// create button for: delete rule
+			if(this.p.ruleButtons === true) {
+			var ruleDeleteInput = $("<input type='button' value='-' title='Delete rule' class='delete-rule ui-del'/>");
+			ruleDeleteTd.append(ruleDeleteInput);
+			//$(ruleDeleteInput).html("").height(20).width(30).button({icons: {  primary: "ui-icon-minus", text:false}});
+			ruleDeleteInput.bind('click',function() {
+				// remove rule from group
+				for (i = 0; i < group.rules.length; i++) {
+					if (group.rules[i] === rule) {
+						group.rules.splice(i, 1);
+						break;
+					}
+				}
+
+				that.reDraw(); // the html has changed, force reDraw
+
+				that.onchange(); // signals that the filter has changed
+				return false;
+			});
+			}
+			return tr;
+		};
+
+		this.getStringForGroup = function(group) {
+			var s = "(", index;
+			if (group.groups !== undefined) {
+				for (index = 0; index < group.groups.length; index++) {
+					if (s.length > 1) {
+						s += " " + group.groupOp + " ";
+					}
+					try {
+						s += this.getStringForGroup(group.groups[index]);
+					} catch (eg) {alert(eg);}
+				}
+			}
+
+			if (group.rules !== undefined) {
+				try{
+					for (index = 0; index < group.rules.length; index++) {
+						if (s.length > 1) {
+							s += " " + group.groupOp + " ";
+						}
+						s += this.getStringForRule(group.rules[index]);
+					}
+				} catch (e) {alert(e);}
+			}
+
+			s += ")";
+
+			if (s === "()") {
+				return ""; // ignore groups that don't have rules
+			}
+			return s;
+		};
+		this.getStringForRule = function(rule) {
+			var opUF = "",opC="", i, cm, ret, val,
+			numtypes = ['int', 'integer', 'float', 'number', 'currency']; // jqGrid
+			for (i = 0; i < this.p.ops.length; i++) {
+				if (this.p.ops[i].oper === rule.op) {
+					opUF = this.p.operands.hasOwnProperty(rule.op) ? this.p.operands[rule.op] : "";
+					opC = this.p.ops[i].oper;
+					break;
+				}
+			}
+			for (i=0; i<this.p.columns.length; i++) {
+				if(this.p.columns[i].name === rule.field) {
+					cm = this.p.columns[i];
+					break;
+				}
+			}
+			if (cm == undefined) { return ""; }
+			val = rule.data;
+			if(opC === 'bw' || opC === 'bn') { val = val+"%"; }
+			if(opC === 'ew' || opC === 'en') { val = "%"+val; }
+			if(opC === 'cn' || opC === 'nc') { val = "%"+val+"%"; }
+			if(opC === 'in' || opC === 'ni') { val = " ("+val+")"; }
+			if(p.errorcheck) { checkData(rule.data, cm); }
+			if($.inArray(cm.searchtype, numtypes) !== -1 || opC === 'nn' || opC === 'nu') { ret = rule.field + " " + opUF + " " + val; }
+			else { ret = rule.field + " " + opUF + " \"" + val + "\""; }
+			return ret;
+		};
+		this.resetFilter = function () {
+			this.p.filter = $.extend(true,{},this.p.initFilter);
+			this.reDraw();
+			this.onchange();
+		};
+		this.hideError = function() {
+			$("th.ui-state-error", this).html("");
+			$("tr.error", this).hide();
+		};
+		this.showError = function() {
+			$("th.ui-state-error", this).html(this.p.errmsg);
+			$("tr.error", this).show();
+		};
+		this.toUserFriendlyString = function() {
+			return this.getStringForGroup(p.filter);
+		};
+		this.toString = function() {
+			// this will obtain a string that can be used to match an item.
+			var that = this;
+			function getStringRule(rule) {
+				if(that.p.errorcheck) {
+					var i, cm;
+					for (i=0; i<that.p.columns.length; i++) {
+						if(that.p.columns[i].name === rule.field) {
+							cm = that.p.columns[i];
+							break;
+						}
+					}
+					if(cm) {checkData(rule.data, cm);}
+				}
+				return rule.op + "(item." + rule.field + ",'" + rule.data + "')";
+			}
+
+			function getStringForGroup(group) {
+				var s = "(", index;
+
+				if (group.groups !== undefined) {
+					for (index = 0; index < group.groups.length; index++) {
+						if (s.length > 1) {
+							if (group.groupOp === "OR") {
+								s += " || ";
+							}
+							else {
+								s += " && ";
+							}
+						}
+						s += getStringForGroup(group.groups[index]);
+					}
+				}
+
+				if (group.rules !== undefined) {
+					for (index = 0; index < group.rules.length; index++) {
+						if (s.length > 1) {
+							if (group.groupOp === "OR") {
+								s += " || ";
+							}
+							else  {
+								s += " && ";
+							}
+						}
+						s += getStringRule(group.rules[index]);
+					}
+				}
+
+				s += ")";
+
+				if (s === "()") {
+					return ""; // ignore groups that don't have rules
+				}
+				return s;
+			}
+
+			return getStringForGroup(this.p.filter);
+		};
+
+		// Here we init the filter
+		this.reDraw();
+
+		if(this.p.showQuery) {
+			this.onchange();
+		}
+		// mark is as created so that it will not be created twice on this element
+		this.filter = true;
+	});
+};
+$.extend($.fn.jqFilter,{
+	/*
+	 * Return SQL like string. Can be used directly
+	 */
+	toSQLString : function()
+	{
+		var s ="";
+		this.each(function(){
+			s = this.toUserFriendlyString();
+		});
+		return s;
+	},
+	/*
+	 * Return filter data as object.
+	 */
+	filterData : function()
+	{
+		var s;
+		this.each(function(){
+			s = this.p.filter;
+		});
+		return s;
+
+	},
+	getParameter : function (param) {
+		if(param !== undefined) {
+			if (this.p.hasOwnProperty(param) ) {
+				return this.p[param];
+			}
+		}
+		return this.p;
+	},
+	resetFilter: function() {
+		return this.each(function(){
+			this.resetFilter();
+		});
+	},
+	addFilter: function (pfilter) {
+		if (typeof pfilter === "string") {
+			pfilter = $.jgrid.parse( pfilter );
+	}
+		this.each(function(){
+			this.p.filter = pfilter;
+			this.reDraw();
+			this.onchange();
+		});
+	}
+
+});
+})(jQuery);

+ 2113 - 0
app/Resources/public/assets/jqgrid/js/grid.formedit.js

@@ -0,0 +1,2113 @@
+/*jshint eqeqeq:false, eqnull:true, devel:true */
+/*global xmlJsonClass, jQuery */
+(function($){
+/**
+ * jqGrid extension for form editing Grid Data
+ * 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-2.0.html
+**/
+"use strict";
+var rp_ge = {};
+$.jgrid.extend({
+	searchGrid : function (p) {
+		p = $.extend(true, {
+			recreateFilter: false,
+			drag: true,
+			sField:'searchField',
+			sValue:'searchString',
+			sOper: 'searchOper',
+			sFilter: 'filters',
+			loadDefaults: true, // this options activates loading of default filters from grid's postData for Multipe Search only.
+			beforeShowSearch: null,
+			afterShowSearch : null,
+			onInitializeSearch: null,
+			afterRedraw : null,
+			afterChange: null,
+			closeAfterSearch : false,
+			closeAfterReset: false,
+			closeOnEscape : false,
+			searchOnEnter : false,
+			multipleSearch : false,
+			multipleGroup : false,
+			//cloneSearchRowOnAdd: true,
+			top : 0,
+			left: 0,
+			jqModal : true,
+			modal: false,
+			resize : true,
+			width: 450,
+			height: 'auto',
+			dataheight: 'auto',
+			showQuery: false,
+			errorcheck : true,
+			sopt: null,
+			stringResult: undefined,
+			onClose : null,
+			onSearch : null,
+			onReset : null,
+			toTop : true,
+			overlay : 30,
+			columns : [],
+			tmplNames : null,
+			tmplFilters : null,
+			tmplLabel : ' Template: ',
+			showOnLoad: false,
+			layer: null,
+			operands : { "eq" :"=", "ne":"<>","lt":"<","le":"<=","gt":">","ge":">=","bw":"LIKE","bn":"NOT LIKE","in":"IN","ni":"NOT IN","ew":"LIKE","en":"NOT LIKE","cn":"LIKE","nc":"NOT LIKE","nu":"IS NULL","nn":"ISNOT NULL"}
+		}, $.jgrid.search, p || {});
+		return this.each(function() {
+			var $t = this;
+			if(!$t.grid) {return;}
+			var fid = "fbox_"+$t.p.id,
+			showFrm = true,
+			mustReload = true,
+			IDs = {themodal:'searchmod'+fid,modalhead:'searchhd'+fid,modalcontent:'searchcnt'+fid, scrollelm : fid},
+			defaultFilters  = $t.p.postData[p.sFilter],
+			fl;
+			if(typeof defaultFilters === "string") {
+				defaultFilters = $.jgrid.parse( defaultFilters );
+			}
+			if(p.recreateFilter === true) {
+				$("#"+$.jgrid.jqID(IDs.themodal)).remove();
+			}
+			function showFilter(_filter) {
+				showFrm = $($t).triggerHandler("jqGridFilterBeforeShow", [_filter]);
+				if(showFrm === undefined) {
+					showFrm = true;
+				}
+				if(showFrm && $.isFunction(p.beforeShowSearch)) {
+					showFrm = p.beforeShowSearch.call($t,_filter);
+				}
+				if(showFrm) {
+					$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(fid),jqm:p.jqModal, modal:p.modal, overlay: p.overlay, toTop: p.toTop});
+					$($t).triggerHandler("jqGridFilterAfterShow", [_filter]);
+					if($.isFunction(p.afterShowSearch)) {
+						p.afterShowSearch.call($t, _filter);
+					}
+				}
+			}
+			if ( $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined ) {
+				showFilter($("#fbox_"+$.jgrid.jqID(+$t.p.id)));
+			} else {
+				var fil = $("<div><div id='"+fid+"' class='searchFilter' style='overflow:auto'></div></div>").insertBefore("#gview_"+$.jgrid.jqID($t.p.id)),
+				align = "left", butleft =""; 
+				if($t.p.direction === "rtl") {
+					align = "right";
+					butleft = " style='text-align:left'";
+					fil.attr("dir","rtl");
+				}
+				var columns = $.extend([],$t.p.colModel),
+				bS  ="<a id='"+fid+"_search' class='fm-button ui-state-default ui-corner-all fm-button-icon-right ui-reset'><span class='ui-icon ui-icon-search'></span>"+p.Find+"</a>",
+				bC  ="<a id='"+fid+"_reset' class='fm-button ui-state-default ui-corner-all fm-button-icon-left ui-search'><span class='ui-icon ui-icon-arrowreturnthick-1-w'></span>"+p.Reset+"</a>",
+				bQ = "", tmpl="", colnm, found = false, bt, cmi=-1;
+				if(p.showQuery) {
+					bQ ="<a id='"+fid+"_query' class='fm-button ui-state-default ui-corner-all fm-button-icon-left'><span class='ui-icon ui-icon-comment'></span>Query</a>";
+				}
+				if(!p.columns.length) {
+					$.each(columns, function(i,n){
+						if(!n.label) {
+							n.label = $t.p.colNames[i];
+						}
+						// find first searchable column and set it if no default filter
+						if(!found) {
+							var searchable = (n.search === undefined) ?  true: n.search ,
+							hidden = (n.hidden === true),
+							ignoreHiding = (n.searchoptions && n.searchoptions.searchhidden === true);
+							if ((ignoreHiding && searchable) || (searchable && !hidden)) {
+								found = true;
+								colnm = n.index || n.name;
+								cmi =i;
+							}
+						}
+					});
+				} else {
+					columns = p.columns;
+					cmi = 0;
+					colnm = columns[0].index || columns[0].name;
+				}
+				// old behaviour
+				if( (!defaultFilters && colnm) || p.multipleSearch === false  ) {
+					var cmop = "eq";
+					if(cmi >=0 && columns[cmi].searchoptions && columns[cmi].searchoptions.sopt) {
+						cmop = columns[cmi].searchoptions.sopt[0];
+					} else if(p.sopt && p.sopt.length) {
+						cmop = p.sopt[0];
+					}
+					defaultFilters = {groupOp: "AND", rules: [{field: colnm, op: cmop, data: ""}]};
+				}
+				found = false;
+				if(p.tmplNames && p.tmplNames.length) {
+					found = true;
+					tmpl = p.tmplLabel;
+					tmpl += "<select class='ui-template'>";
+					tmpl += "<option value='default'>Default</option>";
+					$.each(p.tmplNames, function(i,n){
+						tmpl += "<option value='"+i+"'>"+n+"</option>";
+					});
+					tmpl += "</select>";
+				}
+
+				bt = "<table class='EditTable' style='border:0px none;margin-top:5px' id='"+fid+"_2'><tbody><tr><td colspan='2'><hr class='ui-widget-content' style='margin:1px'/></td></tr><tr><td class='EditButton' style='text-align:"+align+"'>"+bC+tmpl+"</td><td class='EditButton' "+butleft+">"+bQ+bS+"</td></tr></tbody></table>";
+				fid = $.jgrid.jqID( fid);
+				$("#"+fid).jqFilter({
+					columns : columns,
+					filter: p.loadDefaults ? defaultFilters : null,
+					showQuery: p.showQuery,
+					errorcheck : p.errorcheck,
+					sopt: p.sopt,
+					groupButton : p.multipleGroup,
+					ruleButtons : p.multipleSearch,
+					afterRedraw : p.afterRedraw,
+					ops : p.odata,
+					operands : p.operands,
+					ajaxSelectOptions: $t.p.ajaxSelectOptions,
+					groupOps: p.groupOps,
+					onChange : function() {
+						if(this.p.showQuery) {
+							$('.query',this).html(this.toUserFriendlyString());
+						}
+						if ($.isFunction(p.afterChange)) {
+							p.afterChange.call($t, $("#"+fid), p);
+						}
+					},
+					direction : $t.p.direction,
+					id: $t.p.id
+				});
+				fil.append( bt );
+				if(found && p.tmplFilters && p.tmplFilters.length) {
+					$(".ui-template", fil).bind('change', function(){
+						var curtempl = $(this).val();
+						if(curtempl==="default") {
+							$("#"+fid).jqFilter('addFilter', defaultFilters);
+						} else {
+							$("#"+fid).jqFilter('addFilter', p.tmplFilters[parseInt(curtempl,10)]);
+						}
+						return false;
+					});
+				}
+				if(p.multipleGroup === true) {p.multipleSearch = true;}
+				$($t).triggerHandler("jqGridFilterInitialize", [$("#"+fid)]);
+				if($.isFunction(p.onInitializeSearch) ) {
+					p.onInitializeSearch.call($t, $("#"+fid));
+				}
+				p.gbox = "#gbox_"+fid;
+				if (p.layer) {
+					$.jgrid.createModal(IDs ,fil,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0], "#"+$.jgrid.jqID(p.layer), {position: "relative"});
+				} else {
+					$.jgrid.createModal(IDs ,fil,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0]);
+				}
+				if (p.searchOnEnter || p.closeOnEscape) {
+					$("#"+$.jgrid.jqID(IDs.themodal)).keydown(function (e) {
+						var $target = $(e.target);
+						if (p.searchOnEnter && e.which === 13 && // 13 === $.ui.keyCode.ENTER
+								!$target.hasClass('add-group') && !$target.hasClass('add-rule') &&
+								!$target.hasClass('delete-group') && !$target.hasClass('delete-rule') &&
+								(!$target.hasClass("fm-button") || !$target.is("[id$=_query]"))) {
+							$("#"+fid+"_search").click();
+							return false;
+						}
+						if (p.closeOnEscape && e.which === 27) { // 27 === $.ui.keyCode.ESCAPE
+							$("#"+$.jgrid.jqID(IDs.modalhead)).find(".ui-jqdialog-titlebar-close").click();
+							return false;
+						}
+					});
+				}
+				if(bQ) {
+					$("#"+fid+"_query").bind('click', function(){
+						$(".queryresult", fil).toggle();
+						return false;
+					});
+				}
+				if (p.stringResult===undefined) {
+					// to provide backward compatibility, inferring stringResult value from multipleSearch
+					p.stringResult = p.multipleSearch;
+				}
+				$("#"+fid+"_search").bind('click', function(){
+					var sdata={}, res, filters;
+					fl = $("#"+fid);
+					fl.find(".input-elm:focus").change();
+					filters = fl.jqFilter('filterData');
+					if(p.errorcheck) {
+						fl[0].hideError();
+						if(!p.showQuery) {fl.jqFilter('toSQLString');}
+						if(fl[0].p.error) {
+							fl[0].showError();
+							return false;
+						}
+					}
+
+					if(p.stringResult) {
+						try {
+							// xmlJsonClass or JSON.stringify
+							res = xmlJsonClass.toJson(filters, '', '', false);
+						} catch (e) {
+							try {
+								res = JSON.stringify(filters);
+							} catch (e2) { }
+						}
+						if(typeof res==="string") {
+							sdata[p.sFilter] = res;
+							$.each([p.sField,p.sValue, p.sOper], function() {sdata[this] = "";});
+						}
+					} else {
+						if(p.multipleSearch) {
+							sdata[p.sFilter] = filters;
+							$.each([p.sField,p.sValue, p.sOper], function() {sdata[this] = "";});
+						} else {
+							sdata[p.sField] = filters.rules[0].field;
+							sdata[p.sValue] = filters.rules[0].data;
+							sdata[p.sOper] = filters.rules[0].op;
+							sdata[p.sFilter] = "";
+						}
+					}
+					$t.p.search = true;
+					$.extend($t.p.postData,sdata);
+					mustReload = $($t).triggerHandler("jqGridFilterSearch");
+					if( mustReload === undefined) {
+						mustReload = true;
+					}
+					if(mustReload && $.isFunction(p.onSearch) ) {
+						mustReload = p.onSearch.call($t, $t.p.filters);
+					}
+					if (mustReload !== false) {
+						$($t).trigger("reloadGrid",[{page:1}]);
+					}
+					if(p.closeAfterSearch) {
+						$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:p.jqModal,onClose: p.onClose});
+					}
+					return false;
+				});
+				$("#"+fid+"_reset").bind('click', function(){
+					var sdata={},
+					fl = $("#"+fid);
+					$t.p.search = false;
+					$t.p.resetsearch =  true;
+					if(p.multipleSearch===false) {
+						sdata[p.sField] = sdata[p.sValue] = sdata[p.sOper] = "";
+					} else {
+						sdata[p.sFilter] = "";
+					}
+					fl[0].resetFilter();
+					if(found) {
+						$(".ui-template", fil).val("default");
+					}
+					$.extend($t.p.postData,sdata);
+					mustReload = $($t).triggerHandler("jqGridFilterReset");
+					if(mustReload === undefined) {
+						mustReload = true;
+					}
+					if(mustReload && $.isFunction(p.onReset) ) {
+						mustReload = p.onReset.call($t);
+					}
+					if(mustReload !== false) {
+						$($t).trigger("reloadGrid",[{page:1}]);
+					}
+					if (p.closeAfterReset) {
+						$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:p.jqModal,onClose: p.onClose});
+					}
+					return false;
+				});
+				showFilter($("#"+fid));
+				$(".fm-button:not(.ui-state-disabled)",fil).hover(
+					function(){$(this).addClass('ui-state-hover');},
+					function(){$(this).removeClass('ui-state-hover');}
+				);
+			}
+		});
+	},
+	editGridRow : function(rowid, p){
+		p = $.extend(true, {
+			top : 0,
+			left: 0,
+			width: 300,
+			datawidth: 'auto',
+			height: 'auto',
+			dataheight: 'auto',
+			modal: false,
+			overlay : 30,
+			drag: true,
+			resize: true,
+			url: null,
+			mtype : "POST",
+			clearAfterAdd :true,
+			closeAfterEdit : false,
+			reloadAfterSubmit : true,
+			onInitializeForm: null,
+			beforeInitData: null,
+			beforeShowForm: null,
+			afterShowForm: null,
+			beforeSubmit: null,
+			afterSubmit: null,
+			onclickSubmit: null,
+			afterComplete: null,
+			onclickPgButtons : null,
+			afterclickPgButtons: null,
+			editData : {},
+			recreateForm : false,
+			jqModal : true,
+			closeOnEscape : false,
+			addedrow : "first",
+			topinfo : '',
+			bottominfo: '',
+			saveicon : [],
+			closeicon : [],
+			savekey: [false,13],
+			navkeys: [false,38,40],
+			checkOnSubmit : false,
+			checkOnUpdate : false,
+			_savedData : {},
+			processing : false,
+			onClose : null,
+			ajaxEditOptions : {},
+			serializeEditData : null,
+			viewPagerButtons : true,
+			overlayClass : 'ui-widget-overlay',
+			removemodal : true,
+			form: 'edit'
+		}, $.jgrid.edit, p || {});
+		rp_ge[$(this)[0].p.id] = p;
+		return this.each(function(){
+			var $t = this;
+			if (!$t.grid || !rowid) {return;}
+			var gID = $t.p.id,
+			frmgr = "FrmGrid_"+gID, frmtborg = "TblGrid_"+gID, frmtb = "#"+$.jgrid.jqID(frmtborg), 
+			IDs = {themodal:'editmod'+gID,modalhead:'edithd'+gID,modalcontent:'editcnt'+gID, scrollelm : frmgr},
+			onBeforeShow = $.isFunction(rp_ge[$t.p.id].beforeShowForm) ? rp_ge[$t.p.id].beforeShowForm : false,
+			onAfterShow = $.isFunction(rp_ge[$t.p.id].afterShowForm) ? rp_ge[$t.p.id].afterShowForm : false,
+			onBeforeInit = $.isFunction(rp_ge[$t.p.id].beforeInitData) ? rp_ge[$t.p.id].beforeInitData : false,
+			onInitializeForm = $.isFunction(rp_ge[$t.p.id].onInitializeForm) ? rp_ge[$t.p.id].onInitializeForm : false,
+			showFrm = true,
+			maxCols = 1, maxRows=0,	postdata, diff, frmoper;
+			frmgr = $.jgrid.jqID(frmgr);
+			if (rowid === "new") {
+				rowid = "_empty";
+				frmoper = "add";
+				p.caption=rp_ge[$t.p.id].addCaption;
+			} else {
+				p.caption=rp_ge[$t.p.id].editCaption;
+				frmoper = "edit";
+			}
+			if(!p.recreateForm) {
+				if( $($t).data("formProp") ) {
+					$.extend(rp_ge[$(this)[0].p.id], $($t).data("formProp"));
+				}
+			}
+			var closeovrl = true;
+			if(p.checkOnUpdate && p.jqModal && !p.modal) {
+				closeovrl = false;
+			}
+			function getFormData(){
+				$(frmtb+" > tbody > tr > td .FormElement").each(function() {
+					var celm = $(".customelement", this);
+					if (celm.length) {
+						var  elem = celm[0], nm = $(elem).attr('name');
+						$.each($t.p.colModel, function(){
+							if(this.name === nm && this.editoptions && $.isFunction(this.editoptions.custom_value)) {
+								try {
+									postdata[nm] = this.editoptions.custom_value.call($t, $("#"+$.jgrid.jqID(nm),frmtb),'get');
+									if (postdata[nm] === undefined) {throw "e1";}
+								} catch (e) {
+									if (e==="e1") {$.jgrid.info_dialog($.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.novalue,$.jgrid.edit.bClose);}
+									else {$.jgrid.info_dialog($.jgrid.errors.errcap,e.message,$.jgrid.edit.bClose);}
+								}
+								return true;
+							}
+						});
+					} else {
+					switch ($(this).get(0).type) {
+						case "checkbox":
+							if($(this).is(":checked")) {
+								postdata[this.name]= $(this).val();
+							}else {
+								var ofv = $(this).attr("offval");
+								postdata[this.name]= ofv;
+							}
+						break;
+						case "select-one":
+							postdata[this.name]= $("option:selected",this).val();
+						break;
+						case "select-multiple":
+							postdata[this.name]= $(this).val();
+							if(postdata[this.name]) {postdata[this.name] = postdata[this.name].join(",");}
+							else {postdata[this.name] ="";}
+							var selectedText = [];
+							$("option:selected",this).each(
+								function(i,selected){
+									selectedText[i] = $(selected).text();
+								}
+							);
+						break;
+						case "password":
+						case "text":
+						case "textarea":
+						case "button":
+							postdata[this.name] = $(this).val();
+
+						break;
+					}
+					if($t.p.autoencode) {postdata[this.name] = $.jgrid.htmlEncode(postdata[this.name]);}
+					}
+				});
+				return true;
+			}
+			function createData(rowid,obj,tb,maxcols){
+				var nm, hc,trdata, cnt=0,tmp, dc,elc, retpos=[], ind=false,
+				tdtmpl = "<td class='CaptionTD'>&#160;</td><td class='DataTD'>&#160;</td>", tmpl="", i; //*2
+				for (i =1; i<=maxcols;i++) {
+					tmpl += tdtmpl;
+				}
+				if(rowid !== '_empty') {
+					ind = $(obj).jqGrid("getInd",rowid);
+				}
+				$(obj.p.colModel).each( function(i) {
+					nm = this.name;
+					// hidden fields are included in the form
+					if(this.editrules && this.editrules.edithidden === true) {
+						hc = false;
+					} else {
+						hc = this.hidden === true ? true : false;
+					}
+					dc = hc ? "style='display:none'" : "";
+					if ( nm !== 'cb' && nm !== 'subgrid' && this.editable===true && nm !== 'rn') {
+						if(ind === false) {
+							tmp = "";
+						} else {
+							if(nm === obj.p.ExpandColumn && obj.p.treeGrid === true) {
+								tmp = $("td[role='gridcell']:eq("+i+")",obj.rows[ind]).text();
+							} else {
+								try {
+									tmp =  $.unformat.call(obj, $("td[role='gridcell']:eq("+i+")",obj.rows[ind]),{rowId:rowid, colModel:this},i);
+								} catch (_) {
+									tmp =  (this.edittype && this.edittype === "textarea") ? $("td[role='gridcell']:eq("+i+")",obj.rows[ind]).text() : $("td[role='gridcell']:eq("+i+")",obj.rows[ind]).html();
+								}
+								if(!tmp || tmp === "&nbsp;" || tmp === "&#160;" || (tmp.length===1 && tmp.charCodeAt(0)===160) ) {tmp='';}
+							}
+						}
+						var opt = $.extend({}, this.editoptions || {} ,{id:nm,name:nm, rowId: rowid}),
+						frmopt = $.extend({}, {elmprefix:'',elmsuffix:'',rowabove:false,rowcontent:''}, this.formoptions || {}),
+						rp = parseInt(frmopt.rowpos,10) || cnt+1,
+						cp = parseInt((parseInt(frmopt.colpos,10) || 1)*2,10);
+						if(rowid === "_empty" && opt.defaultValue ) {
+							tmp = $.isFunction(opt.defaultValue) ? opt.defaultValue.call($t) : opt.defaultValue;
+						}
+						if(!this.edittype) {this.edittype = "text";}
+						if($t.p.autoencode) {tmp = $.jgrid.htmlDecode(tmp);}
+						elc = $.jgrid.createEl.call($t,this.edittype,opt,tmp,false,$.extend({},$.jgrid.ajaxOptions,obj.p.ajaxSelectOptions || {}));
+						//if(tmp === "" && this.edittype == "checkbox") {tmp = $(elc).attr("offval");}
+						//if(tmp === "" && this.edittype == "select") {tmp = $("option:eq(0)",elc).text();}
+						if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {rp_ge[$t.p.id]._savedData[nm] = tmp;}
+						$(elc).addClass("FormElement");
+						if( $.inArray(this.edittype, ['text','textarea','password','select']) > -1) {
+							$(elc).addClass("ui-widget-content ui-corner-all");
+						}
+						trdata = $(tb).find("tr[rowpos="+rp+"]");
+						if(frmopt.rowabove) {
+							var newdata = $("<tr><td class='contentinfo' colspan='"+(maxcols*2)+"'>"+frmopt.rowcontent+"</td></tr>");
+							$(tb).append(newdata);
+							newdata[0].rp = rp;
+						}
+						if ( trdata.length===0 ) {
+							trdata = $("<tr "+dc+" rowpos='"+rp+"'></tr>").addClass("FormData").attr("id","tr_"+nm);
+							$(trdata).append(tmpl);
+							$(tb).append(trdata);
+							trdata[0].rp = rp;
+						}
+						$("td:eq("+(cp-2)+")",trdata[0]).html(frmopt.label === undefined ? obj.p.colNames[i]: frmopt.label);
+						$("td:eq("+(cp-1)+")",trdata[0]).append(frmopt.elmprefix).append(elc).append(frmopt.elmsuffix);
+						if(this.edittype==='custom' && $.isFunction(opt.custom_value) ) {
+							opt.custom_value.call($t, $("#"+nm,"#"+frmgr),'set',tmp);
+						}
+						$.jgrid.bindEv.call($t, elc, opt);
+						retpos[cnt] = i;
+						cnt++;
+					}
+				});
+				if( cnt > 0) {
+					var idrow = $("<tr class='FormData' style='display:none'><td class='CaptionTD'></td><td colspan='"+ (maxcols*2-1)+"' class='DataTD'><input class='FormElement' id='id_g' type='text' name='"+obj.p.id+"_id' value='"+rowid+"'/></td></tr>");
+					idrow[0].rp = cnt+999;
+					$(tb).append(idrow);
+					if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {rp_ge[$t.p.id]._savedData[obj.p.id+"_id"] = rowid;}
+				}
+				return retpos;
+			}
+			function fillData(rowid,obj,fmid){
+				var nm,cnt=0,tmp, fld,opt,vl,vlc;
+				if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {rp_ge[$t.p.id]._savedData = {};rp_ge[$t.p.id]._savedData[obj.p.id+"_id"]=rowid;}
+				var cm = obj.p.colModel;
+				if(rowid === '_empty') {
+					$(cm).each(function(){
+						nm = this.name;
+						opt = $.extend({}, this.editoptions || {} );
+						fld = $("#"+$.jgrid.jqID(nm),"#"+fmid);
+						if(fld && fld.length && fld[0] !== null) {
+							vl = "";
+							if(this.edittype === 'custom' && $.isFunction(opt.custom_value)) {
+								opt.custom_value.call($t, $("#"+nm,"#"+fmid),'set',vl);
+							} else if(opt.defaultValue ) {
+								vl = $.isFunction(opt.defaultValue) ? opt.defaultValue.call($t) : opt.defaultValue;
+								if(fld[0].type==='checkbox') {
+									vlc = vl.toLowerCase();
+									if(vlc.search(/(false|f|0|no|n|off|undefined)/i)<0 && vlc!=="") {
+										fld[0].checked = true;
+										fld[0].defaultChecked = true;
+										fld[0].value = vl;
+									} else {
+										fld[0].checked = false;
+										fld[0].defaultChecked = false;
+									}
+								} else {fld.val(vl);}
+							} else {
+								if( fld[0].type==='checkbox' ) {
+									fld[0].checked = false;
+									fld[0].defaultChecked = false;
+									vl = $(fld).attr("offval");
+								} else if (fld[0].type && fld[0].type.substr(0,6)==='select') {
+									fld[0].selectedIndex = 0;
+								} else {
+									fld.val(vl);
+								}
+							}
+							if(rp_ge[$t.p.id].checkOnSubmit===true || rp_ge[$t.p.id].checkOnUpdate) {rp_ge[$t.p.id]._savedData[nm] = vl;}
+						}
+					});
+					$("#id_g","#"+fmid).val(rowid);
+					return;
+				}
+				var tre = $(obj).jqGrid("getInd",rowid,true);
+				if(!tre) {return;}
+				$('td[role="gridcell"]',tre).each( function(i) {
+					nm = cm[i].name;
+					// hidden fields are included in the form
+					if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn' && cm[i].editable===true) {
+						if(nm === obj.p.ExpandColumn && obj.p.treeGrid === true) {
+							tmp = $(this).text();
+						} else {
+							try {
+								tmp =  $.unformat.call(obj, $(this),{rowId:rowid, colModel:cm[i]},i);
+							} catch (_) {
+								tmp = cm[i].edittype==="textarea" ? $(this).text() : $(this).html();
+							}
+						}
+						if($t.p.autoencode) {tmp = $.jgrid.htmlDecode(tmp);}
+						if(rp_ge[$t.p.id].checkOnSubmit===true || rp_ge[$t.p.id].checkOnUpdate) {rp_ge[$t.p.id]._savedData[nm] = tmp;}
+						nm = $.jgrid.jqID(nm);
+						switch (cm[i].edittype) {
+							case "password":
+							case "text":
+							case "button" :
+							case "image":
+							case "textarea":
+								if(tmp === "&nbsp;" || tmp === "&#160;" || (tmp.length===1 && tmp.charCodeAt(0)===160) ) {tmp='';}
+								$("#"+nm,"#"+fmid).val(tmp);
+								break;
+							case "select":
+								var opv = tmp.split(",");
+								opv = $.map(opv,function(n){return $.trim(n);});
+								$("#"+nm+" option","#"+fmid).each(function(){
+									if (!cm[i].editoptions.multiple && ($.trim(tmp) === $.trim($(this).text()) || opv[0] === $.trim($(this).text()) || opv[0] === $.trim($(this).val())) ){
+										this.selected= true;
+									} else if (cm[i].editoptions.multiple){
+										if(  $.inArray($.trim($(this).text()), opv ) > -1 || $.inArray($.trim($(this).val()), opv ) > -1  ){
+											this.selected = true;
+										}else{
+											this.selected = false;
+										}
+									} else {
+										this.selected = false;
+									}
+								});
+								break;
+							case "checkbox":
+								tmp = String(tmp);
+								if(cm[i].editoptions && cm[i].editoptions.value) {
+									var cb = cm[i].editoptions.value.split(":");
+									if(cb[0] === tmp) {
+										$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']({"checked":true, "defaultChecked" : true});
+									} else {
+										$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']({"checked":false, "defaultChecked" : false});
+									}
+								} else {
+									tmp = tmp.toLowerCase();
+									if(tmp.search(/(false|f|0|no|n|off|undefined)/i)<0 && tmp!=="") {
+										$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("checked",true);
+										$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("defaultChecked",true); //ie
+									} else {
+										$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("checked", false);
+										$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("defaultChecked", false); //ie
+									}
+								}
+								break;
+							case 'custom' :
+								try {
+									if(cm[i].editoptions && $.isFunction(cm[i].editoptions.custom_value)) {
+										cm[i].editoptions.custom_value.call($t, $("#"+nm,"#"+fmid),'set',tmp);
+									} else {throw "e1";}
+								} catch (e) {
+									if (e==="e1") {$.jgrid.info_dialog($.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.nodefined,$.jgrid.edit.bClose);}
+									else {$.jgrid.info_dialog($.jgrid.errors.errcap,e.message,$.jgrid.edit.bClose);}
+								}
+								break;
+						}
+						cnt++;
+					}
+				});
+				if(cnt>0) {$("#id_g",frmtb).val(rowid);}
+			}
+			function setNulls() {
+				$.each($t.p.colModel, function(i,n){
+					if(n.editoptions && n.editoptions.NullIfEmpty === true) {
+						if(postdata.hasOwnProperty(n.name) && postdata[n.name] === "") {
+							postdata[n.name] = 'null';
+						}
+					}
+				});
+			}
+			function postIt() {
+				var copydata, ret=[true,"",""], onCS = {}, opers = $t.p.prmNames, idname, oper, key, selr, i, url;
+				
+				var retvals = $($t).triggerHandler("jqGridAddEditBeforeCheckValues", [$("#"+frmgr), frmoper]);
+				if(retvals && typeof retvals === 'object') {postdata = retvals;}
+				
+				if($.isFunction(rp_ge[$t.p.id].beforeCheckValues)) {
+					retvals = rp_ge[$t.p.id].beforeCheckValues.call($t, postdata,$("#"+frmgr),frmoper);
+					if(retvals && typeof retvals === 'object') {postdata = retvals;}
+				}
+				for( key in postdata ){
+					if(postdata.hasOwnProperty(key)) {
+						ret = $.jgrid.checkValues.call($t,postdata[key],key);
+						if(ret[0] === false) {break;}
+					}
+				}
+				setNulls();
+				if(ret[0]) {
+					onCS = $($t).triggerHandler("jqGridAddEditClickSubmit", [rp_ge[$t.p.id], postdata, frmoper]);
+					if( onCS === undefined && $.isFunction( rp_ge[$t.p.id].onclickSubmit)) { 
+						onCS = rp_ge[$t.p.id].onclickSubmit.call($t, rp_ge[$t.p.id], postdata, frmoper) || {}; 
+					}
+					ret = $($t).triggerHandler("jqGridAddEditBeforeSubmit", [postdata, $("#"+frmgr), frmoper]);
+					if(ret === undefined) {
+						ret = [true,"",""];
+					}
+					if( ret[0] && $.isFunction(rp_ge[$t.p.id].beforeSubmit))  {
+						ret = rp_ge[$t.p.id].beforeSubmit.call($t,postdata,$("#"+frmgr), frmoper);
+					}
+				}
+
+				if(ret[0] && !rp_ge[$t.p.id].processing) {
+					rp_ge[$t.p.id].processing = true;
+					$("#sData", frmtb+"_2").addClass('ui-state-active');
+					url = rp_ge[$t.p.id].url || $($t).jqGrid('getGridParam','editurl');
+					oper = opers.oper;
+					idname = url === 'clientArray' ? $t.p.keyName : opers.id;
+					// we add to pos data array the action - the name is oper
+					postdata[oper] = ($.trim(postdata[$t.p.id+"_id"]) === "_empty") ? opers.addoper : opers.editoper;
+					if(postdata[oper] !== opers.addoper) {
+						postdata[idname] = postdata[$t.p.id+"_id"];
+					} else {
+						// check to see if we have allredy this field in the form and if yes lieve it
+						if( postdata[idname] === undefined ) {postdata[idname] = postdata[$t.p.id+"_id"];}
+					}
+					delete postdata[$t.p.id+"_id"];
+					postdata = $.extend(postdata,rp_ge[$t.p.id].editData,onCS);
+					if($t.p.treeGrid === true)  {
+						if(postdata[oper] === opers.addoper) {
+						selr = $($t).jqGrid("getGridParam", 'selrow');
+							var tr_par_id = $t.p.treeGridModel === 'adjacency' ? $t.p.treeReader.parent_id_field : 'parent_id';
+							postdata[tr_par_id] = selr;
+						}
+						for(i in $t.p.treeReader){
+							if($t.p.treeReader.hasOwnProperty(i)) {
+								var itm = $t.p.treeReader[i];
+								if(postdata.hasOwnProperty(itm)) {
+									if(postdata[oper] === opers.addoper && i === 'parent_id_field') {continue;}
+									delete postdata[itm];
+								}
+							}
+						}
+					}
+					
+					postdata[idname] = $.jgrid.stripPref($t.p.idPrefix, postdata[idname]);
+					var ajaxOptions = $.extend({
+						url: url,
+						type: rp_ge[$t.p.id].mtype,
+						data: $.isFunction(rp_ge[$t.p.id].serializeEditData) ? rp_ge[$t.p.id].serializeEditData.call($t,postdata) :  postdata,
+						complete:function(data,status){
+							var key;
+							$("#sData", frmtb+"_2").removeClass('ui-state-active');
+							postdata[idname] = $t.p.idPrefix + postdata[idname];
+							if(data.status >= 300 && data.status !== 304) {
+								ret[0] = false;
+								ret[1] = $($t).triggerHandler("jqGridAddEditErrorTextFormat", [data, frmoper]);
+								if ($.isFunction(rp_ge[$t.p.id].errorTextFormat)) {
+									ret[1] = rp_ge[$t.p.id].errorTextFormat.call($t, data, frmoper);
+								} else {
+									ret[1] = status + " Status: '" + data.statusText + "'. Error code: " + data.status;
+								}
+							} else {
+								// data is posted successful
+								// execute aftersubmit with the returned data from server
+								ret = $($t).triggerHandler("jqGridAddEditAfterSubmit", [data, postdata, frmoper]);
+								if(ret === undefined) {
+									ret = [true,"",""];
+								}
+								if( ret[0] && $.isFunction(rp_ge[$t.p.id].afterSubmit) ) {
+									ret = rp_ge[$t.p.id].afterSubmit.call($t, data,postdata, frmoper);
+								}
+							}
+							if(ret[0] === false) {
+								$("#FormError>td",frmtb).html(ret[1]);
+								$("#FormError",frmtb).show();
+							} else {
+								if($t.p.autoencode) {
+									$.each(postdata,function(n,v){
+										postdata[n] = $.jgrid.htmlDecode(v);
+									});
+								}
+								//rp_ge[$t.p.id].reloadAfterSubmit = rp_ge[$t.p.id].reloadAfterSubmit && $t.p.datatype != "local";
+								// the action is add
+								if(postdata[oper] === opers.addoper ) {
+									//id processing
+									// user not set the id ret[2]
+									if(!ret[2]) {ret[2] = $.jgrid.randId();}
+									if(postdata[idname] == null){
+										postdata[idname] = ret[2];
+									} else {
+										ret[2] = postdata[idname];
+									}
+									if(rp_ge[$t.p.id].reloadAfterSubmit) {
+										$($t).trigger("reloadGrid");
+									} else {
+										if($t.p.treeGrid === true){
+											$($t).jqGrid("addChildNode",ret[2],selr,postdata );
+										} else {
+											$($t).jqGrid("addRowData",ret[2],postdata,p.addedrow);
+										}
+									}
+									if(rp_ge[$t.p.id].closeAfterAdd) {
+										if($t.p.treeGrid !== true){
+											$($t).jqGrid("setSelection",ret[2]);
+										}
+										$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
+									} else if (rp_ge[$t.p.id].clearAfterAdd) {
+										fillData("_empty",$t,frmgr);
+									}
+								} else {
+									// the action is update
+									if(rp_ge[$t.p.id].reloadAfterSubmit) {
+										$($t).trigger("reloadGrid");
+										if( !rp_ge[$t.p.id].closeAfterEdit ) {setTimeout(function(){$($t).jqGrid("setSelection",postdata[idname]);},1000);}
+									} else {
+										if($t.p.treeGrid === true) {
+											$($t).jqGrid("setTreeRow", postdata[idname],postdata);
+										} else {
+											$($t).jqGrid("setRowData", postdata[idname],postdata);
+										}
+									}
+									if(rp_ge[$t.p.id].closeAfterEdit) {$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});}
+								}
+								if($.isFunction(rp_ge[$t.p.id].afterComplete)) {
+									copydata = data;
+									setTimeout(function(){
+										$($t).triggerHandler("jqGridAddEditAfterComplete", [copydata, postdata, $("#"+frmgr), frmoper]);
+										rp_ge[$t.p.id].afterComplete.call($t, copydata, postdata, $("#"+frmgr), frmoper);
+										copydata=null;
+									},500);
+								}
+								if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {
+									$("#"+frmgr).data("disabled",false);
+									if(rp_ge[$t.p.id]._savedData[$t.p.id+"_id"] !== "_empty"){
+										for(key in rp_ge[$t.p.id]._savedData) {
+											if(rp_ge[$t.p.id]._savedData.hasOwnProperty(key) && postdata[key]) {
+												rp_ge[$t.p.id]._savedData[key] = postdata[key];
+											}
+										}
+									}
+								}
+							}
+							rp_ge[$t.p.id].processing=false;
+							try{$(':input:visible',"#"+frmgr)[0].focus();} catch (e){}
+						}
+					}, $.jgrid.ajaxOptions, rp_ge[$t.p.id].ajaxEditOptions );
+
+					if (!ajaxOptions.url && !rp_ge[$t.p.id].useDataProxy) {
+						if ($.isFunction($t.p.dataProxy)) {
+							rp_ge[$t.p.id].useDataProxy = true;
+						} else {
+							ret[0]=false;ret[1] += " "+$.jgrid.errors.nourl;
+						}
+					}
+					if (ret[0]) {
+						if (rp_ge[$t.p.id].useDataProxy) {
+							var dpret = $t.p.dataProxy.call($t, ajaxOptions, "set_"+$t.p.id); 
+							if(dpret === undefined) {
+								dpret = [true, ""];
+							}
+							if(dpret[0] === false ) {
+								ret[0] = false;
+								ret[1] = dpret[1] || "Error deleting the selected row!" ;
+							} else {
+								if(ajaxOptions.data.oper === opers.addoper && rp_ge[$t.p.id].closeAfterAdd ) {
+									$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
+								}
+								if(ajaxOptions.data.oper === opers.editoper && rp_ge[$t.p.id].closeAfterEdit ) {
+									$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
+								}
+							}
+						} else {
+							if(ajaxOptions.url === "clientArray") {
+								rp_ge[$t.p.id].reloadAfterSubmit = false;
+								postdata = ajaxOptions.data;
+								ajaxOptions.complete({status:200, statusText:''},'');
+							} else {
+								$.ajax(ajaxOptions); 
+							}
+						}
+					}
+				}
+				if(ret[0] === false) {
+					$("#FormError>td",frmtb).html(ret[1]);
+					$("#FormError",frmtb).show();
+					// return;
+				}
+			}
+			function compareData(nObj, oObj ) {
+				var ret = false,key;
+				for (key in nObj) {
+					if(nObj.hasOwnProperty(key) && nObj[key] != oObj[key]) {
+						ret = true;
+						break;
+					}
+				}
+				return ret;
+			}
+			function checkUpdates () {
+				var stat = true;
+				$("#FormError",frmtb).hide();
+				if(rp_ge[$t.p.id].checkOnUpdate) {
+					postdata = {};
+					getFormData();
+					diff = compareData(postdata,rp_ge[$t.p.id]._savedData);
+					if(diff) {
+						$("#"+frmgr).data("disabled",true);
+						$(".confirm","#"+IDs.themodal).show();
+						stat = false;
+					}
+				}
+				return stat;
+			}
+			function restoreInline()
+			{
+				var i;
+				if (rowid !== "_empty" && $t.p.savedRow !== undefined && $t.p.savedRow.length > 0 && $.isFunction($.fn.jqGrid.restoreRow)) {
+					for (i=0;i<$t.p.savedRow.length;i++) {
+						if ($t.p.savedRow[i].id == rowid) {
+							$($t).jqGrid('restoreRow',rowid);
+							break;
+						}
+					}
+				}
+			}
+			function updateNav(cr, posarr){
+				var totr = posarr[1].length-1;
+				if (cr===0) {
+					$("#pData",frmtb+"_2").addClass('ui-state-disabled');
+				} else if( posarr[1][cr-1] !== undefined && $("#"+$.jgrid.jqID(posarr[1][cr-1])).hasClass('ui-state-disabled')) {
+						$("#pData",frmtb+"_2").addClass('ui-state-disabled');
+				} else {
+					$("#pData",frmtb+"_2").removeClass('ui-state-disabled');
+				}
+				
+				if (cr===totr) {
+					$("#nData",frmtb+"_2").addClass('ui-state-disabled');
+				} else if( posarr[1][cr+1] !== undefined && $("#"+$.jgrid.jqID(posarr[1][cr+1])).hasClass('ui-state-disabled')) {
+					$("#nData",frmtb+"_2").addClass('ui-state-disabled');
+				} else {
+					$("#nData",frmtb+"_2").removeClass('ui-state-disabled');
+				}
+			}
+			function getCurrPos() {
+				var rowsInGrid = $($t).jqGrid("getDataIDs"),
+				selrow = $("#id_g",frmtb).val(),
+				pos = $.inArray(selrow,rowsInGrid);
+				return [pos,rowsInGrid];
+			}
+
+			var dh = isNaN(rp_ge[$(this)[0].p.id].dataheight) ? rp_ge[$(this)[0].p.id].dataheight : rp_ge[$(this)[0].p.id].dataheight+"px",
+			dw = isNaN(rp_ge[$(this)[0].p.id].datawidth) ? rp_ge[$(this)[0].p.id].datawidth : rp_ge[$(this)[0].p.id].datawidth+"px",
+			frm = $("<form name='FormPost' id='"+frmgr+"' class='FormGrid' onSubmit='return false;' style='width:"+dw+";overflow:auto;position:relative;height:"+dh+";'></form>").data("disabled",false),
+			tbl = $("<table id='"+frmtborg+"' class='EditTable' cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>");
+			$($t.p.colModel).each( function() {
+				var fmto = this.formoptions;
+				maxCols = Math.max(maxCols, fmto ? fmto.colpos || 0 : 0 );
+				maxRows = Math.max(maxRows, fmto ? fmto.rowpos || 0 : 0 );
+			});
+			$(frm).append(tbl);
+			var flr = $("<tr id='FormError' style='display:none'><td class='ui-state-error' colspan='"+(maxCols*2)+"'></td></tr>");
+			flr[0].rp = 0;
+			$(tbl).append(flr);
+			//topinfo
+			flr = $("<tr style='display:none' class='tinfo'><td class='topinfo' colspan='"+(maxCols*2)+"'>"+rp_ge[$t.p.id].topinfo+"</td></tr>");
+			flr[0].rp = 0;
+			$(tbl).append(flr);
+			showFrm = $($t).triggerHandler("jqGridAddEditBeforeInitData", [frm, frmoper]);
+			if(showFrm === undefined) {
+				showFrm = true;
+			}
+			if(showFrm && onBeforeInit) {
+				showFrm = onBeforeInit.call($t,frm, frmoper);
+			}
+			if(showFrm === false) {return;}
+			restoreInline();
+			// set the id.
+			// use carefull only to change here colproperties.
+			// create data
+			var rtlb = $t.p.direction === "rtl" ? true :false,
+			bp = rtlb ? "nData" : "pData",
+			bn = rtlb ? "pData" : "nData";
+			createData(rowid,$t,tbl,maxCols);
+			// buttons at footer
+			var bP = "<a id='"+bp+"' class='fm-button ui-state-default ui-corner-left'><span class='ui-icon ui-icon-triangle-1-w'></span></a>",
+			bN = "<a id='"+bn+"' class='fm-button ui-state-default ui-corner-right'><span class='ui-icon ui-icon-triangle-1-e'></span></a>",
+			bS  ="<a id='sData' class='fm-button ui-state-default ui-corner-all'>"+p.bSubmit+"</a>",
+			bC  ="<a id='cData' class='fm-button ui-state-default ui-corner-all'>"+p.bCancel+"</a>";
+			var bt = "<table border='0' cellspacing='0' cellpadding='0' class='EditTable' id='"+frmtborg+"_2'><tbody><tr><td colspan='2'><hr class='ui-widget-content' style='margin:1px'/></td></tr><tr id='Act_Buttons'><td class='navButton'>"+(rtlb ? bN+bP : bP+bN)+"</td><td class='EditButton'>"+bS+bC+"</td></tr>";
+			bt += "<tr style='display:none' class='binfo'><td class='bottominfo' colspan='2'>"+rp_ge[$t.p.id].bottominfo+"</td></tr>";
+			bt += "</tbody></table>";
+			if(maxRows >  0) {
+				var sd=[];
+				$.each($(tbl)[0].rows,function(i,r){
+					sd[i] = r;
+				});
+				sd.sort(function(a,b){
+					if(a.rp > b.rp) {return 1;}
+					if(a.rp < b.rp) {return -1;}
+					return 0;
+				});
+				$.each(sd, function(index, row) {
+					$('tbody',tbl).append(row);
+				});
+			}
+			p.gbox = "#gbox_"+$.jgrid.jqID(gID);
+			var cle = false;
+			if(p.closeOnEscape===true){
+				p.closeOnEscape = false;
+				cle = true;
+			}
+			var tms = $("<div></div>").append(frm).append(bt);
+			$.jgrid.createModal(IDs,tms, rp_ge[$(this)[0].p.id] ,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0]);
+			if(rtlb) {
+				$("#pData, #nData",frmtb+"_2").css("float","right");
+				$(".EditButton",frmtb+"_2").css("text-align","left");
+			}
+			if(rp_ge[$t.p.id].topinfo) {$(".tinfo",frmtb).show();}
+			if(rp_ge[$t.p.id].bottominfo) {$(".binfo",frmtb+"_2").show();}
+			tms = null;bt=null;
+			$("#"+$.jgrid.jqID(IDs.themodal)).keydown( function( e ) {
+				var wkey = e.target;
+				if ($("#"+frmgr).data("disabled")===true ) {return false;}//??
+				if(rp_ge[$t.p.id].savekey[0] === true && e.which === rp_ge[$t.p.id].savekey[1]) { // save
+					if(wkey.tagName !== "TEXTAREA") {
+						$("#sData", frmtb+"_2").trigger("click");
+						return false;
+					}
+				}
+				if(e.which === 27) {
+					if(!checkUpdates()) {return false;}
+					if(cle)	{$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:p.gbox,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});}
+					return false;
+				}
+				if(rp_ge[$t.p.id].navkeys[0]===true) {
+					if($("#id_g",frmtb).val() === "_empty") {return true;}
+					if(e.which === rp_ge[$t.p.id].navkeys[1]){ //up
+						$("#pData", frmtb+"_2").trigger("click");
+						return false;
+					}
+					if(e.which === rp_ge[$t.p.id].navkeys[2]){ //down
+						$("#nData", frmtb+"_2").trigger("click");
+						return false;
+					}
+				}
+			});
+			if(p.checkOnUpdate) {
+				$("a.ui-jqdialog-titlebar-close span","#"+$.jgrid.jqID(IDs.themodal)).removeClass("jqmClose");
+				$("a.ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.themodal)).unbind("click")
+				.click(function(){
+					if(!checkUpdates()) {return false;}
+					$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
+					return false;
+				});
+			}
+			p.saveicon = $.extend([true,"left","ui-icon-disk"],p.saveicon);
+			p.closeicon = $.extend([true,"left","ui-icon-close"],p.closeicon);
+			// beforeinitdata after creation of the form
+			if(p.saveicon[0]===true) {
+				$("#sData",frmtb+"_2").addClass(p.saveicon[1] === "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
+				.append("<span class='ui-icon "+p.saveicon[2]+"'></span>");
+			}
+			if(p.closeicon[0]===true) {
+				$("#cData",frmtb+"_2").addClass(p.closeicon[1] === "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
+				.append("<span class='ui-icon "+p.closeicon[2]+"'></span>");
+			}
+			if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {
+				bS  ="<a id='sNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>"+p.bYes+"</a>";
+				bN  ="<a id='nNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>"+p.bNo+"</a>";
+				bC  ="<a id='cNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>"+p.bExit+"</a>";
+				var zI = p.zIndex  || 999;zI ++;
+				$("<div class='"+ p.overlayClass+" jqgrid-overlay confirm' style='z-index:"+zI+";display:none;'>&#160;"+"</div><div class='confirm ui-widget-content ui-jqconfirm' style='z-index:"+(zI+1)+"'>"+p.saveData+"<br/><br/>"+bS+bN+bC+"</div>").insertAfter("#"+frmgr);
+				$("#sNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){
+					postIt();
+					$("#"+frmgr).data("disabled",false);
+					$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
+					return false;
+				});
+				$("#nNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){
+					$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
+					$("#"+frmgr).data("disabled",false);
+					setTimeout(function(){$(":input:visible","#"+frmgr)[0].focus();},0);
+					return false;
+				});
+				$("#cNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){
+					$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
+					$("#"+frmgr).data("disabled",false);
+					$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
+					return false;
+				});
+			}
+			// here initform - only once
+			$($t).triggerHandler("jqGridAddEditInitializeForm", [$("#"+frmgr), frmoper]);
+			if(onInitializeForm) {onInitializeForm.call($t,$("#"+frmgr), frmoper);}
+			if(rowid==="_empty" || !rp_ge[$t.p.id].viewPagerButtons) {$("#pData,#nData",frmtb+"_2").hide();} else {$("#pData,#nData",frmtb+"_2").show();}
+			$($t).triggerHandler("jqGridAddEditBeforeShowForm", [$("#"+frmgr), frmoper]);
+			if(onBeforeShow) { onBeforeShow.call($t, $("#"+frmgr), frmoper);}
+			$("#"+$.jgrid.jqID(IDs.themodal)).data("onClose",rp_ge[$t.p.id].onClose);
+			$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{
+				gbox:"#gbox_"+$.jgrid.jqID(gID),
+				jqm:p.jqModal, 
+				overlay: p.overlay,
+				modal:p.modal, 
+				overlayClass: p.overlayClass,
+				onHide :  function(h) {
+					var fh = $('#editmod'+gID)[0].style.height;
+					if(fh.indexOf("px") > -1 ) {
+						fh = parseFloat(fh);
+					}
+					$($t).data("formProp", {
+						top:parseFloat($(h.w).css("top")),
+						left : parseFloat($(h.w).css("left")),
+						width : $(h.w).width(),
+						height : fh,
+						dataheight : $("#"+frmgr).height(),
+						datawidth: $("#"+frmgr).width()
+					});
+					h.w.remove();
+					if(h.o) {h.o.remove();}
+				}
+			});
+			if(!closeovrl) {
+				$("." + $.jgrid.jqID(p.overlayClass)).click(function(){
+					if(!checkUpdates()) {return false;}
+					$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
+					return false;
+				});
+			}
+			$(".fm-button","#"+$.jgrid.jqID(IDs.themodal)).hover(
+				function(){$(this).addClass('ui-state-hover');},
+				function(){$(this).removeClass('ui-state-hover');}
+			);
+			$("#sData", frmtb+"_2").click(function(){
+				postdata = {};
+				$("#FormError",frmtb).hide();
+				// all depend on ret array
+				//ret[0] - succes
+				//ret[1] - msg if not succes
+				//ret[2] - the id  that will be set if reload after submit false
+				getFormData();
+				if(postdata[$t.p.id+"_id"] === "_empty")	{postIt();}
+				else if(p.checkOnSubmit===true ) {
+					diff = compareData(postdata,rp_ge[$t.p.id]._savedData);
+					if(diff) {
+						$("#"+frmgr).data("disabled",true);
+						$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).show();
+					} else {
+						postIt();
+					}
+				} else {
+					postIt();
+				}
+				return false;
+			});
+			$("#cData", frmtb+"_2").click(function(){
+				if(!checkUpdates()) {return false;}
+				$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
+				return false;
+			});
+			$("#nData", frmtb+"_2").click(function(){
+				if(!checkUpdates()) {return false;}
+				$("#FormError",frmtb).hide();
+				var npos = getCurrPos();
+				npos[0] = parseInt(npos[0],10);
+				if(npos[0] !== -1 && npos[1][npos[0]+1]) {
+					$($t).triggerHandler("jqGridAddEditClickPgButtons", ['next',$("#"+frmgr),npos[1][npos[0]]]);
+					var nposret;
+					if($.isFunction(p.onclickPgButtons)) {
+						nposret = p.onclickPgButtons.call($t, 'next',$("#"+frmgr),npos[1][npos[0]]);
+						if( nposret !== undefined && nposret === false ) {return false;}
+					}
+					if( $("#"+$.jgrid.jqID(npos[1][npos[0]+1])).hasClass('ui-state-disabled')) {return false;}
+					fillData(npos[1][npos[0]+1],$t,frmgr);
+					$($t).jqGrid("setSelection",npos[1][npos[0]+1]);
+					$($t).triggerHandler("jqGridAddEditAfterClickPgButtons", ['next',$("#"+frmgr),npos[1][npos[0]]]);
+					if($.isFunction(p.afterclickPgButtons)) {
+						p.afterclickPgButtons.call($t, 'next',$("#"+frmgr),npos[1][npos[0]+1]);
+					}
+					updateNav(npos[0]+1,npos);
+				}
+				return false;
+			});
+			$("#pData", frmtb+"_2").click(function(){
+				if(!checkUpdates()) {return false;}
+				$("#FormError",frmtb).hide();
+				var ppos = getCurrPos();
+				if(ppos[0] !== -1 && ppos[1][ppos[0]-1]) {
+					$($t).triggerHandler("jqGridAddEditClickPgButtons", ['prev',$("#"+frmgr),ppos[1][ppos[0]]]);
+					var pposret;
+					if($.isFunction(p.onclickPgButtons)) {
+						pposret = p.onclickPgButtons.call($t, 'prev',$("#"+frmgr),ppos[1][ppos[0]]);
+						if( pposret !== undefined && pposret === false ) {return false;}
+					}
+					if( $("#"+$.jgrid.jqID(ppos[1][ppos[0]-1])).hasClass('ui-state-disabled')) {return false;}
+					fillData(ppos[1][ppos[0]-1],$t,frmgr);
+					$($t).jqGrid("setSelection",ppos[1][ppos[0]-1]);
+					$($t).triggerHandler("jqGridAddEditAfterClickPgButtons", ['prev',$("#"+frmgr),ppos[1][ppos[0]]]);
+					if($.isFunction(p.afterclickPgButtons)) {
+						p.afterclickPgButtons.call($t, 'prev',$("#"+frmgr),ppos[1][ppos[0]-1]);
+					}
+					updateNav(ppos[0]-1,ppos);
+				}
+				return false;
+			});
+			$($t).triggerHandler("jqGridAddEditAfterShowForm", [$("#"+frmgr), frmoper]);
+			if(onAfterShow) { onAfterShow.call($t, $("#"+frmgr), frmoper); }
+			var posInit =getCurrPos();
+			updateNav(posInit[0],posInit);
+		});
+	},
+	viewGridRow : function(rowid, p){
+		p = $.extend(true, {
+			top : 0,
+			left: 0,
+			width: 0,
+			datawidth: 'auto',
+			height: 'auto',
+			dataheight: 'auto',
+			modal: false,
+			overlay: 30,
+			drag: true,
+			resize: true,
+			jqModal: true,
+			closeOnEscape : false,
+			labelswidth: '30%',
+			closeicon: [],
+			navkeys: [false,38,40],
+			onClose: null,
+			beforeShowForm : null,
+			beforeInitData : null,
+			viewPagerButtons : true,
+			recreateForm : false,
+			removemodal: true,
+			form: 'view'
+		}, $.jgrid.view, p || {});
+		rp_ge[$(this)[0].p.id] = p;
+		return this.each(function(){
+			var $t = this;
+			if (!$t.grid || !rowid) {return;}
+			var gID = $t.p.id,
+			frmgr = "ViewGrid_"+$.jgrid.jqID( gID  ), frmtb = "ViewTbl_" + $.jgrid.jqID( gID ),
+			frmgr_id = "ViewGrid_"+gID, frmtb_id = "ViewTbl_"+gID,
+			IDs = {themodal:'viewmod'+gID,modalhead:'viewhd'+gID,modalcontent:'viewcnt'+gID, scrollelm : frmgr},
+			onBeforeInit = $.isFunction(rp_ge[$t.p.id].beforeInitData) ? rp_ge[$t.p.id].beforeInitData : false,
+			showFrm = true,
+			maxCols = 1, maxRows=0;
+			if(!p.recreateForm) {
+				if( $($t).data("viewProp") ) {
+					$.extend(rp_ge[$(this)[0].p.id], $($t).data("viewProp"));
+				}
+			}
+			function focusaref(){ //Sfari 3 issues
+				if(rp_ge[$t.p.id].closeOnEscape===true || rp_ge[$t.p.id].navkeys[0]===true) {
+					setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.modalhead)).attr("tabindex", "-1").focus();},0);
+				}
+			}
+			function createData(rowid,obj,tb,maxcols){
+				var nm, hc,trdata, cnt=0,tmp, dc, retpos=[], ind=false, i,
+				tdtmpl = "<td class='CaptionTD form-view-label ui-widget-content' width='"+p.labelswidth+"'>&#160;</td><td class='DataTD form-view-data ui-helper-reset ui-widget-content'>&#160;</td>", tmpl="",
+				tdtmpl2 = "<td class='CaptionTD form-view-label ui-widget-content'>&#160;</td><td class='DataTD form-view-data ui-widget-content'>&#160;</td>",
+				fmtnum = ['integer','number','currency'],max1 =0, max2=0 ,maxw,setme, viewfld;
+				for (i=1;i<=maxcols;i++) {
+					tmpl += i === 1 ? tdtmpl : tdtmpl2;
+				}
+				// find max number align rigth with property formatter
+				$(obj.p.colModel).each( function() {
+					if(this.editrules && this.editrules.edithidden === true) {
+						hc = false;
+					} else {
+						hc = this.hidden === true ? true : false;
+					}
+					if(!hc && this.align==='right') {
+						if(this.formatter && $.inArray(this.formatter,fmtnum) !== -1 ) {
+							max1 = Math.max(max1,parseInt(this.width,10));
+						} else {
+							max2 = Math.max(max2,parseInt(this.width,10));
+						}
+					}
+				});
+				maxw  = max1 !==0 ? max1 : max2 !==0 ? max2 : 0;
+				ind = $(obj).jqGrid("getInd",rowid);
+				$(obj.p.colModel).each( function(i) {
+					nm = this.name;
+					setme = false;
+					// hidden fields are included in the form
+					if(this.editrules && this.editrules.edithidden === true) {
+						hc = false;
+					} else {
+						hc = this.hidden === true ? true : false;
+					}
+					dc = hc ? "style='display:none'" : "";
+					viewfld = (typeof this.viewable !== 'boolean') ? true : this.viewable;
+					if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn' && viewfld) {
+						if(ind === false) {
+							tmp = "";
+						} else {
+							if(nm === obj.p.ExpandColumn && obj.p.treeGrid === true) {
+								tmp = $("td:eq("+i+")",obj.rows[ind]).text();
+							} else {
+								tmp = $("td:eq("+i+")",obj.rows[ind]).html();
+							}
+						}
+						setme = this.align === 'right' && maxw !==0 ? true : false;
+						var frmopt = $.extend({},{rowabove:false,rowcontent:''}, this.formoptions || {}),
+						rp = parseInt(frmopt.rowpos,10) || cnt+1,
+						cp = parseInt((parseInt(frmopt.colpos,10) || 1)*2,10);
+						if(frmopt.rowabove) {
+							var newdata = $("<tr><td class='contentinfo' colspan='"+(maxcols*2)+"'>"+frmopt.rowcontent+"</td></tr>");
+							$(tb).append(newdata);
+							newdata[0].rp = rp;
+						}
+						trdata = $(tb).find("tr[rowpos="+rp+"]");
+						if ( trdata.length===0 ) {
+							trdata = $("<tr "+dc+" rowpos='"+rp+"'></tr>").addClass("FormData").attr("id","trv_"+nm);
+							$(trdata).append(tmpl);
+							$(tb).append(trdata);
+							trdata[0].rp = rp;
+						}
+						$("td:eq("+(cp-2)+")",trdata[0]).html('<b>'+ (frmopt.label === undefined ? obj.p.colNames[i]: frmopt.label)+'</b>');
+						$("td:eq("+(cp-1)+")",trdata[0]).append("<span>"+tmp+"</span>").attr("id","v_"+nm);
+						if(setme){
+							$("td:eq("+(cp-1)+") span",trdata[0]).css({'text-align':'right',width:maxw+"px"});
+						}
+						retpos[cnt] = i;
+						cnt++;
+					}
+				});
+				if( cnt > 0) {
+					var idrow = $("<tr class='FormData' style='display:none'><td class='CaptionTD'></td><td colspan='"+ (maxcols*2-1)+"' class='DataTD'><input class='FormElement' id='id_g' type='text' name='id' value='"+rowid+"'/></td></tr>");
+					idrow[0].rp = cnt+99;
+					$(tb).append(idrow);
+				}
+				return retpos;
+			}
+			function fillData(rowid,obj){
+				var nm, hc,cnt=0,tmp,trv;
+				trv = $(obj).jqGrid("getInd",rowid,true);
+				if(!trv) {return;}
+				$('td',trv).each( function(i) {
+					nm = obj.p.colModel[i].name;
+					// hidden fields are included in the form
+					if(obj.p.colModel[i].editrules && obj.p.colModel[i].editrules.edithidden === true) {
+						hc = false;
+					} else {
+						hc = obj.p.colModel[i].hidden === true ? true : false;
+					}
+					if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn') {
+						if(nm === obj.p.ExpandColumn && obj.p.treeGrid === true) {
+							tmp = $(this).text();
+						} else {
+							tmp = $(this).html();
+						}
+						nm = $.jgrid.jqID("v_"+nm);
+						$("#"+nm+" span","#"+frmtb).html(tmp);
+						if (hc) {$("#"+nm,"#"+frmtb).parents("tr:first").hide();}
+						cnt++;
+					}
+				});
+				if(cnt>0) {$("#id_g","#"+frmtb).val(rowid);}
+			}
+			function updateNav(cr,posarr){
+				var totr = posarr[1].length-1;
+				if (cr===0) {
+					$("#pData","#"+frmtb+"_2").addClass('ui-state-disabled');
+				} else if( posarr[1][cr-1] !== undefined && $("#"+$.jgrid.jqID(posarr[1][cr-1])).hasClass('ui-state-disabled')) {
+					$("#pData",frmtb+"_2").addClass('ui-state-disabled');
+				} else {
+					$("#pData","#"+frmtb+"_2").removeClass('ui-state-disabled');
+				}
+				if (cr===totr) {
+					$("#nData","#"+frmtb+"_2").addClass('ui-state-disabled');
+				} else if( posarr[1][cr+1] !== undefined && $("#"+$.jgrid.jqID(posarr[1][cr+1])).hasClass('ui-state-disabled')) {
+					$("#nData",frmtb+"_2").addClass('ui-state-disabled');
+				} else {
+					$("#nData","#"+frmtb+"_2").removeClass('ui-state-disabled');
+				}
+			}
+			function getCurrPos() {
+				var rowsInGrid = $($t).jqGrid("getDataIDs"),
+				selrow = $("#id_g","#"+frmtb).val(),
+				pos = $.inArray(selrow,rowsInGrid);
+				return [pos,rowsInGrid];
+			}
+
+			var dh = isNaN(rp_ge[$(this)[0].p.id].dataheight) ? rp_ge[$(this)[0].p.id].dataheight : rp_ge[$(this)[0].p.id].dataheight+"px",
+			dw = isNaN(rp_ge[$(this)[0].p.id].datawidth) ? rp_ge[$(this)[0].p.id].datawidth : rp_ge[$(this)[0].p.id].datawidth+"px",
+			frm = $("<form name='FormPost' id='"+frmgr_id+"' class='FormGrid' style='width:"+dw+";overflow:auto;position:relative;height:"+dh+";'></form>"),
+			tbl =$("<table id='"+frmtb_id+"' class='EditTable' cellspacing='1' cellpadding='2' border='0' style='table-layout:fixed'><tbody></tbody></table>");
+			$($t.p.colModel).each( function() {
+				var fmto = this.formoptions;
+				maxCols = Math.max(maxCols, fmto ? fmto.colpos || 0 : 0 );
+				maxRows = Math.max(maxRows, fmto ? fmto.rowpos || 0 : 0 );
+			});
+			// set the id.
+			$(frm).append(tbl);
+			if(onBeforeInit) {
+				showFrm = onBeforeInit.call($t, frm );
+				if(showFrm === undefined) {
+					showFrm = true;
+				}
+			}
+			if(showFrm === false) {return;}
+			createData(rowid, $t, tbl, maxCols);
+			var rtlb = $t.p.direction === "rtl" ? true :false,
+			bp = rtlb ? "nData" : "pData",
+			bn = rtlb ? "pData" : "nData",
+				// buttons at footer
+			bP = "<a id='"+bp+"' class='fm-button ui-state-default ui-corner-left'><span class='ui-icon ui-icon-triangle-1-w'></span></a>",
+			bN = "<a id='"+bn+"' class='fm-button ui-state-default ui-corner-right'><span class='ui-icon ui-icon-triangle-1-e'></span></a>",
+			bC  ="<a id='cData' class='fm-button ui-state-default ui-corner-all'>"+p.bClose+"</a>";
+			if(maxRows >  0) {
+				var sd=[];
+				$.each($(tbl)[0].rows,function(i,r){
+					sd[i] = r;
+				});
+				sd.sort(function(a,b){
+					if(a.rp > b.rp) {return 1;}
+					if(a.rp < b.rp) {return -1;}
+					return 0;
+				});
+				$.each(sd, function(index, row) {
+					$('tbody',tbl).append(row);
+				});
+			}
+			p.gbox = "#gbox_"+$.jgrid.jqID(gID);
+			var bt = $("<div></div>").append(frm).append("<table border='0' class='EditTable' id='"+frmtb+"_2'><tbody><tr id='Act_Buttons'><td class='navButton' width='"+p.labelswidth+"'>"+(rtlb ? bN+bP : bP+bN)+"</td><td class='EditButton'>"+bC+"</td></tr></tbody></table>");
+			$.jgrid.createModal(IDs,bt,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gview_"+$.jgrid.jqID($t.p.id))[0]);
+			if(rtlb) {
+				$("#pData, #nData","#"+frmtb+"_2").css("float","right");
+				$(".EditButton","#"+frmtb+"_2").css("text-align","left");
+			}
+			if(!p.viewPagerButtons) {$("#pData, #nData","#"+frmtb+"_2").hide();}
+			bt = null;
+			$("#"+IDs.themodal).keydown( function( e ) {
+				if(e.which === 27) {
+					if(rp_ge[$t.p.id].closeOnEscape) {$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:p.gbox,jqm:p.jqModal, onClose: p.onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});}
+					return false;
+				}
+				if(p.navkeys[0]===true) {
+					if(e.which === p.navkeys[1]){ //up
+						$("#pData", "#"+frmtb+"_2").trigger("click");
+						return false;
+					}
+					if(e.which === p.navkeys[2]){ //down
+						$("#nData", "#"+frmtb+"_2").trigger("click");
+						return false;
+					}
+				}
+			});
+			p.closeicon = $.extend([true,"left","ui-icon-close"],p.closeicon);
+			if(p.closeicon[0]===true) {
+				$("#cData","#"+frmtb+"_2").addClass(p.closeicon[1] === "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
+				.append("<span class='ui-icon "+p.closeicon[2]+"'></span>");
+			}
+			if($.isFunction(p.beforeShowForm)) {p.beforeShowForm.call($t,$("#"+frmgr));}
+			$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{
+				gbox:"#gbox_"+$.jgrid.jqID(gID),
+				jqm:p.jqModal,
+				overlay: p.overlay, 
+				modal:p.modal,
+				onHide :  function(h) {
+					$($t).data("viewProp", {
+						top:parseFloat($(h.w).css("top")),
+						left : parseFloat($(h.w).css("left")),
+						width : $(h.w).width(),
+						height : $(h.w).height(),
+						dataheight : $("#"+frmgr).height(),
+						datawidth: $("#"+frmgr).width()
+					});
+					h.w.remove();
+					if(h.o) {h.o.remove();}
+				}
+			});
+			$(".fm-button:not(.ui-state-disabled)","#"+frmtb+"_2").hover(
+				function(){$(this).addClass('ui-state-hover');},
+				function(){$(this).removeClass('ui-state-hover');}
+			);
+			focusaref();
+			$("#cData", "#"+frmtb+"_2").click(function(){
+				$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: p.onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
+				return false;
+			});
+			$("#nData", "#"+frmtb+"_2").click(function(){
+				$("#FormError","#"+frmtb).hide();
+				var npos = getCurrPos();
+				npos[0] = parseInt(npos[0],10);
+				if(npos[0] !== -1 && npos[1][npos[0]+1]) {
+					if($.isFunction(p.onclickPgButtons)) {
+						p.onclickPgButtons.call($t,'next',$("#"+frmgr),npos[1][npos[0]]);
+					}
+					fillData(npos[1][npos[0]+1],$t);
+					$($t).jqGrid("setSelection",npos[1][npos[0]+1]);
+					if($.isFunction(p.afterclickPgButtons)) {
+						p.afterclickPgButtons.call($t,'next',$("#"+frmgr),npos[1][npos[0]+1]);
+					}
+					updateNav(npos[0]+1,npos);
+				}
+				focusaref();
+				return false;
+			});
+			$("#pData", "#"+frmtb+"_2").click(function(){
+				$("#FormError","#"+frmtb).hide();
+				var ppos = getCurrPos();
+				if(ppos[0] !== -1 && ppos[1][ppos[0]-1]) {
+					if($.isFunction(p.onclickPgButtons)) {
+						p.onclickPgButtons.call($t,'prev',$("#"+frmgr),ppos[1][ppos[0]]);
+					}
+					fillData(ppos[1][ppos[0]-1],$t);
+					$($t).jqGrid("setSelection",ppos[1][ppos[0]-1]);
+					if($.isFunction(p.afterclickPgButtons)) {
+						p.afterclickPgButtons.call($t,'prev',$("#"+frmgr),ppos[1][ppos[0]-1]);
+					}
+					updateNav(ppos[0]-1,ppos);
+				}
+				focusaref();
+				return false;
+			});
+			var posInit =getCurrPos();
+			updateNav(posInit[0],posInit);
+		});
+	},
+	delGridRow : function(rowids,p) {
+		p = $.extend(true, {
+			top : 0,
+			left: 0,
+			width: 240,
+			height: 'auto',
+			dataheight : 'auto',
+			modal: false,
+			overlay: 30,
+			drag: true,
+			resize: true,
+			url : '',
+			mtype : "POST",
+			reloadAfterSubmit: true,
+			beforeShowForm: null,
+			beforeInitData : null,
+			afterShowForm: null,
+			beforeSubmit: null,
+			onclickSubmit: null,
+			afterSubmit: null,
+			jqModal : true,
+			closeOnEscape : false,
+			delData: {},
+			delicon : [],
+			cancelicon : [],
+			onClose : null,
+			ajaxDelOptions : {},
+			processing : false,
+			serializeDelData : null,
+			useDataProxy : false
+		}, $.jgrid.del, p ||{});
+		rp_ge[$(this)[0].p.id] = p;
+		return this.each(function(){
+			var $t = this;
+			if (!$t.grid ) {return;}
+			if(!rowids) {return;}
+			var onBeforeShow = $.isFunction( rp_ge[$t.p.id].beforeShowForm  ),
+			onAfterShow = $.isFunction( rp_ge[$t.p.id].afterShowForm ),
+			onBeforeInit = $.isFunction(rp_ge[$t.p.id].beforeInitData) ? rp_ge[$t.p.id].beforeInitData : false,
+			gID = $t.p.id, onCS = {},
+			showFrm = true,
+			dtbl = "DelTbl_"+$.jgrid.jqID(gID),postd, idname, opers, oper,
+			dtbl_id = "DelTbl_" + gID,
+			IDs = {themodal:'delmod'+gID,modalhead:'delhd'+gID,modalcontent:'delcnt'+gID, scrollelm: dtbl};
+			if ($.isArray(rowids)) {rowids = rowids.join();}
+			if ( $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined ) {
+				if(onBeforeInit) {
+					showFrm = onBeforeInit.call($t,$("#"+dtbl));
+					if(showFrm === undefined) {
+						showFrm = true;
+					}
+				}
+				if(showFrm === false) {return;}
+				$("#DelData>td","#"+dtbl).text(rowids);
+				$("#DelError","#"+dtbl).hide();
+				if( rp_ge[$t.p.id].processing === true) {
+					rp_ge[$t.p.id].processing=false;
+					$("#dData", "#"+dtbl).removeClass('ui-state-active');
+				}
+				if(onBeforeShow) {rp_ge[$t.p.id].beforeShowForm.call($t,$("#"+dtbl));}
+				$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:rp_ge[$t.p.id].jqModal,jqM: false, overlay: rp_ge[$t.p.id].overlay, modal:rp_ge[$t.p.id].modal});
+				if(onAfterShow) {rp_ge[$t.p.id].afterShowForm.call($t,$("#"+dtbl));}
+			} else {
+				var dh = isNaN(rp_ge[$t.p.id].dataheight) ? rp_ge[$t.p.id].dataheight : rp_ge[$t.p.id].dataheight+"px",
+				dw = isNaN(p.datawidth) ? p.datawidth : p.datawidth+"px",
+				tbl = "<div id='"+dtbl_id+"' class='formdata' style='width:"+dw+";overflow:auto;position:relative;height:"+dh+";'>";
+				tbl += "<table class='DelTable'><tbody>";
+				// error data
+				tbl += "<tr id='DelError' style='display:none'><td class='ui-state-error'></td></tr>";
+				tbl += "<tr id='DelData' style='display:none'><td >"+rowids+"</td></tr>";
+				tbl += "<tr><td class=\"delmsg\" style=\"white-space:pre;\">"+rp_ge[$t.p.id].msg+"</td></tr><tr><td >&#160;</td></tr>";
+				// buttons at footer
+				tbl += "</tbody></table></div>";
+				var bS  = "<a id='dData' class='fm-button ui-state-default ui-corner-all'>"+p.bSubmit+"</a>",
+				bC  = "<a id='eData' class='fm-button ui-state-default ui-corner-all'>"+p.bCancel+"</a>";
+				tbl += "<table cellspacing='0' cellpadding='0' border='0' class='EditTable' id='"+dtbl+"_2'><tbody><tr><td><hr class='ui-widget-content' style='margin:1px'/></td></tr><tr><td class='DelButton EditButton'>"+bS+"&#160;"+bC+"</td></tr></tbody></table>";
+				p.gbox = "#gbox_"+$.jgrid.jqID(gID);
+				$.jgrid.createModal(IDs,tbl,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gview_"+$.jgrid.jqID($t.p.id))[0]);
+
+				if(onBeforeInit) {
+					showFrm = onBeforeInit.call($t,$(tbl));
+					if(showFrm === undefined) {
+						showFrm = true;
+					}
+				}
+				if(showFrm === false) {return;}
+
+				$(".fm-button","#"+dtbl+"_2").hover(
+					function(){$(this).addClass('ui-state-hover');},
+					function(){$(this).removeClass('ui-state-hover');}
+				);
+				p.delicon = $.extend([true,"left","ui-icon-scissors"],rp_ge[$t.p.id].delicon);
+				p.cancelicon = $.extend([true,"left","ui-icon-cancel"],rp_ge[$t.p.id].cancelicon);
+				if(p.delicon[0]===true) {
+					$("#dData","#"+dtbl+"_2").addClass(p.delicon[1] === "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
+					.append("<span class='ui-icon "+p.delicon[2]+"'></span>");
+				}
+				if(p.cancelicon[0]===true) {
+					$("#eData","#"+dtbl+"_2").addClass(p.cancelicon[1] === "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
+					.append("<span class='ui-icon "+p.cancelicon[2]+"'></span>");
+				}
+				$("#dData","#"+dtbl+"_2").click(function(){
+					var ret=[true,""], pk,
+					postdata = $("#DelData>td","#"+dtbl).text(); //the pair is name=val1,val2,...
+					onCS = {};
+					if( $.isFunction( rp_ge[$t.p.id].onclickSubmit ) ) {onCS = rp_ge[$t.p.id].onclickSubmit.call($t,rp_ge[$t.p.id], postdata) || {};}
+					if( $.isFunction( rp_ge[$t.p.id].beforeSubmit ) ) {ret = rp_ge[$t.p.id].beforeSubmit.call($t,postdata);}
+					if(ret[0] && !rp_ge[$t.p.id].processing) {
+						rp_ge[$t.p.id].processing = true;
+						opers = $t.p.prmNames;
+						postd = $.extend({},rp_ge[$t.p.id].delData, onCS);
+						oper = opers.oper;
+						postd[oper] = opers.deloper;
+						idname = opers.id;
+						postdata = String(postdata).split(",");
+						if(!postdata.length) { return false; }
+						for(pk in postdata) {
+							if(postdata.hasOwnProperty(pk)) {
+								postdata[pk] = $.jgrid.stripPref($t.p.idPrefix, postdata[pk]);
+							}
+						}
+						postd[idname] = postdata.join();
+						$(this).addClass('ui-state-active');
+						var ajaxOptions = $.extend({
+							url: rp_ge[$t.p.id].url || $($t).jqGrid('getGridParam','editurl'),
+							type: rp_ge[$t.p.id].mtype,
+							data: $.isFunction(rp_ge[$t.p.id].serializeDelData) ? rp_ge[$t.p.id].serializeDelData.call($t,postd) : postd,
+							complete:function(data,status){
+								var i;
+								$("#dData", "#"+dtbl+"_2").removeClass('ui-state-active');
+								if(data.status >= 300 && data.status !== 304) {
+									ret[0] = false;
+									if ($.isFunction(rp_ge[$t.p.id].errorTextFormat)) {
+										ret[1] = rp_ge[$t.p.id].errorTextFormat.call($t,data);
+									} else {
+										ret[1] = status + " Status: '" + data.statusText + "'. Error code: " + data.status;
+									}
+								} else {
+									// data is posted successful
+									// execute aftersubmit with the returned data from server
+									if( $.isFunction( rp_ge[$t.p.id].afterSubmit ) ) {
+										ret = rp_ge[$t.p.id].afterSubmit.call($t,data,postd);
+									}
+								}
+								if(ret[0] === false) {
+									$("#DelError>td","#"+dtbl).html(ret[1]);
+									$("#DelError","#"+dtbl).show();
+								} else {
+									if(rp_ge[$t.p.id].reloadAfterSubmit && $t.p.datatype !== "local") {
+										$($t).trigger("reloadGrid");
+									} else {
+										if($t.p.treeGrid===true){
+												try {$($t).jqGrid("delTreeNode",$t.p.idPrefix+postdata[0]);} catch(e){}
+										} else {
+											for(i=0;i<postdata.length;i++) {
+												$($t).jqGrid("delRowData",$t.p.idPrefix+ postdata[i]);
+											}
+										}
+										$t.p.selrow = null;
+										$t.p.selarrrow = [];
+									}
+									if($.isFunction(rp_ge[$t.p.id].afterComplete)) {
+										setTimeout(function(){rp_ge[$t.p.id].afterComplete.call($t,data,postdata);},500);
+									}
+								}
+								rp_ge[$t.p.id].processing=false;
+								if(ret[0]) {$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});}
+							}
+						}, $.jgrid.ajaxOptions, rp_ge[$t.p.id].ajaxDelOptions);
+
+
+						if (!ajaxOptions.url && !rp_ge[$t.p.id].useDataProxy) {
+							if ($.isFunction($t.p.dataProxy)) {
+								rp_ge[$t.p.id].useDataProxy = true;
+							} else {
+								ret[0]=false;ret[1] += " "+$.jgrid.errors.nourl;
+							}
+						}
+						if (ret[0]) {
+							if (rp_ge[$t.p.id].useDataProxy) {
+								var dpret = $t.p.dataProxy.call($t, ajaxOptions, "del_"+$t.p.id); 
+								if(dpret === undefined) {
+									dpret = [true, ""];
+								}
+								if(dpret[0] === false ) {
+									ret[0] = false;
+									ret[1] = dpret[1] || "Error deleting the selected row!" ;
+								} else {
+									$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
+								}
+							}
+							else {
+								if(ajaxOptions.url === "clientArray") {
+									postd = ajaxOptions.data;
+									ajaxOptions.complete({status:200, statusText:''},'');
+								} else {
+									$.ajax(ajaxOptions); 
+								}
+							}
+						}
+					}
+
+					if(ret[0] === false) {
+						$("#DelError>td","#"+dtbl).html(ret[1]);
+						$("#DelError","#"+dtbl).show();
+					}
+					return false;
+				});
+				$("#eData", "#"+dtbl+"_2").click(function(){
+					$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:rp_ge[$t.p.id].jqModal, onClose: rp_ge[$t.p.id].onClose});
+					return false;
+				});
+				if(onBeforeShow) {rp_ge[$t.p.id].beforeShowForm.call($t,$("#"+dtbl));}
+				$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:rp_ge[$t.p.id].jqModal, overlay: rp_ge[$t.p.id].overlay, modal:rp_ge[$t.p.id].modal});
+				if(onAfterShow) {rp_ge[$t.p.id].afterShowForm.call($t,$("#"+dtbl));}
+			}
+			if(rp_ge[$t.p.id].closeOnEscape===true) {
+				setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.modalhead)).attr("tabindex","-1").focus();},0);
+			}
+		});
+	},
+	navGrid : function (elem, o, pEdit,pAdd,pDel,pSearch, pView) {
+		o = $.extend({
+			edit: true,
+			editicon: "ui-icon-pencil",
+			add: true,
+			addicon:"ui-icon-plus",
+			del: true,
+			delicon:"ui-icon-trash",
+			search: true,
+			searchicon:"ui-icon-search",
+			refresh: true,
+			refreshicon:"ui-icon-refresh",
+			refreshstate: 'firstpage',
+			view: false,
+			viewicon : "ui-icon-document",
+			position : "left",
+			closeOnEscape : true,
+			beforeRefresh : null,
+			afterRefresh : null,
+			cloneToTop : false,
+			alertwidth : 200,
+			alertheight : 'auto',
+			alerttop: null,
+			alertleft: null,
+			alertzIndex : null
+		}, $.jgrid.nav, o ||{});
+		return this.each(function() {
+			if(this.nav) {return;}
+			var alertIDs = {themodal: 'alertmod_' + this.p.id, modalhead: 'alerthd_' + this.p.id,modalcontent: 'alertcnt_' + this.p.id},
+			$t = this, twd, tdw;
+			if(!$t.grid || typeof elem !== 'string') {return;}
+			if ($("#"+alertIDs.themodal)[0] === undefined) {
+				if(!o.alerttop && !o.alertleft) {
+					if (window.innerWidth !== undefined) {
+						o.alertleft = window.innerWidth;
+						o.alerttop = window.innerHeight;
+					} else if (document.documentElement !== undefined && document.documentElement.clientWidth !== undefined && document.documentElement.clientWidth !== 0) {
+						o.alertleft = document.documentElement.clientWidth;
+						o.alerttop = document.documentElement.clientHeight;
+					} else {
+						o.alertleft=1024;
+						o.alerttop=768;
+					}
+					o.alertleft = o.alertleft/2 - parseInt(o.alertwidth,10)/2;
+					o.alerttop = o.alerttop/2-25;
+				}
+				$.jgrid.createModal(alertIDs,
+					"<div>"+o.alerttext+"</div><span tabindex='0'><span tabindex='-1' id='jqg_alrt'></span></span>",
+					{ 
+						gbox:"#gbox_"+$.jgrid.jqID($t.p.id),
+						jqModal:true,
+						drag:true,
+						resize:true,
+						caption:o.alertcap,
+						top:o.alerttop,
+						left:o.alertleft,
+						width:o.alertwidth,
+						height: o.alertheight,
+						closeOnEscape:o.closeOnEscape, 
+						zIndex: o.alertzIndex
+					},
+					"#gview_"+$.jgrid.jqID($t.p.id),
+					$("#gbox_"+$.jgrid.jqID($t.p.id))[0],
+					true
+				);
+			}
+			var clone = 1, i,
+			onHoverIn = function () {
+				if (!$(this).hasClass('ui-state-disabled')) {
+					$(this).addClass("ui-state-hover");
+				}
+			},
+			onHoverOut = function () {
+				$(this).removeClass("ui-state-hover");
+			};
+			if(o.cloneToTop && $t.p.toppager) {clone = 2;}
+			for(i = 0; i<clone; i++) {
+				var tbd,
+				navtbl = $("<table cellspacing='0' cellpadding='0' border='0' class='ui-pg-table navtable' style='float:left;table-layout:auto;'><tbody><tr></tr></tbody></table>"),
+				sep = "<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='ui-separator'></span></td>",
+				pgid, elemids;
+				if(i===0) {
+					pgid = elem;
+					elemids = $t.p.id;
+					if(pgid === $t.p.toppager) {
+						elemids += "_top";
+						clone = 1;
+					}
+				} else {
+					pgid = $t.p.toppager;
+					elemids = $t.p.id+"_top";
+				}
+				if($t.p.direction === "rtl") {$(navtbl).attr("dir","rtl").css("float","right");}
+				if (o.add) {
+					pAdd = pAdd || {};
+					tbd = $("<td class='ui-pg-button ui-corner-all'></td>");
+					$(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.addicon+"'></span>"+o.addtext+"</div>");
+					$("tr",navtbl).append(tbd);
+					$(tbd,navtbl)
+					.attr({"title":o.addtitle || "",id : pAdd.id || "add_"+elemids})
+					.click(function(){
+						if (!$(this).hasClass('ui-state-disabled')) {
+							if ($.isFunction( o.addfunc )) {
+								o.addfunc.call($t);
+							} else {
+								$($t).jqGrid("editGridRow","new",pAdd);
+							}
+						}
+						return false;
+					}).hover(onHoverIn, onHoverOut);
+					tbd = null;
+				}
+				if (o.edit) {
+					tbd = $("<td class='ui-pg-button ui-corner-all'></td>");
+					pEdit = pEdit || {};
+					$(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.editicon+"'></span>"+o.edittext+"</div>");
+					$("tr",navtbl).append(tbd);
+					$(tbd,navtbl)
+					.attr({"title":o.edittitle || "",id: pEdit.id || "edit_"+elemids})
+					.click(function(){
+						if (!$(this).hasClass('ui-state-disabled')) {
+							var sr = $t.p.selrow;
+							if (sr) {
+								if($.isFunction( o.editfunc ) ) {
+									o.editfunc.call($t, sr);
+								} else {
+									$($t).jqGrid("editGridRow",sr,pEdit);
+								}
+							} else {
+								$.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});
+								$("#jqg_alrt").focus();
+							}
+						}
+						return false;
+					}).hover(onHoverIn, onHoverOut);
+					tbd = null;
+				}
+				if (o.view) {
+					tbd = $("<td class='ui-pg-button ui-corner-all'></td>");
+					pView = pView || {};
+					$(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.viewicon+"'></span>"+o.viewtext+"</div>");
+					$("tr",navtbl).append(tbd);
+					$(tbd,navtbl)
+					.attr({"title":o.viewtitle || "",id: pView.id || "view_"+elemids})
+					.click(function(){
+						if (!$(this).hasClass('ui-state-disabled')) {
+							var sr = $t.p.selrow;
+							if (sr) {
+								if($.isFunction( o.viewfunc ) ) {
+									o.viewfunc.call($t, sr);
+								} else {
+									$($t).jqGrid("viewGridRow",sr,pView);
+								}
+							} else {
+								$.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});
+								$("#jqg_alrt").focus();
+							}
+						}
+						return false;
+					}).hover(onHoverIn, onHoverOut);
+					tbd = null;
+				}
+				if (o.del) {
+					tbd = $("<td class='ui-pg-button ui-corner-all'></td>");
+					pDel = pDel || {};
+					$(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.delicon+"'></span>"+o.deltext+"</div>");
+					$("tr",navtbl).append(tbd);
+					$(tbd,navtbl)
+					.attr({"title":o.deltitle || "",id: pDel.id || "del_"+elemids})
+					.click(function(){
+						if (!$(this).hasClass('ui-state-disabled')) {
+							var dr;
+							if($t.p.multiselect) {
+								dr = $t.p.selarrrow;
+								if(dr.length===0) {dr = null;}
+							} else {
+								dr = $t.p.selrow;
+							}
+							if(dr){
+								if($.isFunction( o.delfunc )){
+									o.delfunc.call($t, dr);
+								}else{
+									$($t).jqGrid("delGridRow",dr,pDel);
+								}
+							} else  {
+								$.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});$("#jqg_alrt").focus();
+							}
+						}
+						return false;
+					}).hover(onHoverIn, onHoverOut);
+					tbd = null;
+				}
+				if(o.add || o.edit || o.del || o.view) {$("tr",navtbl).append(sep);}
+				if (o.search) {
+					tbd = $("<td class='ui-pg-button ui-corner-all'></td>");
+					pSearch = pSearch || {};
+					$(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.searchicon+"'></span>"+o.searchtext+"</div>");
+					$("tr",navtbl).append(tbd);
+					$(tbd,navtbl)
+					.attr({"title":o.searchtitle  || "",id:pSearch.id || "search_"+elemids})
+					.click(function(){
+						if (!$(this).hasClass('ui-state-disabled')) {
+							if($.isFunction( o.searchfunc )) {
+								o.searchfunc.call($t, pSearch);
+							} else {
+								$($t).jqGrid("searchGrid",pSearch);
+							}
+						}
+						return false;
+					}).hover(onHoverIn, onHoverOut);
+					if (pSearch.showOnLoad && pSearch.showOnLoad === true) {
+						$(tbd,navtbl).click();
+					}
+					tbd = null;
+				}
+				if (o.refresh) {
+					tbd = $("<td class='ui-pg-button ui-corner-all'></td>");
+					$(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.refreshicon+"'></span>"+o.refreshtext+"</div>");
+					$("tr",navtbl).append(tbd);
+					$(tbd,navtbl)
+					.attr({"title":o.refreshtitle  || "",id: "refresh_"+elemids})
+					.click(function(){
+						if (!$(this).hasClass('ui-state-disabled')) {
+							if($.isFunction(o.beforeRefresh)) {o.beforeRefresh.call($t);}
+							$t.p.search = false;
+							$t.p.resetsearch =  true;
+							try {
+								if( o.refreshstate !== 'currentfilter') {
+									var gID = $t.p.id;
+									$t.p.postData.filters ="";
+									try {
+										$("#fbox_"+$.jgrid.jqID(gID)).jqFilter('resetFilter');
+									} catch(ef) {}
+									if($.isFunction($t.clearToolbar)) {$t.clearToolbar.call($t,false);}
+								}
+							} catch (e) {}
+							switch (o.refreshstate) {
+								case 'firstpage':
+									$($t).trigger("reloadGrid", [{page:1}]);
+									break;
+								case 'current':
+								case 'currentfilter':
+									$($t).trigger("reloadGrid", [{current:true}]);
+									break;
+							}
+							if($.isFunction(o.afterRefresh)) {o.afterRefresh.call($t);}
+						}
+						return false;
+					}).hover(onHoverIn, onHoverOut);
+					tbd = null;
+				}
+				tdw = $(".ui-jqgrid").css("font-size") || "11px";
+				$('body').append("<div id='testpg2' class='ui-jqgrid ui-widget ui-widget-content' style='font-size:"+tdw+";visibility:hidden;' ></div>");
+				twd = $(navtbl).clone().appendTo("#testpg2").width();
+				$("#testpg2").remove();
+				$(pgid+"_"+o.position,pgid).append(navtbl);
+				if($t.p._nvtd) {
+					if(twd > $t.p._nvtd[0] ) {
+						$(pgid+"_"+o.position,pgid).width(twd);
+						$t.p._nvtd[0] = twd;
+					}
+					$t.p._nvtd[1] = twd;
+				}
+				tdw =null;twd=null;navtbl =null;
+				this.nav = true;
+			}
+		});
+	},
+	navButtonAdd : function (elem, p) {
+		p = $.extend({
+			caption : "newButton",
+			title: '',
+			buttonicon : 'ui-icon-newwin',
+			onClickButton: null,
+			position : "last",
+			cursor : 'pointer'
+		}, p ||{});
+		return this.each(function() {
+			if( !this.grid)  {return;}
+			if( typeof elem === "string" && elem.indexOf("#") !== 0) {elem = "#"+$.jgrid.jqID(elem);}
+			var findnav = $(".navtable",elem)[0], $t = this;
+			if (findnav) {
+				if( p.id && $("#"+$.jgrid.jqID(p.id), findnav)[0] !== undefined )  {return;}
+				var tbd = $("<td></td>");
+				if(p.buttonicon.toString().toUpperCase() === "NONE") {
+                    $(tbd).addClass('ui-pg-button ui-corner-all').append("<div class='ui-pg-div'>"+p.caption+"</div>");
+				} else	{
+					$(tbd).addClass('ui-pg-button ui-corner-all').append("<div class='ui-pg-div'><span class='ui-icon "+p.buttonicon+"'></span>"+p.caption+"</div>");
+				}
+				if(p.id) {$(tbd).attr("id",p.id);}
+				if(p.position==='first'){
+					if(findnav.rows[0].cells.length ===0 ) {
+						$("tr",findnav).append(tbd);
+					} else {
+						$("tr td:eq(0)",findnav).before(tbd);
+					}
+				} else {
+					$("tr",findnav).append(tbd);
+				}
+				$(tbd,findnav)
+				.attr("title",p.title  || "")
+				.click(function(e){
+					if (!$(this).hasClass('ui-state-disabled')) {
+						if ($.isFunction(p.onClickButton) ) {p.onClickButton.call($t,e);}
+					}
+					return false;
+				})
+				.hover(
+					function () {
+						if (!$(this).hasClass('ui-state-disabled')) {
+							$(this).addClass('ui-state-hover');
+						}
+					},
+					function () {$(this).removeClass("ui-state-hover");}
+				);
+			}
+		});
+	},
+	navSeparatorAdd:function (elem,p) {
+		p = $.extend({
+			sepclass : "ui-separator",
+			sepcontent: '',
+			position : "last"
+		}, p ||{});
+		return this.each(function() {
+			if( !this.grid)  {return;}
+			if( typeof elem === "string" && elem.indexOf("#") !== 0) {elem = "#"+$.jgrid.jqID(elem);}
+			var findnav = $(".navtable",elem)[0];
+			if(findnav) {
+				var sep = "<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='"+p.sepclass+"'></span>"+p.sepcontent+"</td>";
+				if (p.position === 'first') {
+					if (findnav.rows[0].cells.length === 0) {
+						$("tr", findnav).append(sep);
+					} else {
+						$("tr td:eq(0)", findnav).before(sep);
+					}
+				} else {
+					$("tr", findnav).append(sep);
+				}
+			}
+		});
+	},
+	GridToForm : function( rowid, formid ) {
+		return this.each(function(){
+			var $t = this, i;
+			if (!$t.grid) {return;}
+			var rowdata = $($t).jqGrid("getRowData",rowid);
+			if (rowdata) {
+				for(i in rowdata) {
+					if(rowdata.hasOwnProperty(i)) {
+					if ( $("[name="+$.jgrid.jqID(i)+"]",formid).is("input:radio") || $("[name="+$.jgrid.jqID(i)+"]",formid).is("input:checkbox"))  {
+						$("[name="+$.jgrid.jqID(i)+"]",formid).each( function() {
+							if( $(this).val() == rowdata[i] ) {
+								$(this)[$t.p.useProp ? 'prop': 'attr']("checked",true);
+							} else {
+								$(this)[$t.p.useProp ? 'prop': 'attr']("checked", false);
+							}
+						});
+					} else {
+					// this is very slow on big table and form.
+						$("[name="+$.jgrid.jqID(i)+"]",formid).val(rowdata[i]);
+					}
+				}
+			}
+			}
+		});
+	},
+	FormToGrid : function(rowid, formid, mode, position){
+		return this.each(function() {
+			var $t = this;
+			if(!$t.grid) {return;}
+			if(!mode) {mode = 'set';}
+			if(!position) {position = 'first';}
+			var fields = $(formid).serializeArray();
+			var griddata = {};
+			$.each(fields, function(i, field){
+				griddata[field.name] = field.value;
+			});
+			if(mode==='add') {$($t).jqGrid("addRowData",rowid,griddata, position);}
+			else if(mode==='set') {$($t).jqGrid("setRowData",rowid,griddata);}
+		});
+	}
+});
+})(jQuery);

+ 533 - 0
app/Resources/public/assets/jqgrid/js/grid.grouping.js

@@ -0,0 +1,533 @@
+/*jshint eqeqeq:false, eqnull:true */
+/*global jQuery */
+// Grouping module
+(function($){
+"use strict";
+$.extend($.jgrid,{
+	template : function(format){ //jqgformat
+		var args = $.makeArray(arguments).slice(1), j, al = args.length;
+		if(format==null) { format = ""; }
+		return format.replace(/\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g, function(m,i){
+			if(!isNaN(parseInt(i,10))) {
+				return args[parseInt(i,10)];
+			}
+			for(j=0; j < al;j++) {
+				if($.isArray(args[j])) {
+					var nmarr = args[ j ],
+					k = nmarr.length;
+					while(k--) {
+						if(i===nmarr[k].nm) {
+							return nmarr[k].v;
+						}
+					}
+				}
+			}
+		});
+	}
+});
+$.jgrid.extend({
+	groupingSetup : function () {
+		return this.each(function (){
+			var $t = this, i, j, cml, cm = $t.p.colModel, grp = $t.p.groupingView;
+			if(grp !== null && ( (typeof grp === 'object') || $.isFunction(grp) ) ) {
+				if(!grp.groupField.length) {
+					$t.p.grouping = false;
+				} else {
+					if (grp.visibiltyOnNextGrouping === undefined) {
+						grp.visibiltyOnNextGrouping = [];
+					}
+
+					grp.lastvalues=[];
+					if(!grp._locgr) {
+						grp.groups =[];
+					}
+					grp.counters =[];
+					for(i=0;i<grp.groupField.length;i++) {
+						if(!grp.groupOrder[i]) {
+							grp.groupOrder[i] = 'asc';
+						}
+						if(!grp.groupText[i]) {
+							grp.groupText[i] = '{0}';
+						}
+						if( typeof grp.groupColumnShow[i] !== 'boolean') {
+							grp.groupColumnShow[i] = true;
+						}
+						if( typeof grp.groupSummary[i] !== 'boolean') {
+							grp.groupSummary[i] = false;
+						}
+						if( !grp.groupSummaryPos[i]) {
+							grp.groupSummaryPos[i] = 'footer';
+						}
+						if(grp.groupColumnShow[i] === true) {
+							grp.visibiltyOnNextGrouping[i] = true;
+							$($t).jqGrid('showCol',grp.groupField[i]);
+						} else {
+							grp.visibiltyOnNextGrouping[i] = $("#"+$.jgrid.jqID($t.p.id+"_"+grp.groupField[i])).is(":visible");
+							$($t).jqGrid('hideCol',grp.groupField[i]);
+						}
+					}
+					grp.summary =[];
+					if(grp.hideFirstGroupCol) {
+						grp.formatDisplayField[0] = function (v) { return v;};
+					}
+					for(j=0, cml = cm.length; j < cml; j++) {
+						if(grp.hideFirstGroupCol) {
+							if(!cm[j].hidden && grp.groupField[0] === cm[j].name) {
+								cm[j].formatter = function(){return '';};
+							}
+						}
+						if(cm[j].summaryType ) {
+							if(cm[j].summaryDivider) {
+								grp.summary.push({nm:cm[j].name,st:cm[j].summaryType, v: '', sd:cm[j].summaryDivider, vd:'', sr: cm[j].summaryRound, srt: cm[j].summaryRoundType || 'round'});
+							} else {
+								grp.summary.push({nm:cm[j].name,st:cm[j].summaryType, v: '', sr: cm[j].summaryRound, srt: cm[j].summaryRoundType || 'round'});
+							}
+						}
+					}
+				}
+			} else {
+				$t.p.grouping = false;
+			}
+		});
+	},
+	groupingPrepare : function ( record, irow ) {
+		this.each(function(){
+			var grp = this.p.groupingView, $t= this, i,
+			grlen = grp.groupField.length, 
+			fieldName,
+			v,
+			displayName,
+			displayValue,
+			changed = 0;
+			for(i=0;i<grlen;i++) {
+				fieldName = grp.groupField[i];
+				displayName = grp.displayField[i];
+				v = record[fieldName];
+				displayValue = displayName == null ? null : record[displayName];
+
+				if( displayValue == null ) {
+					displayValue = v;
+				}
+				if( v !== undefined ) {
+					if(irow === 0 ) {
+						// First record always starts a new group
+						grp.groups.push({idx:i,dataIndex:fieldName,value:v, displayValue: displayValue, startRow: irow, cnt:1, summary : [] } );
+						grp.lastvalues[i] = v;
+						grp.counters[i] = {cnt:1, pos:grp.groups.length-1, summary: $.extend(true,[],grp.summary)};
+						$.each(grp.counters[i].summary,function() {
+							if ($.isFunction(this.st)) {
+								this.v = this.st.call($t, this.v, this.nm, record);
+							} else {
+								this.v = $($t).jqGrid('groupingCalculations.handler',this.st, this.v, this.nm, this.sr, this.srt, record);
+								if(this.st.toLowerCase() === 'avg' && this.sd) {
+									this.vd = $($t).jqGrid('groupingCalculations.handler',this.st, this.vd, this.sd, this.sr, this.srt, record);
+								}
+							}
+						});
+						grp.groups[grp.counters[i].pos].summary = grp.counters[i].summary;
+					} else {
+						if (typeof v !== "object" && ($.isArray(grp.isInTheSameGroup) && $.isFunction(grp.isInTheSameGroup[i]) ? ! grp.isInTheSameGroup[i].call($t, grp.lastvalues[i], v, i, grp): grp.lastvalues[i] !== v)) {
+							// This record is not in same group as previous one
+							grp.groups.push({idx:i,dataIndex:fieldName,value:v, displayValue: displayValue, startRow: irow, cnt:1, summary : [] } );
+							grp.lastvalues[i] = v;
+							changed = 1;
+							grp.counters[i] = {cnt:1, pos:grp.groups.length-1, summary: $.extend(true,[],grp.summary)};
+							$.each(grp.counters[i].summary,function() {
+								if ($.isFunction(this.st)) {
+									this.v = this.st.call($t, this.v, this.nm, record);
+								} else {
+									this.v = $($t).jqGrid('groupingCalculations.handler',this.st, this.v, this.nm, this.sr, this.srt, record);
+									if(this.st.toLowerCase() === 'avg' && this.sd) {
+										this.vd = $($t).jqGrid('groupingCalculations.handler',this.st, this.vd, this.sd, this.sr, this.srt, record);
+									}
+								}
+							});
+							grp.groups[grp.counters[i].pos].summary = grp.counters[i].summary;
+						} else {
+							if (changed === 1) {
+								// This group has changed because an earlier group changed.
+								grp.groups.push({idx:i,dataIndex:fieldName,value:v, displayValue: displayValue, startRow: irow, cnt:1, summary : [] } );
+								grp.lastvalues[i] = v;
+								grp.counters[i] = {cnt:1, pos:grp.groups.length-1, summary: $.extend(true,[],grp.summary)};
+								$.each(grp.counters[i].summary,function() {
+									if ($.isFunction(this.st)) {
+										this.v = this.st.call($t, this.v, this.nm, record);
+									} else {
+										this.v = $($t).jqGrid('groupingCalculations.handler',this.st, this.v, this.nm, this.sr, this.srt, record);
+										if(this.st.toLowerCase() === 'avg' && this.sd) {
+											this.vd = $($t).jqGrid('groupingCalculations.handler',this.st, this.vd, this.sd, this.sr, this.srt, record);
+										}
+									}
+								});
+								grp.groups[grp.counters[i].pos].summary = grp.counters[i].summary;
+							} else {
+								grp.counters[i].cnt += 1;
+								grp.groups[grp.counters[i].pos].cnt = grp.counters[i].cnt;
+								$.each(grp.counters[i].summary,function() {
+									if ($.isFunction(this.st)) {
+										this.v = this.st.call($t, this.v, this.nm, record);
+									} else {
+										this.v = $($t).jqGrid('groupingCalculations.handler',this.st, this.v, this.nm, this.sr, this.srt, record);
+										if(this.st.toLowerCase() === 'avg' && this.sd) {
+											this.vd = $($t).jqGrid('groupingCalculations.handler',this.st, this.vd, this.sd, this.sr, this.srt, record);
+										}
+									}
+								});
+								grp.groups[grp.counters[i].pos].summary = grp.counters[i].summary;
+							}
+						}
+					}
+				}
+			}
+			//gdata.push( rData );
+		});
+		return this;
+	},
+	groupingToggle : function(hid){
+		this.each(function(){
+			var $t = this,
+			grp = $t.p.groupingView,
+			strpos = hid.split('_'),
+			num = parseInt(strpos[strpos.length-2], 10);
+			strpos.splice(strpos.length-2,2);
+			var uid = strpos.join("_"),
+			minus = grp.minusicon,
+			plus = grp.plusicon,
+			tar = $("#"+$.jgrid.jqID(hid)),
+			r = tar.length ? tar[0].nextSibling : null,
+			tarspan = $("#"+$.jgrid.jqID(hid)+" span."+"tree-wrap-"+$t.p.direction),
+			getGroupingLevelFromClass = function (className) {
+				var nums = $.map(className.split(" "), function (item) {
+					if (item.substring(0, uid.length + 1) === uid + "_") {
+						return parseInt(item.substring(uid.length + 1), 10);
+					}
+				});
+				return nums.length > 0 ? nums[0] : undefined;
+			},
+			itemGroupingLevel,
+			showData,
+			collapsed = false,
+			frz = $t.p.frozenColumns ? $t.p.id+"_frozen" : false,
+			tar2 = frz ? $("#"+$.jgrid.jqID(hid), "#"+$.jgrid.jqID(frz) ) : false,
+			r2 = (tar2 && tar2.length) ? tar2[0].nextSibling : null;
+			if( tarspan.hasClass(minus) ) {
+				if(grp.showSummaryOnHide) {
+					if(r){
+						while(r) {
+							itemGroupingLevel = getGroupingLevelFromClass(r.className);
+							if (itemGroupingLevel !== undefined && itemGroupingLevel <= num) {
+								break;
+							}
+							$(r).hide();
+							r = r.nextSibling;
+							if(frz) {
+								$(r2).hide();
+								r2 = r2.nextSibling;
+							}
+						}
+					}
+				} else  {
+					if(r){
+						while(r) {
+							itemGroupingLevel = getGroupingLevelFromClass(r.className);
+							if (itemGroupingLevel !== undefined && itemGroupingLevel <= num) {
+								break;
+							}
+							$(r).hide();
+							r = r.nextSibling;
+							if(frz) {
+								$(r2).hide();
+								r2 = r2.nextSibling;
+							}
+						}
+					}
+				}
+				tarspan.removeClass(minus).addClass(plus);
+				collapsed = true;
+			} else {
+				if(r){
+					showData = undefined;
+					while(r) {
+						itemGroupingLevel = getGroupingLevelFromClass(r.className);
+						if (showData === undefined) {
+							showData = itemGroupingLevel === undefined; // if the first row after the opening group is data row then show the data rows
+						}
+						if (itemGroupingLevel !== undefined) {
+							if (itemGroupingLevel <= num) {
+								break;// next item of the same lever are found
+							}
+							if (itemGroupingLevel === num + 1) {
+								$(r).show().find(">td>span."+"tree-wrap-"+$t.p.direction).removeClass(minus).addClass(plus);
+								if(frz) {
+									$(r2).show().find(">td>span."+"tree-wrap-"+$t.p.direction).removeClass(minus).addClass(plus);
+								}
+							}
+						} else if (showData) {
+							$(r).show();
+							if(frz) {
+								$(r2).show();
+							}
+						}
+						r = r.nextSibling;
+						if(frz) {
+							r2 = r2.nextSibling;
+						}
+					}
+				}
+				tarspan.removeClass(plus).addClass(minus);
+			}
+			$($t).triggerHandler("jqGridGroupingClickGroup", [hid , collapsed]);
+			if( $.isFunction($t.p.onClickGroup)) { $t.p.onClickGroup.call($t, hid , collapsed); }
+
+		});
+		return false;
+	},
+	groupingRender : function (grdata, colspans, page, rn ) {
+		return this.each(function(){
+			var $t = this,
+			grp = $t.p.groupingView,
+			str = "", icon = "", hid, clid, pmrtl = grp.groupCollapse ? grp.plusicon : grp.minusicon, gv, cp=[], len =grp.groupField.length;
+			pmrtl += " tree-wrap-"+$t.p.direction; 
+			$.each($t.p.colModel, function (i,n){
+				var ii;
+				for(ii=0;ii<len;ii++) {
+					if(grp.groupField[ii] === n.name ) {
+						cp[ii] = i;
+						break;
+					}
+				}
+			});
+			var toEnd = 0;
+			function findGroupIdx( ind , offset, grp) {
+				var ret = false, i;
+				if(offset===0) {
+					ret = grp[ind];
+				} else {
+					var id = grp[ind].idx;
+					if(id===0) { 
+						ret = grp[ind]; 
+					}  else {
+						for(i=ind;i >= 0; i--) {
+							if(grp[i].idx === id-offset) {
+								ret = grp[i];
+								break;
+							}
+						}
+					}
+				}
+				return ret;
+			}
+			function buildSummaryTd(i, ik, grp, foffset) {
+				var fdata = findGroupIdx(i, ik, grp),
+				cm = $t.p.colModel,
+				vv, grlen = fdata.cnt, str="", k;
+				for(k=foffset; k<colspans;k++) {
+					var tmpdata = "<td "+$t.formatCol(k,1,'')+">&#160;</td>",
+					tplfld = "{0}";
+					$.each(fdata.summary,function(){
+						if(this.nm === cm[k].name) {
+							if(cm[k].summaryTpl)  {
+								tplfld = cm[k].summaryTpl;
+							}
+							if(typeof this.st === 'string' && this.st.toLowerCase() === 'avg') {
+								if(this.sd && this.vd) { 
+									this.v = (this.v/this.vd);
+								} else if(this.v && grlen > 0) {
+									this.v = (this.v/grlen);
+								}
+							}
+							try {
+								this.groupCount = fdata.cnt;
+								this.groupIndex = fdata.dataIndex;
+								this.groupValue = fdata.value;
+								vv = $t.formatter('', this.v, k, this);
+							} catch (ef) {
+								vv = this.v;
+							}
+							tmpdata= "<td "+$t.formatCol(k,1,'')+">"+$.jgrid.format(tplfld,vv)+ "</td>";
+							return false;
+						}
+					});
+					str += tmpdata;
+				}
+				return str;
+			}
+			var sumreverse = $.makeArray(grp.groupSummary), mul;
+			sumreverse.reverse();
+			mul = $t.p.multiselect ? " colspan=\"2\"" : "";
+			$.each(grp.groups,function(i,n){
+				if(grp._locgr) {
+					if( !(n.startRow +n.cnt > (page-1)*rn && n.startRow < page*rn)) {
+						return true;
+					}
+				}
+				toEnd++;
+				clid = $t.p.id+"ghead_"+n.idx;
+				hid = clid+"_"+i;
+				icon = "<span style='cursor:pointer;' class='ui-icon "+pmrtl+"' onclick=\"jQuery('#"+$.jgrid.jqID($t.p.id)+"').jqGrid('groupingToggle','"+hid+"');return false;\"></span>";
+				try {
+					if ($.isArray(grp.formatDisplayField) && $.isFunction(grp.formatDisplayField[n.idx])) {
+						n.displayValue = grp.formatDisplayField[n.idx].call($t, n.displayValue, n.value, $t.p.colModel[cp[n.idx]], n.idx, grp);
+						gv = n.displayValue;
+					} else {
+						gv = $t.formatter(hid, n.displayValue, cp[n.idx], n.value );
+					}
+				} catch (egv) {
+					gv = n.displayValue;
+				}
+				if(grp.groupSummaryPos[n.idx] === 'header')  {
+					str += "<tr id=\""+hid+"\"" +(grp.groupCollapse && n.idx>0 ? " style=\"display:none;\" " : " ") + "role=\"row\" class= \"ui-widget-content jqgroup ui-row-"+$t.p.direction+" "+clid+"\"><td style=\"padding-left:"+(n.idx * 12) + "px;"+"\"" + mul +">"+icon+$.jgrid.template(grp.groupText[n.idx], gv, n.cnt, n.summary)+"</td>";
+					str += buildSummaryTd(i, 0, grp.groups, grp.groupColumnShow[n.idx] === false ? (mul ==="" ? 2 : 3) : ((mul ==="") ? 1 : 2) );
+					str += "</tr>";
+				} else {
+					str += "<tr id=\""+hid+"\"" +(grp.groupCollapse && n.idx>0 ? " style=\"display:none;\" " : " ") + "role=\"row\" class= \"ui-widget-content jqgroup ui-row-"+$t.p.direction+" "+clid+"\"><td style=\"padding-left:"+(n.idx * 12) + "px;"+"\" colspan=\""+(grp.groupColumnShow[n.idx] === false ? colspans-1 : colspans)+"\">"+icon+$.jgrid.template(grp.groupText[n.idx], gv, n.cnt, n.summary)+"</td></tr>";
+				}
+				var leaf = len-1 === n.idx; 
+				if( leaf ) {
+					var gg = grp.groups[i+1], kk, ik, offset = 0, sgr = n.startRow,
+					end = gg !== undefined ?  gg.startRow : grp.groups[i].startRow + grp.groups[i].cnt;
+					if(grp._locgr) {
+						offset = (page-1)*rn;
+						if(offset > n.startRow) {
+							sgr = offset;
+						}
+					}
+					for(kk=sgr;kk<end;kk++) {
+						if(!grdata[kk - offset]) { break; }
+						str += grdata[kk - offset].join('');
+					}
+					if(grp.groupSummaryPos[n.idx] !== 'header') {
+						var jj;
+						if (gg !== undefined) {
+							for (jj = 0; jj < grp.groupField.length; jj++) {
+								if (gg.dataIndex === grp.groupField[jj]) {
+									break;
+								}
+							}
+							toEnd = grp.groupField.length - jj;
+						}
+						for (ik = 0; ik < toEnd; ik++) {
+							if(!sumreverse[ik]) { continue; }
+							var hhdr = "";
+							if(grp.groupCollapse && !grp.showSummaryOnHide) {
+								hhdr = " style=\"display:none;\"";
+							}
+							str += "<tr"+hhdr+" jqfootlevel=\""+(n.idx-ik)+"\" role=\"row\" class=\"ui-widget-content jqfoot ui-row-"+$t.p.direction+"\">";
+							str += buildSummaryTd(i, ik, grp.groups, 0);
+							str += "</tr>";
+						}
+						toEnd = jj;
+					}
+				}
+			});
+			$("#"+$.jgrid.jqID($t.p.id)+" tbody:first").append(str);
+			// free up memory
+			str = null;
+		});
+	},
+	groupingGroupBy : function (name, options ) {
+		return this.each(function(){
+			var $t = this;
+			if(typeof name === "string") {
+				name = [name];
+			}
+			var grp = $t.p.groupingView;
+			$t.p.grouping = true;
+			grp._locgr = false;
+			//Set default, in case visibilityOnNextGrouping is undefined 
+			if (grp.visibiltyOnNextGrouping === undefined) {
+				grp.visibiltyOnNextGrouping = [];
+			}
+			var i;
+			// show previous hidden groups if they are hidden and weren't removed yet
+			for(i=0;i<grp.groupField.length;i++) {
+				if(!grp.groupColumnShow[i] && grp.visibiltyOnNextGrouping[i]) {
+				$($t).jqGrid('showCol',grp.groupField[i]);
+				}
+			}
+			// set visibility status of current group columns on next grouping
+			for(i=0;i<name.length;i++) {
+				grp.visibiltyOnNextGrouping[i] = $("#"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID(name[i])).is(":visible");
+			}
+			$t.p.groupingView = $.extend($t.p.groupingView, options || {});
+			grp.groupField = name;
+			$($t).trigger("reloadGrid");
+		});
+	},
+	groupingRemove : function (current) {
+		return this.each(function(){
+			var $t = this;
+			if(current === undefined) {
+				current = true;
+			}
+			$t.p.grouping = false;
+			if(current===true) {
+				var grp = $t.p.groupingView, i;
+				// show previous hidden groups if they are hidden and weren't removed yet
+				for(i=0;i<grp.groupField.length;i++) {
+				if (!grp.groupColumnShow[i] && grp.visibiltyOnNextGrouping[i]) {
+						$($t).jqGrid('showCol', grp.groupField);
+					}
+				}
+				$("tr.jqgroup, tr.jqfoot","#"+$.jgrid.jqID($t.p.id)+" tbody:first").remove();
+				$("tr.jqgrow:hidden","#"+$.jgrid.jqID($t.p.id)+" tbody:first").show();
+			} else {
+				$($t).trigger("reloadGrid");
+			}
+		});
+	},
+	groupingCalculations : {
+		handler: function(fn, v, field, round, roundType, rc) {
+			var funcs = {
+				sum: function() {
+					return parseFloat(v||0) + parseFloat((rc[field]||0));
+				},
+
+				min: function() {
+					if(v==="") {
+						return parseFloat(rc[field]||0);
+					}
+					return Math.min(parseFloat(v),parseFloat(rc[field]||0));
+				},
+
+				max: function() {
+					if(v==="") {
+						return parseFloat(rc[field]||0);
+					}
+					return Math.max(parseFloat(v),parseFloat(rc[field]||0));
+				},
+
+				count: function() {
+					if(v==="") {v=0;}
+					if(rc.hasOwnProperty(field)) {
+						return v+1;
+					}
+					return 0;
+				},
+
+				avg: function() {
+					// the same as sum, but at end we divide it
+					// so use sum instead of duplicating the code (?)
+					return funcs.sum();
+				}
+			};
+
+			if(!funcs[fn]) {
+				throw ("jqGrid Grouping No such method: " + fn);
+			}
+			var res = funcs[fn]();
+
+			if (round != null) {
+				if (roundType === 'fixed') {
+					res = res.toFixed(round);
+				} else {
+					var mul = Math.pow(10, round);
+					res = Math.round(res * mul) / mul;
+				}
+			}
+
+			return res;
+		}	
+	}
+});
+})(jQuery);

+ 215 - 0
app/Resources/public/assets/jqgrid/js/grid.import.js

@@ -0,0 +1,215 @@
+/*jshint eqeqeq:false, eqnull:true, devel:true */
+/*global jQuery, xmlJsonClass */
+(function($){
+/*
+ * jqGrid extension for constructing Grid Data from external file
+ * 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-2.0.html
+**/ 
+
+"use strict";
+    $.jgrid.extend({
+        jqGridImport : function(o) {
+            o = $.extend({
+                imptype : "xml", // xml, json, xmlstring, jsonstring
+                impstring: "",
+                impurl: "",
+                mtype: "GET",
+                impData : {},
+                xmlGrid :{
+                    config : "roots>grid",
+                    data: "roots>rows"
+                },
+                jsonGrid :{
+                    config : "grid",
+                    data: "data"
+                },
+                ajaxOptions :{}
+            }, o || {});
+            return this.each(function(){
+                var $t = this;
+                var xmlConvert = function (xml,o) {
+                    var cnfg = $(o.xmlGrid.config,xml)[0];
+                    var xmldata = $(o.xmlGrid.data,xml)[0], jstr, jstr1, key;
+                    if(xmlJsonClass.xml2json && $.jgrid.parse) {
+                        jstr = xmlJsonClass.xml2json(cnfg," ");
+                        jstr = $.jgrid.parse(jstr);
+                        for(key in jstr) {
+                            if(jstr.hasOwnProperty(key)) {
+                                jstr1=jstr[key];
+                            }
+                        }
+                        if(xmldata) {
+                        // save the datatype
+                            var svdatatype = jstr.grid.datatype;
+                            jstr.grid.datatype = 'xmlstring';
+                            jstr.grid.datastr = xml;
+                            $($t).jqGrid( jstr1 ).jqGrid("setGridParam",{datatype:svdatatype});
+                        } else {
+                            $($t).jqGrid( jstr1 );
+                        }
+                        jstr = null;jstr1=null;
+                    } else {
+                        alert("xml2json or parse are not present");
+                    }
+                };
+                var jsonConvert = function (jsonstr,o){
+                    if (jsonstr && typeof jsonstr === 'string') {
+						var _jsonparse = false;
+						if($.jgrid.useJSON) {
+							$.jgrid.useJSON = false;
+							_jsonparse = true;
+						}
+                        var json = $.jgrid.parse(jsonstr);
+						if(_jsonparse) { $.jgrid.useJSON = true; }
+                        var gprm = json[o.jsonGrid.config];
+                        var jdata = json[o.jsonGrid.data];
+                        if(jdata) {
+                            var svdatatype = gprm.datatype;
+                            gprm.datatype = 'jsonstring';
+                            gprm.datastr = jdata;
+                            $($t).jqGrid( gprm ).jqGrid("setGridParam",{datatype:svdatatype});
+                        } else {
+                            $($t).jqGrid( gprm );
+                        }
+                    }
+                };
+                switch (o.imptype){
+                    case 'xml':
+                        $.ajax($.extend({
+                            url:o.impurl,
+                            type:o.mtype,
+                            data: o.impData,
+                            dataType:"xml",
+                            complete: function(xml,stat) {
+                                if(stat === 'success') {
+                                    xmlConvert(xml.responseXML,o);
+                                    $($t).triggerHandler("jqGridImportComplete", [xml, o]);
+                                    if($.isFunction(o.importComplete)) {
+                                        o.importComplete(xml);
+                                    }
+                                }
+                                xml=null;
+                            }
+                        }, o.ajaxOptions));
+                        break;
+                    case 'xmlstring' :
+                        // we need to make just the conversion and use the same code as xml
+                        if(o.impstring && typeof o.impstring === 'string') {
+                            var xmld = $.parseXML(o.impstring);
+                            if(xmld) {
+                                xmlConvert(xmld,o);
+                                $($t).triggerHandler("jqGridImportComplete", [xmld, o]);
+                                if($.isFunction(o.importComplete)) {
+                                    o.importComplete(xmld);
+                                }
+                                o.impstring = null;
+                            }
+                            xmld = null;
+                        }
+                        break;
+                    case 'json':
+                        $.ajax($.extend({
+                            url:o.impurl,
+                            type:o.mtype,
+                            data: o.impData,
+                            dataType:"json",
+                            complete: function(json) {
+                                try {
+                                    jsonConvert(json.responseText,o );
+                                    $($t).triggerHandler("jqGridImportComplete", [json, o]);
+                                    if($.isFunction(o.importComplete)) {
+                                        o.importComplete(json);
+                                    }
+                                } catch (ee){}
+                                json=null;
+                            }
+                        }, o.ajaxOptions ));
+                        break;
+                    case 'jsonstring' :
+                        if(o.impstring && typeof o.impstring === 'string') {
+                            jsonConvert(o.impstring,o );
+                            $($t).triggerHandler("jqGridImportComplete", [o.impstring, o]);
+                            if($.isFunction(o.importComplete)) {
+                                o.importComplete(o.impstring);
+                            }
+                            o.impstring = null;
+                        }
+                        break;
+                }
+            });
+        },
+        jqGridExport : function(o) {
+            o = $.extend({
+                exptype : "xmlstring",
+                root: "grid",
+                ident: "\t"
+            }, o || {});
+            var ret = null;
+            this.each(function () {
+                if(!this.grid) { return;}
+                var key, gprm = $.extend(true, {},$(this).jqGrid("getGridParam"));
+                // we need to check for:
+                // 1.multiselect, 2.subgrid  3. treegrid and remove the unneded columns from colNames
+                if(gprm.rownumbers) {
+                    gprm.colNames.splice(0,1);
+                    gprm.colModel.splice(0,1);
+                }
+                if(gprm.multiselect) {
+                    gprm.colNames.splice(0,1);
+                    gprm.colModel.splice(0,1);
+                }
+                if(gprm.subGrid) {
+                    gprm.colNames.splice(0,1);
+                    gprm.colModel.splice(0,1);
+                }
+                gprm.knv = null;
+                if(gprm.treeGrid) {
+                    for (key in gprm.treeReader) {
+                        if(gprm.treeReader.hasOwnProperty(key)) {
+                            gprm.colNames.splice(gprm.colNames.length-1);
+                            gprm.colModel.splice(gprm.colModel.length-1);
+                        }
+                    }
+                }
+                switch (o.exptype) {
+                    case 'xmlstring' :
+                        ret = "<"+o.root+">"+xmlJsonClass.json2xml(gprm,o.ident)+"</"+o.root+">";
+                        break;
+                    case 'jsonstring' :
+                        ret = "{"+ xmlJsonClass.toJson(gprm,o.root,o.ident,false)+"}";
+                        if(gprm.postData.filters !== undefined) {
+                            ret=ret.replace(/filters":"/,'filters":');
+                            ret=ret.replace(/}]}"/,'}]}');
+                        }
+                        break;
+                }
+            });
+            return ret;
+        },
+        excelExport : function(o) {
+            o = $.extend({
+                exptype : "remote",
+                url : null,
+                oper: "oper",
+                tag: "excel",
+                exportOptions : {}
+            }, o || {});
+            return this.each(function(){
+                if(!this.grid) { return;}
+                var url;
+                if(o.exptype === "remote") {
+                    var pdata = $.extend({},this.p.postData);
+                    pdata[o.oper] = o.tag;
+                    var params = jQuery.param(pdata);
+                    if(o.url.indexOf("?") !== -1) { url = o.url+"&"+params; }
+                    else { url = o.url+"?"+params; }
+                    window.location = url;
+                }
+            });
+        }
+    });
+})(jQuery);

+ 652 - 0
app/Resources/public/assets/jqgrid/js/grid.inlinedit.js

@@ -0,0 +1,652 @@
+/*jshint eqeqeq:false, eqnull:true, devel:true */
+/*global jQuery */
+(function($){
+/**
+ * jqGrid extension for manipulating Grid Data
+ * 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-2.0.html
+**/ 
+"use strict";
+$.jgrid.inlineEdit = $.jgrid.inlineEdit || {};
+$.jgrid.extend({
+//Editing
+	editRow : function(rowid,keys,oneditfunc,successfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc) {
+		// Compatible mode old versions
+		var o={}, args = $.makeArray(arguments).slice(1);
+
+		if( $.type(args[0]) === "object" ) {
+			o = args[0];
+		} else {
+			if (keys !== undefined) { o.keys = keys; }
+			if ($.isFunction(oneditfunc)) { o.oneditfunc = oneditfunc; }
+			if ($.isFunction(successfunc)) { o.successfunc = successfunc; }
+			if (url !== undefined) { o.url = url; }
+			if (extraparam !== undefined) { o.extraparam = extraparam; }
+			if ($.isFunction(aftersavefunc)) { o.aftersavefunc = aftersavefunc; }
+			if ($.isFunction(errorfunc)) { o.errorfunc = errorfunc; }
+			if ($.isFunction(afterrestorefunc)) { o.afterrestorefunc = afterrestorefunc; }
+			// last two not as param, but as object (sorry)
+			//if (restoreAfterError !== undefined) { o.restoreAfterError = restoreAfterError; }
+			//if (mtype !== undefined) { o.mtype = mtype || "POST"; }			
+		}
+		o = $.extend(true, {
+			keys : false,
+			oneditfunc: null,
+			successfunc: null,
+			url: null,
+			extraparam: {},
+			aftersavefunc: null,
+			errorfunc: null,
+			afterrestorefunc: null,
+			restoreAfterError: true,
+			mtype: "POST",
+			focusField : true
+		}, $.jgrid.inlineEdit, o );
+
+		// End compatible
+		return this.each(function(){
+			var $t = this, nm, tmp, editable, cnt=0, focus=null, svr={}, ind,cm, bfer;
+			if (!$t.grid ) { return; }
+			ind = $($t).jqGrid("getInd",rowid,true);
+			if( ind === false ) {return;}
+			bfer = $.isFunction( o.beforeEditRow ) ? o.beforeEditRow.call($t,o, rowid) :  undefined;
+			if( bfer === undefined ) {
+				bfer = true;
+			}
+			if(!bfer) { return; }
+			editable = $(ind).attr("editable") || "0";
+			if (editable === "0" && !$(ind).hasClass("not-editable-row")) {
+				cm = $t.p.colModel;
+				$('td[role="gridcell"]',ind).each( function(i) {
+					nm = cm[i].name;
+					var treeg = $t.p.treeGrid===true && nm === $t.p.ExpandColumn;
+					if(treeg) { tmp = $("span:first",this).html();}
+					else {
+						try {
+							tmp = $.unformat.call($t,this,{rowId:rowid, colModel:cm[i]},i);
+						} catch (_) {
+							tmp =  ( cm[i].edittype && cm[i].edittype === 'textarea' ) ? $(this).text() : $(this).html();
+						}
+					}
+					if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn') {
+						if($t.p.autoencode) { tmp = $.jgrid.htmlDecode(tmp); }
+						svr[nm]=tmp;
+						if(cm[i].editable===true) {
+							if(focus===null) { focus = i; }
+							if (treeg) { $("span:first",this).html(""); }
+							else { $(this).html(""); }
+							var opt = $.extend({},cm[i].editoptions || {},{id:rowid+"_"+nm,name:nm,rowId:rowid});
+							if(!cm[i].edittype) { cm[i].edittype = "text"; }
+							if(tmp === "&nbsp;" || tmp === "&#160;" || (tmp.length===1 && tmp.charCodeAt(0)===160) ) {tmp='';}
+							var elc = $.jgrid.createEl.call($t,cm[i].edittype,opt,tmp,true,$.extend({},$.jgrid.ajaxOptions,$t.p.ajaxSelectOptions || {}));
+							$(elc).addClass("editable");
+							if(treeg) { $("span:first",this).append(elc); }
+							else { $(this).append(elc); }
+							$.jgrid.bindEv.call($t, elc, opt);
+							//Again IE
+							if(cm[i].edittype === "select" && cm[i].editoptions!==undefined && cm[i].editoptions.multiple===true  && cm[i].editoptions.dataUrl===undefined && $.jgrid.msie) {
+								$(elc).width($(elc).width());
+							}
+							cnt++;
+						}
+					}
+				});
+				if(cnt > 0) {
+					svr.id = rowid; $t.p.savedRow.push(svr);
+					$(ind).attr("editable","1");
+					if(o.focusField ) {
+						if(typeof o.focusField === 'number' && parseInt(o.focusField,10) <= cm.length) {
+							focus = o.focusField;
+						}
+						setTimeout(function(){ 
+							var fe = $("td:eq("+focus+") :input:visible",ind).not(":disabled"); 
+							if(fe.length > 0) {
+								fe.focus();
+							}
+						},0);
+					}
+					if(o.keys===true) {
+						$(ind).bind("keydown",function(e) {
+							if (e.keyCode === 27) {
+								$($t).jqGrid("restoreRow",rowid, o.afterrestorefunc);
+								if($t.p._inlinenav) {
+									try {
+										$($t).jqGrid('showAddEditButtons');
+									} catch (eer1) {}
+								}
+								return false;
+							}
+							if (e.keyCode === 13) {
+								var ta = e.target;
+								if(ta.tagName === 'TEXTAREA') { return true; }
+								if( $($t).jqGrid("saveRow", rowid, o ) ) {
+									if($t.p._inlinenav) {
+										try {
+											$($t).jqGrid('showAddEditButtons');
+										} catch (eer2) {}
+									}
+								}
+								return false;
+							}
+						});
+					}
+					$($t).triggerHandler("jqGridInlineEditRow", [rowid, o]);
+					if( $.isFunction(o.oneditfunc)) { o.oneditfunc.call($t, rowid); }
+				}
+			}
+		});
+	},
+	saveRow : function(rowid, successfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc) {
+		// Compatible mode old versions
+		var args = $.makeArray(arguments).slice(1), o = {};
+
+		if( $.type(args[0]) === "object" ) {
+			o = args[0];
+		} else {
+			if ($.isFunction(successfunc)) { o.successfunc = successfunc; }
+			if (url !== undefined) { o.url = url; }
+			if (extraparam !== undefined) { o.extraparam = extraparam; }
+			if ($.isFunction(aftersavefunc)) { o.aftersavefunc = aftersavefunc; }
+			if ($.isFunction(errorfunc)) { o.errorfunc = errorfunc; }
+			if ($.isFunction(afterrestorefunc)) { o.afterrestorefunc = afterrestorefunc; }
+		}
+		o = $.extend(true, {
+			successfunc: null,
+			url: null,
+			extraparam: {},
+			aftersavefunc: null,
+			errorfunc: null,
+			afterrestorefunc: null,
+			restoreAfterError: true,
+			mtype: "POST",
+			saveui : "enable",
+			savetext : $.jgrid.defaults.savetext || "Saving..."
+		}, $.jgrid.inlineEdit, o );
+		// End compatible
+
+		var success = false;
+		var $t = this[0], nm, tmp={}, tmp2={}, tmp3= {}, editable, fr, cv, ind;
+		if (!$t.grid ) { return success; }
+		ind = $($t).jqGrid("getInd",rowid,true);
+		if(ind === false) {return success;}
+		var bfsr = $.isFunction( o.beforeSaveRow ) ?	o.beforeSaveRow.call($t,o, rowid) :  undefined;
+		if( bfsr === undefined ) {
+			bfsr = true;
+		}
+		if(!bfsr) { return; }
+		editable = $(ind).attr("editable");
+		o.url = o.url || $t.p.editurl;
+		if (editable==="1") {
+			var cm;
+			$('td[role="gridcell"]',ind).each(function(i) {
+				cm = $t.p.colModel[i];
+				nm = cm.name;
+				if ( nm !== 'cb' && nm !== 'subgrid' && cm.editable===true && nm !== 'rn' && !$(this).hasClass('not-editable-cell')) {
+					switch (cm.edittype) {
+						case "checkbox":
+							var cbv = ["Yes","No"];
+							if(cm.editoptions ) {
+								cbv = cm.editoptions.value.split(":");
+							}
+							tmp[nm]=  $("input",this).is(":checked") ? cbv[0] : cbv[1]; 
+							break;
+						case 'text':
+						case 'password':
+						case 'textarea':
+						case "button" :
+							tmp[nm]=$("input, textarea",this).val();
+							break;
+						case 'select':
+							if(!cm.editoptions.multiple) {
+								tmp[nm] = $("select option:selected",this).val();
+								tmp2[nm] = $("select option:selected", this).text();
+							} else {
+								var sel = $("select",this), selectedText = [];
+								tmp[nm] = $(sel).val();
+								if(tmp[nm]) { tmp[nm]= tmp[nm].join(","); } else { tmp[nm] =""; }
+								$("select option:selected",this).each(
+									function(i,selected){
+										selectedText[i] = $(selected).text();
+									}
+								);
+								tmp2[nm] = selectedText.join(",");
+							}
+							if(cm.formatter && cm.formatter === 'select') { tmp2={}; }
+							break;
+						case 'custom' :
+							try {
+								if(cm.editoptions && $.isFunction(cm.editoptions.custom_value)) {
+									tmp[nm] = cm.editoptions.custom_value.call($t, $(".customelement",this),'get');
+									if (tmp[nm] === undefined) { throw "e2"; }
+								} else { throw "e1"; }
+							} catch (e) {
+								if (e==="e1") { $.jgrid.info_dialog($.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.nodefined,$.jgrid.edit.bClose); }
+								if (e==="e2") { $.jgrid.info_dialog($.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.novalue,$.jgrid.edit.bClose); }
+								else { $.jgrid.info_dialog($.jgrid.errors.errcap,e.message,$.jgrid.edit.bClose); }
+							}
+							break;
+					}
+					cv = $.jgrid.checkValues.call($t,tmp[nm],i);
+					if(cv[0] === false) {
+						return false;
+					}
+					if($t.p.autoencode) { tmp[nm] = $.jgrid.htmlEncode(tmp[nm]); }
+					if(o.url !== 'clientArray' && cm.editoptions && cm.editoptions.NullIfEmpty === true) {
+						if(tmp[nm] === "") {
+							tmp3[nm] = 'null';
+						}
+					}
+				}
+			});
+			if (cv[0] === false){
+				try {
+					var tr = $($t).jqGrid('getGridRowById', rowid), positions = $.jgrid.findPos(tr);
+					$.jgrid.info_dialog($.jgrid.errors.errcap,cv[1],$.jgrid.edit.bClose,{left:positions[0],top:positions[1]+$(tr).outerHeight()});
+				} catch (e) {
+					alert(cv[1]);
+				}
+				return success;
+			}
+			var idname, opers = $t.p.prmNames, oldRowId = rowid;
+			if ($t.p.keyName === false) {
+				idname = opers.id;
+			} else {
+				idname = $t.p.keyName;
+			}
+			if(tmp) {
+				tmp[opers.oper] = opers.editoper;
+				if (tmp[idname] === undefined || tmp[idname]==="") {
+					tmp[idname] = rowid;
+				} else if (ind.id !== $t.p.idPrefix + tmp[idname]) {
+					// rename rowid
+					var oldid = $.jgrid.stripPref($t.p.idPrefix, rowid);
+					if ($t.p._index[oldid] !== undefined) {
+						$t.p._index[tmp[idname]] = $t.p._index[oldid];
+						delete $t.p._index[oldid];
+					}
+					rowid = $t.p.idPrefix + tmp[idname];
+					$(ind).attr("id", rowid);
+					if ($t.p.selrow === oldRowId) {
+						$t.p.selrow = rowid;
+					}
+					if ($.isArray($t.p.selarrrow)) {
+						var i = $.inArray(oldRowId, $t.p.selarrrow);
+						if (i>=0) {
+							$t.p.selarrrow[i] = rowid;
+						}
+					}
+					if ($t.p.multiselect) {
+						var newCboxId = "jqg_" + $t.p.id + "_" + rowid;
+						$("input.cbox",ind)
+							.attr("id", newCboxId)
+							.attr("name", newCboxId);
+					}
+					// TODO: to test the case of frozen columns
+				}
+				if($t.p.inlineData === undefined) { $t.p.inlineData ={}; }
+				tmp = $.extend({},tmp,$t.p.inlineData,o.extraparam);
+			}
+			if (o.url === 'clientArray') {
+				tmp = $.extend({},tmp, tmp2);
+				if($t.p.autoencode) {
+					$.each(tmp,function(n,v){
+						tmp[n] = $.jgrid.htmlDecode(v);
+					});
+				}
+				var k, resp = $($t).jqGrid("setRowData",rowid,tmp);
+				$(ind).attr("editable","0");
+				for(k=0;k<$t.p.savedRow.length;k++) {
+					if( String($t.p.savedRow[k].id) === String(oldRowId)) {fr = k; break;}
+				}
+				if(fr >= 0) { $t.p.savedRow.splice(fr,1); }
+				$($t).triggerHandler("jqGridInlineAfterSaveRow", [rowid, resp, tmp, o]);
+				if( $.isFunction(o.aftersavefunc) ) { o.aftersavefunc.call($t, rowid, resp, tmp, o); }
+				success = true;
+				$(ind).removeClass("jqgrid-new-row").unbind("keydown");
+			} else {
+				$($t).jqGrid("progressBar", {method:"show", loadtype : o.saveui, htmlcontent: o.savetext });
+				tmp3 = $.extend({},tmp,tmp3);
+				tmp3[idname] = $.jgrid.stripPref($t.p.idPrefix, tmp3[idname]);
+				$.ajax($.extend({
+					url:o.url,
+					data: $.isFunction($t.p.serializeRowData) ? $t.p.serializeRowData.call($t, tmp3) : tmp3,
+					type: o.mtype,
+					async : false, //?!?
+					complete: function(res,stat){
+						$($t).jqGrid("progressBar", {method:"hide", loadtype : o.saveui, htmlcontent: o.savetext});
+						if (stat === "success"){
+							var ret = true, sucret, k;
+							sucret = $($t).triggerHandler("jqGridInlineSuccessSaveRow", [res, rowid, o]);
+							if (!$.isArray(sucret)) {sucret = [true, tmp];}
+							if (sucret[0] && $.isFunction(o.successfunc)) {sucret = o.successfunc.call($t, res);}							
+							if($.isArray(sucret)) {
+								// expect array - status, data, rowid
+								ret = sucret[0];
+								tmp = sucret[1] || tmp;
+							} else {
+								ret = sucret;
+							}
+							if (ret===true) {
+								if($t.p.autoencode) {
+									$.each(tmp,function(n,v){
+										tmp[n] = $.jgrid.htmlDecode(v);
+									});
+								}
+								tmp = $.extend({},tmp, tmp2);
+								$($t).jqGrid("setRowData",rowid,tmp);
+								$(ind).attr("editable","0");
+								for(k=0;k<$t.p.savedRow.length;k++) {
+									if( String($t.p.savedRow[k].id) === String(rowid)) {fr = k; break;}
+								}
+								if(fr >= 0) { $t.p.savedRow.splice(fr,1); }
+								$($t).triggerHandler("jqGridInlineAfterSaveRow", [rowid, res, tmp, o]);
+								if( $.isFunction(o.aftersavefunc) ) { o.aftersavefunc.call($t, rowid, res, tmp, o); }
+								success = true;
+								$(ind).removeClass("jqgrid-new-row").unbind("keydown");
+							} else {
+								$($t).triggerHandler("jqGridInlineErrorSaveRow", [rowid, res, stat, null, o]);
+								if($.isFunction(o.errorfunc) ) {
+									o.errorfunc.call($t, rowid, res, stat, null);
+								}
+								if(o.restoreAfterError === true) {
+									$($t).jqGrid("restoreRow",rowid, o.afterrestorefunc);
+								}
+							}
+						}
+					},
+					error:function(res,stat,err){
+						$("#lui_"+$.jgrid.jqID($t.p.id)).hide();
+						$($t).triggerHandler("jqGridInlineErrorSaveRow", [rowid, res, stat, err, o]);
+						if($.isFunction(o.errorfunc) ) {
+							o.errorfunc.call($t, rowid, res, stat, err);
+						} else {
+							var rT = res.responseText || res.statusText;
+							try {
+								$.jgrid.info_dialog($.jgrid.errors.errcap,'<div class="ui-state-error">'+ rT +'</div>', $.jgrid.edit.bClose,{buttonalign:'right'});
+							} catch(e) {
+								alert(rT);
+							}
+						}
+						if(o.restoreAfterError === true) {
+							$($t).jqGrid("restoreRow",rowid, o.afterrestorefunc);
+						}
+					}
+				}, $.jgrid.ajaxOptions, $t.p.ajaxRowOptions || {}));
+			}
+		}
+		return success;
+	},
+	restoreRow : function(rowid, afterrestorefunc) {
+		// Compatible mode old versions
+		var args = $.makeArray(arguments).slice(1), o={};
+
+		if( $.type(args[0]) === "object" ) {
+			o = args[0];
+		} else {
+			if ($.isFunction(afterrestorefunc)) { o.afterrestorefunc = afterrestorefunc; }
+		}
+		o = $.extend(true, {}, $.jgrid.inlineEdit, o );
+
+		// End compatible
+
+		return this.each(function(){
+			var $t= this, fr=-1, ind, ares={}, k;
+			if (!$t.grid ) { return; }
+			ind = $($t).jqGrid("getInd",rowid,true);
+			if(ind === false) {return;}
+			var bfcr = $.isFunction( o.beforeCancelRow ) ?	o.beforeCancelRow.call($t, o, rowid) :  undefined;
+			if( bfcr === undefined ) {
+				bfcr = true;
+			}
+			if(!bfcr) { return; }
+			for(k=0;k<$t.p.savedRow.length;k++) {
+				if( String($t.p.savedRow[k].id) === String(rowid)) {fr = k; break;}
+			}
+			if(fr >= 0) {
+				if($.isFunction($.fn.datepicker)) {
+					try {
+						$("input.hasDatepicker","#"+$.jgrid.jqID(ind.id)).datepicker('hide');
+					} catch (e) {}
+				}
+				$.each($t.p.colModel, function(){
+					if(this.editable === true && $t.p.savedRow[fr].hasOwnProperty(this.name)) {
+						ares[this.name] = $t.p.savedRow[fr][this.name];
+					}
+				});
+				$($t).jqGrid("setRowData",rowid,ares);
+				$(ind).attr("editable","0").unbind("keydown");
+				$t.p.savedRow.splice(fr,1);
+				if($("#"+$.jgrid.jqID(rowid), "#"+$.jgrid.jqID($t.p.id)).hasClass("jqgrid-new-row")){
+					setTimeout(function(){
+						$($t).jqGrid("delRowData",rowid);
+						$($t).jqGrid('showAddEditButtons');
+					},0);
+				}
+			}
+			$($t).triggerHandler("jqGridInlineAfterRestoreRow", [rowid]);
+			if ($.isFunction(o.afterrestorefunc))
+			{
+				o.afterrestorefunc.call($t, rowid);
+			}
+		});
+	},
+	addRow : function ( p ) {
+		p = $.extend(true, {
+			rowID : null,
+			initdata : {},
+			position :"first",
+			useDefValues : true,
+			useFormatter : false,
+			addRowParams : {extraparam:{}}
+		},p  || {});
+		return this.each(function(){
+			if (!this.grid ) { return; }
+			var $t = this;
+			var bfar = $.isFunction( p.beforeAddRow ) ?	p.beforeAddRow.call($t,p.addRowParams) :  undefined;
+			if( bfar === undefined ) {
+				bfar = true;
+			}
+			if(!bfar) { return; }
+			p.rowID = $.isFunction(p.rowID) ? p.rowID.call($t, p) : ( (p.rowID != null) ? p.rowID : $.jgrid.randId());
+			if(p.useDefValues === true) {
+				$($t.p.colModel).each(function(){
+					if( this.editoptions && this.editoptions.defaultValue ) {
+						var opt = this.editoptions.defaultValue,
+						tmp = $.isFunction(opt) ? opt.call($t) : opt;
+						p.initdata[this.name] = tmp;
+					}
+				});
+			}
+			$($t).jqGrid('addRowData', p.rowID, p.initdata, p.position);
+			p.rowID = $t.p.idPrefix + p.rowID;
+			$("#"+$.jgrid.jqID(p.rowID), "#"+$.jgrid.jqID($t.p.id)).addClass("jqgrid-new-row");
+			if(p.useFormatter) {
+				$("#"+$.jgrid.jqID(p.rowID)+" .ui-inline-edit", "#"+$.jgrid.jqID($t.p.id)).click();
+			} else {
+				var opers = $t.p.prmNames,
+				oper = opers.oper;
+				p.addRowParams.extraparam[oper] = opers.addoper;
+				$($t).jqGrid('editRow', p.rowID, p.addRowParams);
+				$($t).jqGrid('setSelection', p.rowID);
+			}
+		});
+	},
+	inlineNav : function (elem, o) {
+		o = $.extend(true,{
+			edit: true,
+			editicon: "ui-icon-pencil",
+			add: true,
+			addicon:"ui-icon-plus",
+			save: true,
+			saveicon:"ui-icon-disk",
+			cancel: true,
+			cancelicon:"ui-icon-cancel",
+			addParams : {addRowParams: {extraparam: {}}},
+			editParams : {},
+			restoreAfterSelect : true
+		}, $.jgrid.nav, o ||{});
+		return this.each(function(){
+			if (!this.grid ) { return; }
+			var $t = this, onSelect, gID = $.jgrid.jqID($t.p.id);
+			$t.p._inlinenav = true;
+			// detect the formatactions column
+			if(o.addParams.useFormatter === true) {
+				var cm = $t.p.colModel,i;
+				for (i = 0; i<cm.length; i++) {
+					if(cm[i].formatter && cm[i].formatter === "actions" ) {
+						if(cm[i].formatoptions) {
+							var defaults =  {
+								keys:false,
+								onEdit : null,
+								onSuccess: null,
+								afterSave:null,
+								onError: null,
+								afterRestore: null,
+								extraparam: {},
+								url: null
+							},
+							ap = $.extend( defaults, cm[i].formatoptions );
+							o.addParams.addRowParams = {
+								"keys" : ap.keys,
+								"oneditfunc" : ap.onEdit,
+								"successfunc" : ap.onSuccess,
+								"url" : ap.url,
+								"extraparam" : ap.extraparam,
+								"aftersavefunc" : ap.afterSave,
+								"errorfunc": ap.onError,
+								"afterrestorefunc" : ap.afterRestore
+							};
+						}
+						break;
+					}
+				}
+			}
+			if(o.add) {
+				$($t).jqGrid('navButtonAdd', elem,{
+					caption : o.addtext,
+					title : o.addtitle,
+					buttonicon : o.addicon,
+					id : $t.p.id+"_iladd",
+					onClickButton : function () {
+						$($t).jqGrid('addRow', o.addParams);
+						if(!o.addParams.useFormatter) {
+							$("#"+gID+"_ilsave").removeClass('ui-state-disabled');
+							$("#"+gID+"_ilcancel").removeClass('ui-state-disabled');
+							$("#"+gID+"_iladd").addClass('ui-state-disabled');
+							$("#"+gID+"_iledit").addClass('ui-state-disabled');
+						}
+					}
+				});
+			}
+			if(o.edit) {
+				$($t).jqGrid('navButtonAdd', elem,{
+					caption : o.edittext,
+					title : o.edittitle,
+					buttonicon : o.editicon,
+					id : $t.p.id+"_iledit",
+					onClickButton : function () {
+						var sr = $($t).jqGrid('getGridParam','selrow');
+						if(sr) {
+							$($t).jqGrid('editRow', sr, o.editParams);
+							$("#"+gID+"_ilsave").removeClass('ui-state-disabled');
+							$("#"+gID+"_ilcancel").removeClass('ui-state-disabled');
+							$("#"+gID+"_iladd").addClass('ui-state-disabled');
+							$("#"+gID+"_iledit").addClass('ui-state-disabled');
+						} else {
+							$.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+gID,jqm:true});$("#jqg_alrt").focus();							
+						}
+					}
+				});
+			}
+			if(o.save) {
+				$($t).jqGrid('navButtonAdd', elem,{
+					caption : o.savetext || '',
+					title : o.savetitle || 'Save row',
+					buttonicon : o.saveicon,
+					id : $t.p.id+"_ilsave",
+					onClickButton : function () {
+						var sr = $t.p.savedRow[0].id;
+						if(sr) {
+							var opers = $t.p.prmNames,
+							oper = opers.oper, tmpParams = o.editParams;
+							if($("#"+$.jgrid.jqID(sr), "#"+gID ).hasClass("jqgrid-new-row")) {
+								o.addParams.addRowParams.extraparam[oper] = opers.addoper;
+								tmpParams = o.addParams.addRowParams;
+							} else {
+								if(!o.editParams.extraparam) {
+									o.editParams.extraparam = {};
+								}
+								o.editParams.extraparam[oper] = opers.editoper;
+							}
+							if( $($t).jqGrid('saveRow', sr, tmpParams) ) {
+								$($t).jqGrid('showAddEditButtons');
+							}
+						} else {
+							$.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+gID,jqm:true});$("#jqg_alrt").focus();							
+						}
+					}
+				});
+				$("#"+gID+"_ilsave").addClass('ui-state-disabled');
+			}
+			if(o.cancel) {
+				$($t).jqGrid('navButtonAdd', elem,{
+					caption : o.canceltext || '',
+					title : o.canceltitle || 'Cancel row editing',
+					buttonicon : o.cancelicon,
+					id : $t.p.id+"_ilcancel",
+					onClickButton : function () {
+						var sr = $t.p.savedRow[0].id, cancelPrm = o.editParams;
+						if(sr) {
+							if($("#"+$.jgrid.jqID(sr), "#"+gID ).hasClass("jqgrid-new-row")) {
+								cancelPrm = o.addParams.addRowParams;
+							}
+							$($t).jqGrid('restoreRow', sr, cancelPrm);
+							$($t).jqGrid('showAddEditButtons');
+						} else {
+							$.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+gID,jqm:true});$("#jqg_alrt").focus();							
+						}
+					}
+				});
+				$("#"+gID+"_ilcancel").addClass('ui-state-disabled');
+			}
+			if(o.restoreAfterSelect === true) {
+				if($.isFunction($t.p.beforeSelectRow)) {
+					onSelect = $t.p.beforeSelectRow;
+				} else {
+					onSelect =  false;
+				}
+				$t.p.beforeSelectRow = function(id, stat) {
+					var ret = true;
+					if($t.p.savedRow.length > 0 && $t.p._inlinenav===true && ( id !== $t.p.selrow && $t.p.selrow !==null) ) {
+						if($t.p.selrow === o.addParams.rowID ) {
+							$($t).jqGrid('delRowData', $t.p.selrow);
+						} else {
+							$($t).jqGrid('restoreRow', $t.p.selrow, o.editParams);
+						}
+						$($t).jqGrid('showAddEditButtons');
+					}
+					if(onSelect) {
+						ret = onSelect.call($t, id, stat);
+					}
+					return ret;
+				};
+			}
+
+		});
+	},
+	showAddEditButtons : function()  {
+		return this.each(function(){
+			if (!this.grid ) { return; }
+			var gID = $.jgrid.jqID(this.p.id);
+			$("#"+gID+"_ilsave").addClass('ui-state-disabled');
+			$("#"+gID+"_ilcancel").addClass('ui-state-disabled');
+			$("#"+gID+"_iladd").removeClass('ui-state-disabled');
+			$("#"+gID+"_iledit").removeClass('ui-state-disabled');
+		});
+	}
+//end inline edit
+});
+})(jQuery);

+ 561 - 0
app/Resources/public/assets/jqgrid/js/grid.jqueryui.js

@@ -0,0 +1,561 @@
+/*jshint evil:true, eqeqeq:false, eqnull:true, devel:true */
+/*global jQuery */
+(function($){
+/*
+**
+ * jqGrid addons using jQuery UI 
+ * Author: Mark Williams
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl-2.0.html
+ * depends on jQuery UI 
+**/
+"use strict";
+if ($.jgrid.msie && $.jgrid.msiever()===8) {
+	$.expr[":"].hidden = function(elem) {
+		return elem.offsetWidth === 0 || elem.offsetHeight === 0 ||
+			elem.style.display === "none";
+	};
+}
+// requiere load multiselect before grid
+$.jgrid._multiselect = false;
+if($.ui) {
+	if ($.ui.multiselect ) {
+		if($.ui.multiselect.prototype._setSelected) {
+			var setSelected = $.ui.multiselect.prototype._setSelected;
+			$.ui.multiselect.prototype._setSelected = function(item,selected) {
+				var ret = setSelected.call(this,item,selected);
+				if (selected && this.selectedList) {
+					var elt = this.element;
+					this.selectedList.find('li').each(function() {
+						if ($(this).data('optionLink')) {
+							$(this).data('optionLink').remove().appendTo(elt);
+						}
+					});
+				}
+				return ret;
+			};
+		}
+		if($.ui.multiselect.prototype.destroy) {
+			$.ui.multiselect.prototype.destroy = function() {
+				this.element.show();
+				this.container.remove();
+				if ($.Widget === undefined) {
+					$.widget.prototype.destroy.apply(this, arguments);
+				} else {
+					$.Widget.prototype.destroy.apply(this, arguments);
+				}
+			};
+		}
+		$.jgrid._multiselect = true;
+	}
+}
+        
+$.jgrid.extend({
+	sortableColumns : function (tblrow)
+	{
+		return this.each(function (){
+			var ts = this, tid= $.jgrid.jqID( ts.p.id );
+			function start() {ts.p.disableClick = true;}
+			var sortable_opts = {
+				"tolerance" : "pointer",
+				"axis" : "x",
+				"scrollSensitivity": "1",
+				"items": '>th:not(:has(#jqgh_'+tid+'_cb'+',#jqgh_'+tid+'_rn'+',#jqgh_'+tid+'_subgrid),:hidden)',
+				"placeholder": {
+					element: function(item) {
+						var el = $(document.createElement(item[0].nodeName))
+						.addClass(item[0].className+" ui-sortable-placeholder ui-state-highlight")
+						.removeClass("ui-sortable-helper")[0];
+						return el;
+					},
+					update: function(self, p) {
+						p.height(self.currentItem.innerHeight() - parseInt(self.currentItem.css('paddingTop')||0, 10) - parseInt(self.currentItem.css('paddingBottom')||0, 10));
+						p.width(self.currentItem.innerWidth() - parseInt(self.currentItem.css('paddingLeft')||0, 10) - parseInt(self.currentItem.css('paddingRight')||0, 10));
+					}
+				},
+				"update": function(event, ui) {
+					var p = $(ui.item).parent(),
+					th = $(">th", p),
+					colModel = ts.p.colModel,
+					cmMap = {}, tid= ts.p.id+"_";
+					$.each(colModel, function(i) { cmMap[this.name]=i; });
+					var permutation = [];
+					th.each(function() {
+						var id = $(">div", this).get(0).id.replace(/^jqgh_/, "").replace(tid,"");
+							if (cmMap.hasOwnProperty(id)) {
+								permutation.push(cmMap[id]);
+							}
+					});
+	
+					$(ts).jqGrid("remapColumns",permutation, true, true);
+					if ($.isFunction(ts.p.sortable.update)) {
+						ts.p.sortable.update(permutation);
+					}
+					setTimeout(function(){ts.p.disableClick=false;}, 50);
+				}
+			};
+			if (ts.p.sortable.options) {
+				$.extend(sortable_opts, ts.p.sortable.options);
+			} else if ($.isFunction(ts.p.sortable)) {
+				ts.p.sortable = { "update" : ts.p.sortable };
+			}
+			if (sortable_opts.start) {
+				var s = sortable_opts.start;
+				sortable_opts.start = function(e,ui) {
+					start();
+					s.call(this,e,ui);
+				};
+			} else {
+				sortable_opts.start = start;
+			}
+			if (ts.p.sortable.exclude) {
+				sortable_opts.items += ":not("+ts.p.sortable.exclude+")";
+			}
+			var $e = tblrow.sortable(sortable_opts), dataObj = $e.data("sortable") || $e.data("uiSortable");
+			if (dataObj != null) {
+				dataObj.data("sortable").floating = true;
+			}
+		});
+	},
+    columnChooser : function(opts) {
+		var self = this, selector, select, colMap = {}, fixedCols = [], dopts, mopts, $dialogContent, multiselectData, listHeight,
+			colModel = self.jqGrid("getGridParam", "colModel"),
+			colNames = self.jqGrid("getGridParam", "colNames"),
+			getMultiselectWidgetData = function ($elem) {
+				return ($.ui.multiselect.prototype && $elem.data($.ui.multiselect.prototype.widgetFullName || $.ui.multiselect.prototype.widgetName)) ||
+					$elem.data("ui-multiselect") || $elem.data("multiselect");
+			};
+
+		if ($("#colchooser_" + $.jgrid.jqID(self[0].p.id)).length) { return; }
+		selector = $('<div id="colchooser_'+self[0].p.id+'" style="position:relative;overflow:hidden"><div><select multiple="multiple"></select></div></div>');
+		select = $('select', selector);
+
+		function insert(perm,i,v) {
+			var a, b;
+			if(i>=0){
+				a = perm.slice();
+				b = a.splice(i,Math.max(perm.length-i,i));
+				if(i>perm.length) { i = perm.length; }
+				a[i] = v;
+				return a.concat(b);
+			}
+			return perm;
+		}
+		function call(fn, obj) {
+			if (!fn) { return; }
+			if (typeof fn === 'string') {
+				if ($.fn[fn]) {
+					$.fn[fn].apply(obj, $.makeArray(arguments).slice(2));
+				}
+			} else if ($.isFunction(fn)) {
+				fn.apply(obj, $.makeArray(arguments).slice(2));
+			}
+		}
+
+		opts = $.extend({
+			width : 400,
+			height : 240,
+			classname : null,
+			done : function(perm) { if (perm) { self.jqGrid("remapColumns", perm, true); } },
+			/* msel is either the name of a ui widget class that
+			   extends a multiselect, or a function that supports
+			   creating a multiselect object (with no argument,
+			   or when passed an object), and destroying it (when
+			   passed the string "destroy"). */
+			msel : "multiselect",
+			/* "msel_opts" : {}, */
+
+			/* dlog is either the name of a ui widget class that 
+			   behaves in a dialog-like way, or a function, that
+			   supports creating a dialog (when passed dlog_opts)
+			   or destroying a dialog (when passed the string
+			   "destroy")
+			   */
+			dlog : "dialog",
+			dialog_opts : {
+				minWidth: 470,
+				dialogClass: "ui-jqdialog"
+			},
+			/* dlog_opts is either an option object to be passed 
+			   to "dlog", or (more likely) a function that creates
+			   the options object.
+			   The default produces a suitable options object for
+			   ui.dialog */
+			dlog_opts : function(options) {
+				var buttons = {};
+				buttons[options.bSubmit] = function() {
+					options.apply_perm();
+					options.cleanup(false);
+				};
+				buttons[options.bCancel] = function() {
+					options.cleanup(true);
+				};
+				return $.extend(true, {
+					buttons: buttons,
+					close: function() {
+						options.cleanup(true);
+					},
+					modal: options.modal || false,
+					resizable: options.resizable || true,
+					width: options.width + 70,
+					resize: function () {
+						var widgetData = getMultiselectWidgetData(select),
+							$thisDialogContent = widgetData.container.closest(".ui-dialog-content");
+
+						if ($thisDialogContent.length > 0 && typeof $thisDialogContent[0].style === "object") {
+							$thisDialogContent[0].style.width = "";
+						} else {
+							$thisDialogContent.css("width", ""); // or just remove width style
+						}
+
+						widgetData.selectedList.height(Math.max(widgetData.selectedContainer.height() - widgetData.selectedActions.outerHeight() - 1, 1));
+						widgetData.availableList.height(Math.max(widgetData.availableContainer.height() - widgetData.availableActions.outerHeight() - 1, 1));
+					}
+				}, options.dialog_opts || {});
+			},
+			/* Function to get the permutation array, and pass it to the
+			   "done" function */
+			apply_perm : function() {
+				var perm = [];
+				$('option',select).each(function() {
+					if ($(this).is("[selected]")) {
+						self.jqGrid("showCol", colModel[this.value].name);
+					} else {
+						self.jqGrid("hideCol", colModel[this.value].name);
+					}
+				});
+				
+				//fixedCols.slice(0);
+				$('option[selected]',select).each(function() { perm.push(parseInt(this.value,10)); });
+				$.each(perm, function() { delete colMap[colModel[parseInt(this,10)].name]; });
+				$.each(colMap, function() {
+					var ti = parseInt(this,10);
+					perm = insert(perm,ti,ti);
+				});
+				if (opts.done) {
+					opts.done.call(self, perm);
+				}
+				self.jqGrid("setGridWidth", self[0].p.tblwidth, self[0].p.shrinkToFit);
+			},
+			/* Function to cleanup the dialog, and select. Also calls the
+			   done function with no permutation (to indicate that the
+			   columnChooser was aborted */
+			cleanup : function(calldone) {
+				call(opts.dlog, selector, 'destroy');
+				call(opts.msel, select, 'destroy');
+				selector.remove();
+				if (calldone && opts.done) {
+					opts.done.call(self);
+				}
+			},
+			msel_opts : {}
+		}, $.jgrid.col, opts || {});
+		if($.ui) {
+			if ($.ui.multiselect && $.ui.multiselect.defaults) {
+				if (!$.jgrid._multiselect) {
+					// should be in language file
+					alert("Multiselect plugin loaded after jqGrid. Please load the plugin before the jqGrid!");
+					return;
+				}
+				// ??? the next line uses $.ui.multiselect.defaults which will be typically undefined
+				opts.msel_opts = $.extend($.ui.multiselect.defaults, opts.msel_opts);
+			}
+		}
+		if (opts.caption) {
+			selector.attr("title", opts.caption);
+		}
+		if (opts.classname) {
+			selector.addClass(opts.classname);
+			select.addClass(opts.classname);
+		}
+		if (opts.width) {
+			$(">div",selector).css({width: opts.width,margin:"0 auto"});
+			select.css("width", opts.width);
+		}
+		if (opts.height) {
+			$(">div",selector).css("height", opts.height);
+			select.css("height", opts.height - 10);
+		}
+
+		select.empty();
+		$.each(colModel, function(i) {
+			colMap[this.name] = i;
+			if (this.hidedlg) {
+				if (!this.hidden) {
+					fixedCols.push(i);
+				}
+				return;
+			}
+
+			select.append("<option value='"+i+"' "+
+						  (this.hidden?"":"selected='selected'")+">"+$.jgrid.stripHtml(colNames[i])+"</option>");
+		});
+
+		dopts = $.isFunction(opts.dlog_opts) ? opts.dlog_opts.call(self, opts) : opts.dlog_opts;
+		call(opts.dlog, selector, dopts);
+		mopts = $.isFunction(opts.msel_opts) ? opts.msel_opts.call(self, opts) : opts.msel_opts;
+		call(opts.msel, select, mopts);
+
+		// fix height of elements of the multiselect widget
+		$dialogContent = $("#colchooser_" + $.jgrid.jqID(self[0].p.id));
+
+		$dialogContent.css({ margin: "auto" });
+		$dialogContent.find(">div").css({ width: "100%", height: "100%", margin: "auto" });
+
+		multiselectData = getMultiselectWidgetData(select);
+		multiselectData.container.css({ width: "100%", height: "100%", margin: "auto" });
+
+		multiselectData.selectedContainer.css({ width: multiselectData.options.dividerLocation * 100 + "%", height: "100%", margin: "auto", boxSizing: "border-box" });
+		multiselectData.availableContainer.css({ width: (100 - multiselectData.options.dividerLocation * 100) + "%", height: "100%", margin: "auto", boxSizing: "border-box" });
+
+		// set height for both selectedList and availableList
+		multiselectData.selectedList.css("height", "auto");
+		multiselectData.availableList.css("height", "auto");
+		listHeight = Math.max(multiselectData.selectedList.height(), multiselectData.availableList.height());
+		listHeight = Math.min(listHeight, $(window).height());
+		multiselectData.selectedList.css("height", listHeight);
+		multiselectData.availableList.css("height", listHeight);
+	},
+	sortableRows : function (opts) {
+		// Can accept all sortable options and events
+		return this.each(function(){
+			var $t = this;
+			if(!$t.grid) { return; }
+			// Currently we disable a treeGrid sortable
+			if($t.p.treeGrid) { return; }
+			if($.fn.sortable) {
+				opts = $.extend({
+					"cursor":"move",
+					"axis" : "y",
+					"items": ".jqgrow"
+					},
+				opts || {});
+				if(opts.start && $.isFunction(opts.start)) {
+					opts._start_ = opts.start;
+					delete opts.start;
+				} else {opts._start_=false;}
+				if(opts.update && $.isFunction(opts.update)) {
+					opts._update_ = opts.update;
+					delete opts.update;
+				} else {opts._update_ = false;}
+				opts.start = function(ev,ui) {
+					$(ui.item).css("border-width","0");
+					$("td",ui.item).each(function(i){
+						this.style.width = $t.grid.cols[i].style.width;
+					});
+					if($t.p.subGrid) {
+						var subgid = $(ui.item).attr("id");
+						try {
+							$($t).jqGrid('collapseSubGridRow',subgid);
+						} catch (e) {}
+					}
+					if(opts._start_) {
+						opts._start_.apply(this,[ev,ui]);
+					}
+				};
+				opts.update = function (ev,ui) {
+					$(ui.item).css("border-width","");
+					if($t.p.rownumbers === true) {
+						$("td.jqgrid-rownum",$t.rows).each(function( i ){
+							$(this).html( i+1+(parseInt($t.p.page,10)-1)*parseInt($t.p.rowNum,10) );
+						});
+					}
+					if(opts._update_) {
+						opts._update_.apply(this,[ev,ui]);
+					}
+				};
+				$("tbody:first",$t).sortable(opts);
+				$("tbody:first",$t).disableSelection();
+			}
+		});
+	},
+	gridDnD : function(opts) {
+		return this.each(function(){
+		var $t = this, i, cn;
+		if(!$t.grid) { return; }
+		// Currently we disable a treeGrid drag and drop
+		if($t.p.treeGrid) { return; }
+		if(!$.fn.draggable || !$.fn.droppable) { return; }
+		function updateDnD ()
+		{
+			var datadnd = $.data($t,"dnd");
+			$("tr.jqgrow:not(.ui-draggable)",$t).draggable($.isFunction(datadnd.drag) ? datadnd.drag.call($($t),datadnd) : datadnd.drag);
+		}
+		var appender = "<table id='jqgrid_dnd' class='ui-jqgrid-dnd'></table>";
+		if($("#jqgrid_dnd")[0] === undefined) {
+			$('body').append(appender);
+		}
+
+		if(typeof opts === 'string' && opts === 'updateDnD' && $t.p.jqgdnd===true) {
+			updateDnD();
+			return;
+		}
+		opts = $.extend({
+			"drag" : function (opts) {
+				return $.extend({
+					start : function (ev, ui) {
+						var i, subgid;
+						// if we are in subgrid mode try to collapse the node
+						if($t.p.subGrid) {
+							subgid = $(ui.helper).attr("id");
+							try {
+								$($t).jqGrid('collapseSubGridRow',subgid);
+							} catch (e) {}
+						}
+						// hack
+						// drag and drop does not insert tr in table, when the table has no rows
+						// we try to insert new empty row on the target(s)
+						for (i=0;i<$.data($t,"dnd").connectWith.length;i++){
+							if($($.data($t,"dnd").connectWith[i]).jqGrid('getGridParam','reccount') === 0 ){
+								$($.data($t,"dnd").connectWith[i]).jqGrid('addRowData','jqg_empty_row',{});
+							}
+						}
+						ui.helper.addClass("ui-state-highlight");
+						$("td",ui.helper).each(function(i) {
+							this.style.width = $t.grid.headers[i].width+"px";
+						});
+						if(opts.onstart && $.isFunction(opts.onstart) ) { opts.onstart.call($($t),ev,ui); }
+					},
+					stop :function(ev,ui) {
+						var i, ids;
+						if(ui.helper.dropped && !opts.dragcopy) {
+							ids = $(ui.helper).attr("id");
+							if(ids === undefined) { ids = $(this).attr("id"); }
+							$($t).jqGrid('delRowData',ids );
+						}
+						// if we have a empty row inserted from start event try to delete it
+						for (i=0;i<$.data($t,"dnd").connectWith.length;i++){
+							$($.data($t,"dnd").connectWith[i]).jqGrid('delRowData','jqg_empty_row');
+						}
+						if(opts.onstop && $.isFunction(opts.onstop) ) { opts.onstop.call($($t),ev,ui); }
+					}
+				},opts.drag_opts || {});
+			},
+			"drop" : function (opts) {
+				return $.extend({
+					accept: function(d) {
+						if (!$(d).hasClass('jqgrow')) { return d;}
+						var tid = $(d).closest("table.ui-jqgrid-btable");
+						if(tid.length > 0 && $.data(tid[0],"dnd") !== undefined) {
+							var cn = $.data(tid[0],"dnd").connectWith;
+							return $.inArray('#'+$.jgrid.jqID(this.id),cn) !== -1 ? true : false;
+						}
+						return false;
+					},
+					drop: function(ev, ui) {
+						if (!$(ui.draggable).hasClass('jqgrow')) { return; }
+						var accept = $(ui.draggable).attr("id");
+						var getdata = ui.draggable.parent().parent().jqGrid('getRowData',accept);
+						if(!opts.dropbyname) {
+							var j =0, tmpdata = {}, nm, key;
+							var dropmodel = $("#"+$.jgrid.jqID(this.id)).jqGrid('getGridParam','colModel');
+							try {
+								for (key in getdata) {
+									if (getdata.hasOwnProperty(key)) {
+									nm = dropmodel[j].name;
+									if( !(nm === 'cb' || nm === 'rn' || nm === 'subgrid' )) {
+										if(getdata.hasOwnProperty(key) && dropmodel[j]) {
+											tmpdata[nm] = getdata[key];
+										}
+									}
+									j++;
+								}
+								}
+								getdata = tmpdata;
+							} catch (e) {}
+						}
+						ui.helper.dropped = true;
+						if(opts.beforedrop && $.isFunction(opts.beforedrop) ) {
+							//parameters to this callback - event, element, data to be inserted, sender, reciever
+							// should return object which will be inserted into the reciever
+							var datatoinsert = opts.beforedrop.call(this,ev,ui,getdata,$('#'+$.jgrid.jqID($t.p.id)),$(this));
+							if (datatoinsert !== undefined && datatoinsert !== null && typeof datatoinsert === "object") { getdata = datatoinsert; }
+						}
+						if(ui.helper.dropped) {
+							var grid;
+							if(opts.autoid) {
+								if($.isFunction(opts.autoid)) {
+									grid = opts.autoid.call(this,getdata);
+								} else {
+									grid = Math.ceil(Math.random()*1000);
+									grid = opts.autoidprefix+grid;
+								}
+							}
+							// NULL is interpreted as undefined while null as object
+							$("#"+$.jgrid.jqID(this.id)).jqGrid('addRowData',grid,getdata,opts.droppos);
+						}
+						if(opts.ondrop && $.isFunction(opts.ondrop) ) { opts.ondrop.call(this,ev,ui, getdata); }
+					}}, opts.drop_opts || {});
+			},
+			"onstart" : null,
+			"onstop" : null,
+			"beforedrop": null,
+			"ondrop" : null,
+			"drop_opts" : {
+				"activeClass": "ui-state-active",
+				"hoverClass": "ui-state-hover"
+			},
+			"drag_opts" : {
+				"revert": "invalid",
+				"helper": "clone",
+				"cursor": "move",
+				"appendTo" : "#jqgrid_dnd",
+				"zIndex": 5000
+			},
+			"dragcopy": false,
+			"dropbyname" : false,
+			"droppos" : "first",
+			"autoid" : true,
+			"autoidprefix" : "dnd_"
+		}, opts || {});
+		
+		if(!opts.connectWith) { return; }
+		opts.connectWith = opts.connectWith.split(",");
+		opts.connectWith = $.map(opts.connectWith,function(n){return $.trim(n);});
+		$.data($t,"dnd",opts);
+		
+		if($t.p.reccount !== 0 && !$t.p.jqgdnd) {
+			updateDnD();
+		}
+		$t.p.jqgdnd = true;
+		for (i=0;i<opts.connectWith.length;i++){
+			cn =opts.connectWith[i];
+			$(cn).droppable($.isFunction(opts.drop) ? opts.drop.call($($t),opts) : opts.drop);
+		}
+		});
+	},
+	gridResize : function(opts) {
+		return this.each(function(){
+			var $t = this, gID = $.jgrid.jqID($t.p.id);
+			if(!$t.grid || !$.fn.resizable) { return; }
+			opts = $.extend({}, opts || {});
+			if(opts.alsoResize ) {
+				opts._alsoResize_ = opts.alsoResize;
+				delete opts.alsoResize;
+			} else {
+				opts._alsoResize_ = false;
+			}
+			if(opts.stop && $.isFunction(opts.stop)) {
+				opts._stop_ = opts.stop;
+				delete opts.stop;
+			} else {
+				opts._stop_ = false;
+			}
+			opts.stop = function (ev, ui) {
+				$($t).jqGrid('setGridParam',{height:$("#gview_"+gID+" .ui-jqgrid-bdiv").height()});
+				$($t).jqGrid('setGridWidth',ui.size.width,opts.shrinkToFit);
+				if(opts._stop_) { opts._stop_.call($t,ev,ui); }
+			};
+			if(opts._alsoResize_) {
+				var optstest = "{\'#gview_"+gID+" .ui-jqgrid-bdiv\':true,'" +opts._alsoResize_+"':true}";
+				opts.alsoResize = eval('('+optstest+')'); // the only way that I found to do this
+			} else {
+				opts.alsoResize = $(".ui-jqgrid-bdiv","#gview_"+gID);
+			}
+			delete opts._alsoResize_;
+			$("#gbox_"+gID).resizable(opts);
+		});
+	}
+});
+})(jQuery);

+ 505 - 0
app/Resources/public/assets/jqgrid/js/grid.pivot.js

@@ -0,0 +1,505 @@
+/*jshint eqeqeq:false */
+/*global jQuery */
+(function($){
+/**
+ * jqGrid pivot functions
+ * 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-2.0.html
+*/
+"use strict";
+// To optimize the search we need custom array filter
+// This code is taken from
+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
+
+function _pivotfilter (fn, context) {
+	var i,
+		value,
+		result = [],
+		length;
+
+	if (!this || typeof fn !== 'function' || (fn instanceof RegExp)) {
+		throw new TypeError();
+	}
+
+	length = this.length;
+
+	for (i = 0; i < length; i++) {
+		if (this.hasOwnProperty(i)) {
+			value = this[i];
+			if (fn.call(context, value, i, this)) {
+				result.push(value);
+				// We need break in order to cancel loop 
+				// in case the row is found
+				break;
+			}
+		}
+	}
+	return result;
+}
+$.assocArraySize = function(obj) {
+    // http://stackoverflow.com/a/6700/11236
+    var size = 0, key;
+    for (key in obj) {
+        if (obj.hasOwnProperty(key)) {
+        	size++;
+        }
+    }
+    return size;
+};
+
+$.jgrid.extend({
+	pivotSetup : function( data, options ){
+		// data should come in json format
+		// The function return the new colModel and the transformed data
+		// again with group setup options which then will be passed to the grid
+		var columns =[],
+		pivotrows =[],
+		summaries = [],
+		member=[],
+		labels=[],
+		groupOptions = {
+			grouping : true,
+			groupingView :  {
+				groupField : [],
+				groupSummary: [],
+				groupSummaryPos:[]
+			}
+		},
+		headers = [],
+		o = $.extend ( {
+			rowTotals : false,
+			rowTotalsText : 'Total',
+			// summary columns
+			colTotals : false,
+			groupSummary : true,
+			groupSummaryPos :  'header',
+			frozenStaticCols : false
+		}, options || {});
+		this.each(function(){
+
+			var 
+				row,
+				rowindex,
+				i,
+				
+				rowlen = data.length,
+				xlen, ylen, aggrlen,
+				tmp,
+				newObj,
+				r=0;
+			// utility funcs
+			/* 
+			 * Filter the data to a given criteria. Return the firt occurance
+			 */
+			function find(ar, fun, extra) {
+				var res;
+				res = _pivotfilter.call(ar, fun, extra);
+				return res.length > 0 ? res[0] : null;
+			}
+			/*
+			 * Check if the grouped row column exist (See find)
+			 * If the row is not find in pivot rows retun null,
+			 * otherviese the column
+			 */
+			function findGroup(item, index) {
+				var j = 0, ret = true, i;
+				for(i in item) {
+					if(item[i] != this[j]) {
+						ret =  false;
+						break;
+					}
+					j++;
+					if(j>=this.length) {
+						break;
+					}
+				}
+				if(ret) {
+					rowindex =  index;
+				}
+				return ret;
+			}
+			/*
+			 * Perform calculations of the pivot values.
+			 */
+			function calculation(oper, v, field, rc)  {
+				var ret;
+				switch (oper) {
+					case  "sum" : 
+						ret = parseFloat(v||0) + parseFloat((rc[field]||0));
+						break;
+					case "count" :
+						if(v==="" || v == null) {
+							v=0;
+						}
+						if(rc.hasOwnProperty(field)) {
+							ret = v+1;
+						} else {
+							ret = 0;
+						}
+						break;
+					case "min" : 
+						if(v==="" || v == null) {
+							ret = parseFloat(rc[field]||0);
+						} else {
+							ret =Math.min(parseFloat(v),parseFloat(rc[field]||0));
+						}
+						break;
+					case "max" : 
+						if(v==="" || v == null) {
+							ret = parseFloat(rc[field]||0);
+						} else {
+							ret = Math.max(parseFloat(v),parseFloat(rc[field]||0));
+						}
+						break;
+				}
+				return ret;
+			}
+			/*
+			 * The function agragates the values of the pivot grid.
+			 * Return the current row with pivot summary values
+			 */
+			function agregateFunc ( row, aggr, value, curr) {
+				// default is sum
+				var arrln = aggr.length, i, label, j, jv, mainval="",swapvals=[];
+				if($.isArray(value)) {
+					jv = value.length;
+					swapvals = value;
+				} else {
+					jv = 1;
+					swapvals[0]=value;
+				}
+				member = [];
+				labels = [];
+				member.root = 0;
+				for(j=0;j<jv;j++) {
+					var  tmpmember = [], vl;
+					for(i=0; i < arrln; i++) {
+						if(value == null) {
+							label = $.trim(aggr[i].member)+"_"+aggr[i].aggregator;
+							vl = label;
+							swapvals[0]= vl;
+						} else {
+							vl = value[j].replace(/\s+/g, '');
+							try {
+								label = (arrln === 1 ? mainval + vl : mainval + vl+"_"+aggr[i].aggregator+"_" + String(i));
+							} catch(e) {}
+						}
+						label = !isNaN(parseInt(label,10)) ? label + " " : label;
+						curr[label] =  tmpmember[label] = calculation( aggr[i].aggregator, curr[label], aggr[i].member, row);
+						if(j<=1 && vl !==  '_r_Totals' && mainval === "") { // this does not fix full the problem
+							mainval = vl;
+						}
+					}
+					//vl = !isNaN(parseInt(vl,10)) ? vl + " " : vl;
+					member[label] = tmpmember;
+					labels[label] = swapvals[j];
+				}
+				return curr;
+			}
+			// Making the row totals without to add in yDimension
+			if(o.rowTotals && o.yDimension.length > 0) {
+				var dn = o.yDimension[0].dataName;
+				o.yDimension.splice(0,0,{dataName:dn});
+				o.yDimension[0].converter =  function(){ return '_r_Totals'; };
+			}
+			// build initial columns (colModel) from xDimension
+			xlen = $.isArray(o.xDimension) ? o.xDimension.length : 0;
+			ylen = o.yDimension.length;
+			aggrlen  = $.isArray(o.aggregates) ? o.aggregates.length : 0;
+			if(xlen === 0 || aggrlen === 0) {
+				throw("xDimension or aggregates optiona are not set!");
+			}
+			var colc;
+			for(i = 0; i< xlen; i++) {
+				colc = {name:o.xDimension[i].dataName, frozen: o.frozenStaticCols};
+				if(o.xDimension[i].isGroupField == null) {
+					o.xDimension[i].isGroupField =  true;
+				}
+				colc = $.extend(true, colc, o.xDimension[i]);
+				columns.push( colc );
+			}
+			var groupfields = xlen - 1, tree={};
+			//tree = { text: 'root', leaf: false, children: [] };
+			//loop over alll the source data
+			while( r < rowlen ) {
+				row = data[r];
+				var xValue = [];
+				var yValue = []; 
+				tmp = {};
+				i = 0;
+				// build the data from xDimension
+				do {
+					xValue[i]  = $.trim(row[o.xDimension[i].dataName]);
+					tmp[o.xDimension[i].dataName] = xValue[i];
+					i++;
+				} while( i < xlen );
+				
+				var k = 0;
+				rowindex = -1;
+				// check to see if the row is in our new pivotrow set
+				newObj = find(pivotrows, findGroup, xValue);
+				if(!newObj) {
+					// if the row is not in our set
+					k = 0;
+					// if yDimension is set
+					if(ylen>=1) {
+						// build the cols set in yDimension
+						for(k=0;k<ylen;k++) {
+							yValue[k] = $.trim(row[o.yDimension[k].dataName]);
+							// Check to see if we have user defined conditions
+							if(o.yDimension[k].converter && $.isFunction(o.yDimension[k].converter)) {
+								yValue[k] = o.yDimension[k].converter.call(this, yValue[k], xValue, yValue);
+							}
+						}
+						// make the colums based on aggregates definition 
+						// and return the members for late calculation
+						tmp = agregateFunc( row, o.aggregates, yValue, tmp );
+					} else  if( ylen === 0 ) {
+						// if not set use direct the aggregates 
+						tmp = agregateFunc( row, o.aggregates, null, tmp );
+					}
+					// add the result in pivot rows
+					pivotrows.push( tmp );
+				} else {
+					// the pivot exists
+					if( rowindex >= 0) {
+						k = 0;
+						// make the recalculations 
+						if(ylen>=1) {
+							for(k=0;k<ylen;k++) {
+								yValue[k] = $.trim(row[o.yDimension[k].dataName]);
+								if(o.yDimension[k].converter && $.isFunction(o.yDimension[k].converter)) {
+									yValue[k] = o.yDimension[k].converter.call(this, yValue[k], xValue, yValue);
+								}
+							}
+							newObj = agregateFunc( row, o.aggregates, yValue, newObj );
+						} else  if( ylen === 0 ) {
+							newObj = agregateFunc( row, o.aggregates, null, newObj );
+						}
+						// update the row
+						pivotrows[rowindex] = newObj;
+					}
+				}
+				var kj=0, current = null,existing = null, kk;
+				// Build a JSON tree from the member (see aggregateFunc) 
+				// to make later the columns 
+				// 
+				for (kk in member) {
+					if(member.hasOwnProperty( kk )) {
+						if(kj === 0) {
+							if (!tree.children||tree.children === undefined){
+								tree = { text: kk, level : 0, children: [], label: kk  };
+							}
+							current = tree.children;
+						} else {
+							existing = null;
+							for (i=0; i < current.length; i++) {
+								if (current[i].text === kk) {
+								//current[i].fields=member[kk];
+									existing = current[i];
+									break;
+								}
+							}
+							if (existing) {
+								current = existing.children;
+							} else {
+								current.push({ children: [], text: kk, level: kj,  fields: member[kk], label: labels[kk] });
+								current = current[current.length - 1].children;
+							}
+						}
+						kj++;
+					}
+				}
+				r++;
+			}
+			var  lastval=[], initColLen = columns.length, swaplen = initColLen;
+			if(ylen>0) {
+				headers[ylen-1] = {	useColSpanStyle: false,	groupHeaders: []};
+			}
+			/*
+			 * Recursive function which uses the tree to build the 
+			 * columns from the pivot values and set the group Headers
+			 */
+			function list(items) {
+				var l, j, key, k, col;
+				for (key in items) { // iterate
+					if (items.hasOwnProperty(key)) {
+					// write amount of spaces according to level
+					// and write name and newline
+						if(typeof items[key] !== "object") {
+							// If not a object build the header of the appropriate level
+							if( key === 'level') {
+								if(lastval[items.level] === undefined) {
+									lastval[items.level] ='';
+									if(items.level>0 && items.text !== '_r_Totals') {
+										headers[items.level-1] = {
+											useColSpanStyle: false,
+											groupHeaders: []
+										};
+									}
+								}
+								if(lastval[items.level] !== items.text && items.children.length && items.text !== '_r_Totals') {
+									if(items.level>0) {
+										headers[items.level-1].groupHeaders.push({
+											titleText: items.label,
+											numberOfColumns : 0
+										});
+										var collen = headers[items.level-1].groupHeaders.length-1,
+										colpos = collen === 0 ? swaplen : initColLen+aggrlen;
+										if(items.level-1=== (o.rowTotals ? 1 : 0)) {
+											if(collen>0) {
+												var l1 = headers[items.level-1].groupHeaders[collen-1].numberOfColumns;
+												if(l1) {
+													colpos = l1 + 1 + o.aggregates.length;
+												}
+											}
+										}
+										headers[items.level-1].groupHeaders[collen].startColumnName = columns[colpos].name;
+										headers[items.level-1].groupHeaders[collen].numberOfColumns = columns.length - colpos;
+										initColLen = columns.length;
+									}
+								}
+								lastval[items.level] = items.text;
+							}
+							// This is in case when the member contain more than one summary item
+							if(items.level === ylen  && key==='level' && ylen >0) {
+								if( aggrlen > 1){
+									var ll=1;
+									for( l in items.fields) {
+										if(ll===1) {
+											headers[ylen-1].groupHeaders.push({startColumnName: l, numberOfColumns: 1, titleText: items.text});
+										}
+										ll++;
+									}
+									headers[ylen-1].groupHeaders[headers[ylen-1].groupHeaders.length-1].numberOfColumns = ll-1;
+								} else {
+									headers.splice(ylen-1,1);
+								}
+							}
+						}
+						// if object, call recursively
+						if (items[key] != null && typeof items[key] === "object") {
+							list(items[key]);
+						}
+						// Finally build the coulumns
+						if( key === 'level') {
+							if(items.level >0){
+								j=0;
+								for(l in items.fields) {
+									if(items.fields.hasOwnProperty( l )) {
+										col = {};
+										for(k in o.aggregates[j]) {
+											if(o.aggregates[j].hasOwnProperty(k)) {
+												switch( k ) {
+													case 'member':
+													case 'label':
+													case 'aggregator':
+														break;
+													default:
+														col[k] = o.aggregates[j][k];
+												}
+											}
+										}	
+										if(aggrlen>1) {
+											col.name = l;
+											col.label = o.aggregates[j].label || items.label;
+										} else {
+											col.name = items.text;
+											col.label = items.text==='_r_Totals' ? o.rowTotalsText : items.label;
+										}
+										columns.push (col);
+										j++;
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+
+			list( tree );
+			var nm;
+			// loop again trougth the pivot rows in order to build grand total 
+			if(o.colTotals) {
+				var plen = pivotrows.length;
+				while(plen--) {
+					for(i=xlen;i<columns.length;i++) {
+						nm = columns[i].name;
+						if(!summaries[nm]) {
+							summaries[nm] = parseFloat(pivotrows[plen][nm] || 0);
+						} else {
+							summaries[nm] += parseFloat(pivotrows[plen][nm] || 0);
+						}
+					}
+				}
+			}
+			// based on xDimension  levels build grouping 
+			if( groupfields > 0) {
+				for(i=0;i<groupfields;i++) {
+					if(columns[i].isGroupField) {
+						groupOptions.groupingView.groupField.push(columns[i].name);
+						groupOptions.groupingView.groupSummary.push(o.groupSummary);
+						groupOptions.groupingView.groupSummaryPos.push(o.groupSummaryPos);
+					}
+				}
+			} else {
+				// no grouping is needed
+				groupOptions.grouping = false;
+			}
+			groupOptions.sortname = columns[groupfields].name;
+			groupOptions.groupingView.hideFirstGroupCol = true;
+		});
+		// return the final result.
+		return { "colModel" : columns, "rows": pivotrows, "groupOptions" : groupOptions, "groupHeaders" :  headers, summary : summaries };
+	},
+	jqPivot : function( data, pivotOpt, gridOpt, ajaxOpt) {
+		return this.each(function(){
+			var $t = this;
+
+			function pivot( data) {
+				var pivotGrid = jQuery($t).jqGrid('pivotSetup',data, pivotOpt),
+				footerrow = $.assocArraySize(pivotGrid.summary) > 0 ? true : false,
+				query= $.jgrid.from(pivotGrid.rows), i;
+				for(i=0; i< pivotGrid.groupOptions.groupingView.groupField.length; i++) {
+					query.orderBy(pivotGrid.groupOptions.groupingView.groupField[i], "a", 'text', '');
+				}
+				jQuery($t).jqGrid($.extend(true, {
+					datastr: $.extend(query.select(),footerrow ? {userdata:pivotGrid.summary} : {}),
+					datatype: "jsonstring",
+					footerrow : footerrow,
+					userDataOnFooter: footerrow,
+					colModel: pivotGrid.colModel,
+					viewrecords: true,
+					sortname: pivotOpt.xDimension[0].dataName // ?????
+				}, pivotGrid.groupOptions, gridOpt || {}));
+				var gHead = pivotGrid.groupHeaders;
+				if(gHead.length) {
+					for( i = 0;i < gHead.length ; i++) {
+						if(gHead[i] && gHead[i].groupHeaders.length) {
+							jQuery($t).jqGrid('setGroupHeaders',gHead[i]);
+						}
+					}
+				}
+				if(pivotOpt.frozenStaticCols) {
+					jQuery($t).jqGrid("setFrozenColumns");
+				}
+			}
+
+			if(typeof data === "string") {
+				$.ajax($.extend({
+					url : data,
+					dataType: 'json',
+					success : function(response) {
+						pivot($.jgrid.getAccessor(response, ajaxOpt && ajaxOpt.reader ? ajaxOpt.reader: 'rows') );
+					}
+				}, ajaxOpt || {}) );
+			} else {
+				pivot( data );
+			}
+		});
+	}
+});
+})(jQuery);

+ 307 - 0
app/Resources/public/assets/jqgrid/js/grid.subgrid.js

@@ -0,0 +1,307 @@
+/*jshint eqeqeq:false */
+/*global jQuery */
+(function($){
+/**
+ * jqGrid extension for SubGrid Data
+ * 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-2.0.html
+**/
+"use strict";
+$.jgrid.extend({
+setSubGrid : function () {
+	return this.each(function (){
+		var $t = this, cm, i,
+		suboptions = {
+			plusicon : "ui-icon-plus",
+			minusicon : "ui-icon-minus",
+			openicon: "ui-icon-carat-1-sw",
+			expandOnLoad:  false,
+			delayOnLoad : 50,
+			selectOnExpand : false,
+			selectOnCollapse : false,
+			reloadOnExpand : true
+		};
+		$t.p.subGridOptions = $.extend(suboptions, $t.p.subGridOptions || {});
+		$t.p.colNames.unshift("");
+		$t.p.colModel.unshift({name:'subgrid',width: $.jgrid.cell_width ?  $t.p.subGridWidth+$t.p.cellLayout : $t.p.subGridWidth,sortable: false,resizable:false,hidedlg:true,search:false,fixed:true});
+		cm = $t.p.subGridModel;
+		if(cm[0]) {
+			cm[0].align = $.extend([],cm[0].align || []);
+			for(i=0;i<cm[0].name.length;i++) { cm[0].align[i] = cm[0].align[i] || 'left';}
+		}
+	});
+},
+addSubGridCell :function (pos,iRow) {
+	var prp='',ic,sid;
+	this.each(function(){
+		prp = this.formatCol(pos,iRow);
+		sid= this.p.id;
+		ic = this.p.subGridOptions.plusicon;
+	});
+	return "<td role=\"gridcell\" aria-describedby=\""+sid+"_subgrid\" class=\"ui-sgcollapsed sgcollapsed\" "+prp+"><a style='cursor:pointer;'><span class='ui-icon "+ic+"'></span></a></td>";
+},
+addSubGrid : function( pos, sind ) {
+	return this.each(function(){
+		var ts = this;
+		if (!ts.grid ) { return; }
+		//-------------------------
+		var subGridCell = function(trdiv,cell,pos)
+		{
+			var tddiv = $("<td align='"+ts.p.subGridModel[0].align[pos]+"'></td>").html(cell);
+			$(trdiv).append(tddiv);
+		};
+		var subGridXml = function(sjxml, sbid){
+			var tddiv, i,  sgmap,
+			dummy = $("<table cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>"),
+			trdiv = $("<tr></tr>");
+			for (i = 0; i<ts.p.subGridModel[0].name.length; i++) {
+				tddiv = $("<th class='ui-state-default ui-th-subgrid ui-th-column ui-th-"+ts.p.direction+"'></th>");
+				$(tddiv).html(ts.p.subGridModel[0].name[i]);
+				$(tddiv).width( ts.p.subGridModel[0].width[i]);
+				$(trdiv).append(tddiv);
+			}
+			$(dummy).append(trdiv);
+			if (sjxml){
+				sgmap = ts.p.xmlReader.subgrid;
+				$(sgmap.root+" "+sgmap.row, sjxml).each( function(){
+					trdiv = $("<tr class='ui-widget-content ui-subtblcell'></tr>");
+					if(sgmap.repeatitems === true) {
+						$(sgmap.cell,this).each( function(i) {
+							subGridCell(trdiv, $(this).text() || '&#160;',i);
+						});
+					} else {
+						var f = ts.p.subGridModel[0].mapping || ts.p.subGridModel[0].name;
+						if (f) {
+							for (i=0;i<f.length;i++) {
+								subGridCell(trdiv, $(f[i],this).text() || '&#160;',i);
+							}
+						}
+					}
+					$(dummy).append(trdiv);
+				});
+			}
+			var pID = $("table:first",ts.grid.bDiv).attr("id")+"_";
+			$("#"+$.jgrid.jqID(pID+sbid)).append(dummy);
+			ts.grid.hDiv.loading = false;
+			$("#load_"+$.jgrid.jqID(ts.p.id)).hide();
+			return false;
+		};
+		var subGridJson = function(sjxml, sbid){
+			var tddiv,result,i,cur, sgmap,j,
+			dummy = $("<table cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>"),
+			trdiv = $("<tr></tr>");
+			for (i = 0; i<ts.p.subGridModel[0].name.length; i++) {
+				tddiv = $("<th class='ui-state-default ui-th-subgrid ui-th-column ui-th-"+ts.p.direction+"'></th>");
+				$(tddiv).html(ts.p.subGridModel[0].name[i]);
+				$(tddiv).width( ts.p.subGridModel[0].width[i]);
+				$(trdiv).append(tddiv);
+			}
+			$(dummy).append(trdiv);
+			if (sjxml){
+				sgmap = ts.p.jsonReader.subgrid;
+				result = $.jgrid.getAccessor(sjxml, sgmap.root);
+				if ( result !== undefined ) {
+					for (i=0;i<result.length;i++) {
+						cur = result[i];
+						trdiv = $("<tr class='ui-widget-content ui-subtblcell'></tr>");
+						if(sgmap.repeatitems === true) {
+							if(sgmap.cell) { cur=cur[sgmap.cell]; }
+							for (j=0;j<cur.length;j++) {
+								subGridCell(trdiv, cur[j] || '&#160;',j);
+							}
+						} else {
+							var f = ts.p.subGridModel[0].mapping || ts.p.subGridModel[0].name;
+							if(f.length) {
+								for (j=0;j<f.length;j++) {
+									subGridCell(trdiv, cur[f[j]] || '&#160;',j);
+								}
+							}
+						}
+						$(dummy).append(trdiv);
+					}
+				}
+			}
+			var pID = $("table:first",ts.grid.bDiv).attr("id")+"_";
+			$("#"+$.jgrid.jqID(pID+sbid)).append(dummy);
+			ts.grid.hDiv.loading = false;
+			$("#load_"+$.jgrid.jqID(ts.p.id)).hide();
+			return false;
+		};
+		var populatesubgrid = function( rd )
+		{
+			var sid,dp, i, j;
+			sid = $(rd).attr("id");
+			dp = {nd_: (new Date().getTime())};
+			dp[ts.p.prmNames.subgridid]=sid;
+			if(!ts.p.subGridModel[0]) { return false; }
+			if(ts.p.subGridModel[0].params) {
+				for(j=0; j < ts.p.subGridModel[0].params.length; j++) {
+					for(i=0; i<ts.p.colModel.length; i++) {
+						if(ts.p.colModel[i].name === ts.p.subGridModel[0].params[j]) {
+							dp[ts.p.colModel[i].name]= $("td:eq("+i+")",rd).text().replace(/\&#160\;/ig,'');
+						}
+					}
+				}
+			}
+			if(!ts.grid.hDiv.loading) {
+				ts.grid.hDiv.loading = true;
+				$("#load_"+$.jgrid.jqID(ts.p.id)).show();
+				if(!ts.p.subgridtype) { ts.p.subgridtype = ts.p.datatype; }
+				if($.isFunction(ts.p.subgridtype)) {
+					ts.p.subgridtype.call(ts, dp);
+				} else {
+					ts.p.subgridtype = ts.p.subgridtype.toLowerCase();
+				}
+				switch(ts.p.subgridtype) {
+					case "xml":
+					case "json":
+					$.ajax($.extend({
+						type:ts.p.mtype,
+						url: $.isFunction(ts.p.subGridUrl) ? ts.p.subGridUrl.call(ts, dp) : ts.p.subGridUrl,
+						dataType:ts.p.subgridtype,
+						data: $.isFunction(ts.p.serializeSubGridData)? ts.p.serializeSubGridData.call(ts, dp) : dp,
+						complete: function(sxml) {
+							if(ts.p.subgridtype === "xml") {
+								subGridXml(sxml.responseXML, sid);
+							} else {
+								subGridJson($.jgrid.parse(sxml.responseText),sid);
+							}
+							sxml=null;
+						}
+					}, $.jgrid.ajaxOptions, ts.p.ajaxSubgridOptions || {}));
+					break;
+				}
+			}
+			return false;
+		};
+		var _id, pID,atd, nhc=0, bfsc, r;
+		$.each(ts.p.colModel,function(){
+			if(this.hidden === true || this.name === 'rn' || this.name === 'cb') {
+				nhc++;
+			}
+		});
+		var len = ts.rows.length, i=1;
+		if( sind !== undefined && sind > 0) {
+			i = sind;
+			len = sind+1;
+		}
+		while(i < len) {
+			if($(ts.rows[i]).hasClass('jqgrow')) {
+				if(ts.p.scroll) {
+					$(ts.rows[i].cells[pos]).unbind('click');
+				}
+				$(ts.rows[i].cells[pos]).bind('click', function() {
+					var tr = $(this).parent("tr")[0];
+					r = tr.nextSibling;
+					if($(this).hasClass("sgcollapsed")) {
+						pID = ts.p.id;
+						_id = tr.id;
+						if(ts.p.subGridOptions.reloadOnExpand === true || ( ts.p.subGridOptions.reloadOnExpand === false && !$(r).hasClass('ui-subgrid') ) ) {
+							atd = pos >=1 ? "<td colspan='"+pos+"'>&#160;</td>":"";
+							bfsc = $(ts).triggerHandler("jqGridSubGridBeforeExpand", [pID + "_" + _id, _id]);
+							bfsc = (bfsc === false || bfsc === 'stop') ? false : true;
+							if(bfsc && $.isFunction(ts.p.subGridBeforeExpand)) {
+								bfsc = ts.p.subGridBeforeExpand.call(ts, pID+"_"+_id,_id);
+							}
+							if(bfsc === false) {return false;}
+							$(tr).after( "<tr role='row' class='ui-subgrid'>"+atd+"<td class='ui-widget-content subgrid-cell'><span class='ui-icon "+ts.p.subGridOptions.openicon+"'></span></td><td colspan='"+parseInt(ts.p.colNames.length-1-nhc,10)+"' class='ui-widget-content subgrid-data'><div id="+pID+"_"+_id+" class='tablediv'></div></td></tr>" );
+							$(ts).triggerHandler("jqGridSubGridRowExpanded", [pID + "_" + _id, _id]);
+							if( $.isFunction(ts.p.subGridRowExpanded)) {
+								ts.p.subGridRowExpanded.call(ts, pID+"_"+ _id,_id);
+							} else {
+								populatesubgrid(tr);
+							}
+						} else {
+							$(r).show();
+						}
+						$(this).html("<a style='cursor:pointer;'><span class='ui-icon "+ts.p.subGridOptions.minusicon+"'></span></a>").removeClass("sgcollapsed").addClass("sgexpanded");
+						if(ts.p.subGridOptions.selectOnExpand) {
+							$(ts).jqGrid('setSelection',_id);
+						}
+					} else if($(this).hasClass("sgexpanded")) {
+						bfsc = $(ts).triggerHandler("jqGridSubGridRowColapsed", [pID + "_" + _id, _id]);
+						bfsc = (bfsc === false || bfsc === 'stop') ? false : true;
+						_id = tr.id;
+						if( bfsc &&  $.isFunction(ts.p.subGridRowColapsed)) {
+							bfsc = ts.p.subGridRowColapsed.call(ts, pID+"_"+_id,_id );
+						}
+						if(bfsc===false) {return false;}
+						if(ts.p.subGridOptions.reloadOnExpand === true) {
+							$(r).remove(".ui-subgrid");
+						} else if($(r).hasClass('ui-subgrid')) { // incase of dynamic deleting
+							$(r).hide();
+						}
+						$(this).html("<a style='cursor:pointer;'><span class='ui-icon "+ts.p.subGridOptions.plusicon+"'></span></a>").removeClass("sgexpanded").addClass("sgcollapsed");
+						if(ts.p.subGridOptions.selectOnCollapse) {
+							$(ts).jqGrid('setSelection',_id);
+						}
+					}
+					return false;
+				});
+			}
+			i++;
+		}
+		if(ts.p.subGridOptions.expandOnLoad === true) {
+			$(ts.rows).filter('.jqgrow').each(function(index,row){
+				$(row.cells[0]).click();
+			});
+		}
+		ts.subGridXml = function(xml,sid) {subGridXml(xml,sid);};
+		ts.subGridJson = function(json,sid) {subGridJson(json,sid);};
+	});
+},
+expandSubGridRow : function(rowid) {
+	return this.each(function () {
+		var $t = this;
+		if(!$t.grid && !rowid) {return;}
+		if($t.p.subGrid===true) {
+			var rc = $(this).jqGrid("getInd",rowid,true);
+			if(rc) {
+				var sgc = $("td.sgcollapsed",rc)[0];
+				if(sgc) {
+					$(sgc).trigger("click");
+				}
+			}
+		}
+	});
+},
+collapseSubGridRow : function(rowid) {
+	return this.each(function () {
+		var $t = this;
+		if(!$t.grid && !rowid) {return;}
+		if($t.p.subGrid===true) {
+			var rc = $(this).jqGrid("getInd",rowid,true);
+			if(rc) {
+				var sgc = $("td.sgexpanded",rc)[0];
+				if(sgc) {
+					$(sgc).trigger("click");
+				}
+			}
+		}
+	});
+},
+toggleSubGridRow : function(rowid) {
+	return this.each(function () {
+		var $t = this;
+		if(!$t.grid && !rowid) {return;}
+		if($t.p.subGrid===true) {
+			var rc = $(this).jqGrid("getInd",rowid,true);
+			if(rc) {
+				var sgc = $("td.sgcollapsed",rc)[0];
+				if(sgc) {
+					$(sgc).trigger("click");
+				} else {
+					sgc = $("td.sgexpanded",rc)[0];
+					if(sgc) {
+						$(sgc).trigger("click");
+					}
+				}
+			}
+		}
+	});
+}
+});
+})(jQuery);

+ 106 - 0
app/Resources/public/assets/jqgrid/js/grid.tbltogrid.js

@@ -0,0 +1,106 @@
+/*
+ Transform a table to a jqGrid.
+ Peter Romianowski <peter.romianowski@optivo.de> 
+ If the first column of the table contains checkboxes or
+ radiobuttons then the jqGrid is made selectable.
+*/
+// Addition - selector can be a class or id
+function tableToGrid(selector, options) {
+jQuery(selector).each(function() {
+	if(this.grid) {return;} //Adedd from Tony Tomov
+	// This is a small "hack" to make the width of the jqGrid 100%
+	jQuery(this).width("99%");
+	var w = jQuery(this).width();
+
+	// Text whether we have single or multi select
+	var inputCheckbox = jQuery('tr td:first-child input[type=checkbox]:first', jQuery(this));
+	var inputRadio = jQuery('tr td:first-child input[type=radio]:first', jQuery(this));
+	var selectMultiple = inputCheckbox.length > 0;
+	var selectSingle = !selectMultiple && inputRadio.length > 0;
+	var selectable = selectMultiple || selectSingle;
+	//var inputName = inputCheckbox.attr("name") || inputRadio.attr("name");
+
+	// Build up the columnModel and the data
+	var colModel = [];
+	var colNames = [];
+	jQuery('th', jQuery(this)).each(function() {
+		if (colModel.length === 0 && selectable) {
+			colModel.push({
+				name: '__selection__',
+				index: '__selection__',
+				width: 0,
+				hidden: true
+			});
+			colNames.push('__selection__');
+		} else {
+			colModel.push({
+				name: jQuery(this).attr("id") || jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(' ').join('_'),
+				index: jQuery(this).attr("id") || jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(' ').join('_'),
+				width: jQuery(this).width() || 150
+			});
+			colNames.push(jQuery(this).html());
+		}
+	});
+	var data = [];
+	var rowIds = [];
+	var rowChecked = [];
+	jQuery('tbody > tr', jQuery(this)).each(function() {
+		var row = {};
+		var rowPos = 0;
+		jQuery('td', jQuery(this)).each(function() {
+			if (rowPos === 0 && selectable) {
+				var input = jQuery('input', jQuery(this));
+				var rowId = input.attr("value");
+				rowIds.push(rowId || data.length);
+				if (input.is(":checked")) {
+					rowChecked.push(rowId);
+				}
+				row[colModel[rowPos].name] = input.attr("value");
+			} else {
+				row[colModel[rowPos].name] = jQuery(this).html();
+			}
+			rowPos++;
+		});
+		if(rowPos >0) { data.push(row); }
+	});
+
+	// Clear the original HTML table
+	jQuery(this).empty();
+
+	// Mark it as jqGrid
+	jQuery(this).addClass("scroll");
+
+	jQuery(this).jqGrid(jQuery.extend({
+		datatype: "local",
+		width: w,
+		colNames: colNames,
+		colModel: colModel,
+		multiselect: selectMultiple
+		//inputName: inputName,
+		//inputValueCol: imputName != null ? "__selection__" : null
+	}, options || {}));
+
+	// Add data
+	var a;
+	for (a = 0; a < data.length; a++) {
+		var id = null;
+		if (rowIds.length > 0) {
+			id = rowIds[a];
+			if (id && id.replace) {
+				// We have to do this since the value of a checkbox
+				// or radio button can be anything 
+				id = encodeURIComponent(id).replace(/[.\-%]/g, "_");
+			}
+		}
+		if (id === null) {
+			id = a + 1;
+		}
+		jQuery(this).jqGrid("addRowData",id, data[a]);
+	}
+
+	// Set the selection
+	for (a = 0; a < rowChecked.length; a++) {
+		jQuery(this).jqGrid("setSelection",rowChecked[a]);
+	}
+});
+};

+ 682 - 0
app/Resources/public/assets/jqgrid/js/grid.treegrid.js

@@ -0,0 +1,682 @@
+/**
+ * jqGrid extension - Tree Grid
+ * 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
+**/
+
+/*jshint eqeqeq:false */
+/*global jQuery */
+(function($) {
+"use strict";
+$.jgrid.extend({
+	setTreeNode : function(i, len){
+		return this.each(function(){
+			var $t = this;
+			if( !$t.grid || !$t.p.treeGrid ) {return;}
+			var expCol = $t.p.expColInd,
+			expanded = $t.p.treeReader.expanded_field,
+			isLeaf = $t.p.treeReader.leaf_field,
+			level = $t.p.treeReader.level_field,
+			icon = $t.p.treeReader.icon_field,
+			loaded = $t.p.treeReader.loaded,  lft, rgt, curLevel, ident,lftpos, twrap,
+			ldat, lf;
+			while(i<len) {
+				var ind = $.jgrid.stripPref($t.p.idPrefix, $t.rows[i].id), dind = $t.p._index[ind], expan;
+				ldat = $t.p.data[dind];
+				//$t.rows[i].level = ldat[level];
+				if($t.p.treeGridModel === 'nested') {
+					if(!ldat[isLeaf]) {
+					lft = parseInt(ldat[$t.p.treeReader.left_field],10);
+					rgt = parseInt(ldat[$t.p.treeReader.right_field],10);
+					// NS Model
+						ldat[isLeaf] = (rgt === lft+1) ? 'true' : 'false';
+						$t.rows[i].cells[$t.p._treeleafpos].innerHTML = ldat[isLeaf];
+					}
+				}
+				//else {
+					//row.parent_id = rd[$t.p.treeReader.parent_id_field];
+				//}
+				curLevel = parseInt(ldat[level],10);
+				if($t.p.tree_root_level === 0) {
+					ident = curLevel+1;
+					lftpos = curLevel;
+				} else {
+					ident = curLevel;
+					lftpos = curLevel -1;
+				}
+				twrap = "<div class='tree-wrap tree-wrap-"+$t.p.direction+"' style='width:"+(ident*18)+"px;'>";
+				twrap += "<div style='"+($t.p.direction==="rtl" ? "right:" : "left:")+(lftpos*18)+"px;' class='ui-icon ";
+
+
+				if(ldat[loaded] !== undefined) {
+					if(ldat[loaded]==="true" || ldat[loaded]===true) {
+						ldat[loaded] = true;
+					} else {
+						ldat[loaded] = false;
+					}
+				}
+				if(ldat[isLeaf] === "true" || ldat[isLeaf] === true) {
+					twrap += ((ldat[icon] !== undefined && ldat[icon] !== "") ? ldat[icon] : $t.p.treeIcons.leaf)+" tree-leaf treeclick";
+					ldat[isLeaf] = true;
+					lf="leaf";
+				} else {
+					ldat[isLeaf] = false;
+					lf="";
+				}
+				ldat[expanded] = ((ldat[expanded] === "true" || ldat[expanded] === true) ? true : false) && (ldat[loaded] || ldat[loaded] === undefined);
+				if(ldat[expanded] === false) {
+					twrap += ((ldat[isLeaf] === true) ? "'" : $t.p.treeIcons.plus+" tree-plus treeclick'");
+				} else {
+					twrap += ((ldat[isLeaf] === true) ? "'" : $t.p.treeIcons.minus+" tree-minus treeclick'");
+				}
+				
+				twrap += "></div></div>";
+				$($t.rows[i].cells[expCol]).wrapInner("<span class='cell-wrapper"+lf+"'></span>").prepend(twrap);
+
+				if(curLevel !== parseInt($t.p.tree_root_level,10)) {
+					var pn = $($t).jqGrid('getNodeParent',ldat);
+					expan = pn && pn.hasOwnProperty(expanded) ? pn[expanded] : true;
+					if( !expan ){
+						$($t.rows[i]).css("display","none");
+					}
+				}
+				$($t.rows[i].cells[expCol])
+					.find("div.treeclick")
+					.bind("click",function(e){
+						var target = e.target || e.srcElement,
+						ind2 =$.jgrid.stripPref($t.p.idPrefix,$(target,$t.rows).closest("tr.jqgrow")[0].id),
+						pos = $t.p._index[ind2];
+						if(!$t.p.data[pos][isLeaf]){
+							if($t.p.data[pos][expanded]){
+								$($t).jqGrid("collapseRow",$t.p.data[pos]);
+								$($t).jqGrid("collapseNode",$t.p.data[pos]);
+							} else {
+								$($t).jqGrid("expandRow",$t.p.data[pos]);
+								$($t).jqGrid("expandNode",$t.p.data[pos]);
+							}
+						}
+						return false;
+					});
+				if($t.p.ExpandColClick === true) {
+					$($t.rows[i].cells[expCol])
+						.find("span.cell-wrapper")
+						.css("cursor","pointer")
+						.bind("click",function(e) {
+							var target = e.target || e.srcElement,
+							ind2 =$.jgrid.stripPref($t.p.idPrefix,$(target,$t.rows).closest("tr.jqgrow")[0].id),
+							pos = $t.p._index[ind2];
+							if(!$t.p.data[pos][isLeaf]){
+								if($t.p.data[pos][expanded]){
+									$($t).jqGrid("collapseRow",$t.p.data[pos]);
+									$($t).jqGrid("collapseNode",$t.p.data[pos]);
+								} else {
+									$($t).jqGrid("expandRow",$t.p.data[pos]);
+									$($t).jqGrid("expandNode",$t.p.data[pos]);
+								}
+							}
+							$($t).jqGrid("setSelection",ind2);
+							return false;
+						});
+				}
+				i++;
+			}
+
+		});
+	},
+	setTreeGrid : function() {
+		return this.each(function (){
+			var $t = this, i=0, pico, ecol = false, nm, key, tkey, dupcols=[];
+			if(!$t.p.treeGrid) {return;}
+			if(!$t.p.treedatatype ) {$.extend($t.p,{treedatatype: $t.p.datatype});}
+			$t.p.subGrid = false;$t.p.altRows =false;
+			$t.p.pgbuttons = false;$t.p.pginput = false;
+			$t.p.gridview =  true;
+			if($t.p.rowTotal === null ) { $t.p.rowNum = 10000; }
+			$t.p.multiselect = false;$t.p.rowList = [];
+			$t.p.expColInd = 0;
+			pico = 'ui-icon-triangle-1-' + ($t.p.direction==="rtl" ? 'w' : 'e');
+			$t.p.treeIcons = $.extend({plus:pico,minus:'ui-icon-triangle-1-s',leaf:'ui-icon-radio-off'},$t.p.treeIcons || {});
+			if($t.p.treeGridModel === 'nested') {
+				$t.p.treeReader = $.extend({
+					level_field: "level",
+					left_field:"lft",
+					right_field: "rgt",
+					leaf_field: "isLeaf",
+					expanded_field: "expanded",
+					loaded: "loaded",
+					icon_field: "icon"
+				},$t.p.treeReader);
+			} else if($t.p.treeGridModel === 'adjacency') {
+				$t.p.treeReader = $.extend({
+						level_field: "level",
+						parent_id_field: "parent",
+						leaf_field: "isLeaf",
+						expanded_field: "expanded",
+						loaded: "loaded",
+						icon_field: "icon"
+				},$t.p.treeReader );
+			}
+			for ( key in $t.p.colModel){
+				if($t.p.colModel.hasOwnProperty(key)) {
+					nm = $t.p.colModel[key].name;
+					if( nm === $t.p.ExpandColumn && !ecol ) {
+						ecol = true;
+						$t.p.expColInd = i;
+					}
+					i++;
+					//
+					for(tkey in $t.p.treeReader) {
+						if($t.p.treeReader.hasOwnProperty(tkey) && $t.p.treeReader[tkey] === nm) {
+							dupcols.push(nm);
+						}
+					}
+				}
+			}
+			$.each($t.p.treeReader,function(j,n){
+				if(n && $.inArray(n, dupcols) === -1){
+					if(j==='leaf_field') { $t.p._treeleafpos= i; }
+				i++;
+					$t.p.colNames.push(n);
+					$t.p.colModel.push({name:n,width:1,hidden:true,sortable:false,resizable:false,hidedlg:true,editable:true,search:false});
+				}
+			});			
+		});
+	},
+	expandRow: function (record){
+		this.each(function(){
+			var $t = this;
+			if(!$t.grid || !$t.p.treeGrid) {return;}
+			var childern = $($t).jqGrid("getNodeChildren",record),
+			//if ($($t).jqGrid("isVisibleNode",record)) {
+			expanded = $t.p.treeReader.expanded_field;
+			$(childern).each(function(){
+				var id  = $t.p.idPrefix + $.jgrid.getAccessor(this,$t.p.localReader.id);
+				$($($t).jqGrid('getGridRowById', id)).css("display","");
+				if(this[expanded]) {
+					$($t).jqGrid("expandRow",this);
+				}
+			});
+			//}
+		});
+	},
+	collapseRow : function (record) {
+		this.each(function(){
+			var $t = this;
+			if(!$t.grid || !$t.p.treeGrid) {return;}
+			var childern = $($t).jqGrid("getNodeChildren",record),
+			expanded = $t.p.treeReader.expanded_field;
+			$(childern).each(function(){
+				var id  = $t.p.idPrefix + $.jgrid.getAccessor(this,$t.p.localReader.id);
+				$($($t).jqGrid('getGridRowById', id)).css("display","none");
+				if(this[expanded]){
+					$($t).jqGrid("collapseRow",this);
+				}
+			});
+		});
+	},
+	// NS ,adjacency models
+	getRootNodes : function() {
+		var result = [];
+		this.each(function(){
+			var $t = this;
+			if(!$t.grid || !$t.p.treeGrid) {return;}
+			switch ($t.p.treeGridModel) {
+				case 'nested' :
+					var level = $t.p.treeReader.level_field;
+					$($t.p.data).each(function(){
+						if(parseInt(this[level],10) === parseInt($t.p.tree_root_level,10)) {
+							result.push(this);
+						}
+					});
+					break;
+				case 'adjacency' :
+					var parent_id = $t.p.treeReader.parent_id_field;
+					$($t.p.data).each(function(){
+						if(this[parent_id] === null || String(this[parent_id]).toLowerCase() === "null") {
+							result.push(this);
+						}
+					});
+					break;
+			}
+		});
+		return result;
+	},
+	getNodeDepth : function(rc) {
+		var ret = null;
+		this.each(function(){
+			if(!this.grid || !this.p.treeGrid) {return;}
+			var $t = this;
+			switch ($t.p.treeGridModel) {
+				case 'nested' :
+					var level = $t.p.treeReader.level_field;
+					ret = parseInt(rc[level],10) - parseInt($t.p.tree_root_level,10);
+					break;
+				case 'adjacency' :
+					ret = $($t).jqGrid("getNodeAncestors",rc).length;
+					break;
+			}
+		});
+		return ret;
+	},
+	getNodeParent : function(rc) {
+		var result = null;
+		this.each(function(){
+			var $t = this;
+			if(!$t.grid || !$t.p.treeGrid) {return;}
+			switch ($t.p.treeGridModel) {
+				case 'nested' :
+					var lftc = $t.p.treeReader.left_field,
+					rgtc = $t.p.treeReader.right_field,
+					levelc = $t.p.treeReader.level_field,
+					lft = parseInt(rc[lftc],10), rgt = parseInt(rc[rgtc],10), level = parseInt(rc[levelc],10);
+					$(this.p.data).each(function(){
+						if(parseInt(this[levelc],10) === level-1 && parseInt(this[lftc],10) < lft && parseInt(this[rgtc],10) > rgt) {
+							result = this;
+							return false;
+						}
+					});
+					break;
+				case 'adjacency' :
+					var parent_id = $t.p.treeReader.parent_id_field,
+					dtid = $t.p.localReader.id,
+					ind = rc[dtid], pos = $t.p._index[ind];
+					while(pos--) {
+						if($t.p.data[pos][dtid] === $.jgrid.stripPref($t.p.idPrefix, rc[parent_id])) {
+							result = $t.p.data[pos];
+							break;
+						}
+					}
+					break;
+			}
+		});
+		return result;
+	},
+	getNodeChildren : function(rc) {
+		var result = [];
+		this.each(function(){
+			var $t = this;
+			if(!$t.grid || !$t.p.treeGrid) {return;}
+			switch ($t.p.treeGridModel) {
+				case 'nested' :
+					var lftc = $t.p.treeReader.left_field,
+					rgtc = $t.p.treeReader.right_field,
+					levelc = $t.p.treeReader.level_field,
+					lft = parseInt(rc[lftc],10), rgt = parseInt(rc[rgtc],10), level = parseInt(rc[levelc],10);
+					$(this.p.data).each(function(){
+						if(parseInt(this[levelc],10) === level+1 && parseInt(this[lftc],10) > lft && parseInt(this[rgtc],10) < rgt) {
+							result.push(this);
+						}
+					});
+					break;
+				case 'adjacency' :
+					var parent_id = $t.p.treeReader.parent_id_field,
+					dtid = $t.p.localReader.id;
+					$(this.p.data).each(function(){
+						if(this[parent_id] == $.jgrid.stripPref($t.p.idPrefix, rc[dtid])) {
+							result.push(this);
+						}
+					});
+					break;
+			}
+		});
+		return result;
+	},
+	getFullTreeNode : function(rc) {
+		var result = [];
+		this.each(function(){
+			var $t = this, len;
+			if(!$t.grid || !$t.p.treeGrid) {return;}
+			switch ($t.p.treeGridModel) {
+				case 'nested' :
+					var lftc = $t.p.treeReader.left_field,
+					rgtc = $t.p.treeReader.right_field,
+					levelc = $t.p.treeReader.level_field,
+					lft = parseInt(rc[lftc],10), rgt = parseInt(rc[rgtc],10), level = parseInt(rc[levelc],10);
+					$(this.p.data).each(function(){
+						if(parseInt(this[levelc],10) >= level && parseInt(this[lftc],10) >= lft && parseInt(this[lftc],10) <= rgt) {
+							result.push(this);
+						}
+					});
+					break;
+				case 'adjacency' :
+					if(rc) {
+					result.push(rc);
+					var parent_id = $t.p.treeReader.parent_id_field,
+					dtid = $t.p.localReader.id;
+					$(this.p.data).each(function(i){
+						len = result.length;
+						for (i = 0; i < len; i++) {
+							if ($.jgrid.stripPref($t.p.idPrefix, result[i][dtid]) === this[parent_id]) {
+								result.push(this);
+								break;
+							}
+						}
+					});
+					}
+					break;
+			}
+		});
+		return result;
+	},	
+	// End NS, adjacency Model
+	getNodeAncestors : function(rc) {
+		var ancestors = [];
+		this.each(function(){
+			if(!this.grid || !this.p.treeGrid) {return;}
+			var parent = $(this).jqGrid("getNodeParent",rc);
+			while (parent) {
+				ancestors.push(parent);
+				parent = $(this).jqGrid("getNodeParent",parent);	
+			}
+		});
+		return ancestors;
+	},
+	isVisibleNode : function(rc) {
+		var result = true;
+		this.each(function(){
+			var $t = this;
+			if(!$t.grid || !$t.p.treeGrid) {return;}
+			var ancestors = $($t).jqGrid("getNodeAncestors",rc),
+			expanded = $t.p.treeReader.expanded_field;
+			$(ancestors).each(function(){
+				result = result && this[expanded];
+				if(!result) {return false;}
+			});
+		});
+		return result;
+	},
+	isNodeLoaded : function(rc) {
+		var result;
+		this.each(function(){
+			var $t = this;
+			if(!$t.grid || !$t.p.treeGrid) {return;}
+			var isLeaf = $t.p.treeReader.leaf_field,
+			loaded = $t.p.treeReader.loaded;
+			if(rc !== undefined ) {
+				if(rc[loaded] !== undefined) {
+					result = rc[loaded];
+				} else if( rc[isLeaf] || $($t).jqGrid("getNodeChildren",rc).length > 0){
+					result = true;
+				} else {
+					result = false;
+				}
+			} else {
+				result = false;
+			}
+		});
+		return result;
+	},
+	expandNode : function(rc) {
+		return this.each(function(){
+			if(!this.grid || !this.p.treeGrid) {return;}
+			var expanded = this.p.treeReader.expanded_field,
+			parent = this.p.treeReader.parent_id_field,
+			loaded = this.p.treeReader.loaded,
+			level = this.p.treeReader.level_field,
+			lft = this.p.treeReader.left_field,
+			rgt = this.p.treeReader.right_field;
+
+			if(!rc[expanded]) {
+				var id = $.jgrid.getAccessor(rc,this.p.localReader.id);
+				var rc1 = $("#" + this.p.idPrefix + $.jgrid.jqID(id),this.grid.bDiv)[0];
+				var position = this.p._index[id];
+				if( $(this).jqGrid("isNodeLoaded",this.p.data[position]) ) {
+					rc[expanded] = true;
+					$("div.treeclick",rc1).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus");
+				} else if (!this.grid.hDiv.loading) {
+					rc[expanded] = true;
+					$("div.treeclick",rc1).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus");
+					this.p.treeANode = rc1.rowIndex;
+					this.p.datatype = this.p.treedatatype;
+					if(this.p.treeGridModel === 'nested') {
+						$(this).jqGrid("setGridParam",{postData:{nodeid:id,n_left:rc[lft],n_right:rc[rgt],n_level:rc[level]}});
+					} else {
+						$(this).jqGrid("setGridParam",{postData:{nodeid:id,parentid:rc[parent],n_level:rc[level]}} );
+					}
+					$(this).trigger("reloadGrid");
+					rc[loaded] = true;
+					if(this.p.treeGridModel === 'nested') {
+						$(this).jqGrid("setGridParam",{postData:{nodeid:'',n_left:'',n_right:'',n_level:''}});
+					} else {
+						$(this).jqGrid("setGridParam",{postData:{nodeid:'',parentid:'',n_level:''}}); 
+					}
+				}
+			}
+		});
+	},
+	collapseNode : function(rc) {
+		return this.each(function(){
+			if(!this.grid || !this.p.treeGrid) {return;}
+			var expanded = this.p.treeReader.expanded_field;
+			if(rc[expanded]) {
+				rc[expanded] = false;
+				var id = $.jgrid.getAccessor(rc,this.p.localReader.id);
+				var rc1 = $("#" + this.p.idPrefix + $.jgrid.jqID(id),this.grid.bDiv)[0];
+				$("div.treeclick",rc1).removeClass(this.p.treeIcons.minus+" tree-minus").addClass(this.p.treeIcons.plus+" tree-plus");
+			}
+		});
+	},
+	SortTree : function( sortname, newDir, st, datefmt) {
+		return this.each(function(){
+			if(!this.grid || !this.p.treeGrid) {return;}
+			var i, len,
+			rec, records = [], $t = this, query, roots,
+			rt = $(this).jqGrid("getRootNodes");
+			// Sorting roots
+			query = $.jgrid.from(rt);
+			query.orderBy(sortname,newDir,st, datefmt);
+			roots = query.select();
+
+			// Sorting children
+			for (i = 0, len = roots.length; i < len; i++) {
+				rec = roots[i];
+				records.push(rec);
+				$(this).jqGrid("collectChildrenSortTree",records, rec, sortname, newDir,st, datefmt);
+			}
+			$.each(records, function(index) {
+				var id  = $.jgrid.getAccessor(this,$t.p.localReader.id);
+				$('#'+$.jgrid.jqID($t.p.id)+ ' tbody tr:eq('+index+')').after($('tr#'+$.jgrid.jqID(id),$t.grid.bDiv));
+			});
+			query = null;roots=null;records=null;
+		});
+	},
+	collectChildrenSortTree : function(records, rec, sortname, newDir,st, datefmt) {
+		return this.each(function(){
+			if(!this.grid || !this.p.treeGrid) {return;}
+			var i, len,
+			child, ch, query, children;
+			ch = $(this).jqGrid("getNodeChildren",rec);
+			query = $.jgrid.from(ch);
+			query.orderBy(sortname, newDir, st, datefmt);
+			children = query.select();
+			for (i = 0, len = children.length; i < len; i++) {
+				child = children[i];
+				records.push(child);
+				$(this).jqGrid("collectChildrenSortTree",records, child, sortname, newDir, st, datefmt); 
+			}
+		});
+	},
+	// experimental 
+	setTreeRow : function(rowid, data) {
+		var success=false;
+		this.each(function(){
+			var t = this;
+			if(!t.grid || !t.p.treeGrid) {return;}
+			success = $(t).jqGrid("setRowData",rowid,data);
+		});
+		return success;
+	},
+	delTreeNode : function (rowid) {
+		return this.each(function () {
+			var $t = this, rid = $t.p.localReader.id, i,
+			left = $t.p.treeReader.left_field,
+			right = $t.p.treeReader.right_field, myright, width, res, key;
+			if(!$t.grid || !$t.p.treeGrid) {return;}
+			var rc = $t.p._index[rowid];
+			if (rc !== undefined) {
+				// nested
+				myright = parseInt($t.p.data[rc][right],10);
+				width = myright -  parseInt($t.p.data[rc][left],10) + 1;
+				var dr = $($t).jqGrid("getFullTreeNode",$t.p.data[rc]);
+				if(dr.length>0){
+					for (i=0;i<dr.length;i++){
+						$($t).jqGrid("delRowData",dr[i][rid]);
+					}
+				}
+				if( $t.p.treeGridModel === "nested") {
+					// ToDo - update grid data
+					res = $.jgrid.from($t.p.data)
+						.greater(left,myright,{stype:'integer'})
+						.select();
+					if(res.length) {
+						for( key in res) {
+							if(res.hasOwnProperty(key)) {
+								res[key][left] = parseInt(res[key][left],10) - width ;
+							}
+						}
+					}
+					res = $.jgrid.from($t.p.data)
+						.greater(right,myright,{stype:'integer'})
+						.select();
+					if(res.length) {
+						for( key in res) {
+							if(res.hasOwnProperty(key)) {
+								res[key][right] = parseInt(res[key][right],10) - width ;
+							}
+						}
+					}
+				}
+			}
+		});
+	},
+	addChildNode : function( nodeid, parentid, data, expandData ) {
+		//return this.each(function(){
+		var $t = this[0];
+		if(data) {
+			// we suppose tha the id is autoincremet and
+			var expanded = $t.p.treeReader.expanded_field,
+			isLeaf = $t.p.treeReader.leaf_field,
+			level = $t.p.treeReader.level_field,
+			//icon = $t.p.treeReader.icon_field,
+			parent = $t.p.treeReader.parent_id_field,
+			left = $t.p.treeReader.left_field,
+			right = $t.p.treeReader.right_field,
+			loaded = $t.p.treeReader.loaded,
+			method, parentindex, parentdata, parentlevel, i, len, max=0, rowind = parentid, leaf, maxright;
+			if(expandData===undefined) {expandData = false;}
+			if ( nodeid === undefined || nodeid === null ) {
+				i = $t.p.data.length-1;
+				if(	i>= 0 ) {
+					while(i>=0){max = Math.max(max, parseInt($t.p.data[i][$t.p.localReader.id],10)); i--;}
+				}
+				nodeid = max+1;
+			}
+			var prow = $($t).jqGrid('getInd', parentid);
+			leaf = false;
+			// if not a parent we assume root
+			if ( parentid === undefined  || parentid === null || parentid==="") {
+				parentid = null;
+				rowind = null;
+				method = 'last';
+				parentlevel = $t.p.tree_root_level;
+				i = $t.p.data.length+1;
+			} else {
+				method = 'after';
+				parentindex = $t.p._index[parentid];
+				parentdata = $t.p.data[parentindex];
+				parentid = parentdata[$t.p.localReader.id];
+				parentlevel = parseInt(parentdata[level],10)+1;
+				var childs = $($t).jqGrid('getFullTreeNode', parentdata);
+				// if there are child nodes get the last index of it
+				if(childs.length) {
+					i = childs[childs.length-1][$t.p.localReader.id];
+					rowind = i;
+					i = $($t).jqGrid('getInd',rowind)+1;
+				} else {
+					i = $($t).jqGrid('getInd', parentid)+1;
+				}
+				// if the node is leaf
+				if(parentdata[isLeaf]) {
+					leaf = true;
+					parentdata[expanded] = true;
+					//var prow = $($t).jqGrid('getInd', parentid);
+					$($t.rows[prow])
+						.find("span.cell-wrapperleaf").removeClass("cell-wrapperleaf").addClass("cell-wrapper")
+						.end()
+						.find("div.tree-leaf").removeClass($t.p.treeIcons.leaf+" tree-leaf").addClass($t.p.treeIcons.minus+" tree-minus");
+					$t.p.data[parentindex][isLeaf] = false;
+					parentdata[loaded] = true;
+				}
+			}
+			len = i+1;
+
+			if( data[expanded]===undefined)  {data[expanded]= false;}
+			if( data[loaded]===undefined )  { data[loaded] = false;}
+			data[level] = parentlevel;
+			if( data[isLeaf]===undefined) {data[isLeaf]= true;}
+			if( $t.p.treeGridModel === "adjacency") {
+				data[parent] = parentid;
+			}
+			if( $t.p.treeGridModel === "nested") {
+				// this method requiere more attention
+				var query, res, key;
+				//maxright = parseInt(maxright,10);
+				// ToDo - update grid data
+				if(parentid !== null) {
+					maxright = parseInt(parentdata[right],10);
+					query = $.jgrid.from($t.p.data);
+					query = query.greaterOrEquals(right,maxright,{stype:'integer'});
+					res = query.select();
+					if(res.length) {
+						for( key in res) {
+							if(res.hasOwnProperty(key)) {
+								res[key][left] = res[key][left] > maxright ? parseInt(res[key][left],10) +2 : res[key][left];
+								res[key][right] = res[key][right] >= maxright ? parseInt(res[key][right],10) +2 : res[key][right];
+							}
+						}
+					}
+					data[left] = maxright;
+					data[right]= maxright+1;
+				} else {
+					maxright = parseInt( $($t).jqGrid('getCol', right, false, 'max'), 10);
+					res = $.jgrid.from($t.p.data)
+						.greater(left,maxright,{stype:'integer'})
+						.select();
+					if(res.length) {
+						for( key in res) {
+							if(res.hasOwnProperty(key)) {
+								res[key][left] = parseInt(res[key][left],10) +2 ;
+							}
+						}
+					}
+					res = $.jgrid.from($t.p.data)
+						.greater(right,maxright,{stype:'integer'})
+						.select();
+					if(res.length) {
+						for( key in res) {
+							if(res.hasOwnProperty(key)) {
+								res[key][right] = parseInt(res[key][right],10) +2 ;
+							}
+						}
+					}
+					data[left] = maxright+1;
+					data[right] = maxright + 2;
+				}
+			}
+			if( parentid === null || $($t).jqGrid("isNodeLoaded",parentdata) || leaf ) {
+					$($t).jqGrid('addRowData', nodeid, data, method, rowind);
+					$($t).jqGrid('setTreeNode', i, len);
+			}
+			if(parentdata && !parentdata[expanded] && expandData) {
+				$($t.rows[prow])
+					.find("div.treeclick")
+					.click();
+			}
+		}
+		//});
+	}
+});
+})(jQuery);

+ 135 - 126
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-ar.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-ar.js

@@ -1,126 +1,135 @@
-;(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 = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "تسجيل {0} - {1} على {2}",
-		emptyrecords: "لا يوجد تسجيل",
-		loadtext: "تحميل...",
-		pgtext : "صفحة {0} على {1}"
-	},
-	search : {
-		caption: "بحث...",
-		Find: "بحث",
-		Reset: "إلغاء",
-		odata: [{ oper:'eq', text:"يساوي"},{ oper:'ne', text:"يختلف"},{ oper:'lt', text:"أقل"},{ oper:'le', text:"أقل أو يساوي"},{ oper:'gt', text:"أكبر"},{ oper:'ge', text:"أكبر أو يساوي"},{ oper:'bw', text:"يبدأ بـ"},{ oper:'bn', text:"لا يبدأ بـ"},{ oper:'in', text:"est dans"},{ oper:'ni', text:"n'est pas dans"},{ oper:'ew', text:"ينته بـ"},{ oper:'en', text:"لا ينته بـ"},{ oper:'cn', text:"يحتوي"},{ oper:'nc', text:"لا يحتوي"}],
-		groupOps: [	{ op: "مع", text: "الكل" },	{ op: "أو",  text: "لا أحد" }	]
-	},
-	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',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(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 = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "تسجيل {0} - {1} على {2}",
+		emptyrecords: "لا يوجد تسجيل",
+		loadtext: "تحميل...",
+		pgtext : "صفحة {0} على {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "بحث...",
+		Find: "بحث",
+		Reset: "إلغاء",
+		odata: [{ oper:'eq', text:"يساوي"},{ oper:'ne', text:"يختلف"},{ oper:'lt', text:"أقل"},{ oper:'le', text:"أقل أو يساوي"},{ oper:'gt', text:"أكبر"},{ oper:'ge', text:"أكبر أو يساوي"},{ oper:'bw', text:"يبدأ بـ"},{ oper:'bn', text:"لا يبدأ بـ"},{ oper:'in', text:"est dans"},{ oper:'ni', text:"n'est pas dans"},{ oper:'ew', text:"ينته بـ"},{ oper:'en', text:"لا ينته بـ"},{ oper:'cn', text:"يحتوي"},{ oper:'nc', text:"لا يحتوي"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+		groupOps: [	{ op: "مع", text: "الكل" },	{ op: "أو",  text: "لا أحد" }],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+},
+	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',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 142 - 132
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-bg.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-bg.js

@@ -1,132 +1,142 @@
-;(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 = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "{0} - {1} от {2}",
-		emptyrecords: "Няма запис(и)",
-		loadtext: "Зареждам...",
-		pgtext : "Стр. {0} от {1}"
-	},
-	search : {
-		caption: "Търсене...",
-		Find: "Намери",
-		Reset: "Изчисти",
-		odata: [{ oper:'eq', text:"равно"},{ oper:'ne', text:"различно"},{ oper:'lt', text:"по-малко"},{ oper:'le', text:"по-малко или="},{ oper:'gt', text:"по-голямо"},{ oper:'ge', text:"по-голямо или ="},{ oper:'bw', text:"започва с"},{ oper:'bn', text:"не започва с"},{ oper:'in', text:"се намира в"},{ oper:'ni', text:"не се намира в"},{ oper:'ew', text:"завършва с"},{ oper:'en', text:"не завършава с"},{ oper:'cn', text:"съдържа"},{ oper:'nc', text:"не съдържа"}],
-	    groupOps: [	{ op: "AND", text: "&nbsp;И " },	{ op: "OR",  text: "ИЛИ" }	]
-	},
-	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',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(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 = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "{0} - {1} от {2}",
+		emptyrecords: "Няма запис(и)",
+		loadtext: "Зареждам...",
+		pgtext : "Стр. {0} от {1}",
+		pgfirst : "Първа Стр.",
+		pglast : "Последна Стр.",
+		pgnext : "Следваща Стр.",
+		pgprev : "Предишна Стр.",
+		pgrecs : "Брой записи на Стр.",
+		showhide: "Свиване/Разтягане на таблицата"
+
+	},
+	search : {
+		caption: "Търсене...",
+		Find: "Намери",
+		Reset: "Изчисти",
+		odata: [{ oper:'eq', text:"равно"},{ oper:'ne', text:"различно"},{ oper:'lt', text:"по-малко"},{ oper:'le', text:"по-малко или="},{ oper:'gt', text:"по-голямо"},{ oper:'ge', text:"по-голямо или ="},{ oper:'bw', text:"започва с"},{ oper:'bn', text:"не започва с"},{ oper:'in', text:"се намира в"},{ oper:'ni', text:"не се намира в"},{ oper:'ew', text:"завършва с"},{ oper:'en', text:"не завършава с"},{ oper:'cn', text:"съдържа"},{ oper:'nc', text:"не съдържа"},{ oper:'nu', text:'е NULL'},{ oper:'nn', text:'не е NULL'}],
+	    groupOps: [	{ op: "AND", text: "&nbsp;И " },	{ op: "OR",  text: "ИЛИ" }	],
+		operandTitle : "Натисни за избор на операнд.",
+		resetTitle : "Изчисти стойността"
+	},
+	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',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 133 - 132
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-bg1251.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-bg1251.js

@@ -1,132 +1,133 @@
-;(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 = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "{0} - {1} �� {2}",
-		emptyrecords: "���� �����(�)",
-		loadtext: "��������...",
-		pgtext : "���. {0} �� {1}"
-	},
-	search : {
-		caption: "�������...",
-		Find: "������",
-		Reset: "�������",
-		odata : [{ oper:'eq', text:'�����'}, { oper:'ne', text:'��������'}, { oper:'lt', text:'��-�����'}, { oper:'le', text:'��-����� ���='},{ oper:'gt', text:'��-������'},{ oper:'ge', text:'��-������ ��� ='}, { oper:'bw', text:'������� �'},{ oper:'bn', text:'�� ������� �'},{ oper:'in', text:'�� ������ �'},{ oper:'ni', text:'�� �� ������ �'},{ oper:'ew', text:'�������� �'},{ oper:'en', text:'�� ��������� �'},,{ oper:'cn', text:'�������'}, ,{ oper:'nc', text:'�� �������'} ],
-	    groupOps: [	{ op: "AND", text: " � " },	{ op: "OR",  text: "���" }	]
-	},
-	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',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(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 = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "{0} - {1} �� {2}",
+		emptyrecords: "���� �����(�)",
+		loadtext: "��������...",
+		pgtext : "���. {0} �� {1}"
+	},
+	search : {
+		caption: "�������...",
+		Find: "������",
+		Reset: "�������",
+		odata : [{ oper:'eq', text:'�����'}, { oper:'ne', text:'��������'}, { oper:'lt', text:'��-�����'}, { oper:'le', text:'��-����� ���='},{ oper:'gt', text:'��-������'},{ oper:'ge', text:'��-������ ��� ='}, { oper:'bw', text:'������� �'},{ oper:'bn', text:'�� ������� �'},{ oper:'in', text:'�� ������ �'},{ oper:'ni', text:'�� �� ������ �'},{ oper:'ew', text:'�������� �'},{ oper:'en', text:'�� ��������� �'},,{ oper:'cn', text:'�������'}, ,{ oper:'nc', text:'�� �������'} ],
+	    groupOps: [	{ op: "AND", text: " � " },	{ op: "OR",  text: "���" }	]
+	},
+	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',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 137 - 128
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-cat.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-cat.js

@@ -1,128 +1,137 @@
-;(function($){
-/**
- * jqGrid Catalan Translation
- * Traducció jqGrid en Catatà per Faserline, S.L.
- * http://www.faserline.com
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Mostrant {0} - {1} de {2}",
-	    emptyrecords: "Sense registres que mostrar",
-		loadtext: "Carregant...",
-		pgtext : "Pàgina {0} de {1}"
-	},
-	search : {
-		caption: "Cerca...",
-		Find: "Cercar",
-		Reset: "Buidar",
-	    odata: [{ oper:'eq', text:"equal"},{ oper:'ne', text:"not equal"},{ oper:'lt', text:"less"},{ oper:'le', text:"less or equal"},{ oper:'gt', text:"greater"},{ oper:'ge', text:"greater or equal"},{ oper:'bw', text:"begins with"},{ oper:'bn', text:"does not begin with"},{ oper:'in', text:"is in"},{ oper:'ni', text:"is not in"},{ oper:'ew', text:"ends with"},{ oper:'en', text:"does not end with"},{ oper:'cn', text:"contains"},{ oper:'nc', text:"does not contain"}],
-	    groupOps: [	{ op: "AND", text: "tot" },	{ op: "OR",  text: "qualsevol" }	]
-	},
-	edit : {
-		addCaption: "Afegir registre",
-		editCaption: "Modificar registre",
-		bSubmit: "Guardar",
-		bCancel: "Cancelar",
-		bClose: "Tancar",
-		saveData: "Les dades han canviat. Guardar canvis?",
-		bYes : "Yes",
-		bNo : "No",
-		bExit : "Cancel",
-		msg: {
-		    required:"Camp obligatori",
-		    number:"Introdueixi un nombre",
-		    minValue:"El valor ha de ser major o igual que ",
-		    maxValue:"El valor ha de ser menor o igual a ",
-		    email: "no és una direcció de correu vàlida",
-		    integer: "Introdueixi un valor enter",
-			date: "Introdueixi una data correcta ",
-			url: "no és una URL vàlida. Prefix requerit ('http://' or 'https://')",
-			nodefined : " is not defined!",
-			novalue : " return value is required!",
-			customarray : "Custom function should return array!",
-			customfcheck : "Custom function should be present in case of custom checking!"
-		}
-	},
-	view : {
-		caption: "Veure registre",
-		bClose: "Tancar"
-	},
-	del : {
-		caption: "Eliminar",
-		msg: "¿Desitja eliminar els registres seleccionats?",
-		bSubmit: "Eliminar",
-		bCancel: "Cancelar"
-	},
-	nav : {
-		edittext: " ",
-		edittitle: "Modificar fila seleccionada",
-		addtext:" ",
-		addtitle: "Agregar nova fila",
-		deltext: " ",
-		deltitle: "Eliminar fila seleccionada",
-		searchtext: " ",
-		searchtitle: "Cercar informació",
-		refreshtext: "",
-		refreshtitle: "Refrescar taula",
-		alertcap: "Avís",
-		alerttext: "Seleccioni una fila",
-		viewtext: " ",
-		viewtitle: "Veure fila seleccionada"
-	},
-// setcolumns module
-	col : {
-		caption: "Mostrar/ocultar columnes",
-		bSubmit: "Enviar",
-		bCancel: "Cancelar"	
-	},
-	errors : {
-		errcap : "Error",
-		nourl : "No s'ha especificat una URL",
-		norecords: "No hi ha dades per processar",
-		model : "Les columnes de noms són diferents de les columnes del 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:   [
-				"Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds",
-				"Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"
-			],
-			monthNames: [
-				"Gen", "Febr", "Març", "Abr", "Maig", "Juny", "Jul", "Ag", "Set", "Oct", "Nov", "Des",
-				"Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"
-			],
-			AmPm : ["am","pm","AM","PM"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'd-m-Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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: 'show',
-	    target: '',
-	    checkbox : {disabled:true},
-		idName : 'id'
-	}
-});
-})(jQuery);
+;(function($){
+/**
+ * jqGrid Catalan Translation
+ * Traducció jqGrid en Catatà per Faserline, S.L.
+ * http://www.faserline.com
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Mostrant {0} - {1} de {2}",
+	    emptyrecords: "Sense registres que mostrar",
+		loadtext: "Carregant...",
+		pgtext : "Pàgina {0} de {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "Cerca...",
+		Find: "Cercar",
+		Reset: "Buidar",
+	    odata: [{ oper:'eq', text:"equal"},{ oper:'ne', text:"not equal"},{ oper:'lt', text:"less"},{ oper:'le', text:"less or equal"},{ oper:'gt', text:"greater"},{ oper:'ge', text:"greater or equal"},{ oper:'bw', text:"begins with"},{ oper:'bn', text:"does not begin with"},{ oper:'in', text:"is in"},{ oper:'ni', text:"is not in"},{ oper:'ew', text:"ends with"},{ oper:'en', text:"does not end with"},{ oper:'cn', text:"contains"},{ oper:'nc', text:"does not contain"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+	    groupOps: [	{ op: "AND", text: "tot" },	{ op: "OR",  text: "qualsevol" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "Afegir registre",
+		editCaption: "Modificar registre",
+		bSubmit: "Guardar",
+		bCancel: "Cancelar",
+		bClose: "Tancar",
+		saveData: "Les dades han canviat. Guardar canvis?",
+		bYes : "Yes",
+		bNo : "No",
+		bExit : "Cancel",
+		msg: {
+		    required:"Camp obligatori",
+		    number:"Introdueixi un nombre",
+		    minValue:"El valor ha de ser major o igual que ",
+		    maxValue:"El valor ha de ser menor o igual a ",
+		    email: "no és una direcció de correu vàlida",
+		    integer: "Introdueixi un valor enter",
+			date: "Introdueixi una data correcta ",
+			url: "no és una URL vàlida. Prefix requerit ('http://' or 'https://')",
+			nodefined : " is not defined!",
+			novalue : " return value is required!",
+			customarray : "Custom function should return array!",
+			customfcheck : "Custom function should be present in case of custom checking!"
+		}
+	},
+	view : {
+		caption: "Veure registre",
+		bClose: "Tancar"
+	},
+	del : {
+		caption: "Eliminar",
+		msg: "¿Desitja eliminar els registres seleccionats?",
+		bSubmit: "Eliminar",
+		bCancel: "Cancelar"
+	},
+	nav : {
+		edittext: " ",
+		edittitle: "Modificar fila seleccionada",
+		addtext:" ",
+		addtitle: "Agregar nova fila",
+		deltext: " ",
+		deltitle: "Eliminar fila seleccionada",
+		searchtext: " ",
+		searchtitle: "Cercar informació",
+		refreshtext: "",
+		refreshtitle: "Refrescar taula",
+		alertcap: "Avís",
+		alerttext: "Seleccioni una fila",
+		viewtext: " ",
+		viewtitle: "Veure fila seleccionada"
+	},
+// setcolumns module
+	col : {
+		caption: "Mostrar/ocultar columnes",
+		bSubmit: "Enviar",
+		bCancel: "Cancelar"	
+	},
+	errors : {
+		errcap : "Error",
+		nourl : "No s'ha especificat una URL",
+		norecords: "No hi ha dades per processar",
+		model : "Les columnes de noms són diferents de les columnes del 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:   [
+				"Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds",
+				"Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"
+			],
+			monthNames: [
+				"Gen", "Febr", "Març", "Abr", "Maig", "Juny", "Jul", "Ag", "Set", "Oct", "Nov", "Des",
+				"Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"
+			],
+			AmPm : ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'd-m-Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: 'show',
+	    target: '',
+	    checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 176 - 0
app/Resources/public/assets/jqgrid/js/i18n/grid.locale-cn.js

@@ -0,0 +1,176 @@
+;(function($){
+/**
+ * jqGrid Chinese Translation
+ * 咖啡兔 yanhonglei@gmail.com
+ * http://www.kafeitu.me 
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+    defaults : {
+        recordtext: "{0} - {1}\u3000共 {2} 条", // 共字前是全角空格
+        emptyrecords: "无数据显示",
+        loadtext: "读取中...",
+        pgtext : " {0} 共 {1} 页",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+    },
+    search : {
+        caption: "搜索...",
+        Find: "查找",
+        Reset: "重置",
+        odata: [{ oper:'eq', text:'等于\u3000\u3000'},{ oper:'ne', text:'不等\u3000\u3000'},{ oper:'lt', text:'小于\u3000\u3000'},{ oper:'le', text:'小于等于'},{ oper:'gt', text:'大于\u3000\u3000'},{ oper:'ge', text:'大于等于'},{ oper:'bw', text:'开始于'},{ oper:'bn', text:'不开始于'},{ oper:'in', text:'属于\u3000\u3000'},{ oper:'ni', text:'不属于'},{ oper:'ew', text:'结束于'},{ oper:'en', text:'不结束于'},{ oper:'cn', text:'包含\u3000\u3000'},{ oper:'nc', text:'不包含'},{ oper:'nu', text:'不存在'},{ oper:'nn', text:'存在'}],
+        groupOps: [ { op: "AND", text: "所有" },    { op: "OR",  text: "任一" } ],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+    },
+    edit : {
+        addCaption: "添加记录",
+        editCaption: "编辑记录",
+        bSubmit: "提交",
+        bCancel: "取消",
+        bClose: "关闭",
+        saveData: "数据已改变,是否保存?",
+        bYes : "是",
+        bNo : "否",
+        bExit : "取消",
+        msg: {
+            required:"此字段必需",
+            number:"请输入有效数字",
+            minValue:"输值必须大于等于 ",
+            maxValue:"输值必须小于等于 ",
+            email: "这不是有效的e-mail地址",
+            integer: "请输入有效整数",
+            date: "请输入有效时间",
+            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 : "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 : ["am","pm","上午","下午"],
+            S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';},
+            srcformat: 'Y-m-d',
+            newformat: 'Y-m-d',
+            parseRe : /[#%\\\/:_;.,\t\s-]/,
+            masks : {
+                // see http://php.net/manual/en/function.date.php for PHP format used in jqGrid
+                // and see http://docs.jquery.com/UI/Datepicker/formatDate
+                // and https://github.com/jquery/globalize#dates for alternative formats used frequently
+                // one can find on https://github.com/jquery/globalize/tree/master/lib/cultures many
+                // information about date, time, numbers and currency formats used in different countries
+                // one should just convert the information in PHP format
+                ISO8601Long:"Y-m-d H:i:s",
+                ISO8601Short:"Y-m-d",
+                // short date:
+                //    n - Numeric representation of a month, without leading zeros
+                //    j - Day of the month without leading zeros
+                //    Y - A full numeric representation of a year, 4 digits
+                // example: 3/1/2012 which means 1 March 2012
+                ShortDate: "n/j/Y", // in jQuery UI Datepicker: "M/d/yyyy"
+                // long date:
+                //    l - A full textual representation of the day of the week
+                //    F - A full textual representation of a month
+                //    d - Day of the month, 2 digits with leading zeros
+                //    Y - A full numeric representation of a year, 4 digits
+                LongDate: "l, F d, Y", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy"
+                // long date with long time:
+                //    l - A full textual representation of the day of the week
+                //    F - A full textual representation of a month
+                //    d - Day of the month, 2 digits with leading zeros
+                //    Y - A full numeric representation of a year, 4 digits
+                //    g - 12-hour format of an hour without leading zeros
+                //    i - Minutes with leading zeros
+                //    s - Seconds, with leading zeros
+                //    A - Uppercase Ante meridiem and Post meridiem (AM or PM)
+                FullDateTime: "l, F d, Y g:i:s A", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy h:mm:ss tt"
+                // month day:
+                //    F - A full textual representation of a month
+                //    d - Day of the month, 2 digits with leading zeros
+                MonthDay: "F d", // in jQuery UI Datepicker: "MMMM dd"
+                // short time (without seconds)
+                //    g - 12-hour format of an hour without leading zeros
+                //    i - Minutes with leading zeros
+                //    A - Uppercase Ante meridiem and Post meridiem (AM or PM)
+                ShortTime: "g:i A", // in jQuery UI Datepicker: "h:mm tt"
+                // long time (with seconds)
+                //    g - 12-hour format of an hour without leading zeros
+                //    i - Minutes with leading zeros
+                //    s - Seconds, with leading zeros
+                //    A - Uppercase Ante meridiem and Post meridiem (AM or PM)
+                LongTime: "g:i:s A", // in jQuery UI Datepicker: "h:mm:ss tt"
+                SortableDateTime: "Y-m-d\\TH:i:s",
+                UniversalSortableDateTime: "Y-m-d H:i:sO",
+                // month with year
+                //    Y - A full numeric representation of a year, 4 digits
+                //    F - A full textual representation of a month
+                YearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy"
+            },
+            reformatAfterEdit : false,
+			userLocalTime : false
+        },
+        baseLinkUrl: '',
+        showAction: '',
+        target: '',
+        checkbox : {disabled:true},
+        idName : 'id'
+    }
+});
+})(jQuery);

+ 137 - 128
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-cs.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-cs.js

@@ -1,128 +1,137 @@
-;(function($){
-/**
- * jqGrid Czech Translation
- * Pavel Jirak pavel.jirak@jipas.cz
- * doplnil Thomas Wagner xwagne01@stud.fit.vutbr.cz
- * 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 = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Zobrazeno {0} - {1} z {2} záznamů",
-	    emptyrecords: "Nenalezeny žádné záznamy",
-		loadtext: "Načítám...",
-		pgtext : "Strana {0} z {1}"
-	},
-	search : {
-		caption: "Vyhledávám...",
-		Find: "Hledat",
-		Reset: "Reset",
-	    odata: [{ oper:'eq', text:"rovno"},{ oper:'ne', text:"nerovono"},{ oper:'lt', text:"menší"},{ oper:'le', text:"menší nebo rovno"},{ oper:'gt', text:"větší"},{ oper:'ge', text:"větší nebo rovno"},{ oper:'bw', text:"začíná s"},{ oper:'bn', text:"nezačíná s"},{ oper:'in', text:"je v"},{ oper:'ni', text:"není v"},{ oper:'ew', text:"končí s"},{ oper:'en', text:"nekončí s"},{ oper:'cn', text:"obahuje"},{ oper:'nc', text:"neobsahuje"}],
-	    groupOps: [	{ op: "AND", text: "všech" },	{ op: "OR",  text: "některého z" }	]
-	},
-	edit : {
-		addCaption: "Přidat záznam",
-		editCaption: "Editace záznamu",
-		bSubmit: "Uložit",
-		bCancel: "Storno",
-		bClose: "Zavřít",
-		saveData: "Data byla změněna! Uložit změny?",
-		bYes : "Ano",
-		bNo : "Ne",
-		bExit : "Zrušit",
-		msg: {
-		    required:"Pole je vyžadováno",
-		    number:"Prosím, vložte validní číslo",
-		    minValue:"hodnota musí být větší než nebo rovná ",
-		    maxValue:"hodnota musí být menší než nebo rovná ",
-		    email: "není validní e-mail",
-		    integer: "Prosím, vložte celé číslo",
-			date: "Prosím, vložte validní datum",
-			url: "není platnou URL. Vyžadován prefix ('http://' or 'https://')",
-			nodefined : " není definován!",
-			novalue : " je vyžadována návratová hodnota!",
-			customarray : "Custom function mělá vrátit pole!",
-			customfcheck : "Custom function by měla být přítomna v případě custom checking!"
-		}
-	},
-	view : {
-	    caption: "Zobrazit záznam",
-	    bClose: "Zavřít"
-	},
-	del : {
-		caption: "Smazat",
-		msg: "Smazat vybraný(é) záznam(y)?",
-		bSubmit: "Smazat",
-		bCancel: "Storno"
-	},
-	nav : {
-		edittext: " ",
-		edittitle: "Editovat vybraný řádek",
-		addtext:" ",
-		addtitle: "Přidat nový řádek",
-		deltext: " ",
-		deltitle: "Smazat vybraný záznam ",
-		searchtext: " ",
-		searchtitle: "Najít záznamy",
-		refreshtext: "",
-		refreshtitle: "Obnovit tabulku",
-		alertcap: "Varování",
-		alerttext: "Prosím, vyberte řádek",
-		viewtext: "",
-		viewtitle: "Zobrazit vybraný řádek"
-	},
-	col : {
-		caption: "Zobrazit/Skrýt sloupce",
-		bSubmit: "Uložit",
-		bCancel: "Storno"	
-	},
-	errors : {
-		errcap : "Chyba",
-		nourl : "Není nastavena url",
-		norecords: "Žádné záznamy ke zpracování",
-		model : "Délka 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:   [
-				"Ne", "Po", "Út", "St", "Čt", "Pá", "So",
-				"Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota"
-			],
-			monthNames: [
-				"Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čvc", "Srp", "Zář", "Říj", "Lis", "Pro",
-				"Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"
-			],
-			AmPm : ["do","od","DO","OD"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Czech Translation
+ * Pavel Jirak pavel.jirak@jipas.cz
+ * doplnil Thomas Wagner xwagne01@stud.fit.vutbr.cz
+ * 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 = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Zobrazeno {0} - {1} z {2} záznamů",
+	    emptyrecords: "Nenalezeny žádné záznamy",
+		loadtext: "Načítám...",
+		pgtext : "Strana {0} z {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "Vyhledávám...",
+		Find: "Hledat",
+		Reset: "Reset",
+	    odata: [{ oper:'eq', text:"rovno"},{ oper:'ne', text:"nerovno"},{ oper:'lt', text:"menší"},{ oper:'le', text:"menší nebo rovno"},{ oper:'gt', text:"větší"},{ oper:'ge', text:"větší nebo rovno"},{ oper:'bw', text:"začíná s"},{ oper:'bn', text:"nezačíná s"},{ oper:'in', text:"je v"},{ oper:'ni', text:"není v"},{ oper:'ew', text:"končí s"},{ oper:'en', text:"nekončí s"},{ oper:'cn', text:"obsahuje"},{ oper:'nc', text:"neobsahuje"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+	    groupOps: [	{ op: "AND", text: "všech" },	{ op: "OR",  text: "některého z" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "Přidat záznam",
+		editCaption: "Editace záznamu",
+		bSubmit: "Uložit",
+		bCancel: "Storno",
+		bClose: "Zavřít",
+		saveData: "Data byla změněna! Uložit změny?",
+		bYes : "Ano",
+		bNo : "Ne",
+		bExit : "Zrušit",
+		msg: {
+		    required:"Pole je vyžadováno",
+		    number:"Prosím, vložte validní číslo",
+		    minValue:"hodnota musí být větší než nebo rovná ",
+		    maxValue:"hodnota musí být menší než nebo rovná ",
+		    email: "není validní e-mail",
+		    integer: "Prosím, vložte celé číslo",
+			date: "Prosím, vložte validní datum",
+			url: "není platnou URL. Vyžadován prefix ('http://' or 'https://')",
+			nodefined : " není definován!",
+			novalue : " je vyžadována návratová hodnota!",
+			customarray : "Custom function mělá vrátit pole!",
+			customfcheck : "Custom function by měla být přítomna v případě custom checking!"
+		}
+	},
+	view : {
+	    caption: "Zobrazit záznam",
+	    bClose: "Zavřít"
+	},
+	del : {
+		caption: "Smazat",
+		msg: "Smazat vybraný(é) záznam(y)?",
+		bSubmit: "Smazat",
+		bCancel: "Storno"
+	},
+	nav : {
+		edittext: " ",
+		edittitle: "Editovat vybraný řádek",
+		addtext:" ",
+		addtitle: "Přidat nový řádek",
+		deltext: " ",
+		deltitle: "Smazat vybraný záznam ",
+		searchtext: " ",
+		searchtitle: "Najít záznamy",
+		refreshtext: "",
+		refreshtitle: "Obnovit tabulku",
+		alertcap: "Varování",
+		alerttext: "Prosím, vyberte řádek",
+		viewtext: "",
+		viewtitle: "Zobrazit vybraný řádek"
+	},
+	col : {
+		caption: "Zobrazit/Skrýt sloupce",
+		bSubmit: "Uložit",
+		bCancel: "Storno"	
+	},
+	errors : {
+		errcap : "Chyba",
+		nourl : "Není nastavena url",
+		norecords: "Žádné záznamy ke zpracování",
+		model : "Délka 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:   [
+				"Ne", "Po", "Út", "St", "Čt", "Pá", "So",
+				"Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota"
+			],
+			monthNames: [
+				"Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čvc", "Srp", "Zář", "Říj", "Lis", "Pro",
+				"Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"
+			],
+			AmPm : ["do","od","DO","OD"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+	    target: '',
+	    checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 137 - 128
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-da.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-da.js

@@ -1,128 +1,137 @@
-;(function($){
-/**
- * jqGrid Danish Translation
- * Aesiras A/S
- * http://www.aesiras.dk
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Vis {0} - {1} of {2}",
-	    emptyrecords: "Ingen linjer fundet",
-		loadtext: "Henter...",
-		pgtext : "Side {0} af {1}"
-	},
-	search : {
-	    caption: "Søg...",
-	    Find: "Find",
-	    Reset: "Nulstil",
-	    odata: [{ oper:'eq', text:"lig"},{ oper:'ne', text:"forskellige fra"},{ oper:'lt', text:"mindre"},{ oper:'le', text:"mindre eller lig"},{ oper:'gt', text:"større"},{ oper:'ge', text:"større eller lig"},{ oper:'bw', text:"begynder med"},{ oper:'bn', text:"begynder ikke med"},{ oper:'in', text:"findes i"},{ oper:'ni', text:"findes ikke i"},{ oper:'ew', text:"ender med"},{ oper:'en', text:"ender ikke med"},{ oper:'cn', text:"indeholder"},{ oper:'nc', text:"indeholder ikke"}],
-	    groupOps: [	{ op: "AND", text: "all" },	{ op: "OR",  text: "any" }	]
-	},
-	edit : {
-	    addCaption: "Tilføj",
-	    editCaption: "Ret",
-	    bSubmit: "Send",
-	    bCancel: "Annuller",
-		bClose: "Luk",
-		saveData: "Data er ændret. Gem data?",
-		bYes : "Ja",
-		bNo : "Nej",
-		bExit : "Fortryd",
-	    msg: {
-	        required:"Felt er nødvendigt",
-	        number:"Indtast venligst et validt tal",
-	        minValue:"værdi skal være større end eller lig med",
-	        maxValue:"værdi skal være mindre end eller lig med",
-	        email: "er ikke en gyldig email",
-	        integer: "Indtast venligst et gyldigt heltal",
-			date: "Indtast venligst en gyldig datoværdi",
-			url: "er ugyldig URL. Prefix mangler ('http://' or 'https://')",
-			nodefined : " er ikke defineret!",
-			novalue : " returværdi kræves!",
-			customarray : "Custom function should return array!",
-			customfcheck : "Custom function should be present in case of custom checking!"
-		}
-	},
-	view : {
-	    caption: "Vis linje",
-	    bClose: "Luk"
-	},
-	del : {
-	    caption: "Slet",
-	    msg: "Slet valgte linje(r)?",
-	    bSubmit: "Slet",
-	    bCancel: "Fortryd"
-	},
-	nav : {
-		edittext: " ",
-	    edittitle: "Rediger valgte linje",
-		addtext:" ",
-	    addtitle: "Tilføj ny linje",
-	    deltext: " ",
-	    deltitle: "Slet valgte linje",
-	    searchtext: " ",
-	    searchtitle: "Find linjer",
-	    refreshtext: "",
-	    refreshtitle: "Indlæs igen",
-	    alertcap: "Advarsel",
-	    alerttext: "Vælg venligst linje",
-		viewtext: "",
-		viewtitle: "Vis valgte linje"
-	},
-	col : {
-	    caption: "Vis/skjul kolonner",
-	    bSubmit: "Opdatere",
-	    bCancel: "Fortryd"
-	},
-	errors : {
-		errcap : "Fejl",
-		nourl : "Ingen url valgt",
-		norecords: "Ingen linjer at behandle",
-	    model : "colNames og colModel har ikke samme længde!"
-	},
-	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:   [
-				"Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør",
-				"Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"
-			],
-			monthNames: [
-				"Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec",
-				"Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"
-			],
-			AmPm : ["","","",""],
-			S: function (j) {return '.'},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			masks : {
-	            ISO8601Long:"Y-m-d H:i:s",
-	            ISO8601Short:"Y-m-d",
-	            ShortDate: "j/n/Y",
-	            LongDate: "l d. F Y",
-	            FullDateTime: "l d F Y G:i:s",
-	            MonthDay: "d. F",
-	            ShortTime: "G:i",
-	            LongTime: "G:i:s",
-	            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'
-	}
-});
-// DA
-})(jQuery);
+;(function($){
+/**
+ * jqGrid Danish Translation
+ * Aesiras A/S
+ * http://www.aesiras.dk
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Vis {0} - {1} of {2}",
+	    emptyrecords: "Ingen linjer fundet",
+		loadtext: "Henter...",
+		pgtext : "Side {0} af {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+	    caption: "Søg...",
+	    Find: "Find",
+	    Reset: "Nulstil",
+	    odata: [{ oper:'eq', text:"lig"},{ oper:'ne', text:"forskellige fra"},{ oper:'lt', text:"mindre"},{ oper:'le', text:"mindre eller lig"},{ oper:'gt', text:"større"},{ oper:'ge', text:"større eller lig"},{ oper:'bw', text:"begynder med"},{ oper:'bn', text:"begynder ikke med"},{ oper:'in', text:"findes i"},{ oper:'ni', text:"findes ikke i"},{ oper:'ew', text:"ender med"},{ oper:'en', text:"ender ikke med"},{ oper:'cn', text:"indeholder"},{ oper:'nc', text:"indeholder ikke"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+	    groupOps: [	{ op: "AND", text: "all" },	{ op: "OR",  text: "any" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+	    addCaption: "Tilføj",
+	    editCaption: "Ret",
+	    bSubmit: "Send",
+	    bCancel: "Annuller",
+		bClose: "Luk",
+		saveData: "Data er ændret. Gem data?",
+		bYes : "Ja",
+		bNo : "Nej",
+		bExit : "Fortryd",
+	    msg: {
+	        required:"Felt er nødvendigt",
+	        number:"Indtast venligst et validt tal",
+	        minValue:"værdi skal være større end eller lig med",
+	        maxValue:"værdi skal være mindre end eller lig med",
+	        email: "er ikke en gyldig email",
+	        integer: "Indtast venligst et gyldigt heltal",
+			date: "Indtast venligst en gyldig datoværdi",
+			url: "er ugyldig URL. Prefix mangler ('http://' or 'https://')",
+			nodefined : " er ikke defineret!",
+			novalue : " returværdi kræves!",
+			customarray : "Custom function should return array!",
+			customfcheck : "Custom function should be present in case of custom checking!"
+		}
+	},
+	view : {
+	    caption: "Vis linje",
+	    bClose: "Luk"
+	},
+	del : {
+	    caption: "Slet",
+	    msg: "Slet valgte linje(r)?",
+	    bSubmit: "Slet",
+	    bCancel: "Fortryd"
+	},
+	nav : {
+		edittext: " ",
+	    edittitle: "Rediger valgte linje",
+		addtext:" ",
+	    addtitle: "Tilføj ny linje",
+	    deltext: " ",
+	    deltitle: "Slet valgte linje",
+	    searchtext: " ",
+	    searchtitle: "Find linjer",
+	    refreshtext: "",
+	    refreshtitle: "Indlæs igen",
+	    alertcap: "Advarsel",
+	    alerttext: "Vælg venligst linje",
+		viewtext: "",
+		viewtitle: "Vis valgte linje"
+	},
+	col : {
+	    caption: "Vis/skjul kolonner",
+	    bSubmit: "Opdatere",
+	    bCancel: "Fortryd"
+	},
+	errors : {
+		errcap : "Fejl",
+		nourl : "Ingen url valgt",
+		norecords: "Ingen linjer at behandle",
+	    model : "colNames og colModel har ikke samme længde!"
+	},
+	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:   [
+				"Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør",
+				"Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"
+			],
+			monthNames: [
+				"Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec",
+				"Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"
+			],
+			AmPm : ["","","",""],
+			S: function (j) {return '.'},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			masks : {
+	            ISO8601Long:"Y-m-d H:i:s",
+	            ISO8601Short:"Y-m-d",
+	            ShortDate: "j/n/Y",
+	            LongDate: "l d. F Y",
+	            FullDateTime: "l d F Y G:i:s",
+	            MonthDay: "d. F",
+	            ShortTime: "G:i",
+	            LongTime: "G:i:s",
+	            SortableDateTime: "Y-m-d\\TH:i:s",
+	            UniversalSortableDateTime: "Y-m-d H:i:sO",
+	            YearMonth: "F Y"
+	        },
+	        reformatAfterEdit : false,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+	    target: '',
+	    checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+// DA
+})(jQuery);

+ 180 - 171
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-de.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-de.js

@@ -1,171 +1,180 @@
-;(function($){
-/**
- * jqGrid German Translation
- * Version 1.0.0 (developed for jQuery Grid 3.3.1)
- * Olaf Klöppel opensource@blue-hit.de
- * http://blue-hit.de/ 
- *
- * Updated for jqGrid 3.8
- * Andreas Flack
- * http://www.contentcontrol-berlin.de
- *
- * Updated for jQuery 4.4
- * Oleg Kiriljuk oleg.kiriljuk@ok-soft-gmbh.com
- * the format corresponds now the format from
- * https://github.com/jquery/globalize/blob/master/lib/cultures/globalize.culture.de.js
- *
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Zeige {0} - {1} von {2}",
-	    emptyrecords: "Keine Datensätze vorhanden",
-		loadtext: "Lädt...",
-		pgtext : "Seite {0} von {1}"
-	},
-	search : {
-		caption: "Suche...",
-		Find: "Suchen",
-		Reset: "Zurücksetzen",
-	    odata: [{ oper:'eq', text:"gleich"},{ oper:'ne', text:"ungleich"},{ oper:'lt', text:"kleiner"},{ oper:'le', text:"kleiner gleich"},{ oper:'gt', text:"größer"},{ oper:'ge', text:"größer gleich"},{ oper:'bw', text:"beginnt mit"},{ oper:'bn', text:"beginnt nicht mit"},{ oper:'in', text:"ist in"},{ oper:'ni', text:"ist nicht in"},{ oper:'ew', text:"endet mit"},{ oper:'en', text:"endet nicht mit"},{ oper:'cn', text:"enthält"},{ oper:'nc', text:"enthält nicht"}],
-	    groupOps: [	{ op: "AND", text: "alle" },	{ op: "OR",  text: "mindestens eine" }	]
-	},
-	edit : {
-		addCaption: "Datensatz hinzufügen",
-		editCaption: "Datensatz bearbeiten",
-		bSubmit: "Speichern",
-		bCancel: "Abbrechen",
-		bClose: "Schließen",
-		saveData: "Daten wurden geändert! Änderungen speichern?",
-		bYes : "ja",
-		bNo : "nein",
-		bExit : "abbrechen",
-		msg: {
-		    required:"Feld ist erforderlich",
-		    number: "Bitte geben Sie eine Zahl ein",
-		    minValue:"Wert muss größer oder gleich sein, als ",
-		    maxValue:"Wert muss kleiner oder gleich sein, als ",
-		    email: "ist keine gültige E-Mail-Adresse",
-		    integer: "Bitte geben Sie eine Ganzzahl ein",
-			date: "Bitte geben Sie ein gültiges Datum ein",
-			url: "ist keine gültige URL. Präfix muss eingegeben werden ('http://' oder 'https://')",
-			nodefined : " ist nicht definiert!",
-			novalue : " Rückgabewert ist erforderlich!",
-			customarray : "Benutzerdefinierte Funktion sollte ein Array zurückgeben!",
-			customfcheck : "Benutzerdefinierte Funktion sollte im Falle der benutzerdefinierten Überprüfung vorhanden sein!"
-		}
-	},
-	view : {
-	    caption: "Datensatz anzeigen",
-	    bClose: "Schließen"
-	},
-	del : {
-		caption: "Löschen",
-		msg: "Ausgewählte Datensätze löschen?",
-		bSubmit: "Löschen",
-		bCancel: "Abbrechen"
-	},
-	nav : {
-		edittext: " ",
-	    edittitle: "Ausgewählte Zeile editieren",
-		addtext:" ",
-	    addtitle: "Neue Zeile einfügen",
-	    deltext: " ",
-	    deltitle: "Ausgewählte Zeile löschen",
-	    searchtext: " ",
-	    searchtitle: "Datensatz suchen",
-	    refreshtext: "",
-	    refreshtitle: "Tabelle neu laden",
-	    alertcap: "Warnung",
-	    alerttext: "Bitte Zeile auswählen",
-		viewtext: "",
-		viewtitle: "Ausgewählte Zeile anzeigen"
-	},
-	col : {
-		caption: "Spalten auswählen",
-		bSubmit: "Speichern",
-		bCancel: "Abbrechen"	
-	},
-	errors : {
-		errcap : "Fehler",
-		nourl : "Keine URL angegeben",
-		norecords: "Keine Datensätze zu bearbeiten",
-		model : "colNames und colModel sind unterschiedlich lang!"
-	},
-	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:   [
-				"So", "Mo", "Di", "Mi", "Do", "Fr", "Sa",
-				"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"
-			],
-			monthNames: [
-				"Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez",
-				"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"
-			],
-			AmPm : ["","","",""],
-			S: function (j) {return '.';}, // one can also use 'er' instead of '.' but one have to use additional word like 'der' or 'den' before
-			srcformat: 'Y-m-d',
-			newformat: 'd.m.Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			masks : {
-				// see http://php.net/manual/en/function.date.php for PHP format used in jqGrid
-				// and see http://docs.jquery.com/UI/Datepicker/formatDate
-				// and https://github.com/jquery/globalize#dates for alternative formats used frequently
-		        ISO8601Long: "Y-m-d H:i:s",
-		        ISO8601Short: "Y-m-d",
-				// short date:
-				//    d - Day of the month, 2 digits with leading zeros
-				//    m - Numeric representation of a month, with leading zeros
-				//    Y - A full numeric representation of a year, 4 digits
-		        ShortDate: "d.m.Y",	// in jQuery UI Datepicker: "dd.MM.yyyy"
-				// long date:
-				//    l - A full textual representation of the day of the week
-				//    j - Day of the month without leading zeros
-				//    F - A full textual representation of a month
-				//    Y - A full numeric representation of a year, 4 digits
-		        LongDate: "l, j. F Y", // in jQuery UI Datepicker: "dddd, d. MMMM yyyy"
-				// long date with long time:
-				//    l - A full textual representation of the day of the week
-				//    j - Day of the month without leading zeros
-				//    F - A full textual representation of a month
-				//    Y - A full numeric representation of a year, 4 digits
-				//    H - 24-hour format of an hour with leading zeros
-				//    i - Minutes with leading zeros
-				//    s - Seconds, with leading zeros
-		        FullDateTime: "l, j. F Y H:i:s", // in jQuery UI Datepicker: "dddd, d. MMMM yyyy HH:mm:ss"
-				// month day:
-				//    d - Day of the month, 2 digits with leading zeros
-				//    F - A full textual representation of a month
-		        MonthDay: "d F", // in jQuery UI Datepicker: "dd MMMM"
-				// short time (without seconds)
-				//    H - 24-hour format of an hour with leading zeros
-				//    i - Minutes with leading zeros
-		        ShortTime: "H:i", // in jQuery UI Datepicker: "HH:mm"
-				// long time (with seconds)
-				//    H - 24-hour format of an hour with leading zeros
-				//    i - Minutes with leading zeros
-				//    s - Seconds, with leading zeros
-		        LongTime: "H:i:s", // in jQuery UI Datepicker: "HH:mm:ss"
-		        SortableDateTime: "Y-m-d\\TH:i:s",
-		        UniversalSortableDateTime: "Y-m-d H:i:sO",
-				// month with year
-				//    F - A full textual representation of a month
-				//    Y - A full numeric representation of a year, 4 digits
-		        YearMonth: "F Y" // in jQuery UI Datepicker: "MMMM yyyy"
-		    },
-		    reformatAfterEdit : false
-		},
-		baseLinkUrl: '',
-		showAction: '',
-	    target: '',
-	    checkbox : {disabled:true},
-		idName : 'id'
-	}
-});
-})(jQuery);
+;(function($){
+/**
+ * jqGrid German Translation
+ * Version 1.0.0 (developed for jQuery Grid 3.3.1)
+ * Olaf Klöppel opensource@blue-hit.de
+ * http://blue-hit.de/ 
+ *
+ * Updated for jqGrid 3.8
+ * Andreas Flack
+ * http://www.contentcontrol-berlin.de
+ *
+ * Updated for jQuery 4.4
+ * Oleg Kiriljuk oleg.kiriljuk@ok-soft-gmbh.com
+ * the format corresponds now the format from
+ * https://github.com/jquery/globalize/blob/master/lib/cultures/globalize.culture.de.js
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Zeige {0} - {1} von {2}",
+		emptyrecords: "Keine Datensätze vorhanden",
+		loadtext: "Lädt...",
+		pgtext : "Seite {0} von {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "Suche...",
+		Find: "Suchen",
+		Reset: "Zurücksetzen",
+		odata: [{ oper:'eq', text:"gleich"},{ oper:'ne', text:"ungleich"},{ oper:'lt', text:"kleiner"},{ oper:'le', text:"kleiner gleich"},{ oper:'gt', text:"größer"},{ oper:'ge', text:"größer gleich"},{ oper:'bw', text:"beginnt mit"},{ oper:'bn', text:"beginnt nicht mit"},{ oper:'in', text:"ist in"},{ oper:'ni', text:"ist nicht in"},{ oper:'ew', text:"endet mit"},{ oper:'en', text:"endet nicht mit"},{ oper:'cn', text:"enthält"},{ oper:'nc', text:"enthält nicht"}, { oper:'nu', text:"ist Null" }, { oper:'nn', text:"ist nicht Null" }],
+		groupOps: [{ op: "AND", text: "alle" },{ op: "OR", text: "mindestens eine" }],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "Datensatz hinzufügen",
+		editCaption: "Datensatz bearbeiten",
+		bSubmit: "Speichern",
+		bCancel: "Abbrechen",
+		bClose: "Schließen",
+		saveData: "Daten wurden geändert! Änderungen speichern?",
+		bYes : "ja",
+		bNo : "nein",
+		bExit : "abbrechen",
+		msg: {
+			required:"Feld ist erforderlich",
+			number: "Bitte geben Sie eine Zahl ein",
+			minValue:"Wert muss größer oder gleich sein, als ",
+			maxValue:"Wert muss kleiner oder gleich sein, als ",
+			email: "ist keine gültige E-Mail-Adresse",
+			integer: "Bitte geben Sie eine Ganzzahl ein",
+			date: "Bitte geben Sie ein gültiges Datum ein",
+			url: "ist keine gültige URL. Präfix muss eingegeben werden ('http://' oder 'https://')",
+			nodefined : " ist nicht definiert!",
+			novalue : " Rückgabewert ist erforderlich!",
+			customarray : "Benutzerdefinierte Funktion sollte ein Array zurückgeben!",
+			customfcheck : "Benutzerdefinierte Funktion sollte im Falle der benutzerdefinierten Überprüfung vorhanden sein!"
+		}
+	},
+	view : {
+		caption: "Datensatz anzeigen",
+		bClose: "Schließen"
+	},
+	del : {
+		caption: "Löschen",
+		msg: "Ausgewählte Datensätze löschen?",
+		bSubmit: "Löschen",
+		bCancel: "Abbrechen"
+	},
+	nav : {
+		edittext: " ",
+		edittitle: "Ausgewählte Zeile editieren",
+		addtext:" ",
+		addtitle: "Neue Zeile einfügen",
+		deltext: " ",
+		deltitle: "Ausgewählte Zeile löschen",
+		searchtext: " ",
+		searchtitle: "Datensatz suchen",
+		refreshtext: "",
+		refreshtitle: "Tabelle neu laden",
+		alertcap: "Warnung",
+		alerttext: "Bitte Zeile auswählen",
+		viewtext: "",
+		viewtitle: "Ausgewählte Zeile anzeigen"
+	},
+	col : {
+		caption: "Spalten auswählen",
+		bSubmit: "Speichern",
+		bCancel: "Abbrechen"	
+	},
+	errors : {
+		errcap : "Fehler",
+		nourl : "Keine URL angegeben",
+		norecords: "Keine Datensätze zu bearbeiten",
+		model : "colNames und colModel sind unterschiedlich lang!"
+	},
+	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:   [
+				"So", "Mo", "Di", "Mi", "Do", "Fr", "Sa",
+				"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"
+			],
+			monthNames: [
+				"Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez",
+				"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"
+			],
+			AmPm : ["","","",""],
+			S: function () {return '.';}, // one can also use 'er' instead of '.' but one have to use additional word like 'der' or 'den' before
+			srcformat: 'Y-m-d',
+			newformat: 'd.m.Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			masks : {
+				// see http://php.net/manual/en/function.date.php for PHP format used in jqGrid
+				// and see http://docs.jquery.com/UI/Datepicker/formatDate
+				// and https://github.com/jquery/globalize#dates for alternative formats used frequently
+				ISO8601Long: "Y-m-d H:i:s",
+				ISO8601Short: "Y-m-d",
+				// short date:
+				//    d - Day of the month, 2 digits with leading zeros
+				//    m - Numeric representation of a month, with leading zeros
+				//    Y - A full numeric representation of a year, 4 digits
+				ShortDate: "d.m.Y",	// in jQuery UI Datepicker: "dd.MM.yyyy"
+				// long date:
+				//    l - A full textual representation of the day of the week
+				//    j - Day of the month without leading zeros
+				//    F - A full textual representation of a month
+				//    Y - A full numeric representation of a year, 4 digits
+				LongDate: "l, j. F Y", // in jQuery UI Datepicker: "dddd, d. MMMM yyyy"
+				// long date with long time:
+				//    l - A full textual representation of the day of the week
+				//    j - Day of the month without leading zeros
+				//    F - A full textual representation of a month
+				//    Y - A full numeric representation of a year, 4 digits
+				//    H - 24-hour format of an hour with leading zeros
+				//    i - Minutes with leading zeros
+				//    s - Seconds, with leading zeros
+				FullDateTime: "l, j. F Y H:i:s", // in jQuery UI Datepicker: "dddd, d. MMMM yyyy HH:mm:ss"
+				// month day:
+				//    d - Day of the month, 2 digits with leading zeros
+				//    F - A full textual representation of a month
+				MonthDay: "d F", // in jQuery UI Datepicker: "dd MMMM"
+				// short time (without seconds)
+				//    H - 24-hour format of an hour with leading zeros
+				//    i - Minutes with leading zeros
+				ShortTime: "H:i", // in jQuery UI Datepicker: "HH:mm"
+				// long time (with seconds)
+				//    H - 24-hour format of an hour with leading zeros
+				//    i - Minutes with leading zeros
+				//    s - Seconds, with leading zeros
+				LongTime: "H:i:s", // in jQuery UI Datepicker: "HH:mm:ss"
+				SortableDateTime: "Y-m-d\\TH:i:s",
+				UniversalSortableDateTime: "Y-m-d H:i:sO",
+				// month with year
+				//    F - A full textual representation of a month
+				//    Y - A full numeric representation of a year, 4 digits
+				YearMonth: "F Y" // in jQuery UI Datepicker: "MMMM yyyy"
+			},
+			reformatAfterEdit : false,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 9 - 2
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-dk.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-dk.js

@@ -12,7 +12,13 @@ $.jgrid = {
 		recordtext: "View {0} - {1} of {2}",
 	    emptyrecords: "No records to view",
 		loadtext: "Loading...",
-		pgtext : "Page {0} of {1}"
+		pgtext : "Page {0} of {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
 	},
 	search : {
 	    caption: "Søg...",
@@ -116,7 +122,8 @@ $.jgrid = {
 	            UniversalSortableDateTime: "Y-m-d H:i:sO",
 	            YearMonth: "F Y"
 	        },
-	        reformatAfterEdit : false
+	        reformatAfterEdit : false,
+			userLocalTime : false
 		},
 		baseLinkUrl: '',
 		showAction: '',

+ 135 - 126
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-el.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-el.js

@@ -1,126 +1,135 @@
-;(function($){
-/**
- * jqGrid Greek (el) Translation
- * Alex Cicovic
- * http://www.alexcicovic.com
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "View {0} - {1} of {2}",
-	    emptyrecords: "No records to view",
-		loadtext: "Φόρτωση...",
-		pgtext : "Page {0} of {1}"
-	},
-	search : {
-	    caption: "Αναζήτηση...",
-	    Find: "Εύρεση",
-	    Reset: "Επαναφορά",
-	    odata: [{ oper:'eq', text:'equal'},{ oper:'ne', text:'not equal'},{ oper:'lt', text:'less'},{ oper:'le', text:'less or equal'},{ oper:'gt', text:'greater'},{ oper:'ge', text:'greater or equal'},{ oper:'bw', text:'begins with'},{ oper:'bn', text:'does not begin with'},{ oper:'in', text:'is in'},{ oper:'ni', text:'is not in'},{ oper:'ew', text:'ends with'},{ oper:'en', text:'does not end with'},{ oper:'cn', text:'contains'},{ oper:'nc', text:'does not contain'}],
-	    groupOps: [	{ op: "AND", text: "all" },	{ op: "OR",  text: "any" }	]
-	},
-	edit : {
-	    addCaption: "Εισαγωγή Εγγραφής",
-	    editCaption: "Επεξεργασία Εγγραφής",
-	    bSubmit: "Καταχώρηση",
-	    bCancel: "Άκυρο",
-		bClose: "Κλείσιμο",
-		saveData: "Data has been changed! Save changes?",
-		bYes : "Yes",
-		bNo : "No",
-		bExit : "Cancel",
-	    msg: {
-	        required:"Το πεδίο είναι απαραίτητο",
-	        number:"Το πεδίο δέχεται μόνο αριθμούς",
-	        minValue:"Η τιμή πρέπει να είναι μεγαλύτερη ή ίση του ",
-	        maxValue:"Η τιμή πρέπει να είναι μικρότερη ή ίση του ",
-	        email: "Η διεύθυνση e-mail δεν είναι έγκυρη",
-	        integer: "Το πεδίο δέχεται μόνο ακέραιους αριθμούς",
-			url: "is not a valid URL. Prefix required ('http://' or 'https://')",
-			nodefined : " is not defined!",
-			novalue : " return value is required!",
-			customarray : "Custom function should return array!",
-			customfcheck : "Custom function should be present in case of custom checking!"
-		}
-	},
-	view : {
-	    caption: "View Record",
-	    bClose: "Close"
-	},
-	del : {
-	    caption: "Διαγραφή",
-	    msg: "Διαγραφή των επιλεγμένων εγγραφών;",
-	    bSubmit: "Ναι",
-	    bCancel: "Άκυρο"
-	},
-	nav : {
-		edittext: " ",
-	    edittitle: "Επεξεργασία επιλεγμένης εγγραφής",
-		addtext:" ",
-	    addtitle: "Εισαγωγή νέας εγγραφής",
-	    deltext: " ",
-	    deltitle: "Διαγραφή επιλεγμένης εγγραφής",
-	    searchtext: " ",
-	    searchtitle: "Εύρεση Εγγραφών",
-	    refreshtext: "",
-	    refreshtitle: "Ανανέωση Πίνακα",
-	    alertcap: "Προσοχή",
-	    alerttext: "Δεν έχετε επιλέξει εγγραφή",
-		viewtext: "",
-		viewtitle: "View selected row"
-	},
-	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 || j > 1 ? ['η'][Math.min((j - 1) % 10, 3)] : ''},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Greek (el) Translation
+ * Alex Cicovic
+ * http://www.alexcicovic.com
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "View {0} - {1} of {2}",
+	    emptyrecords: "No records to view",
+		loadtext: "Φόρτωση...",
+		pgtext : "Page {0} of {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+	    caption: "Αναζήτηση...",
+	    Find: "Εύρεση",
+	    Reset: "Επαναφορά",
+	    odata: [{ oper:'eq', text:'equal'},{ oper:'ne', text:'not equal'},{ oper:'lt', text:'less'},{ oper:'le', text:'less or equal'},{ oper:'gt', text:'greater'},{ oper:'ge', text:'greater or equal'},{ oper:'bw', text:'begins with'},{ oper:'bn', text:'does not begin with'},{ oper:'in', text:'is in'},{ oper:'ni', text:'is not in'},{ oper:'ew', text:'ends with'},{ oper:'en', text:'does not end with'},{ oper:'cn', text:'contains'},{ oper:'nc', text:'does not contain'},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+	    groupOps: [	{ op: "AND", text: "all" },	{ op: "OR",  text: "any" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+	    addCaption: "Εισαγωγή Εγγραφής",
+	    editCaption: "Επεξεργασία Εγγραφής",
+	    bSubmit: "Καταχώρηση",
+	    bCancel: "Άκυρο",
+		bClose: "Κλείσιμο",
+		saveData: "Data has been changed! Save changes?",
+		bYes : "Yes",
+		bNo : "No",
+		bExit : "Cancel",
+	    msg: {
+	        required:"Το πεδίο είναι απαραίτητο",
+	        number:"Το πεδίο δέχεται μόνο αριθμούς",
+	        minValue:"Η τιμή πρέπει να είναι μεγαλύτερη ή ίση του ",
+	        maxValue:"Η τιμή πρέπει να είναι μικρότερη ή ίση του ",
+	        email: "Η διεύθυνση e-mail δεν είναι έγκυρη",
+	        integer: "Το πεδίο δέχεται μόνο ακέραιους αριθμούς",
+			url: "is not a valid URL. Prefix required ('http://' or 'https://')",
+			nodefined : " is not defined!",
+			novalue : " return value is required!",
+			customarray : "Custom function should return array!",
+			customfcheck : "Custom function should be present in case of custom checking!"
+		}
+	},
+	view : {
+	    caption: "View Record",
+	    bClose: "Close"
+	},
+	del : {
+	    caption: "Διαγραφή",
+	    msg: "Διαγραφή των επιλεγμένων εγγραφών;",
+	    bSubmit: "Ναι",
+	    bCancel: "Άκυρο"
+	},
+	nav : {
+		edittext: " ",
+	    edittitle: "Επεξεργασία επιλεγμένης εγγραφής",
+		addtext:" ",
+	    addtitle: "Εισαγωγή νέας εγγραφής",
+	    deltext: " ",
+	    deltitle: "Διαγραφή επιλεγμένης εγγραφής",
+	    searchtext: " ",
+	    searchtitle: "Εύρεση Εγγραφών",
+	    refreshtext: "",
+	    refreshtitle: "Ανανέωση Πίνακα",
+	    alertcap: "Προσοχή",
+	    alerttext: "Δεν έχετε επιλέξει εγγραφή",
+		viewtext: "",
+		viewtitle: "View selected row"
+	},
+	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 || j > 1 ? ['η'][Math.min((j - 1) % 10, 3)] : ''},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+	    target: '',
+	    checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 177 - 168
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-en.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-en.js

@@ -1,168 +1,177 @@
-;(function($){
-/**
- * jqGrid English 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 = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "View {0} - {1} of {2}",
-		emptyrecords: "No records to view",
-		loadtext: "Loading...",
-		pgtext : "Page {0} of {1}"
-	},
-	search : {
-		caption: "Search...",
-		Find: "Find",
-		Reset: "Reset",
-		odata: [{ oper:'eq', text:'equal'},{ oper:'ne', text:'not equal'},{ oper:'lt', text:'less'},{ oper:'le', text:'less or equal'},{ oper:'gt', text:'greater'},{ oper:'ge', text:'greater or equal'},{ oper:'bw', text:'begins with'},{ oper:'bn', text:'does not begin with'},{ oper:'in', text:'is in'},{ oper:'ni', text:'is not in'},{ oper:'ew', text:'ends with'},{ oper:'en', text:'does not end with'},{ oper:'cn', text:'contains'},{ oper:'nc', text:'does not contain'}],
-		groupOps: [	{ op: "AND", text: "all" },	{ op: "OR",  text: "any" }	]
-	},
-	edit : {
-		addCaption: "Add Record",
-		editCaption: "Edit Record",
-		bSubmit: "Submit",
-		bCancel: "Cancel",
-		bClose: "Close",
-		saveData: "Data has been changed! Save changes?",
-		bYes : "Yes",
-		bNo : "No",
-		bExit : "Cancel",
-		msg: {
-			required:"Field is required",
-			number:"Please, enter valid number",
-			minValue:"value must be greater than or equal to ",
-			maxValue:"value must be less than or equal to",
-			email: "is not a valid e-mail",
-			integer: "Please, enter valid integer value",
-			date: "Please, enter valid date value",
-			url: "is not a valid URL. Prefix required ('http://' or 'https://')",
-			nodefined : " is not defined!",
-			novalue : " return value is required!",
-			customarray : "Custom function should return array!",
-			customfcheck : "Custom function should be present in case of custom checking!"
-			
-		}
-	},
-	view : {
-		caption: "View Record",
-		bClose: "Close"
-	},
-	del : {
-		caption: "Delete",
-		msg: "Delete selected record(s)?",
-		bSubmit: "Delete",
-		bCancel: "Cancel"
-	},
-	nav : {
-		edittext: "",
-		edittitle: "Edit selected row",
-		addtext:"",
-		addtitle: "Add new row",
-		deltext: "",
-		deltitle: "Delete selected row",
-		searchtext: "",
-		searchtitle: "Find records",
-		refreshtext: "",
-		refreshtitle: "Reload Grid",
-		alertcap: "Warning",
-		alerttext: "Please, select row",
-		viewtext: "",
-		viewtitle: "View selected row"
-	},
-	col : {
-		caption: "Select columns",
-		bSubmit: "Ok",
-		bCancel: "Cancel"
-	},
-	errors : {
-		errcap : "Error",
-		nourl : "No url is set",
-		norecords: "No records to process",
-		model : "Length of 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:   [
-				"Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat",
-				"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
-			],
-			monthNames: [
-				"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
-				"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
-			],
-			AmPm : ["am","pm","AM","PM"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';},
-			srcformat: 'Y-m-d',
-			newformat: 'n/j/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			masks : {
-				// see http://php.net/manual/en/function.date.php for PHP format used in jqGrid
-				// and see http://docs.jquery.com/UI/Datepicker/formatDate
-				// and https://github.com/jquery/globalize#dates for alternative formats used frequently
-				// one can find on https://github.com/jquery/globalize/tree/master/lib/cultures many
-				// information about date, time, numbers and currency formats used in different countries
-				// one should just convert the information in PHP format
-				ISO8601Long:"Y-m-d H:i:s",
-				ISO8601Short:"Y-m-d",
-				// short date:
-				//    n - Numeric representation of a month, without leading zeros
-				//    j - Day of the month without leading zeros
-				//    Y - A full numeric representation of a year, 4 digits
-				// example: 3/1/2012 which means 1 March 2012
-				ShortDate: "n/j/Y", // in jQuery UI Datepicker: "M/d/yyyy"
-				// long date:
-				//    l - A full textual representation of the day of the week
-				//    F - A full textual representation of a month
-				//    d - Day of the month, 2 digits with leading zeros
-				//    Y - A full numeric representation of a year, 4 digits
-				LongDate: "l, F d, Y", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy"
-				// long date with long time:
-				//    l - A full textual representation of the day of the week
-				//    F - A full textual representation of a month
-				//    d - Day of the month, 2 digits with leading zeros
-				//    Y - A full numeric representation of a year, 4 digits
-				//    g - 12-hour format of an hour without leading zeros
-				//    i - Minutes with leading zeros
-				//    s - Seconds, with leading zeros
-				//    A - Uppercase Ante meridiem and Post meridiem (AM or PM)
-				FullDateTime: "l, F d, Y g:i:s A", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy h:mm:ss tt"
-				// month day:
-				//    F - A full textual representation of a month
-				//    d - Day of the month, 2 digits with leading zeros
-				MonthDay: "F d", // in jQuery UI Datepicker: "MMMM dd"
-				// short time (without seconds)
-				//    g - 12-hour format of an hour without leading zeros
-				//    i - Minutes with leading zeros
-				//    A - Uppercase Ante meridiem and Post meridiem (AM or PM)
-				ShortTime: "g:i A", // in jQuery UI Datepicker: "h:mm tt"
-				// long time (with seconds)
-				//    g - 12-hour format of an hour without leading zeros
-				//    i - Minutes with leading zeros
-				//    s - Seconds, with leading zeros
-				//    A - Uppercase Ante meridiem and Post meridiem (AM or PM)
-				LongTime: "g:i:s A", // in jQuery UI Datepicker: "h:mm:ss tt"
-				SortableDateTime: "Y-m-d\\TH:i:s",
-				UniversalSortableDateTime: "Y-m-d H:i:sO",
-				// month with year
-				//    Y - A full numeric representation of a year, 4 digits
-				//    F - A full textual representation of a month
-				YearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy"
-			},
-			reformatAfterEdit : false
-		},
-		baseLinkUrl: '',
-		showAction: '',
-		target: '',
-		checkbox : {disabled:true},
-		idName : 'id'
-	}
-});
-})(jQuery);
+;(function($){
+/**
+ * jqGrid English 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 = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "View {0} - {1} of {2}",
+		emptyrecords: "No records to view",
+		loadtext: "Loading...",
+		pgtext : "Page {0} of {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "Search...",
+		Find: "Find",
+		Reset: "Reset",
+		odata: [{ oper:'eq', text:'equal'},{ oper:'ne', text:'not equal'},{ oper:'lt', text:'less'},{ oper:'le', text:'less or equal'},{ oper:'gt', text:'greater'},{ oper:'ge', text:'greater or equal'},{ oper:'bw', text:'begins with'},{ oper:'bn', text:'does not begin with'},{ oper:'in', text:'is in'},{ oper:'ni', text:'is not in'},{ oper:'ew', text:'ends with'},{ oper:'en', text:'does not end with'},{ oper:'cn', text:'contains'},{ oper:'nc', text:'does not contain'},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+		groupOps: [{ op: "AND", text: "all" },{ op: "OR",  text: "any" }],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "Add Record",
+		editCaption: "Edit Record",
+		bSubmit: "Submit",
+		bCancel: "Cancel",
+		bClose: "Close",
+		saveData: "Data has been changed! Save changes?",
+		bYes : "Yes",
+		bNo : "No",
+		bExit : "Cancel",
+		msg: {
+			required:"Field is required",
+			number:"Please, enter valid number",
+			minValue:"value must be greater than or equal to ",
+			maxValue:"value must be less than or equal to",
+			email: "is not a valid e-mail",
+			integer: "Please, enter valid integer value",
+			date: "Please, enter valid date value",
+			url: "is not a valid URL. Prefix required ('http://' or 'https://')",
+			nodefined : " is not defined!",
+			novalue : " return value is required!",
+			customarray : "Custom function should return array!",
+			customfcheck : "Custom function should be present in case of custom checking!"
+			
+		}
+	},
+	view : {
+		caption: "View Record",
+		bClose: "Close"
+	},
+	del : {
+		caption: "Delete",
+		msg: "Delete selected record(s)?",
+		bSubmit: "Delete",
+		bCancel: "Cancel"
+	},
+	nav : {
+		edittext: "",
+		edittitle: "Edit selected row",
+		addtext:"",
+		addtitle: "Add new row",
+		deltext: "",
+		deltitle: "Delete selected row",
+		searchtext: "",
+		searchtitle: "Find records",
+		refreshtext: "",
+		refreshtitle: "Reload Grid",
+		alertcap: "Warning",
+		alerttext: "Please, select row",
+		viewtext: "",
+		viewtitle: "View selected row"
+	},
+	col : {
+		caption: "Select columns",
+		bSubmit: "Ok",
+		bCancel: "Cancel"
+	},
+	errors : {
+		errcap : "Error",
+		nourl : "No url is set",
+		norecords: "No records to process",
+		model : "Length of 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:   [
+				"Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat",
+				"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
+			],
+			monthNames: [
+				"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
+				"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
+			],
+			AmPm : ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';},
+			srcformat: 'Y-m-d',
+			newformat: 'n/j/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			masks : {
+				// see http://php.net/manual/en/function.date.php for PHP format used in jqGrid
+				// and see http://docs.jquery.com/UI/Datepicker/formatDate
+				// and https://github.com/jquery/globalize#dates for alternative formats used frequently
+				// one can find on https://github.com/jquery/globalize/tree/master/lib/cultures many
+				// information about date, time, numbers and currency formats used in different countries
+				// one should just convert the information in PHP format
+				ISO8601Long:"Y-m-d H:i:s",
+				ISO8601Short:"Y-m-d",
+				// short date:
+				//    n - Numeric representation of a month, without leading zeros
+				//    j - Day of the month without leading zeros
+				//    Y - A full numeric representation of a year, 4 digits
+				// example: 3/1/2012 which means 1 March 2012
+				ShortDate: "n/j/Y", // in jQuery UI Datepicker: "M/d/yyyy"
+				// long date:
+				//    l - A full textual representation of the day of the week
+				//    F - A full textual representation of a month
+				//    d - Day of the month, 2 digits with leading zeros
+				//    Y - A full numeric representation of a year, 4 digits
+				LongDate: "l, F d, Y", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy"
+				// long date with long time:
+				//    l - A full textual representation of the day of the week
+				//    F - A full textual representation of a month
+				//    d - Day of the month, 2 digits with leading zeros
+				//    Y - A full numeric representation of a year, 4 digits
+				//    g - 12-hour format of an hour without leading zeros
+				//    i - Minutes with leading zeros
+				//    s - Seconds, with leading zeros
+				//    A - Uppercase Ante meridiem and Post meridiem (AM or PM)
+				FullDateTime: "l, F d, Y g:i:s A", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy h:mm:ss tt"
+				// month day:
+				//    F - A full textual representation of a month
+				//    d - Day of the month, 2 digits with leading zeros
+				MonthDay: "F d", // in jQuery UI Datepicker: "MMMM dd"
+				// short time (without seconds)
+				//    g - 12-hour format of an hour without leading zeros
+				//    i - Minutes with leading zeros
+				//    A - Uppercase Ante meridiem and Post meridiem (AM or PM)
+				ShortTime: "g:i A", // in jQuery UI Datepicker: "h:mm tt"
+				// long time (with seconds)
+				//    g - 12-hour format of an hour without leading zeros
+				//    i - Minutes with leading zeros
+				//    s - Seconds, with leading zeros
+				//    A - Uppercase Ante meridiem and Post meridiem (AM or PM)
+				LongTime: "g:i:s A", // in jQuery UI Datepicker: "h:mm:ss tt"
+				SortableDateTime: "Y-m-d\\TH:i:s",
+				UniversalSortableDateTime: "Y-m-d H:i:sO",
+				// month with year
+				//    Y - A full numeric representation of a year, 4 digits
+				//    F - A full textual representation of a month
+				YearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy"
+			},
+			reformatAfterEdit : false,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 137 - 128
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-es.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-es.js

@@ -1,128 +1,137 @@
-;(function($){
-/**
- * jqGrid Spanish Translation
- * Traduccion jqGrid en Español por Yamil Bracho
- * Traduccion corregida y ampliada por Faserline, S.L. 
- * http://www.faserline.com
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Mostrando {0} - {1} de {2}",
-	    emptyrecords: "Sin registros que mostrar",
-		loadtext: "Cargando...",
-		pgtext : "Página {0} de {1}"
-	},
-	search : {
-	    caption: "Búsqueda...",
-	    Find: "Buscar",
-	    Reset: "Limpiar",
-	    odata: [{ oper:'eq', text:"igual "},{ oper:'ne', text:"no igual a"},{ oper:'lt', text:"menor que"},{ oper:'le', text:"menor o igual que"},{ oper:'gt', text:"mayor que"},{ oper:'ge', text:"mayor o igual a"},{ oper:'bw', text:"empiece por"},{ oper:'bn', text:"no empiece por"},{ oper:'in', text:"está en"},{ oper:'ni', text:"no está en"},{ oper:'ew', text:"termina por"},{ oper:'en', text:"no termina por"},{ oper:'cn', text:"contiene"},{ oper:'nc', text:"no contiene"}],
-	    groupOps: [	{ op: "AND", text: "todo" },	{ op: "OR",  text: "cualquier" }	]
-	},
-	edit : {
-	    addCaption: "Agregar registro",
-	    editCaption: "Modificar registro",
-	    bSubmit: "Guardar",
-	    bCancel: "Cancelar",
-		bClose: "Cerrar",
-		saveData: "Se han modificado los datos, ¿guardar cambios?",
-		bYes : "Si",
-		bNo : "No",
-		bExit : "Cancelar",
-	    msg: {
-	        required:"Campo obligatorio",
-	        number:"Introduzca un número",
-	        minValue:"El valor debe ser mayor o igual a ",
-	        maxValue:"El valor debe ser menor o igual a ",
-	        email: "no es una dirección de correo válida",
-	        integer: "Introduzca un valor entero",
-			date: "Introduza una fecha correcta ",
-			url: "no es una URL válida. Prefijo requerido ('http://' or 'https://')",
-			nodefined : " no está definido.",
-			novalue : " valor de retorno es requerido.",
-			customarray : "La función personalizada debe devolver un array.",
-			customfcheck : "La función personalizada debe estar presente en el caso de validación personalizada."
-		}
-	},
-	view : {
-	    caption: "Consultar registro",
-	    bClose: "Cerrar"
-	},
-	del : {
-	    caption: "Eliminar",
-	    msg: "¿Desea eliminar los registros seleccionados?",
-	    bSubmit: "Eliminar",
-	    bCancel: "Cancelar"
-	},
-	nav : {
-		edittext: " ",
-	    edittitle: "Modificar fila seleccionada",
-		addtext:" ",
-	    addtitle: "Agregar nueva fila",
-	    deltext: " ",
-	    deltitle: "Eliminar fila seleccionada",
-	    searchtext: " ",
-	    searchtitle: "Buscar información",
-	    refreshtext: "",
-	    refreshtitle: "Recargar datos",
-	    alertcap: "Aviso",
-	    alerttext: "Seleccione una fila",
-		viewtext: "",
-		viewtitle: "Ver fila seleccionada"
-	},
-	col : {
-	    caption: "Mostrar/ocultar columnas",
-	    bSubmit: "Enviar",
-	    bCancel: "Cancelar"	
-	},
-	errors : {
-		errcap : "Error",
-		nourl : "No se ha especificado una URL",
-		norecords: "No hay datos para procesar",
-	    model : "Las columnas de nombres son diferentes de las columnas de modelo"
-	},
-	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:   [
-				"Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa",
-				"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"
-			],
-			monthNames: [
-				"Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic",
-				"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"
-			],
-			AmPm : ["am","pm","AM","PM"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'd-m-Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Spanish Translation
+ * Traduccion jqGrid en Español por Yamil Bracho
+ * Traduccion corregida y ampliada por Faserline, S.L. 
+ * http://www.faserline.com
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Mostrando {0} - {1} de {2}",
+	    emptyrecords: "Sin registros que mostrar",
+		loadtext: "Cargando...",
+		pgtext : "Página {0} de {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+	    caption: "Búsqueda...",
+	    Find: "Buscar",
+	    Reset: "Limpiar",
+	    odata: [{ oper:'eq', text:"igual "},{ oper:'ne', text:"no igual a"},{ oper:'lt', text:"menor que"},{ oper:'le', text:"menor o igual que"},{ oper:'gt', text:"mayor que"},{ oper:'ge', text:"mayor o igual a"},{ oper:'bw', text:"empiece por"},{ oper:'bn', text:"no empiece por"},{ oper:'in', text:"está en"},{ oper:'ni', text:"no está en"},{ oper:'ew', text:"termina por"},{ oper:'en', text:"no termina por"},{ oper:'cn', text:"contiene"},{ oper:'nc', text:"no contiene"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+	    groupOps: [	{ op: "AND", text: "todo" },	{ op: "OR",  text: "cualquier" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+	    addCaption: "Agregar registro",
+	    editCaption: "Modificar registro",
+	    bSubmit: "Guardar",
+	    bCancel: "Cancelar",
+		bClose: "Cerrar",
+		saveData: "Se han modificado los datos, ¿guardar cambios?",
+		bYes : "Si",
+		bNo : "No",
+		bExit : "Cancelar",
+	    msg: {
+	        required:"Campo obligatorio",
+	        number:"Introduzca un número",
+	        minValue:"El valor debe ser mayor o igual a ",
+	        maxValue:"El valor debe ser menor o igual a ",
+	        email: "no es una dirección de correo válida",
+	        integer: "Introduzca un valor entero",
+			date: "Introduza una fecha correcta ",
+			url: "no es una URL válida. Prefijo requerido ('http://' or 'https://')",
+			nodefined : " no está definido.",
+			novalue : " valor de retorno es requerido.",
+			customarray : "La función personalizada debe devolver un array.",
+			customfcheck : "La función personalizada debe estar presente en el caso de validación personalizada."
+		}
+	},
+	view : {
+	    caption: "Consultar registro",
+	    bClose: "Cerrar"
+	},
+	del : {
+	    caption: "Eliminar",
+	    msg: "¿Desea eliminar los registros seleccionados?",
+	    bSubmit: "Eliminar",
+	    bCancel: "Cancelar"
+	},
+	nav : {
+		edittext: " ",
+	    edittitle: "Modificar fila seleccionada",
+		addtext:" ",
+	    addtitle: "Agregar nueva fila",
+	    deltext: " ",
+	    deltitle: "Eliminar fila seleccionada",
+	    searchtext: " ",
+	    searchtitle: "Buscar información",
+	    refreshtext: "",
+	    refreshtitle: "Recargar datos",
+	    alertcap: "Aviso",
+	    alerttext: "Seleccione una fila",
+		viewtext: "",
+		viewtitle: "Ver fila seleccionada"
+	},
+	col : {
+	    caption: "Mostrar/ocultar columnas",
+	    bSubmit: "Enviar",
+	    bCancel: "Cancelar"	
+	},
+	errors : {
+		errcap : "Error",
+		nourl : "No se ha especificado una URL",
+		norecords: "No hay datos para procesar",
+	    model : "Las columnas de nombres son diferentes de las columnas de modelo"
+	},
+	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:   [
+				"Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa",
+				"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"
+			],
+			monthNames: [
+				"Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic",
+				"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"
+			],
+			AmPm : ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'd-m-Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+	    target: '',
+	    checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 153 - 144
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-fa.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-fa.js

@@ -1,145 +1,154 @@
-;(function ($) {
-/**
- * jqGrid Persian Translation
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-	$.jgrid = $.jgrid || {};
-	$.extend($.jgrid,{
-        defaults: {
-            recordtext: "نمابش {0} - {1} از {2}",
-            emptyrecords: "رکوردی یافت نشد",
-            loadtext: "بارگزاري...",
-            pgtext: "صفحه {0} از {1}"
-        },
-        search: {
-            caption: "جستجو...",
-            Find: "يافته ها",
-            Reset: "از نو",
-            odata: [{ oper:'eq', text:"برابر"},{ oper:'ne', text:"نا برابر"},{ oper:'lt', text:"به"},{ oper:'le', text:"کوچکتر"},{ oper:'gt', text:"از"},{ oper:'ge', text:"بزرگتر"},{ oper:'bw', text:"شروع با"},{ oper:'bn', text:"شروع نشود با"},{ oper:'in', text:"نباشد"},{ oper:'ni', text:"عضو این نباشد"},{ oper:'ew', text:"اتمام با"},{ oper:'en', text:"تمام نشود با"},{ oper:'cn', text:"حاوی"},{ oper:'nc', text:"نباشد حاوی"}],
-            groupOps: [{
-                op: "AND",
-                text: "کل"
-            },
-            {
-                op: "OR",
-                text: "مجموع"
-            }]
-        },
-        edit: {
-            addCaption: "اضافه کردن رکورد",
-            editCaption: "ويرايش رکورد",
-            bSubmit: "ثبت",
-            bCancel: "انصراف",
-            bClose: "بستن",
-            saveData: "دیتا تعییر کرد! ذخیره شود؟",
-            bYes: "بله",
-            bNo: "خیر",
-            bExit: "انصراف",
-            msg: {
-                required: "فيلدها بايد ختما پر شوند",
-                number: "لطفا عدد وعتبر وارد کنيد",
-                minValue: "مقدار وارد شده بايد بزرگتر يا مساوي با",
-                maxValue: "مقدار وارد شده بايد کوچکتر يا مساوي",
-                email: "پست الکترونيک وارد شده معتبر نيست",
-                integer: "لطفا يک عدد صحيح وارد کنيد",
-                date: "لطفا يک تاريخ معتبر وارد کنيد",
-                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: "طول نام ستون ها محالف ستون هاي مدل مي باشد!"
-        },
-        formatter: {
-            integer: {
-                thousandsSeparator: " ",
-                defaultValue: "0"
-            },
-            number: {
-                decimalSeparator: ".",
-                thousandsSeparator: " ",
-                decimalPlaces: 2,
-                defaultValue: "0.00"
-            },
-            currency: {
-                decimalSeparator: ".",
-                thousandsSeparator: " ",
-                decimalPlaces: 2,
-                prefix: "",
-                suffix: "",
-                defaultValue: "0"
-            },
-            date: {
-                dayNames: ["يک", "دو", "سه", "چهار", "پنج", "جمع", "شنب", "يکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه"],
-                monthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "ژانويه", "فوريه", "مارس", "آوريل", "مه", "ژوئن", "ژوئيه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "December"],
-                AmPm: ["ب.ظ", "ب.ظ", "ق.ظ", "ق.ظ"],
-                S: function (b) {
-                    return b < 11 || b > 13 ? ["st", "nd", "rd", "th"][Math.min((b - 1) % 10, 3)] : "th"
-                },
-                srcformat: "Y-m-d",
-                newformat: "d/m/Y",
-				parseRe : /[Tt\\\/:_;.,\t\s-]/,
-                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"
-        }
-    });
+;(function ($) {
+/**
+ * jqGrid Persian Translation
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+	$.jgrid = $.jgrid || {};
+	$.extend($.jgrid,{
+        defaults: {
+            recordtext: "نمابش {0} - {1} از {2}",
+            emptyrecords: "رکوردی یافت نشد",
+            loadtext: "بارگزاري...",
+            pgtext: "صفحه {0} از {1}",
+			pgfirst : "First Page",
+			pglast : "Last Page",
+			pgnext : "Next Page",
+			pgprev : "Previous Page",
+			pgrecs : "Records per Page",
+			showhide: "Toggle Expand Collapse Grid"
+        },
+        search: {
+            caption: "جستجو...",
+            Find: "يافته ها",
+            Reset: "از نو",
+            odata: [{ oper:'eq', text:"برابر"},{ oper:'ne', text:"نا برابر"},{ oper:'lt', text:"به"},{ oper:'le', text:"کوچکتر"},{ oper:'gt', text:"از"},{ oper:'ge', text:"بزرگتر"},{ oper:'bw', text:"شروع با"},{ oper:'bn', text:"شروع نشود با"},{ oper:'in', text:"نباشد"},{ oper:'ni', text:"عضو این نباشد"},{ oper:'ew', text:"اتمام با"},{ oper:'en', text:"تمام نشود با"},{ oper:'cn', text:"حاوی"},{ oper:'nc', text:"نباشد حاوی"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+            groupOps: [{
+                op: "AND",
+                text: "کل"
+            },
+            {
+                op: "OR",
+                text: "مجموع"
+            }],
+			operandTitle : "Click to select search operation.",
+			resetTitle : "Reset Search Value"
+        },
+        edit: {
+            addCaption: "اضافه کردن رکورد",
+            editCaption: "ويرايش رکورد",
+            bSubmit: "ثبت",
+            bCancel: "انصراف",
+            bClose: "بستن",
+            saveData: "دیتا تعییر کرد! ذخیره شود؟",
+            bYes: "بله",
+            bNo: "خیر",
+            bExit: "انصراف",
+            msg: {
+                required: "فيلدها بايد ختما پر شوند",
+                number: "لطفا عدد وعتبر وارد کنيد",
+                minValue: "مقدار وارد شده بايد بزرگتر يا مساوي با",
+                maxValue: "مقدار وارد شده بايد کوچکتر يا مساوي",
+                email: "پست الکترونيک وارد شده معتبر نيست",
+                integer: "لطفا يک عدد صحيح وارد کنيد",
+                date: "لطفا يک تاريخ معتبر وارد کنيد",
+                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: "طول نام ستون ها محالف ستون هاي مدل مي باشد!"
+        },
+        formatter: {
+            integer: {
+                thousandsSeparator: " ",
+                defaultValue: "0"
+            },
+            number: {
+                decimalSeparator: ".",
+                thousandsSeparator: " ",
+                decimalPlaces: 2,
+                defaultValue: "0.00"
+            },
+            currency: {
+                decimalSeparator: ".",
+                thousandsSeparator: " ",
+                decimalPlaces: 2,
+                prefix: "",
+                suffix: "",
+                defaultValue: "0"
+            },
+            date: {
+                dayNames: ["يک", "دو", "سه", "چهار", "پنج", "جمع", "شنب", "يکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه"],
+                monthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "ژانويه", "فوريه", "مارس", "آوريل", "مه", "ژوئن", "ژوئيه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "December"],
+                AmPm: ["ب.ظ", "ب.ظ", "ق.ظ", "ق.ظ"],
+                S: function (b) {
+                    return b < 11 || b > 13 ? ["st", "nd", "rd", "th"][Math.min((b - 1) % 10, 3)] : "th"
+                },
+                srcformat: "Y-m-d",
+                newformat: "d/m/Y",
+				parseRe : /[#%\\\/:_;.,\t\s-]/,
+                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,
+				userLocalTime : false
+            },
+            baseLinkUrl: "",
+            showAction: "نمايش",
+            target: "",
+            checkbox: {
+                disabled: true
+            },
+            idName: "id"
+        }
+    });
 })(jQuery);

+ 138 - 129
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-fi.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-fi.js

@@ -1,129 +1,138 @@
-;(function($){
-/**
- * jqGrid (fi) Finnish Translation
- * Jukka Inkeri  awot.fi  2010-05-19
- * Alex Grönholm  alex.gronholm@nextday.fi  2011-05-18
- * http://awot.fi
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults: {
-		recordtext: "Rivit {0} - {1} / {2}",
-	    emptyrecords: "Ei n&auml;ytett&auml;vi&auml;",
-		loadtext: "Haetaan...",
-		pgtext: "Sivu {0} / {1}"
-	},
-	search: {
-	    caption: "Etsi...",
-	    Find: "Etsi",
-	    Reset: "Tyhjenn&auml;",
-	    odata: [{ oper:'eq', text:"on"},{ oper:'ne', text:"ei ole"},{ oper:'lt', text:"pienempi"},{ oper:'le', text:"pienempi tai yht&auml;suuri"},{ oper:'gt', text:"suurempi"},{ oper:'ge', text:"suurempi tai yht&auml;suuri"},{ oper:'bw', text:"alkaa"},{ oper:'bn', text:"ei ala"},{ oper:'in', text:"joukossa"},{ oper:'ni', text:"ei joukossa"},{ oper:'ew', text:"loppuu"},{ oper:'en', text:"ei lopu"},{ oper:'cn', text:"sis&auml;lt&auml;&auml;"},{ oper:'nc', text:"ei sis&auml;ll&auml;"},{ oper:'nu', text:"on tyhj&auml;"},{ oper:'nn', text:"ei ole tyhj&auml;"}],
-	    groupOps: [	{ op: "AND", text: "kaikki" }, { op: "OR", text: "mik&auml; tahansa" }	]
-	},
-	edit: {
-	    addCaption: "Uusi rivi",
-	    editCaption: "Muokkaa rivi&auml;",
-	    bSubmit: "OK",
-	    bCancel: "Peru",
-		bClose: "Sulje",
-		saveData: "Tietoja muutettu! Tallennetaanko?",
-		bYes: "Kyll&auml;",
-		bNo: "Ei",
-		bExit: "Peru",
-	    msg: {
-	        required: "pakollinen",
-	        number: "Anna kelvollinen nro",
-	        minValue: "arvon oltava suurempi tai yht&auml;suuri kuin ",
-	        maxValue: "arvon oltava pienempi tai yht&auml;suuri kuin ",
-	        email: "ei ole kelvollinen s&auml;postiosoite",
-	        integer: "Anna kelvollinen kokonaisluku",
-			date: "Anna kelvollinen pvm",
-			url: "Ei ole kelvollinen linkki(URL). Alku oltava ('http://' tai 'https://')",
-			nodefined: " ei ole m&auml;&auml;ritelty!",
-			novalue: " paluuarvo vaaditaan!",
-			customarray: "Oman funktion tulee palauttaa jono!",
-			customfcheck: "Oma funktio on m&auml;&auml;ritelt&auml;v&auml; r&auml;&auml;t&auml;l&ouml;ity&auml; tarkastusta varten!"
-		}
-	},
-	view: {
-	    caption: "N&auml;yt&auml; rivi",
-	    bClose: "Sulje"
-	},
-	del: {
-	    caption: "Poista",
-	    msg: "Poista valitut rivit?",
-	    bSubmit: "Poista",
-	    bCancel: "Peru"
-	},
-	nav: {
-		edittext: "",
-	    edittitle: "Muokkaa valittua rivi&auml;",
-		addtext: "",
-	    addtitle: "Uusi rivi",
-	    deltext: "",
-	    deltitle: "Poista valittu rivi",
-	    searchtext: "",
-	    searchtitle: "Etsi tietoja",
-	    refreshtext: "",
-	    refreshtitle: "Lataa uudelleen",
-	    alertcap: "Varoitus",
-	    alerttext: "Valitse rivi",
-		viewtext: "",
-		viewtitle: "N&auml;yta valitut rivit"
-	},
-	col: {
-	    caption: "Valitse sarakkeet",
-	    bSubmit: "OK",
-	    bCancel: "Peru"	
-	},
-	errors : {
-		errcap: "Virhe",
-		nourl: "URL on asettamatta",
-		norecords: "Ei muokattavia tietoja",
-	    model: "Pituus 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:   [
-				"Su", "Ma", "Ti", "Ke", "To", "Pe", "La",
-				"Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai"
-			],
-			monthNames: [
-				"Tam", "Hel", "Maa", "Huh", "Tou", "Kes", "Hei", "Elo", "Syy", "Lok", "Mar", "Jou",
-				"Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kes&auml;kuu", "Hein&auml;kuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"
-			],
-			AmPm: ["am","pm","AM","PM"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'd.m.Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			masks: {
-	            ISO8601Long:"Y-m-d H:i:s",
-	            ISO8601Short:"Y-m-d",
-	            ShortDate: "d.m.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'
-	}
-});
-// FI
-})(jQuery);
+;(function($){
+/**
+ * jqGrid (fi) Finnish Translation
+ * Jukka Inkeri  awot.fi  2010-05-19
+ * Alex Grönholm  alex.gronholm@nextday.fi  2011-05-18
+ * http://awot.fi
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults: {
+		recordtext: "Rivit {0} - {1} / {2}",
+	    emptyrecords: "Ei n&auml;ytett&auml;vi&auml;",
+		loadtext: "Haetaan...",
+		pgtext: "Sivu {0} / {1}",		
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search: {
+	    caption: "Etsi...",
+	    Find: "Etsi",
+	    Reset: "Tyhjenn&auml;",
+	    odata: [{ oper:'eq', text:"on"},{ oper:'ne', text:"ei ole"},{ oper:'lt', text:"pienempi"},{ oper:'le', text:"pienempi tai yht&auml;suuri"},{ oper:'gt', text:"suurempi"},{ oper:'ge', text:"suurempi tai yht&auml;suuri"},{ oper:'bw', text:"alkaa"},{ oper:'bn', text:"ei ala"},{ oper:'in', text:"joukossa"},{ oper:'ni', text:"ei joukossa"},{ oper:'ew', text:"loppuu"},{ oper:'en', text:"ei lopu"},{ oper:'cn', text:"sis&auml;lt&auml;&auml;"},{ oper:'nc', text:"ei sis&auml;ll&auml;"},{ oper:'nu', text:"on tyhj&auml;"},{ oper:'nn', text:"ei ole tyhj&auml;"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+	    groupOps: [	{ op: "AND", text: "kaikki" }, { op: "OR", text: "mik&auml; tahansa" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"		
+	},
+	edit: {
+	    addCaption: "Uusi rivi",
+	    editCaption: "Muokkaa rivi&auml;",
+	    bSubmit: "OK",
+	    bCancel: "Peru",
+		bClose: "Sulje",
+		saveData: "Tietoja muutettu! Tallennetaanko?",
+		bYes: "Kyll&auml;",
+		bNo: "Ei",
+		bExit: "Peru",
+	    msg: {
+	        required: "pakollinen",
+	        number: "Anna kelvollinen nro",
+	        minValue: "arvon oltava suurempi tai yht&auml;suuri kuin ",
+	        maxValue: "arvon oltava pienempi tai yht&auml;suuri kuin ",
+	        email: "ei ole kelvollinen s&auml;postiosoite",
+	        integer: "Anna kelvollinen kokonaisluku",
+			date: "Anna kelvollinen pvm",
+			url: "Ei ole kelvollinen linkki(URL). Alku oltava ('http://' tai 'https://')",
+			nodefined: " ei ole m&auml;&auml;ritelty!",
+			novalue: " paluuarvo vaaditaan!",
+			customarray: "Oman funktion tulee palauttaa jono!",
+			customfcheck: "Oma funktio on m&auml;&auml;ritelt&auml;v&auml; r&auml;&auml;t&auml;l&ouml;ity&auml; tarkastusta varten!"
+		}
+	},
+	view: {
+	    caption: "N&auml;yt&auml; rivi",
+	    bClose: "Sulje"
+	},
+	del: {
+	    caption: "Poista",
+	    msg: "Poista valitut rivit?",
+	    bSubmit: "Poista",
+	    bCancel: "Peru"
+	},
+	nav: {
+		edittext: "",
+	    edittitle: "Muokkaa valittua rivi&auml;",
+		addtext: "",
+	    addtitle: "Uusi rivi",
+	    deltext: "",
+	    deltitle: "Poista valittu rivi",
+	    searchtext: "",
+	    searchtitle: "Etsi tietoja",
+	    refreshtext: "",
+	    refreshtitle: "Lataa uudelleen",
+	    alertcap: "Varoitus",
+	    alerttext: "Valitse rivi",
+		viewtext: "",
+		viewtitle: "N&auml;yta valitut rivit"
+	},
+	col: {
+	    caption: "Valitse sarakkeet",
+	    bSubmit: "OK",
+	    bCancel: "Peru"	
+	},
+	errors : {
+		errcap: "Virhe",
+		nourl: "URL on asettamatta",
+		norecords: "Ei muokattavia tietoja",
+	    model: "Pituus 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:   [
+				"Su", "Ma", "Ti", "Ke", "To", "Pe", "La",
+				"Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai"
+			],
+			monthNames: [
+				"Tam", "Hel", "Maa", "Huh", "Tou", "Kes", "Hei", "Elo", "Syy", "Lok", "Mar", "Jou",
+				"Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kes&auml;kuu", "Hein&auml;kuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"
+			],
+			AmPm: ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'd.m.Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			masks: {
+	            ISO8601Long:"Y-m-d H:i:s",
+	            ISO8601Short:"Y-m-d",
+	            ShortDate: "d.m.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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+	    target: '',
+	    checkbox: {disabled:true},
+		idName: 'id'
+	}
+});
+// FI
+})(jQuery);

+ 135 - 126
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-fr.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-fr.js

@@ -1,126 +1,135 @@
-;(function($){
-/**
- * jqGrid French 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 = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Enregistrements {0} - {1} sur {2}",
-		emptyrecords: "Aucun enregistrement à afficher",
-		loadtext: "Chargement...",
-		pgtext : "Page {0} sur {1}"
-	},
-	search : {
-		caption: "Recherche...",
-		Find: "Chercher",
-		Reset: "Réinitialiser",
-		odata: [{ oper:'eq', text:"égal"},{ oper:'ne', text:"différent"},{ oper:'lt', text:"inférieur"},{ oper:'le', text:"inférieur ou égal"},{ oper:'gt', text:"supérieur"},{ oper:'ge', text:"supérieur ou égal"},{ oper:'bw', text:"commence par"},{ oper:'bn', text:"ne commence pas par"},{ oper:'in', text:"est dans"},{ oper:'ni', text:"n'est pas dans"},{ oper:'ew', text:"finit par"},{ oper:'en', text:"ne finit pas par"},{ oper:'cn', text:"contient"},{ oper:'nc', text:"ne contient pas"}],
-		groupOps: [	{ op: "AND", text: "tous" },	{ op: "OR",  text: "au moins un" }	]
-	},
-	edit : {
-		addCaption: "Ajouter",
-		editCaption: "Editer",
-		bSubmit: "Valider",
-		bCancel: "Annuler",
-		bClose: "Fermer",
-		saveData: "Les données ont changé ! Enregistrer les modifications ?",
-		bYes: "Oui",
-		bNo: "Non",
-		bExit: "Annuler",
-		msg: {
-			required: "Champ obligatoire",
-			number: "Saisissez un nombre correct",
-			minValue: "La valeur doit être supérieure ou égale à",
-			maxValue: "La valeur doit être inférieure ou égale à",
-			email: "n'est pas un email correct",
-			integer: "Saisissez un entier correct",
-			url: "n'est pas une adresse correcte. Préfixe requis ('http://' or 'https://')",
-			nodefined : " n'est pas défini!",
-			novalue : " la valeur de retour est requise!",
-			customarray : "Une fonction personnalisée devrait retourner un tableau (array)!",
-			customfcheck : "Une fonction personnalisée devrait être présente dans le cas d'une vérification personnalisée!"
-		}
-	},
-	view : {
-		caption: "Voir les enregistrement",
-		bClose: "Fermer"
-	},
-	del : {
-		caption: "Supprimer",
-		msg: "Supprimer les enregistrements sélectionnés ?",
-		bSubmit: "Supprimer",
-		bCancel: "Annuler"
-	},
-	nav : {
-		edittext: " ",
-		edittitle: "Editer la ligne sélectionnée",
-		addtext:" ",
-		addtitle: "Ajouter une ligne",
-		deltext: " ",
-		deltitle: "Supprimer la ligne sélectionnée",
-		searchtext: " ",
-		searchtitle: "Chercher un enregistrement",
-		refreshtext: "",
-		refreshtitle: "Recharger le tableau",
-		alertcap: "Avertissement",
-		alerttext: "Veuillez sélectionner une ligne",
-		viewtext: "",
-		viewtitle: "Afficher la ligne sélectionnée"
-	},
-	col : {
-		caption: "Afficher/Masquer les colonnes",
-		bSubmit: "Valider",
-		bCancel: "Annuler"
-	},
-	errors : {
-		errcap : "Erreur",
-		nourl : "Aucune adresse n'est paramétrée",
-		norecords: "Aucun enregistrement à traiter",
-		model : "Nombre de titres (colNames) <> Nombre de données (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:   [
-				"Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam",
-				"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"
-			],
-			monthNames: [
-				"Jan", "Fév", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Déc",
-				"Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre"
-			],
-			AmPm : ["am","pm","AM","PM"],
-			S: function (j) {return j == 1 ? 'er' : 'e';},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid French 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 = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Enregistrements {0} - {1} sur {2}",
+		emptyrecords: "Aucun enregistrement à afficher",
+		loadtext: "Chargement...",
+		pgtext : "Page {0} sur {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "Recherche...",
+		Find: "Chercher",
+		Reset: "Réinitialiser",
+		odata: [{ oper:'eq', text:"égal"},{ oper:'ne', text:"différent"},{ oper:'lt', text:"inférieur"},{ oper:'le', text:"inférieur ou égal"},{ oper:'gt', text:"supérieur"},{ oper:'ge', text:"supérieur ou égal"},{ oper:'bw', text:"commence par"},{ oper:'bn', text:"ne commence pas par"},{ oper:'in', text:"est dans"},{ oper:'ni', text:"n'est pas dans"},{ oper:'ew', text:"finit par"},{ oper:'en', text:"ne finit pas par"},{ oper:'cn', text:"contient"},{ oper:'nc', text:"ne contient pas"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+		groupOps: [	{ op: "AND", text: "tous" },	{ op: "OR",  text: "au moins un" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "Ajouter",
+		editCaption: "Editer",
+		bSubmit: "Valider",
+		bCancel: "Annuler",
+		bClose: "Fermer",
+		saveData: "Les données ont changé ! Enregistrer les modifications ?",
+		bYes: "Oui",
+		bNo: "Non",
+		bExit: "Annuler",
+		msg: {
+			required: "Champ obligatoire",
+			number: "Saisissez un nombre correct",
+			minValue: "La valeur doit être supérieure ou égale à",
+			maxValue: "La valeur doit être inférieure ou égale à",
+			email: "n'est pas un email correct",
+			integer: "Saisissez un entier correct",
+			url: "n'est pas une adresse correcte. Préfixe requis ('http://' or 'https://')",
+			nodefined : " n'est pas défini!",
+			novalue : " la valeur de retour est requise!",
+			customarray : "Une fonction personnalisée devrait retourner un tableau (array)!",
+			customfcheck : "Une fonction personnalisée devrait être présente dans le cas d'une vérification personnalisée!"
+		}
+	},
+	view : {
+		caption: "Voir les enregistrement",
+		bClose: "Fermer"
+	},
+	del : {
+		caption: "Supprimer",
+		msg: "Supprimer les enregistrements sélectionnés ?",
+		bSubmit: "Supprimer",
+		bCancel: "Annuler"
+	},
+	nav : {
+		edittext: " ",
+		edittitle: "Editer la ligne sélectionnée",
+		addtext:" ",
+		addtitle: "Ajouter une ligne",
+		deltext: " ",
+		deltitle: "Supprimer la ligne sélectionnée",
+		searchtext: " ",
+		searchtitle: "Chercher un enregistrement",
+		refreshtext: "",
+		refreshtitle: "Recharger le tableau",
+		alertcap: "Avertissement",
+		alerttext: "Veuillez sélectionner une ligne",
+		viewtext: "",
+		viewtitle: "Afficher la ligne sélectionnée"
+	},
+	col : {
+		caption: "Afficher/Masquer les colonnes",
+		bSubmit: "Valider",
+		bCancel: "Annuler"
+	},
+	errors : {
+		errcap : "Erreur",
+		nourl : "Aucune adresse n'est paramétrée",
+		norecords: "Aucun enregistrement à traiter",
+		model : "Nombre de titres (colNames) <> Nombre de données (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:   [
+				"Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam",
+				"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"
+			],
+			monthNames: [
+				"Jan", "Fév", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Déc",
+				"Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre"
+			],
+			AmPm : ["am","pm","AM","PM"],
+			S: function (j) {return j == 1 ? 'er' : 'e';},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 135 - 126
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-gl.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-gl.js

@@ -1,126 +1,135 @@
-;(function($){
-/**
- * jqGrid Galician Translation
- * Translated by Jorge Barreiro <yortx.barry@gmail.com>
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Amosando {0} - {1} de {2}",
-	    emptyrecords: "Sen rexistros que amosar",
-		loadtext: "Cargando...",
-		pgtext : "Páxina {0} de {1}"
-	},
-	search : {
-	    caption: "Búsqueda...",
-	    Find: "Buscar",
-	    Reset: "Limpar",
-	    odata: [{ oper:'eq', text:"igual "},{ oper:'ne', text:"diferente a"},{ oper:'lt', text:"menor que"},{ oper:'le', text:"menor ou igual que"},{ oper:'gt', text:"maior que"},{ oper:'ge', text:"maior ou igual a"},{ oper:'bw', text:"empece por"},{ oper:'bn', text:"non empece por"},{ oper:'in', text:"está en"},{ oper:'ni', text:"non está en"},{ oper:'ew', text:"termina por"},{ oper:'en', text:"non termina por"},{ oper:'cn', text:"contén"},{ oper:'nc', text:"non contén"}],
-	    groupOps: [	{ op: "AND", text: "todo" },	{ op: "OR",  text: "calquera" }	]
-	},
-	edit : {
-	    addCaption: "Engadir rexistro",
-	    editCaption: "Modificar rexistro",
-	    bSubmit: "Gardar",
-	    bCancel: "Cancelar",
-		bClose: "Pechar",
-		saveData: "Modificáronse os datos, quere gardar os cambios?",
-		bYes : "Si",
-		bNo : "Non",
-		bExit : "Cancelar",
-	    msg: {
-	        required:"Campo obrigatorio",
-	        number:"Introduza un número",
-	        minValue:"O valor debe ser maior ou igual a ",
-	        maxValue:"O valor debe ser menor ou igual a ",
-	        email: "non é un enderezo de correo válido",
-	        integer: "Introduza un valor enteiro",
-			date: "Introduza unha data correcta ",
-			url: "non é unha URL válida. Prefixo requerido ('http://' ou 'https://')",
-			nodefined : " non está definido.",
-			novalue : " o valor de retorno é obrigatorio.",
-			customarray : "A función persoalizada debe devolver un array.",
-			customfcheck : "A función persoalizada debe estar presente no caso de ter validación persoalizada."
-		}
-	},
-	view : {
-	    caption: "Consultar rexistro",
-	    bClose: "Pechar"
-	},
-	del : {
-	    caption: "Eliminar",
-	    msg: "Desexa eliminar os rexistros seleccionados?",
-	    bSubmit: "Eliminar",
-	    bCancel: "Cancelar"
-	},
-	nav : {
-		edittext: " ",
-	    edittitle: "Modificar a fila seleccionada",
-		addtext:" ",
-	    addtitle: "Engadir unha nova fila",
-	    deltext: " ",
-	    deltitle: "Eliminar a fila seleccionada",
-	    searchtext: " ",
-	    searchtitle: "Buscar información",
-	    refreshtext: "",
-	    refreshtitle: "Recargar datos",
-	    alertcap: "Aviso",
-	    alerttext: "Seleccione unha fila",
-		viewtext: "",
-		viewtitle: "Ver fila seleccionada"
-	},
-	col : {
-	    caption: "Mostrar/ocultar columnas",
-	    bSubmit: "Enviar",
-	    bCancel: "Cancelar"	
-	},
-	errors : {
-		errcap : "Erro",
-		nourl : "Non especificou unha URL",
-		norecords: "Non hai datos para procesar",
-	    model : "As columnas de nomes son diferentes das columnas de modelo"
-	},
-	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:   [
-				"Do", "Lu", "Ma", "Me", "Xo", "Ve", "Sa",
-				"Domingo", "Luns", "Martes", "Mércoles", "Xoves", "Vernes", "Sábado"
-			],
-			monthNames: [
-				"Xan", "Feb", "Mar", "Abr", "Mai", "Xuñ", "Xul", "Ago", "Set", "Out", "Nov", "Dec",
-				"Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xuño", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro"
-			],
-			AmPm : ["am","pm","AM","PM"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'd-m-Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Galician Translation
+ * Translated by Jorge Barreiro <yortx.barry@gmail.com>
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Amosando {0} - {1} de {2}",
+	    emptyrecords: "Sen rexistros que amosar",
+		loadtext: "Cargando...",
+		pgtext : "Páxina {0} de {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+	    caption: "Búsqueda...",
+	    Find: "Buscar",
+	    Reset: "Limpar",
+	    odata: [{ oper:'eq', text:"igual "},{ oper:'ne', text:"diferente a"},{ oper:'lt', text:"menor que"},{ oper:'le', text:"menor ou igual que"},{ oper:'gt', text:"maior que"},{ oper:'ge', text:"maior ou igual a"},{ oper:'bw', text:"empece por"},{ oper:'bn', text:"non empece por"},{ oper:'in', text:"está en"},{ oper:'ni', text:"non está en"},{ oper:'ew', text:"termina por"},{ oper:'en', text:"non termina por"},{ oper:'cn', text:"contén"},{ oper:'nc', text:"non contén"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+	    groupOps: [	{ op: "AND", text: "todo" },	{ op: "OR",  text: "calquera" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+	    addCaption: "Engadir rexistro",
+	    editCaption: "Modificar rexistro",
+	    bSubmit: "Gardar",
+	    bCancel: "Cancelar",
+		bClose: "Pechar",
+		saveData: "Modificáronse os datos, quere gardar os cambios?",
+		bYes : "Si",
+		bNo : "Non",
+		bExit : "Cancelar",
+	    msg: {
+	        required:"Campo obrigatorio",
+	        number:"Introduza un número",
+	        minValue:"O valor debe ser maior ou igual a ",
+	        maxValue:"O valor debe ser menor ou igual a ",
+	        email: "non é un enderezo de correo válido",
+	        integer: "Introduza un valor enteiro",
+			date: "Introduza unha data correcta ",
+			url: "non é unha URL válida. Prefixo requerido ('http://' ou 'https://')",
+			nodefined : " non está definido.",
+			novalue : " o valor de retorno é obrigatorio.",
+			customarray : "A función persoalizada debe devolver un array.",
+			customfcheck : "A función persoalizada debe estar presente no caso de ter validación persoalizada."
+		}
+	},
+	view : {
+	    caption: "Consultar rexistro",
+	    bClose: "Pechar"
+	},
+	del : {
+	    caption: "Eliminar",
+	    msg: "Desexa eliminar os rexistros seleccionados?",
+	    bSubmit: "Eliminar",
+	    bCancel: "Cancelar"
+	},
+	nav : {
+		edittext: " ",
+	    edittitle: "Modificar a fila seleccionada",
+		addtext:" ",
+	    addtitle: "Engadir unha nova fila",
+	    deltext: " ",
+	    deltitle: "Eliminar a fila seleccionada",
+	    searchtext: " ",
+	    searchtitle: "Buscar información",
+	    refreshtext: "",
+	    refreshtitle: "Recargar datos",
+	    alertcap: "Aviso",
+	    alerttext: "Seleccione unha fila",
+		viewtext: "",
+		viewtitle: "Ver fila seleccionada"
+	},
+	col : {
+	    caption: "Mostrar/ocultar columnas",
+	    bSubmit: "Enviar",
+	    bCancel: "Cancelar"	
+	},
+	errors : {
+		errcap : "Erro",
+		nourl : "Non especificou unha URL",
+		norecords: "Non hai datos para procesar",
+	    model : "As columnas de nomes son diferentes das columnas de modelo"
+	},
+	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:   [
+				"Do", "Lu", "Ma", "Me", "Xo", "Ve", "Sa",
+				"Domingo", "Luns", "Martes", "Mércoles", "Xoves", "Vernes", "Sábado"
+			],
+			monthNames: [
+				"Xan", "Feb", "Mar", "Abr", "Mai", "Xuñ", "Xul", "Ago", "Set", "Out", "Nov", "Dec",
+				"Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xuño", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro"
+			],
+			AmPm : ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'd-m-Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+	    target: '',
+	    checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 136 - 127
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-he.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-he.js

@@ -1,127 +1,136 @@
-;(function($){
-/**
- * jqGrid Hebrew Translation
- * Shuki Shukrun shukrun.shuki@gmail.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 = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "מציג {0} - {1} מתוך {2}",
-		emptyrecords: "אין רשומות להציג",
-		loadtext: "טוען...",
-		pgtext : "דף {0} מתוך {1}"
-	},
-	search : {
-		caption: "מחפש...",
-		Find: "חפש",
-		Reset: "התחל",
-		odata: [{ oper:'eq', text:"שווה"},{ oper:'ne', text:"לא שווה"},{ oper:'lt', text:"קטן"},{ oper:'le', text:"קטן או שווה"},{ oper:'gt', text:"גדול"},{ oper:'ge', text:"גדול או שווה"},{ oper:'bw', text:"מתחיל ב"},{ oper:'bn', text:"לא מתחיל ב"},{ oper:'in', text:"נמצא ב"},{ oper:'ni', text:"לא נמצא ב"},{ oper:'ew', text:"מסתיים ב"},{ oper:'en', text:"לא מסתיים ב"},{ oper:'cn', text:"מכיל"},{ oper:'nc', text:"לא מכיל"}],
-		groupOps: [	{ op: "AND", text: "הכל" },	{ op: "OR",  text: "אחד מ" }	]
-	},
-	edit : {
-		addCaption: "הוסף רשומה",
-		editCaption: "ערוך רשומה",
-		bSubmit: "שלח",
-		bCancel: "בטל",
-		bClose: "סגור",
-		saveData: "נתונים השתנו! לשמור?",
-		bYes : "כן",
-		bNo : "לא",
-		bExit : "בטל",
-		msg: {
-			required:"שדה חובה",
-			number:"אנא, הכנס מספר תקין",
-			minValue:"ערך צריך להיות גדול או שווה ל ",
-			maxValue:"ערך צריך להיות קטן או שווה ל ",
-			email: "היא לא כתובת איימל תקינה",
-			integer: "אנא, הכנס מספר שלם",
-			date: "אנא, הכנס תאריך תקין",
-			url: "הכתובת אינה תקינה. דרושה תחילית ('http://' או 'https://')",
-			nodefined : " is not defined!",
-			novalue : " return value is required!",
-			customarray : "Custom function should return array!",
-			customfcheck : "Custom function should be present in case of custom checking!"
-		}
-	},
-	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 : "אורך של 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 < 11 || j > 13 ? ['', '', '', ''][Math.min((j - 1) % 10, 3)] : ''},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Hebrew Translation
+ * Shuki Shukrun shukrun.shuki@gmail.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 = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "מציג {0} - {1} מתוך {2}",
+		emptyrecords: "אין רשומות להציג",
+		loadtext: "טוען...",
+		pgtext : "דף {0} מתוך {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "מחפש...",
+		Find: "חפש",
+		Reset: "התחל",
+		odata: [{ oper:'eq', text:"שווה"},{ oper:'ne', text:"לא שווה"},{ oper:'lt', text:"קטן"},{ oper:'le', text:"קטן או שווה"},{ oper:'gt', text:"גדול"},{ oper:'ge', text:"גדול או שווה"},{ oper:'bw', text:"מתחיל ב"},{ oper:'bn', text:"לא מתחיל ב"},{ oper:'in', text:"נמצא ב"},{ oper:'ni', text:"לא נמצא ב"},{ oper:'ew', text:"מסתיים ב"},{ oper:'en', text:"לא מסתיים ב"},{ oper:'cn', text:"מכיל"},{ oper:'nc', text:"לא מכיל"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+		groupOps: [	{ op: "AND", text: "הכל" },	{ op: "OR",  text: "אחד מ" }],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "הוסף רשומה",
+		editCaption: "ערוך רשומה",
+		bSubmit: "שלח",
+		bCancel: "בטל",
+		bClose: "סגור",
+		saveData: "נתונים השתנו! לשמור?",
+		bYes : "כן",
+		bNo : "לא",
+		bExit : "בטל",
+		msg: {
+			required:"שדה חובה",
+			number:"אנא, הכנס מספר תקין",
+			minValue:"ערך צריך להיות גדול או שווה ל ",
+			maxValue:"ערך צריך להיות קטן או שווה ל ",
+			email: "היא לא כתובת איימל תקינה",
+			integer: "אנא, הכנס מספר שלם",
+			date: "אנא, הכנס תאריך תקין",
+			url: "הכתובת אינה תקינה. דרושה תחילית ('http://' או 'https://')",
+			nodefined : " is not defined!",
+			novalue : " return value is required!",
+			customarray : "Custom function should return array!",
+			customfcheck : "Custom function should be present in case of custom checking!"
+		}
+	},
+	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 : "אורך של 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 < 11 || j > 13 ? ['', '', '', ''][Math.min((j - 1) % 10, 3)] : ''},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 9 - 2
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-hr.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-hr.js

@@ -14,7 +14,13 @@ $.extend($.jgrid,{
 		recordtext: "Pregled {0} - {1} od {2}",
 		emptyrecords: "Nema zapisa",
 		loadtext: "Učitavam...",
-		pgtext : "Stranica {0} od {1}"
+		pgtext : "Stranica {0} od {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
 	},
 	search : {
 		caption: "Traži...",
@@ -152,7 +158,8 @@ $.extend($.jgrid,{
 				//    Y - A full numeric representation of a year, 4 digits
 				YearMonth: "F Y" // in jQuery UI Datepicker: "MMMM yyyy"
 			},
-			reformatAfterEdit : false
+			reformatAfterEdit : false,
+			userLocalTime : false
 		},
 		baseLinkUrl: '',
 		showAction: '',

+ 9 - 2
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-hr1250.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-hr1250.js

@@ -14,7 +14,13 @@ $.extend($.jgrid,{
 		recordtext: "Pregled {0} - {1} od {2}",
 		emptyrecords: "Nema zapisa",
 		loadtext: "U�itavam...",
-		pgtext : "Stranica {0} od {1}"
+		pgtext : "Stranica {0} od {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
 	},
 	search : {
 		caption: "Tra�i...",
@@ -152,7 +158,8 @@ $.extend($.jgrid,{
 				//    Y - A full numeric representation of a year, 4 digits
 				YearMonth: "F Y" // in jQuery UI Datepicker: "MMMM yyyy"
 			},
-			reformatAfterEdit : false
+			reformatAfterEdit : false,
+			userLocalTime : false
 		},
 		baseLinkUrl: '',
 		showAction: '',

+ 138 - 129
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-hu.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-hu.js

@@ -1,129 +1,138 @@
-;(function($){
-/**
- * jqGrid Hungarian Translation
- * Őrszigety Ádám udx6bs@freemail.hu
- * 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 = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Oldal {0} - {1} / {2}",
-		emptyrecords: "Nincs találat",
-		loadtext: "Betöltés...",
-		pgtext : "Oldal {0} / {1}"
-	},
-	search : {
-		caption: "Keresés...",
-		Find: "Keres",
-		Reset: "Alapértelmezett",
-		odata: [{ oper:'eq', text:"egyenlő"},{ oper:'ne', text:"nem egyenlő"},{ oper:'lt', text:"kevesebb"},{ oper:'le', text:"kevesebb vagy egyenlő"},{ oper:'gt', text:"nagyobb"},{ oper:'ge', text:"nagyobb vagy egyenlő"},{ oper:'bw', text:"ezzel kezdődik"},{ oper:'bn', text:"nem ezzel kezdődik"},{ oper:'in', text:"tartalmaz"},{ oper:'ni', text:"nem tartalmaz"},{ oper:'ew', text:"végződik"},{ oper:'en', text:"nem végződik"},{ oper:'cn', text:"tartalmaz"},{ oper:'nc', text:"nem tartalmaz"}],
-		groupOps: [	{ op: "AND", text: "all" },	{ op: "OR",  text: "any" }	]
-	},
-	edit : {
-		addCaption: "Új tétel",
-		editCaption: "Tétel szerkesztése",
-		bSubmit: "Mentés",
-		bCancel: "Mégse",
-		bClose: "Bezárás",
-		saveData: "A tétel megváltozott! Tétel mentése?",
-		bYes : "Igen",
-		bNo : "Nem",
-		bExit : "Mégse",
-		msg: {
-			required:"Kötelező mező",
-			number:"Kérjük, adjon meg egy helyes számot",
-			minValue:"Nagyobb vagy egyenlőnek kell lenni mint ",
-			maxValue:"Kisebb vagy egyenlőnek kell lennie mint",
-			email: "hibás emailcím",
-			integer: "Kérjük adjon meg egy helyes egész számot",
-			date: "Kérjük adjon meg egy helyes dátumot",
-			url: "nem helyes cím. Előtag kötelező ('http://' vagy 'https://')",
-			nodefined : " nem definiált!",
-			novalue : " visszatérési érték kötelező!!",
-			customarray : "Custom function should return array!",
-			customfcheck : "Custom function should be present in case of custom checking!"
-			
-		}
-	},
-	view : {
-		caption: "Tétel megtekintése",
-		bClose: "Bezárás"
-	},
-	del : {
-		caption: "Törlés",
-		msg: "Kiválaztott tétel(ek) törlése?",
-		bSubmit: "Törlés",
-		bCancel: "Mégse"
-	},
-	nav : {
-		edittext: "",
-		edittitle: "Tétel szerkesztése",
-		addtext:"",
-		addtitle: "Új tétel hozzáadása",
-		deltext: "",
-		deltitle: "Tétel törlése",
-		searchtext: "",
-		searchtitle: "Keresés",
-		refreshtext: "",
-		refreshtitle: "Frissítés",
-		alertcap: "Figyelmeztetés",
-		alerttext: "Kérem válasszon tételt.",
-		viewtext: "",
-		viewtitle: "Tétel megtekintése"
-	},
-	col : {
-		caption: "Oszlopok kiválasztása",
-		bSubmit: "Ok",
-		bCancel: "Mégse"
-	},
-	errors : {
-		errcap : "Hiba",
-		nourl : "Nincs URL beállítva",
-		norecords: "Nincs feldolgozásra váró tétel",
-		model : "colNames és colModel hossza nem egyenlő!"
-	},
-	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:   [
-				"Va", "Hé", "Ke", "Sze", "Csü", "Pé", "Szo",
-				"Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat"
-			],
-			monthNames: [
-				"Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Szep", "Okt", "Nov", "Dec",
-				"Január", "Február", "Március", "Áprili", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"
-			],
-			AmPm : ["de","du","DE","DU"],
-			S: function (j) {return '.-ik';},
-			srcformat: 'Y-m-d',
-			newformat: 'Y/m/d',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			masks : {
-				ISO8601Long:"Y-m-d H:i:s",
-				ISO8601Short:"Y-m-d",
-				ShortDate: "Y/j/n",
-				LongDate: "Y. F hó d., l",
-				FullDateTime: "l, F d, Y g:i:s A",
-				MonthDay: "F d",
-				ShortTime: "a g:i",
-				LongTime: "a g:i:s",
-				SortableDateTime: "Y-m-d\\TH:i:s",
-				UniversalSortableDateTime: "Y-m-d H:i:sO",
-				YearMonth: "Y, F"
-			},
-			reformatAfterEdit : false
-		},
-		baseLinkUrl: '',
-		showAction: '',
-		target: '',
-		checkbox : {disabled:true},
-		idName : 'id'
-	}
-});
-})(jQuery);
+;(function($){
+/**
+ * jqGrid Hungarian Translation
+ * Őrszigety Ádám udx6bs@freemail.hu
+ * 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 = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Oldal {0} - {1} / {2}",
+		emptyrecords: "Nincs találat",
+		loadtext: "Betöltés...",
+		pgtext : "Oldal {0} / {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "Keresés...",
+		Find: "Keres",
+		Reset: "Alapértelmezett",
+		odata: [{ oper:'eq', text:"egyenlő"},{ oper:'ne', text:"nem egyenlő"},{ oper:'lt', text:"kevesebb"},{ oper:'le', text:"kevesebb vagy egyenlő"},{ oper:'gt', text:"nagyobb"},{ oper:'ge', text:"nagyobb vagy egyenlő"},{ oper:'bw', text:"ezzel kezdődik"},{ oper:'bn', text:"nem ezzel kezdődik"},{ oper:'in', text:"tartalmaz"},{ oper:'ni', text:"nem tartalmaz"},{ oper:'ew', text:"végződik"},{ oper:'en', text:"nem végződik"},{ oper:'cn', text:"tartalmaz"},{ oper:'nc', text:"nem tartalmaz"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+		groupOps: [	{ op: "AND", text: "all" },	{ op: "OR",  text: "any" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "Új tétel",
+		editCaption: "Tétel szerkesztése",
+		bSubmit: "Mentés",
+		bCancel: "Mégse",
+		bClose: "Bezárás",
+		saveData: "A tétel megváltozott! Tétel mentése?",
+		bYes : "Igen",
+		bNo : "Nem",
+		bExit : "Mégse",
+		msg: {
+			required:"Kötelező mező",
+			number:"Kérjük, adjon meg egy helyes számot",
+			minValue:"Nagyobb vagy egyenlőnek kell lenni mint ",
+			maxValue:"Kisebb vagy egyenlőnek kell lennie mint",
+			email: "hibás emailcím",
+			integer: "Kérjük adjon meg egy helyes egész számot",
+			date: "Kérjük adjon meg egy helyes dátumot",
+			url: "nem helyes cím. Előtag kötelező ('http://' vagy 'https://')",
+			nodefined : " nem definiált!",
+			novalue : " visszatérési érték kötelező!!",
+			customarray : "Custom function should return array!",
+			customfcheck : "Custom function should be present in case of custom checking!"
+			
+		}
+	},
+	view : {
+		caption: "Tétel megtekintése",
+		bClose: "Bezárás"
+	},
+	del : {
+		caption: "Törlés",
+		msg: "Kiválaztott tétel(ek) törlése?",
+		bSubmit: "Törlés",
+		bCancel: "Mégse"
+	},
+	nav : {
+		edittext: "",
+		edittitle: "Tétel szerkesztése",
+		addtext:"",
+		addtitle: "Új tétel hozzáadása",
+		deltext: "",
+		deltitle: "Tétel törlése",
+		searchtext: "",
+		searchtitle: "Keresés",
+		refreshtext: "",
+		refreshtitle: "Frissítés",
+		alertcap: "Figyelmeztetés",
+		alerttext: "Kérem válasszon tételt.",
+		viewtext: "",
+		viewtitle: "Tétel megtekintése"
+	},
+	col : {
+		caption: "Oszlopok kiválasztása",
+		bSubmit: "Ok",
+		bCancel: "Mégse"
+	},
+	errors : {
+		errcap : "Hiba",
+		nourl : "Nincs URL beállítva",
+		norecords: "Nincs feldolgozásra váró tétel",
+		model : "colNames és colModel hossza nem egyenlő!"
+	},
+	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:   [
+				"Va", "Hé", "Ke", "Sze", "Csü", "Pé", "Szo",
+				"Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat"
+			],
+			monthNames: [
+				"Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Szep", "Okt", "Nov", "Dec",
+				"Január", "Február", "Március", "Áprili", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"
+			],
+			AmPm : ["de","du","DE","DU"],
+			S: function (j) {return '.-ik';},
+			srcformat: 'Y-m-d',
+			newformat: 'Y/m/d',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			masks : {
+				ISO8601Long:"Y-m-d H:i:s",
+				ISO8601Short:"Y-m-d",
+				ShortDate: "Y/j/n",
+				LongDate: "Y. F hó d., l",
+				FullDateTime: "l, F d, Y g:i:s A",
+				MonthDay: "F d",
+				ShortTime: "a g:i",
+				LongTime: "a g:i:s",
+				SortableDateTime: "Y-m-d\\TH:i:s",
+				UniversalSortableDateTime: "Y-m-d H:i:sO",
+				YearMonth: "Y, F"
+			},
+			reformatAfterEdit : false,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 9 - 2
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-id.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-id.js

@@ -13,7 +13,13 @@ $.extend($.jgrid,{
 		recordtext: "Data {0} - {1} dari {2}",
 		emptyrecords: "Tidak ada data",
 		loadtext: "Memuat...",
-		pgtext : "Halaman {0} dari {1}"
+		pgtext : "Halaman {0} dari {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
 	},
 	search : {
 		caption: "Pencarian",
@@ -158,7 +164,8 @@ $.extend($.jgrid,{
 				//    F - A full textual representation of a month
 				YearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy"
 			},
-			reformatAfterEdit : false
+			reformatAfterEdit : false,
+			userLocalTime : false
 		},
 		baseLinkUrl: '',
 		showAction: '',

+ 135 - 126
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-is.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-is.js

@@ -1,126 +1,135 @@
-;(function($){
-/**
- * jqGrid Icelandic Translation
- * jtm@hi.is Univercity of Iceland
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Skoða {0} - {1} af {2}",
-	    emptyrecords: "Engar færslur",
-		loadtext: "Hleður...",
-		pgtext : "Síða {0} af {1}"
-	},
-	search : {
-	    caption: "Leita...",
-	    Find: "Leita",
-	    Reset: "Endursetja",
-	    odata: [{ oper:'eq', text:"sama og"},{ oper:'ne', text:"ekki sama og"},{ oper:'lt', text:"minna en"},{ oper:'le', text:"minna eða jafnt og"},{ oper:'gt', text:"stærra en"},{ oper:'ge', text:"stærra eða jafnt og"},{ oper:'bw', text:"byrjar á"},{ oper:'bn', text:"byrjar ekki á"},{ oper:'in', text:"er í"},{ oper:'ni', text:"er ekki í"},{ oper:'ew', text:"endar á"},{ oper:'en', text:"endar ekki á"},{ oper:'cn', text:"inniheldur"},{ oper:'nc', text:"inniheldur ekki"}],
-	    groupOps: [	{ op: "AND", text: "allt" },	{ op: "OR",  text: "eða" }	]
-	},
-	edit : {
-	    addCaption: "Bæta við færslu",
-	    editCaption: "Breyta færslu",
-	    bSubmit: "Vista",
-	    bCancel: "Hætta við",
-		bClose: "Loka",
-		saveData: "Gögn hafa breyst! Vista breytingar?",
-		bYes : "Já",
-		bNo : "Nei",
-		bExit : "Hætta við",
-	    msg: {
-	        required:"Reitur er nauðsynlegur",
-	        number:"Vinsamlega settu inn tölu",
-	        minValue:"gildi verður að vera meira en eða jafnt og ",
-	        maxValue:"gildi verður að vera minna en eða jafnt og ",
-	        email: "er ekki löglegt email",
-	        integer: "Vinsamlega settu inn tölu",
-			date: "Vinsamlega setti inn dagsetningu",
-			url: "er ekki löglegt URL. Vantar ('http://' eða 'https://')",
-			nodefined : " er ekki skilgreint!",
-			novalue : " skilagildi nauðsynlegt!",
-			customarray : "Fall skal skila fylki!",
-			customfcheck : "Fall skal vera skilgreint!"
-		}
-	},
-	view : {
-	    caption: "Skoða færslu",
-	    bClose: "Loka"
-	},
-	del : {
-	    caption: "Eyða",
-	    msg: "Eyða völdum færslum ?",
-	    bSubmit: "Eyða",
-	    bCancel: "Hætta við"
-	},
-	nav : {
-		edittext: " ",
-	    edittitle: "Breyta færslu",
-		addtext:" ",
-	    addtitle: "Ný færsla",
-	    deltext: " ",
-	    deltitle: "Eyða færslu",
-	    searchtext: " ",
-	    searchtitle: "Leita",
-	    refreshtext: "",
-	    refreshtitle: "Endurhlaða",
-	    alertcap: "Viðvörun",
-	    alerttext: "Vinsamlega veldu færslu",
-		viewtext: "",
-		viewtitle: "Skoða valda færslu"
-	},
-	col : {
-	    caption: "Sýna / fela dálka",
-	    bSubmit: "Vista",
-	    bCancel: "Hætta við"	
-	},
-	errors : {
-		errcap : "Villa",
-		nourl : "Vantar slóð",
-		norecords: "Engar færslur valdar",
-	    model : "Lengd 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:   [
-				"Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau",
-				"Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur"
-			],
-			monthNames: [
-				"Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Oct", "Nóv", "Des",
-				"Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júný", "Júlý", "Ágúst", "September", "Október", "Nóvember", "Desember"
-			],
-			AmPm : ["am","pm","AM","PM"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Icelandic Translation
+ * jtm@hi.is Univercity of Iceland
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Skoða {0} - {1} af {2}",
+	    emptyrecords: "Engar færslur",
+		loadtext: "Hleður...",
+		pgtext : "Síða {0} af {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+	    caption: "Leita...",
+	    Find: "Leita",
+	    Reset: "Endursetja",
+	    odata: [{ oper:'eq', text:"sama og"},{ oper:'ne', text:"ekki sama og"},{ oper:'lt', text:"minna en"},{ oper:'le', text:"minna eða jafnt og"},{ oper:'gt', text:"stærra en"},{ oper:'ge', text:"stærra eða jafnt og"},{ oper:'bw', text:"byrjar á"},{ oper:'bn', text:"byrjar ekki á"},{ oper:'in', text:"er í"},{ oper:'ni', text:"er ekki í"},{ oper:'ew', text:"endar á"},{ oper:'en', text:"endar ekki á"},{ oper:'cn', text:"inniheldur"},{ oper:'nc', text:"inniheldur ekki"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+	    groupOps: [	{ op: "AND", text: "allt" },	{ op: "OR",  text: "eða" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+	    addCaption: "Bæta við færslu",
+	    editCaption: "Breyta færslu",
+	    bSubmit: "Vista",
+	    bCancel: "Hætta við",
+		bClose: "Loka",
+		saveData: "Gögn hafa breyst! Vista breytingar?",
+		bYes : "Já",
+		bNo : "Nei",
+		bExit : "Hætta við",
+	    msg: {
+	        required:"Reitur er nauðsynlegur",
+	        number:"Vinsamlega settu inn tölu",
+	        minValue:"gildi verður að vera meira en eða jafnt og ",
+	        maxValue:"gildi verður að vera minna en eða jafnt og ",
+	        email: "er ekki löglegt email",
+	        integer: "Vinsamlega settu inn tölu",
+			date: "Vinsamlega setti inn dagsetningu",
+			url: "er ekki löglegt URL. Vantar ('http://' eða 'https://')",
+			nodefined : " er ekki skilgreint!",
+			novalue : " skilagildi nauðsynlegt!",
+			customarray : "Fall skal skila fylki!",
+			customfcheck : "Fall skal vera skilgreint!"
+		}
+	},
+	view : {
+	    caption: "Skoða færslu",
+	    bClose: "Loka"
+	},
+	del : {
+	    caption: "Eyða",
+	    msg: "Eyða völdum færslum ?",
+	    bSubmit: "Eyða",
+	    bCancel: "Hætta við"
+	},
+	nav : {
+		edittext: " ",
+	    edittitle: "Breyta færslu",
+		addtext:" ",
+	    addtitle: "Ný færsla",
+	    deltext: " ",
+	    deltitle: "Eyða færslu",
+	    searchtext: " ",
+	    searchtitle: "Leita",
+	    refreshtext: "",
+	    refreshtitle: "Endurhlaða",
+	    alertcap: "Viðvörun",
+	    alerttext: "Vinsamlega veldu færslu",
+		viewtext: "",
+		viewtitle: "Skoða valda færslu"
+	},
+	col : {
+	    caption: "Sýna / fela dálka",
+	    bSubmit: "Vista",
+	    bCancel: "Hætta við"	
+	},
+	errors : {
+		errcap : "Villa",
+		nourl : "Vantar slóð",
+		norecords: "Engar færslur valdar",
+	    model : "Lengd 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:   [
+				"Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau",
+				"Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur"
+			],
+			monthNames: [
+				"Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Oct", "Nóv", "Des",
+				"Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júný", "Júlý", "Ágúst", "September", "Október", "Nóvember", "Desember"
+			],
+			AmPm : ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+	    target: '',
+	    checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
app/Resources/public/assets/jqgrid/js/i18n/grid.locale-it.js


+ 165 - 155
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-ja.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-ja.js

@@ -1,155 +1,165 @@
-;(function($){
-/**
- * jqGrid Japanese Translation
- * OKADA Yoshitada okada.dev@sth.jp
- * 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 = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "{2} \u4EF6\u4E2D {0} - {1} \u3092\u8868\u793A ",
-	    emptyrecords: "\u8868\u793A\u3059\u308B\u30EC\u30B3\u30FC\u30C9\u304C\u3042\u308A\u307E\u305B\u3093",
-		loadtext: "\u8aad\u307f\u8fbc\u307f\u4e2d...",
-		pgtext : "{1} \u30DA\u30FC\u30B8\u4E2D {0} \u30DA\u30FC\u30B8\u76EE "
-	},
-	search : {
-	    caption: "\u691c\u7d22...",
-	    Find: "\u691c\u7d22",
-	    Reset: "\u30ea\u30bb\u30c3\u30c8",
-	    odata: [{ oper:'eq', text:"\u6B21\u306B\u7B49\u3057\u3044"}, { oper:'ne', text:"\u6B21\u306B\u7B49\u3057\u304F\u306A\u3044"},
-            { oper:'lt', text:"\u6B21\u3088\u308A\u5C0F\u3055\u3044"}, { oper:'le', text:"\u6B21\u306B\u7B49\u3057\u3044\u304B\u5C0F\u3055\u3044"},
-            { oper:'gt', text:"\u6B21\u3088\u308A\u5927\u304D\u3044"}, { oper:'ge', text:"\u6B21\u306B\u7B49\u3057\u3044\u304B\u5927\u304D\u3044"},
-            { oper:'bw', text:"\u6B21\u3067\u59CB\u307E\u308B"}, { oper:'bn', text:"\u6B21\u3067\u59CB\u307E\u3089\u306A\u3044"},
-            { oper:'in', text:"\u6B21\u306B\u542B\u307E\u308C\u308B"}, { oper:'ni', text:"\u6B21\u306B\u542B\u307E\u308C\u306A\u3044"},
-            { oper:'ew', text:"\u6B21\u3067\u7D42\u308F\u308B"}, { oper:'en', text:"\u6B21\u3067\u7D42\u308F\u3089\u306A\u3044"},
-            { oper:'cn', text:"\u6B21\u3092\u542B\u3080"}, { oper:'nc', text:"\u6B21\u3092\u542B\u307E\u306A\u3044"}],
-	    groupOps: [{
-                op: "AND",
-                text: "\u3059\u3079\u3066\u306E"
-            },
-            {
-                op: "OR",
-                text: "\u3044\u305A\u308C\u304B\u306E"
-            }]
-	},
-	edit : {
-	    addCaption: "\u30ec\u30b3\u30fc\u30c9\u8ffd\u52a0",
-	    editCaption: "\u30ec\u30b3\u30fc\u30c9\u7de8\u96c6",
-	    bSubmit: "\u9001\u4fe1",
-	    bCancel: "\u30ad\u30e3\u30f3\u30bb\u30eb",
-  		bClose: "\u9589\u3058\u308b",
-      saveData: "\u30C7\u30FC\u30BF\u304C\u5909\u66F4\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F",
-      bYes: "\u306F\u3044",
-      bNo: "\u3044\u3044\u3048",
-      bExit: "\u30AD\u30E3\u30F3\u30BB\u30EB",
-	    msg: {
-	        required:"\u3053\u306e\u9805\u76ee\u306f\u5fc5\u9808\u3067\u3059\u3002",
-	        number:"\u6b63\u3057\u3044\u6570\u5024\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002",
-	        minValue:"\u6b21\u306e\u5024\u4ee5\u4e0a\u3067\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002",
-	        maxValue:"\u6b21\u306e\u5024\u4ee5\u4e0b\u3067\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002",
-	        email: "e-mail\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002",
-	        integer: "\u6b63\u3057\u3044\u6574\u6570\u5024\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002",
-    			date: "\u6b63\u3057\u3044\u5024\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002",
-          url: "\u306F\u6709\u52B9\u306AURL\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\20\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002 ('http://' \u307E\u305F\u306F 'https://')",
-          nodefined: " \u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
-          novalue: " \u623B\u308A\u5024\u304C\u5FC5\u8981\u3067\u3059",
-          customarray: "\u30AB\u30B9\u30BF\u30E0\u95A2\u6570\u306F\u914D\u5217\u3092\u8FD4\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059",
-          customfcheck: "\u30AB\u30B9\u30BF\u30E0\u691C\u8A3C\u306B\u306F\u30AB\u30B9\u30BF\u30E0\u95A2\u6570\u304C\u5FC5\u8981\u3067\u3059"
-		}
-	},
-	view : {
-      caption: "\u30EC\u30B3\u30FC\u30C9\u3092\u8868\u793A",
-      bClose: "\u9589\u3058\u308B"
-	},
-	del : {
-	    caption: "\u524a\u9664",
-	    msg: "\u9078\u629e\u3057\u305f\u30ec\u30b3\u30fc\u30c9\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f",
-	    bSubmit: "\u524a\u9664",
-	    bCancel: "\u30ad\u30e3\u30f3\u30bb\u30eb"
-	},
-	nav : {
-    	edittext: " ",
-	    edittitle: "\u9078\u629e\u3057\u305f\u884c\u3092\u7de8\u96c6",
-      addtext:" ",
-	    addtitle: "\u884c\u3092\u65b0\u898f\u8ffd\u52a0",
-	    deltext: " ",
-	    deltitle: "\u9078\u629e\u3057\u305f\u884c\u3092\u524a\u9664",
-	    searchtext: " ",
-	    searchtitle: "\u30ec\u30b3\u30fc\u30c9\u691c\u7d22",
-	    refreshtext: "",
-	    refreshtitle: "\u30b0\u30ea\u30c3\u30c9\u3092\u30ea\u30ed\u30fc\u30c9",
-	    alertcap: "\u8b66\u544a",
-	    alerttext: "\u884c\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044\u3002",
-      viewtext: "",
-      viewtitle: "\u9078\u629E\u3057\u305F\u884C\u3092\u8868\u793A"
-	},
-	col : {
-	    caption: "\u5217\u3092\u8868\u793a\uff0f\u96a0\u3059",
-	    bSubmit: "\u9001\u4fe1",
-	    bCancel: "\u30ad\u30e3\u30f3\u30bb\u30eb"	
-	},
-	errors : {
-		errcap : "\u30a8\u30e9\u30fc",
-		nourl : "URL\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002",
-		norecords: "\u51e6\u7406\u5bfe\u8c61\u306e\u30ec\u30b3\u30fc\u30c9\u304c\u3042\u308a\u307e\u305b\u3093\u3002",
-	    model : "colNames\u306e\u9577\u3055\u304ccolModel\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002"
-	},
-	formatter : {
-            integer: {
-                thousandsSeparator: ",",
-                defaultValue: '0'
-            },
-            number: {
-                decimalSeparator: ".",
-                thousandsSeparator: ",",
-                decimalPlaces: 2,
-                defaultValue: '0.00'
-            },
-            currency: {
-                decimalSeparator: ".",
-                thousandsSeparator: ",",
-                decimalPlaces: 0,
-                prefix: "",
-                suffix: "",
-                defaultValue: '0'
-            },
-		date : {
-			dayNames:   [
-				"\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f",
-				"\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"
-			],
-			monthNames: [
-				"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
-				"1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"
-			],
-			AmPm : ["am","pm","AM","PM"],
-			S: function (j) { return "\u756a\u76ee"; },
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Japanese Translation
+ * OKADA Yoshitada okada.dev@sth.jp
+ * 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 = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "{2} \u4EF6\u4E2D {0} - {1} \u3092\u8868\u793A ",
+	    emptyrecords: "\u8868\u793A\u3059\u308B\u30EC\u30B3\u30FC\u30C9\u304C\u3042\u308A\u307E\u305B\u3093",
+		loadtext: "\u8aad\u307f\u8fbc\u307f\u4e2d...",
+		pgtext : "{1} \u30DA\u30FC\u30B8\u4E2D {0} \u30DA\u30FC\u30B8\u76EE ",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+	    caption: "\u691c\u7d22...",
+	    Find: "\u691c\u7d22",
+	    Reset: "\u30ea\u30bb\u30c3\u30c8",
+	    odata: [{ oper:'eq', text:"\u6B21\u306B\u7B49\u3057\u3044"}, { oper:'ne', text:"\u6B21\u306B\u7B49\u3057\u304F\u306A\u3044"},
+            { oper:'lt', text:"\u6B21\u3088\u308A\u5C0F\u3055\u3044"}, { oper:'le', text:"\u6B21\u306B\u7B49\u3057\u3044\u304B\u5C0F\u3055\u3044"},
+            { oper:'gt', text:"\u6B21\u3088\u308A\u5927\u304D\u3044"}, { oper:'ge', text:"\u6B21\u306B\u7B49\u3057\u3044\u304B\u5927\u304D\u3044"},
+            { oper:'bw', text:"\u6B21\u3067\u59CB\u307E\u308B"}, { oper:'bn', text:"\u6B21\u3067\u59CB\u307E\u3089\u306A\u3044"},
+            { oper:'in', text:"\u6B21\u306B\u542B\u307E\u308C\u308B"}, { oper:'ni', text:"\u6B21\u306B\u542B\u307E\u308C\u306A\u3044"},
+            { oper:'ew', text:"\u6B21\u3067\u7D42\u308F\u308B"}, { oper:'en', text:"\u6B21\u3067\u7D42\u308F\u3089\u306A\u3044"},
+            { oper:'cn', text:"\u6B21\u3092\u542B\u3080"}, { oper:'nc', text:"\u6B21\u3092\u542B\u307E\u306A\u3044"},
+			{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+	    groupOps: [{
+                op: "AND",
+                text: "\u3059\u3079\u3066\u306E"
+            },
+            {
+                op: "OR",
+                text: "\u3044\u305A\u308C\u304B\u306E"
+            }],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+	    addCaption: "\u30ec\u30b3\u30fc\u30c9\u8ffd\u52a0",
+	    editCaption: "\u30ec\u30b3\u30fc\u30c9\u7de8\u96c6",
+	    bSubmit: "\u9001\u4fe1",
+	    bCancel: "\u30ad\u30e3\u30f3\u30bb\u30eb",
+  		bClose: "\u9589\u3058\u308b",
+      saveData: "\u30C7\u30FC\u30BF\u304C\u5909\u66F4\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F",
+      bYes: "\u306F\u3044",
+      bNo: "\u3044\u3044\u3048",
+      bExit: "\u30AD\u30E3\u30F3\u30BB\u30EB",
+	    msg: {
+	        required:"\u3053\u306e\u9805\u76ee\u306f\u5fc5\u9808\u3067\u3059\u3002",
+	        number:"\u6b63\u3057\u3044\u6570\u5024\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002",
+	        minValue:"\u6b21\u306e\u5024\u4ee5\u4e0a\u3067\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002",
+	        maxValue:"\u6b21\u306e\u5024\u4ee5\u4e0b\u3067\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002",
+	        email: "e-mail\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002",
+	        integer: "\u6b63\u3057\u3044\u6574\u6570\u5024\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002",
+    			date: "\u6b63\u3057\u3044\u5024\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002",
+          url: "\u306F\u6709\u52B9\u306AURL\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\20\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002 ('http://' \u307E\u305F\u306F 'https://')",
+          nodefined: " \u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
+          novalue: " \u623B\u308A\u5024\u304C\u5FC5\u8981\u3067\u3059",
+          customarray: "\u30AB\u30B9\u30BF\u30E0\u95A2\u6570\u306F\u914D\u5217\u3092\u8FD4\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059",
+          customfcheck: "\u30AB\u30B9\u30BF\u30E0\u691C\u8A3C\u306B\u306F\u30AB\u30B9\u30BF\u30E0\u95A2\u6570\u304C\u5FC5\u8981\u3067\u3059"
+		}
+	},
+	view : {
+      caption: "\u30EC\u30B3\u30FC\u30C9\u3092\u8868\u793A",
+      bClose: "\u9589\u3058\u308B"
+	},
+	del : {
+	    caption: "\u524a\u9664",
+	    msg: "\u9078\u629e\u3057\u305f\u30ec\u30b3\u30fc\u30c9\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f",
+	    bSubmit: "\u524a\u9664",
+	    bCancel: "\u30ad\u30e3\u30f3\u30bb\u30eb"
+	},
+	nav : {
+    	edittext: " ",
+	    edittitle: "\u9078\u629e\u3057\u305f\u884c\u3092\u7de8\u96c6",
+      addtext:" ",
+	    addtitle: "\u884c\u3092\u65b0\u898f\u8ffd\u52a0",
+	    deltext: " ",
+	    deltitle: "\u9078\u629e\u3057\u305f\u884c\u3092\u524a\u9664",
+	    searchtext: " ",
+	    searchtitle: "\u30ec\u30b3\u30fc\u30c9\u691c\u7d22",
+	    refreshtext: "",
+	    refreshtitle: "\u30b0\u30ea\u30c3\u30c9\u3092\u30ea\u30ed\u30fc\u30c9",
+	    alertcap: "\u8b66\u544a",
+	    alerttext: "\u884c\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044\u3002",
+      viewtext: "",
+      viewtitle: "\u9078\u629E\u3057\u305F\u884C\u3092\u8868\u793A"
+	},
+	col : {
+	    caption: "\u5217\u3092\u8868\u793a\uff0f\u96a0\u3059",
+	    bSubmit: "\u9001\u4fe1",
+	    bCancel: "\u30ad\u30e3\u30f3\u30bb\u30eb"	
+	},
+	errors : {
+		errcap : "\u30a8\u30e9\u30fc",
+		nourl : "URL\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002",
+		norecords: "\u51e6\u7406\u5bfe\u8c61\u306e\u30ec\u30b3\u30fc\u30c9\u304c\u3042\u308a\u307e\u305b\u3093\u3002",
+	    model : "colNames\u306e\u9577\u3055\u304ccolModel\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002"
+	},
+	formatter : {
+            integer: {
+                thousandsSeparator: ",",
+                defaultValue: '0'
+            },
+            number: {
+                decimalSeparator: ".",
+                thousandsSeparator: ",",
+                decimalPlaces: 2,
+                defaultValue: '0.00'
+            },
+            currency: {
+                decimalSeparator: ".",
+                thousandsSeparator: ",",
+                decimalPlaces: 0,
+                prefix: "",
+                suffix: "",
+                defaultValue: '0'
+            },
+		date : {
+			dayNames:   [
+				"\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f",
+				"\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"
+			],
+			monthNames: [
+				"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
+				"1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"
+			],
+			AmPm : ["am","pm","AM","PM"],
+			S: function (j) { return "\u756a\u76ee"; },
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+	    target: '',
+	    checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 9 - 2
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-kr.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-kr.js

@@ -13,7 +13,13 @@ $.extend($.jgrid,{
 		recordtext: "보기 {0} - {1} / {2}",
 		emptyrecords: "표시할 행이 없습니다",
 		loadtext: "조회중...",
-		pgtext : "페이지 {0} / {1}"
+		pgtext : "페이지 {0} / {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
 	},
 	search : {
 		caption: "검색...",
@@ -118,7 +124,8 @@ $.extend($.jgrid,{
 				UniversalSortableDateTime: "Y-m-d H:i:sO",
 				YearMonth: "F, Y"
 			},
-			reformatAfterEdit : false
+			reformatAfterEdit : false,
+			userLocalTime : false
 		},
 		baseLinkUrl: '',
 		showAction: '',

+ 137 - 128
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-lt.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-lt.js

@@ -1,128 +1,137 @@
-;(function($){
-/**
- * jqGrid Lithuanian Translation
- * aur1mas aur1mas@devnet.lt
- * http://aur1mas.devnet.lt
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Peržiūrima {0} - {1} iš {2}",
-		emptyrecords: "Įrašų nėra",
-		loadtext: "Kraunama...",
-		pgtext : "Puslapis {0} iš {1}"
-	},
-	search : {
-		caption: "Paieška...",
-		Find: "Ieškoti",
-		Reset: "Atstatyti",
-		odata: [{ oper:'eq', text:"lygu"},{ oper:'ne', text:"nelygu"},{ oper:'lt', text:"mažiau"},{ oper:'le', text:"mažiau arba lygu"},{ oper:'gt', text:"daugiau"},{ oper:'ge', text:"daugiau arba lygu"},{ oper:'bw', text:"prasideda"},{ oper:'bn', text:"neprasideda"},{ oper:'in', text:"reikšmė yra"},{ oper:'ni', text:"reikšmės nėra"},{ oper:'ew', text:"baigiasi"},{ oper:'en', text:"nesibaigia"},{ oper:'cn', text:"yra sudarytas"},{ oper:'nc', text:"nėra sudarytas"}],
-		groupOps: [	{ op: "AND", text: "visi" },	{ op: "OR",  text: "bet kuris" }	]
-	},
-	edit : {
-		addCaption: "Sukurti įrašą",
-		editCaption: "Redaguoti įrašą",
-		bSubmit: "Išsaugoti",
-		bCancel: "Atšaukti",
-		bClose: "Uždaryti",
-		saveData: "Duomenys buvo pakeisti! Išsaugoti pakeitimus?",
-		bYes : "Taip",
-		bNo : "Ne",
-		bExit : "Atšaukti",
-		msg: {
-			required:"Privalomas laukas",
-			number:"Įveskite tinkamą numerį",
-			minValue:"reikšmė turi būti didesnė arba lygi ",
-			maxValue:"reikšmė turi būti mažesnė arba lygi",
-			email: "neteisingas el. pašto adresas",
-			integer: "Įveskite teisingą sveikąjį skaičių",
-			date: "Įveskite teisingą datą",
-			url: "blogas adresas. Nepamirškite pridėti ('http://' arba 'https://')",
-			nodefined : " nėra apibrėžta!",
-			novalue : " turi būti gražinama kokia nors reikšmė!",
-			customarray : "Custom f-ja turi grąžinti masyvą!",
-			customfcheck : "Custom f-ja tūrėtų būti sukurta, prieš bandant ją naudoti!"
-			
-		}
-	},
-	view : {
-		caption: "Peržiūrėti įrašus",
-		bClose: "Uždaryti"
-	},
-	del : {
-		caption: "Ištrinti",
-		msg: "Ištrinti pažymėtus įrašus(-ą)?",
-		bSubmit: "Ištrinti",
-		bCancel: "Atšaukti"
-	},
-	nav : {
-		edittext: "",
-		edittitle: "Redaguoti pažymėtą eilutę",
-		addtext:"",
-		addtitle: "Pridėti naują eilutę",
-		deltext: "",
-		deltitle: "Ištrinti pažymėtą eilutę",
-		searchtext: "",
-		searchtitle: "Rasti įrašus",
-		refreshtext: "",
-		refreshtitle: "Perkrauti lentelę",
-		alertcap: "Įspėjimas",
-		alerttext: "Pasirinkite eilutę",
-		viewtext: "",
-		viewtitle: "Peržiūrėti pasirinktą eilutę"
-	},
-	col : {
-		caption: "Pasirinkti stulpelius",
-		bSubmit: "Gerai",
-		bCancel: "Atšaukti"
-	},
-	errors : {
-		errcap : "Klaida",
-		nourl : "Url reikšmė turi būti perduota",
-		norecords: "Nėra įrašų, kuriuos būtų galima apdoroti",
-		model : "colNames skaičius <> colModel skaičiui!"
-	},
-	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:   [
-				"Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš",
-				"Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis"
-			],
-			monthNames: [
-				"Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugj", "Rugs", "Spa", "Lap", "Gru",
-				"Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"
-			],
-			AmPm : ["am","pm","AM","PM"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Lithuanian Translation
+ * aur1mas aur1mas@devnet.lt
+ * http://aur1mas.devnet.lt
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Peržiūrima {0} - {1} iš {2}",
+		emptyrecords: "Įrašų nėra",
+		loadtext: "Kraunama...",
+		pgtext : "Puslapis {0} iš {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "Paieška...",
+		Find: "Ieškoti",
+		Reset: "Atstatyti",
+		odata: [{ oper:'eq', text:"lygu"},{ oper:'ne', text:"nelygu"},{ oper:'lt', text:"mažiau"},{ oper:'le', text:"mažiau arba lygu"},{ oper:'gt', text:"daugiau"},{ oper:'ge', text:"daugiau arba lygu"},{ oper:'bw', text:"prasideda"},{ oper:'bn', text:"neprasideda"},{ oper:'in', text:"reikšmė yra"},{ oper:'ni', text:"reikšmės nėra"},{ oper:'ew', text:"baigiasi"},{ oper:'en', text:"nesibaigia"},{ oper:'cn', text:"yra sudarytas"},{ oper:'nc', text:"nėra sudarytas"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+		groupOps: [	{ op: "AND", text: "visi" },	{ op: "OR",  text: "bet kuris" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "Sukurti įrašą",
+		editCaption: "Redaguoti įrašą",
+		bSubmit: "Išsaugoti",
+		bCancel: "Atšaukti",
+		bClose: "Uždaryti",
+		saveData: "Duomenys buvo pakeisti! Išsaugoti pakeitimus?",
+		bYes : "Taip",
+		bNo : "Ne",
+		bExit : "Atšaukti",
+		msg: {
+			required:"Privalomas laukas",
+			number:"Įveskite tinkamą numerį",
+			minValue:"reikšmė turi būti didesnė arba lygi ",
+			maxValue:"reikšmė turi būti mažesnė arba lygi",
+			email: "neteisingas el. pašto adresas",
+			integer: "Įveskite teisingą sveikąjį skaičių",
+			date: "Įveskite teisingą datą",
+			url: "blogas adresas. Nepamirškite pridėti ('http://' arba 'https://')",
+			nodefined : " nėra apibrėžta!",
+			novalue : " turi būti gražinama kokia nors reikšmė!",
+			customarray : "Custom f-ja turi grąžinti masyvą!",
+			customfcheck : "Custom f-ja tūrėtų būti sukurta, prieš bandant ją naudoti!"
+			
+		}
+	},
+	view : {
+		caption: "Peržiūrėti įrašus",
+		bClose: "Uždaryti"
+	},
+	del : {
+		caption: "Ištrinti",
+		msg: "Ištrinti pažymėtus įrašus(-ą)?",
+		bSubmit: "Ištrinti",
+		bCancel: "Atšaukti"
+	},
+	nav : {
+		edittext: "",
+		edittitle: "Redaguoti pažymėtą eilutę",
+		addtext:"",
+		addtitle: "Pridėti naują eilutę",
+		deltext: "",
+		deltitle: "Ištrinti pažymėtą eilutę",
+		searchtext: "",
+		searchtitle: "Rasti įrašus",
+		refreshtext: "",
+		refreshtitle: "Perkrauti lentelę",
+		alertcap: "Įspėjimas",
+		alerttext: "Pasirinkite eilutę",
+		viewtext: "",
+		viewtitle: "Peržiūrėti pasirinktą eilutę"
+	},
+	col : {
+		caption: "Pasirinkti stulpelius",
+		bSubmit: "Gerai",
+		bCancel: "Atšaukti"
+	},
+	errors : {
+		errcap : "Klaida",
+		nourl : "Url reikšmė turi būti perduota",
+		norecords: "Nėra įrašų, kuriuos būtų galima apdoroti",
+		model : "colNames skaičius <> colModel skaičiui!"
+	},
+	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:   [
+				"Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš",
+				"Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis"
+			],
+			monthNames: [
+				"Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugj", "Rugs", "Spa", "Lap", "Gru",
+				"Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"
+			],
+			AmPm : ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 137 - 128
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-mne.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-mne.js

@@ -1,128 +1,137 @@
-;(function($){
-/**
- * jqGrid Montenegrian Translation
- * Bild Studio info@bild-studio.net
- * http://www.bild-studio.com
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Pregled {0} - {1} od {2}",
-		emptyrecords: "Ne postoji nijedan zapis",
-		loadtext: "Učitivanje...",
-		pgtext : "Strana {0} od {1}"
-	},
-	search : {
-		caption: "Traženje...",
-		Find: "Traži",
-		Reset: "Resetuj",
-		odata: [{ oper:'eq', text:"jednako"},{ oper:'ne', text:"nije jednako"},{ oper:'lt', text:"manje"},{ oper:'le', text:"manje ili jednako"},{ oper:'gt', text:"veće"},{ oper:'ge', text:"veće ili jednako"},{ oper:'bw', text:"počinje sa"},{ oper:'bn', text:"ne počinje sa"},{ oper:'in', text:"je u"},{ oper:'ni', text:"nije u"},{ oper:'ew', text:"završava sa"},{ oper:'en', text:"ne završava sa"},{ oper:'cn', text:"sadrži"},{ oper:'nc', text:"ne sadrži"}],
-		groupOps: [	{ op: "AND", text: "sva" },	{ op: "OR",  text: "bilo koje" }	]
-	},
-	edit : {
-		addCaption: "Dodaj zapis",
-		editCaption: "Izmjeni zapis",
-		bSubmit: "Pošalji",
-		bCancel: "Odustani",
-		bClose: "Zatvori",
-		saveData: "Podatak je izmjenjen! Sačuvaj izmjene?",
-		bYes : "Da",
-		bNo : "Ne",
-		bExit : "Odustani",
-		msg: {
-			required:"Polje je obavezno",
-			number:"Unesite ispravan broj",
-			minValue:"vrijednost mora biti veća od ili jednaka sa ",
-			maxValue:"vrijednost mora biti manja ili jednaka sa",
-			email: "nije ispravna email adresa, nije valjda da ne umiješ ukucati mail!?",
-			integer: "Ne zajebaji se unesi cjelobrojnu vrijednost ",
-			date: "Unesite ispravan datum",
-			url: "nije ispravan URL. Potreban je prefiks ('http://' or 'https://')",
-			nodefined : " nije definisan!",
-			novalue : " zahtjevana je povratna vrijednost!",
-			customarray : "Prilagođena funkcija treba da vrati niz!",
-			customfcheck : "Prilagođena funkcija treba da bude prisutana u slučaju prilagođene provjere!"
-			
-		}
-	},
-	view : {
-		caption: "Pogledaj zapis",
-		bClose: "Zatvori"
-	},
-	del : {
-		caption: "Izbrisi",
-		msg: "Izbrisi izabran(e) zapise(e)?",
-		bSubmit: "Izbriši",
-		bCancel: "Odbaci"
-	},
-	nav : {
-		edittext: "",
-		edittitle: "Izmjeni izabrani red",
-		addtext:"",
-		addtitle: "Dodaj novi red",
-		deltext: "",
-		deltitle: "Izbriši izabran red",
-		searchtext: "",
-		searchtitle: "Nađi zapise",
-		refreshtext: "",
-		refreshtitle: "Ponovo učitaj podatke",
-		alertcap: "Upozorenje",
-		alerttext: "Izaberite red",
-		viewtext: "",
-		viewtitle: "Pogledaj izabrani red"
-	},
-	col : {
-		caption: "Izaberi kolone",
-		bSubmit: "OK",
-		bCancel: "Odbaci"
-	},
-	errors : {
-		errcap : "Greška",
-		nourl : "Nije postavljen URL",
-		norecords: "Nema zapisa za obradu",
-		model : "Dužina modela 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:   [
-				"Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub",
-				"Nedelja", "Ponedeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"
-			],
-			monthNames: [
-				"Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec",
-				"Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
-			],
-			AmPm : ["am","pm","AM","PM"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Montenegrian Translation
+ * Bild Studio info@bild-studio.net
+ * http://www.bild-studio.com
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Pregled {0} - {1} od {2}",
+		emptyrecords: "Ne postoji nijedan zapis",
+		loadtext: "Učitivanje...",
+		pgtext : "Strana {0} od {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "Traženje...",
+		Find: "Traži",
+		Reset: "Resetuj",
+		odata: [{ oper:'eq', text:"jednako"},{ oper:'ne', text:"nije jednako"},{ oper:'lt', text:"manje"},{ oper:'le', text:"manje ili jednako"},{ oper:'gt', text:"veće"},{ oper:'ge', text:"veće ili jednako"},{ oper:'bw', text:"počinje sa"},{ oper:'bn', text:"ne počinje sa"},{ oper:'in', text:"je u"},{ oper:'ni', text:"nije u"},{ oper:'ew', text:"završava sa"},{ oper:'en', text:"ne završava sa"},{ oper:'cn', text:"sadrži"},{ oper:'nc', text:"ne sadrži"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+		groupOps: [	{ op: "AND", text: "sva" },	{ op: "OR",  text: "bilo koje" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "Dodaj zapis",
+		editCaption: "Izmjeni zapis",
+		bSubmit: "Pošalji",
+		bCancel: "Odustani",
+		bClose: "Zatvori",
+		saveData: "Podatak je izmjenjen! Sačuvaj izmjene?",
+		bYes : "Da",
+		bNo : "Ne",
+		bExit : "Odustani",
+		msg: {
+			required:"Polje je obavezno",
+			number:"Unesite ispravan broj",
+			minValue:"vrijednost mora biti veća od ili jednaka sa ",
+			maxValue:"vrijednost mora biti manja ili jednaka sa",
+			email: "nije ispravna email adresa, nije valjda da ne umiješ ukucati mail!?",
+			integer: "Ne zajebaji se unesi cjelobrojnu vrijednost ",
+			date: "Unesite ispravan datum",
+			url: "nije ispravan URL. Potreban je prefiks ('http://' or 'https://')",
+			nodefined : " nije definisan!",
+			novalue : " zahtjevana je povratna vrijednost!",
+			customarray : "Prilagođena funkcija treba da vrati niz!",
+			customfcheck : "Prilagođena funkcija treba da bude prisutana u slučaju prilagođene provjere!"
+			
+		}
+	},
+	view : {
+		caption: "Pogledaj zapis",
+		bClose: "Zatvori"
+	},
+	del : {
+		caption: "Izbrisi",
+		msg: "Izbrisi izabran(e) zapise(e)?",
+		bSubmit: "Izbriši",
+		bCancel: "Odbaci"
+	},
+	nav : {
+		edittext: "",
+		edittitle: "Izmjeni izabrani red",
+		addtext:"",
+		addtitle: "Dodaj novi red",
+		deltext: "",
+		deltitle: "Izbriši izabran red",
+		searchtext: "",
+		searchtitle: "Nađi zapise",
+		refreshtext: "",
+		refreshtitle: "Ponovo učitaj podatke",
+		alertcap: "Upozorenje",
+		alerttext: "Izaberite red",
+		viewtext: "",
+		viewtitle: "Pogledaj izabrani red"
+	},
+	col : {
+		caption: "Izaberi kolone",
+		bSubmit: "OK",
+		bCancel: "Odbaci"
+	},
+	errors : {
+		errcap : "Greška",
+		nourl : "Nije postavljen URL",
+		norecords: "Nema zapisa za obradu",
+		model : "Dužina modela 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:   [
+				"Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub",
+				"Nedelja", "Ponedeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"
+			],
+			monthNames: [
+				"Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec",
+				"Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
+			],
+			AmPm : ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 157 - 148
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-nl.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-nl.js

@@ -1,148 +1,157 @@
-(function(a) {
-a.jgrid = a.jgrid || {};
-a.extend(a.jgrid,{
-        defaults:
-        {
-            recordtext: "regels {0} - {1} van {2}",
-            emptyrecords: "Geen data gevonden.",
-            loadtext: "laden...",
-            pgtext: "pagina  {0}  van {1}"
-        },
-        search:
-        {
-            caption: "Zoeken...",
-            Find: "Zoek",
-            Reset: "Herstellen",
-            odata: [{ oper:'eq', text:"gelijk aan"},{ oper:'ne', text:"niet gelijk aan"},{ oper:'lt', text:"kleiner dan"},{ oper:'le', text:"kleiner dan of gelijk aan"},{ oper:'gt', text:"groter dan"},{ oper:'ge', text:"groter dan of gelijk aan"},{ oper:'bw', text:"begint met"},{ oper:'bn', text:"begint niet met"},{ oper:'in', text:"is in"},{ oper:'ni', text:"is niet in"},{ oper:'ew', text:"eindigd met"},{ oper:'en', text:"eindigd niet met"},{ oper:'cn', text:"bevat"},{ oper:'nc', text:"bevat niet"}],
-            groupOps: [{ op: "AND", text: "alle" }, { op: "OR", text: "een van de"}]
-        },
-        edit:
-        {
-            addCaption: "Nieuw",
-            editCaption: "Bewerken",
-            bSubmit: "Opslaan",
-            bCancel: "Annuleren",
-            bClose: "Sluiten",
-            saveData: "Er is data aangepast! Wijzigingen opslaan?",
-            bYes: "Ja",
-            bNo: "Nee",
-            bExit: "Sluiten",
-            msg:
-            {
-                required: "Veld is verplicht",
-                number: "Voer a.u.b. geldig nummer in",
-                minValue: "Waarde moet groter of gelijk zijn aan ",
-                maxValue: "Waarde moet kleiner of gelijks zijn aan",
-                email: "is geen geldig e-mailadres",
-                integer: "Voer a.u.b. een geldig getal in",
-                date: "Voer a.u.b. een geldige waarde in",
-                url: "is geen geldige URL. Prefix is verplicht ('http://' or 'https://')",
-                nodefined : " is not defined!",
-                novalue : " return value is required!",
-                customarray : "Custom function should return array!",
-                customfcheck : "Custom function should be present in case of custom checking!"
-            }
-        },
-        view:
-        {
-            caption: "Tonen",
-            bClose: "Sluiten"
-        },
-        del:
-        {
-            caption: "Verwijderen",
-            msg: "Verwijder geselecteerde regel(s)?",
-            bSubmit: "Verwijderen",
-            bCancel: "Annuleren"
-        },
-        nav:
-        {
-            edittext: "",
-            edittitle: "Bewerken",
-            addtext: "",
-            addtitle: "Nieuw",
-            deltext: "",
-            deltitle: "Verwijderen",
-            searchtext: "",
-            searchtitle: "Zoeken",
-            refreshtext: "",
-            refreshtitle: "Vernieuwen",
-            alertcap: "Waarschuwing",
-            alerttext: "Selecteer a.u.b. een regel",
-            viewtext: "",
-            viewtitle: "Openen"
-        },
-        col:
-        {
-            caption: "Tonen/verbergen kolommen",
-            bSubmit: "OK",
-            bCancel: "Annuleren"
-        },
-        errors:
-        {
-            errcap: "Fout",
-            nourl: "Er is geen URL gedefinieerd",
-            norecords: "Geen data om te verwerken",
-            model: "Lengte van 'colNames' is niet gelijk aan 'colModel'!"
-        },
-        formatter:
-        {
-            integer:
-            {
-                thousandsSeparator: ".",
-                defaultValue: "0"
-            },
-            number:
-            {
-                decimalSeparator: ",",
-                thousandsSeparator: ".",
-                decimalPlaces: 2,
-                defaultValue: "0.00"
-            },
-            currency:
-            {
-                decimalSeparator: ",",
-                thousandsSeparator: ".",
-                decimalPlaces: 2,
-                prefix: "EUR ",
-                suffix: "",
-                defaultValue: "0.00"
-            },
-            date:
-            {
-                dayNames: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"],
-                monthNames: ["Jan", "Feb", "Maa", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "October", "November", "December"],
-                AmPm: ["am", "pm", "AM", "PM"],
-                S: function(b) {
-                    return b < 11 || b > 13 ? ["st", "nd", "rd", "th"][Math.min((b - 1) % 10, 3)] : "th"
-                },
-                srcformat: "Y-m-d",
-                newformat: "d/m/Y",
-				parseRe : /[Tt\\\/:_;.,\t\s-]/,
-                masks:
-                {
-                    ISO8601Long: "Y-m-d H:i:s",
-                    ISO8601Short: "Y-m-d",
-                    ShortDate: "n/j/Y",
-                    LongDate: "l, F d, Y",
-                    FullDateTime: "l d F Y G:i:s",
-                    MonthDay: "d F",
-                    ShortTime: "G:i",
-                    LongTime: "G:i:s",
-                    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);
+(function(a) {
+a.jgrid = a.jgrid || {};
+a.extend(a.jgrid,{
+        defaults:
+        {
+            recordtext: "regels {0} - {1} van {2}",
+            emptyrecords: "Geen data gevonden.",
+            loadtext: "Laden...",
+            pgtext: "pagina  {0}  van {1}",
+			pgfirst : "Eerste Pagina",
+			pglast : "Laatste Pagina",
+			pgnext : "Volgende Pagina",
+			pgprev : "Vorige Pagina",
+			pgrecs : "Records per Pagina",
+			showhide: "Schakelen Uitklappen Inklappen Grid"
+        },
+        search:
+        {
+            caption: "Zoeken...",
+            Find: "Zoek",
+            Reset: "Herstellen",
+            odata: [{ oper:'eq', text:"gelijk aan"},{ oper:'ne', text:"niet gelijk aan"},{ oper:'lt', text:"kleiner dan"},{ oper:'le', text:"kleiner dan of gelijk aan"},{ oper:'gt', text:"groter dan"},{ oper:'ge', text:"groter dan of gelijk aan"},{ oper:'bw', text:"begint met"},{ oper:'bn', text:"begint niet met"},{ oper:'in', text:"is in"},{ oper:'ni', text:"is niet in"},{ oper:'ew', text:"eindigt met"},{ oper:'en', text:"eindigt niet met"},{ oper:'cn', text:"bevat"},{ oper:'nc', text:"bevat niet"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+            groupOps: [{ op: "AND", text: "alle" }, { op: "OR", text: "een van de"}],
+			operandTitle : "Klik om de zoekterm te selecteren.",
+			resetTitle : "Herstel zoekterm"
+        },
+        edit:
+        {
+            addCaption: "Nieuw",
+            editCaption: "Bewerken",
+            bSubmit: "Opslaan",
+            bCancel: "Annuleren",
+            bClose: "Sluiten",
+            saveData: "Er is data aangepast! Wijzigingen opslaan?",
+            bYes: "Ja",
+            bNo: "Nee",
+            bExit: "Sluiten",
+            msg:
+            {
+                required: "Veld is verplicht",
+                number: "Voer a.u.b. geldig nummer in",
+                minValue: "Waarde moet groter of gelijk zijn aan ",
+                maxValue: "Waarde moet kleiner of gelijk zijn aan",
+                email: "is geen geldig e-mailadres",
+                integer: "Voer a.u.b. een geldig getal in",
+                date: "Voer a.u.b. een geldige waarde in",
+                url: "is geen geldige URL. Prefix is verplicht ('http://' or 'https://')",
+                nodefined : " is niet gedefineerd!",
+                novalue : " return waarde is verplicht!",
+                customarray : "Aangepaste functie moet array teruggeven!",
+                customfcheck : "Aangepaste function moet aanwezig zijn in het geval van aangepaste controle!"
+            }
+        },
+        view:
+        {
+            caption: "Tonen",
+            bClose: "Sluiten"
+        },
+        del:
+        {
+            caption: "Verwijderen",
+            msg: "Verwijder geselecteerde regel(s)?",
+            bSubmit: "Verwijderen",
+            bCancel: "Annuleren"
+        },
+        nav:
+        {
+            edittext: "",
+            edittitle: "Bewerken",
+            addtext: "",
+            addtitle: "Nieuw",
+            deltext: "",
+            deltitle: "Verwijderen",
+            searchtext: "",
+            searchtitle: "Zoeken",
+            refreshtext: "",
+            refreshtitle: "Vernieuwen",
+            alertcap: "Waarschuwing",
+            alerttext: "Selecteer a.u.b. een regel",
+            viewtext: "",
+            viewtitle: "Openen"
+        },
+        col:
+        {
+            caption: "Tonen/verbergen kolommen",
+            bSubmit: "OK",
+            bCancel: "Annuleren"
+        },
+        errors:
+        {
+            errcap: "Fout",
+            nourl: "Er is geen URL gedefinieerd",
+            norecords: "Geen data om te verwerken",
+            model: "Lengte van 'colNames' is niet gelijk aan 'colModel'!"
+        },
+        formatter:
+        {
+            integer:
+            {
+                thousandsSeparator: ".",
+                defaultValue: "0"
+            },
+            number:
+            {
+                decimalSeparator: ",",
+                thousandsSeparator: ".",
+                decimalPlaces: 2,
+                defaultValue: "0.00"
+            },
+            currency:
+            {
+                decimalSeparator: ",",
+                thousandsSeparator: ".",
+                decimalPlaces: 2,
+                prefix: "EUR ",
+                suffix: "",
+                defaultValue: "0.00"
+            },
+            date:
+            {
+                dayNames: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"],
+                monthNames: ["Jan", "Feb", "Maa", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "October", "November", "December"],
+                AmPm: ["am", "pm", "AM", "PM"],
+                S: function(b) {
+                    return b < 11 || b > 13 ? ["st", "nd", "rd", "th"][Math.min((b - 1) % 10, 3)] : "th"
+                },
+                srcformat: "Y-m-d",
+                newformat: "d/m/Y",
+				parseRe : /[#%\\\/:_;.,\t\s-]/,
+                masks:
+                {
+                    ISO8601Long: "Y-m-d H:i:s",
+                    ISO8601Short: "Y-m-d",
+                    ShortDate: "n/j/Y",
+                    LongDate: "l, F d, Y",
+                    FullDateTime: "l d F Y G:i:s",
+                    MonthDay: "d F",
+                    ShortTime: "G:i",
+                    LongTime: "G:i:s",
+                    SortableDateTime: "Y-m-d\\TH:i:s",
+                    UniversalSortableDateTime: "Y-m-d H:i:sO",
+                    YearMonth: "F, Y"
+                },
+                reformatAfterEdit: false,
+				userLocalTime : false
+            },
+            baseLinkUrl: "",
+            showAction: "",
+            target: "",
+            checkbox:
+            {
+                disabled: true
+            },
+            idName: "id"
+        }
+    });
+})(jQuery);

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
app/Resources/public/assets/jqgrid/js/i18n/grid.locale-no.js


+ 14 - 5
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-pl.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-pl.js

@@ -18,14 +18,22 @@ $.extend($.jgrid,{
 		recordtext: "Pokaż {0} - {1} z {2}",
 		emptyrecords: "Brak rekordów do pokazania",
 		loadtext: "Ładowanie...",
-		pgtext : "Strona {0} z {1}"
+		pgtext : "Strona {0} z {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
 	},
 	search : {
 		caption: "Wyszukiwanie...",
 		Find: "Szukaj",
 		Reset: "Czyść",
-		odata: [{ oper:'eq', text:"dokładnie"},{ oper:'ne', text:"różne od"},{ oper:'lt', text:"mniejsze od"},{ oper:'le', text:"mniejsze lub równe"},{ oper:'gt', text:"większe od"},{ oper:'ge', text:"większe lub równe"},{ oper:'bw', text:"zaczyna się od"},{ oper:'bn', text:"nie zaczyna się od"},{ oper:'in', text:"jest w"},{ oper:'ni', text:"nie jest w"},{ oper:'ew', text:"kończy się na"},{ oper:'en', text:"nie kończy się na"},{ oper:'cn', text:"zawiera"},{ oper:'nc', text:"nie zawiera"}],
-		groupOps: [	{ op: "AND", text: "oraz" },	{ op: "OR",  text: "lub" }	]
+		odata: [{ oper:'eq', text:"dokładnie"},{ oper:'ne', text:"różne od"},{ oper:'lt', text:"mniejsze od"},{ oper:'le', text:"mniejsze lub równe"},{ oper:'gt', text:"większe od"},{ oper:'ge', text:"większe lub równe"},{ oper:'bw', text:"zaczyna się od"},{ oper:'bn', text:"nie zaczyna się od"},{ oper:'in', text:"jest w"},{ oper:'ni', text:"nie jest w"},{ oper:'ew', text:"kończy się na"},{ oper:'en', text:"nie kończy się na"},{ oper:'cn', text:"zawiera"},{ oper:'nc', text:"nie zawiera"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+		groupOps: [	{ op: "AND", text: "oraz" },	{ op: "OR",  text: "lub" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
 	},
 	edit : {
 		addCaption: "Dodaj rekord",
@@ -106,7 +114,7 @@ $.extend($.jgrid,{
 			S: function (j) {return '';},
 			srcformat: 'Y-m-d',
 			newformat: 'd.m.Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
 			masks : {
 				ISO8601Long: "Y-m-d H:i:s",
 				ISO8601Short: "Y-m-d",
@@ -120,7 +128,8 @@ $.extend($.jgrid,{
 				UniversalSortableDateTime: "Y-m-d H:i:sO",
 				YearMonth: "F Y"
 			},
-			reformatAfterEdit : false
+			reformatAfterEdit : false,
+			userLocalTime : false
 		},
 		baseLinkUrl: '',
 		showAction: '',

+ 144 - 130
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-pt-br.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-pt-br.js

@@ -1,130 +1,144 @@
-;(function($){
-/**
- * jqGrid Brazilian-Portuguese Translation
- * Sergio Righi sergio.righi@gmail.com
- * http://curve.com.br
- * 
- * Updated by Jonnas Fonini
- * http://fonini.net
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Ver {0} - {1} de {2}",
-	    emptyrecords: "Nenhum registro para visualizar",
-		loadtext: "Carregando...",
-		pgtext : "Página {0} de {1}"
-	},
-	search : {
-	    caption: "Procurar...",
-	    Find: "Procurar",
-	    Reset: "Resetar",
-	    odata: [{ oper:'eq', text:"igual"},{ oper:'ne', text:"diferente"},{ oper:'lt', text:"menor"},{ oper:'le', text:"menor ou igual"},{ oper:'gt', text:"maior"},{ oper:'ge', text:"maior ou igual"},{ oper:'bw', text:"inicia com"},{ oper:'bn', text:"não inicia com"},{ oper:'in', text:"está em"},{ oper:'ni', text:"não está em"},{ oper:'ew', text:"termina com"},{ oper:'en', text:"não termina com"},{ oper:'cn', text:"contém"},{ oper:'nc', text:"não contém"},{ oper:'nu', text:"nulo"},{ oper:'nn', text:"não nulo"}],
-	    groupOps: [	{ op: "AND", text: "all" },	{ op: "OR",  text: "any" }	]
-	},
-	edit : {
-	    addCaption: "Incluir",
-	    editCaption: "Alterar",
-	    bSubmit: "Enviar",
-	    bCancel: "Cancelar",
-		bClose: "Fechar",
-		saveData: "Os dados foram alterados! Salvar alterações?",
-		bYes : "Sim",
-		bNo : "Não",
-		bExit : "Cancelar",
-	    msg: {
-	        required:"Campo obrigatório",
-	        number:"Por favor, informe um número válido",
-	        minValue:"valor deve ser igual ou maior que ",
-	        maxValue:"valor deve ser menor ou igual a",
-	        email: "este e-mail não é válido",
-	        integer: "Por favor, informe um valor inteiro",
-			date: "Por favor, informe uma data válida",
-			url: "não é uma URL válida. Prefixo obrigatório ('http://' or 'https://')",
-			nodefined : " não está definido!",
-			novalue : " um valor de retorno é obrigatório!",
-			customarray : "Função customizada deve retornar um array!",
-			customfcheck : "Função customizada deve estar presente em caso de validação customizada!"
-		}
-	},
-	view : {
-	    caption: "Ver Registro",
-	    bClose: "Fechar"
-	},
-	del : {
-    caption: "Apagar",
-	    msg: "Apagar registro(s) selecionado(s)?",
-	    bSubmit: "Apagar",
-	    bCancel: "Cancelar"
-	},
-	nav : {
-		edittext: " ",
-	    edittitle: "Alterar registro selecionado",
-		addtext:" ",
-	    addtitle: "Incluir novo registro",
-	    deltext: " ",
-	    deltitle: "Apagar registro selecionado",
-	    searchtext: " ",
-	    searchtitle: "Procurar registros",
-	    refreshtext: "",
-	    refreshtitle: "Recarregando tabela",
-	    alertcap: "Aviso",
-	    alerttext: "Por favor, selecione um registro",
-		viewtext: "",
-		viewtitle: "Ver linha selecionada"
-	},
-	col : {
-	    caption: "Mostrar/Esconder Colunas",
-	    bSubmit: "Enviar",
-	    bCancel: "Cancelar"
-	},
-	errors : {
-		errcap : "Erro",
-		nourl : "Nenhuma URL definida",
-		norecords: "Sem registros para exibir",
-	    model : "Comprimento de colNames <> colModel!"
-	},
-	formatter : {
-		integer : {thousandsSeparator: " ", defaultValue: '0'},
-		number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'},
-		currency : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, prefix: "R$ ", suffix:"", defaultValue: '0,00'},
-		date : {
-			dayNames:   [
-				"Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb",
-				"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"
-			],
-			monthNames: [
-				"Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez",
-				"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
-			],
-			AmPm : ["am","pm","AM","PM"],
-			S: function (j) {return j < 11 || j > 13 ? ['º', 'º', 'º', 'º'][Math.min((j - 1) % 10, 3)] : 'º'},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Brazilian-Portuguese Translation
+ * Sergio Righi sergio.righi@gmail.com
+ * http://curve.com.br
+ * 
+ * Updated by Jonnas Fonini
+ * http://fonini.net
+ *
+ *
+ * Updated by Fabio Ferreira da Silva fabio_ferreiradasilva@yahoo.com.br
+ * 
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Ver {0} - {1} de {2}",
+	    emptyrecords: "Nenhum registro para visualizar",
+		loadtext: "Carregando...",
+		pgtext : "Página {0} de {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+	    caption: "Procurar...",
+	    Find: "Procurar",
+	    Reset: "Resetar",
+	    odata: [{ oper:'eq', text:"igual"},{ oper:'ne', text:"diferente"},{ oper:'lt', text:"menor"},{ oper:'le', text:"menor ou igual"},{ oper:'gt', text:"maior"},{ oper:'ge', text:"maior ou igual"},{ oper:'bw', text:"inicia com"},{ oper:'bn', text:"não inicia com"},{ oper:'in', text:"está em"},{ oper:'ni', text:"não está em"},{ oper:'ew', text:"termina com"},{ oper:'en', text:"não termina com"},{ oper:'cn', text:"contém"},{ oper:'nc', text:"não contém"},{ oper:'nu', text:"nulo"},{ oper:'nn', text:"não nulo"}],
+	    groupOps: [	{ op: "AND", text: "todos" },{ op: "OR",  text: "qualquer um" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+	    addCaption: "Incluir",
+	    editCaption: "Alterar",
+	    bSubmit: "Enviar",
+	    bCancel: "Cancelar",
+		bClose: "Fechar",
+		saveData: "Os dados foram alterados! Salvar alterações?",
+		bYes : "Sim",
+		bNo : "Não",
+		bExit : "Cancelar",
+	    msg: {
+	        required:"Campo obrigatório",
+	        number:"Por favor, informe um número válido",
+	        minValue:"valor deve ser igual ou maior que ",
+	        maxValue:"valor deve ser menor ou igual a",
+	        email: "este e-mail não é válido",
+	        integer: "Por favor, informe um valor inteiro",
+			date: "Por favor, informe uma data válida",
+			url: "não é uma URL válida. Prefixo obrigatório ('http://' or 'https://')",
+			nodefined : " não está definido!",
+			novalue : " um valor de retorno é obrigatório!",
+			customarray : "Função customizada deve retornar um array!",
+			customfcheck : "Função customizada deve estar presente em caso de validação customizada!"
+		}
+	},
+	view : {
+	    caption: "Ver Registro",
+	    bClose: "Fechar"
+	},
+	del : {
+    caption: "Apagar",
+	    msg: "Apagar registro(s) selecionado(s)?",
+	    bSubmit: "Apagar",
+	    bCancel: "Cancelar"
+	},
+	nav : {
+		edittext: " ",
+	    edittitle: "Alterar registro selecionado",
+		addtext:" ",
+	    addtitle: "Incluir novo registro",
+	    deltext: " ",
+	    deltitle: "Apagar registro selecionado",
+	    searchtext: " ",
+	    searchtitle: "Procurar registros",
+	    refreshtext: "",
+	    refreshtitle: "Recarregando tabela",
+	    alertcap: "Aviso",
+	    alerttext: "Por favor, selecione um registro",
+		viewtext: "",
+		viewtitle: "Ver linha selecionada"
+	},
+	col : {
+	    caption: "Mostrar/Esconder Colunas",
+	    bSubmit: "Enviar",
+	    bCancel: "Cancelar"
+	},
+	errors : {
+		errcap : "Erro",
+		nourl : "Nenhuma URL definida",
+		norecords: "Sem registros para exibir",
+	    model : "Comprimento de colNames <> colModel!"
+	},
+	formatter : {
+		integer : {thousandsSeparator: " ", defaultValue: '0'},
+		number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'},
+		currency : {decimalSeparator:",", thousandsSeparator: ".", decimalPlaces: 2, prefix: "R$ ", suffix:"", defaultValue: '0,00'},
+		date : {
+			dayNames:   [
+				"Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb",
+				"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"
+			],
+			monthNames: [
+				"Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez",
+				"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
+			],
+			AmPm : ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['º', 'º', 'º', 'º'][Math.min((j - 1) % 10, 3)] : 'º'},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+	    target: '',
+	    checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 134 - 125
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-pt.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-pt.js

@@ -1,125 +1,134 @@
-;(function($){
-/**
- * jqGrid Portuguese Translation
-* Tradu��o da jqGrid em Portugues por Frederico Carvalho, http://www.eyeviewdesign.pt
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "View {0} - {1} of {2}",
-	    emptyrecords: "No records to view",
-		loadtext: "A carregar...",
-		pgtext : "Page {0} of {1}"
-	},
-	search : {
-	    caption: "Busca...",
-	    Find: "Procurar",
-	    Reset: "Limpar",
-	    odata: [{ oper:'eq', text:'equal'},{ oper:'ne', text:'not equal'},{ oper:'lt', text:'less'},{ oper:'le', text:'less or equal'},{ oper:'gt', text:'greater'},{ oper:'ge', text:'greater or equal'},{ oper:'bw', text:'begins with'},{ oper:'bn', text:'does not begin with'},{ oper:'in', text:'is in'},{ oper:'ni', text:'is not in'},{ oper:'ew', text:'ends with'},{ oper:'en', text:'does not end with'},{ oper:'cn', text:'contains'},{ oper:'nc', text:'does not contain'}],
-	    groupOps: [	{ op: "AND", text: "all" },	{ op: "OR",  text: "any" }	]
-	},
-	edit : {
-	    addCaption: "Adicionar Registo",
-	    editCaption: "Modificar Registo",
-	    bSubmit: "Submeter",
-	    bCancel: "Cancelar",
-		bClose: "Fechar",
-		saveData: "Data has been changed! Save changes?",
-		bYes : "Yes",
-		bNo : "No",
-		bExit : "Cancel",
-	    msg: {
-	        required:"Campo obrigat�rio",
-	        number:"Por favor, introduza um numero",
-	        minValue:"O valor deve ser maior ou igual que",
-	        maxValue:"O valor deve ser menor ou igual a",
-	        email: "N�o � um endere�o de email v�lido",
-	        integer: "Por favor, introduza um numero inteiro",
-			url: "is not a valid URL. Prefix required ('http://' or 'https://')",
-			nodefined : " is not defined!",
-			novalue : " return value is required!",
-			customarray : "Custom function should return array!",
-			customfcheck : "Custom function should be present in case of custom checking!"
-		}
-	},
-	view : {
-	    caption: "View Record",
-	    bClose: "Close"
-	},
-	del : {
-	    caption: "Eliminar",
-	    msg: "Deseja eliminar o(s) registo(s) seleccionado(s)?",
-	    bSubmit: "Eliminar",
-	    bCancel: "Cancelar"
-	},
-	nav : {
-		edittext: " ",
-	    edittitle: "Modificar registo seleccionado",
-		addtext:" ",
-	    addtitle: "Adicionar novo registo",
-	    deltext: " ",
-	    deltitle: "Eliminar registo seleccionado",
-	    searchtext: " ",
-	    searchtitle: "Procurar",
-	    refreshtext: "",
-	    refreshtitle: "Actualizar",
-	    alertcap: "Aviso",
-	    alerttext: "Por favor, seleccione um registo",
-		viewtext: "",
-		viewtitle: "View selected row"
-	},
-	col : {
-	    caption: "Mostrar/Ocultar Colunas",
-	    bSubmit: "Enviar",
-	    bCancel: "Cancelar"	
-	},
-	errors : {
-		errcap : "Erro",
-		nourl : "N�o especificou um url",
-		norecords: "N�o existem dados para processar",
-	    model : "Tamanho do 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:   [
-				"Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab",
-				"Domingo", "Segunda-Feira", "Ter�a-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "S�bado"
-			],
-			monthNames: [
-				"Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez",
-				"Janeiro", "Fevereiro", "Mar�o", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
-			],
-			AmPm : ["am","pm","AM","PM"],
-			S: function (j) {return j < 11 || j > 13 ? ['�', '�', '�', '�'][Math.min((j - 1) % 10, 3)] : '�'},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Portuguese Translation
+* Tradu��o da jqGrid em Portugues por Frederico Carvalho, http://www.eyeviewdesign.pt
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "View {0} - {1} of {2}",
+	    emptyrecords: "No records to view",
+		loadtext: "A carregar...",
+		pgtext : "Página {0} de {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+	    caption: "Busca...",
+	    Find: "Procurar",
+	    Reset: "Limpar",
+	    odata: [{ oper:'eq', text:'equal'},{ oper:'ne', text:'not equal'},{ oper:'lt', text:'less'},{ oper:'le', text:'less or equal'},{ oper:'gt', text:'greater'},{ oper:'ge', text:'greater or equal'},{ oper:'bw', text:'begins with'},{ oper:'bn', text:'does not begin with'},{ oper:'in', text:'is in'},{ oper:'ni', text:'is not in'},{ oper:'ew', text:'ends with'},{ oper:'en', text:'does not end with'},{ oper:'cn', text:'contains'},{ oper:'nc', text:'does not contain'},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+	    groupOps: [	{ op: "AND", text: "all" },	{ op: "OR",  text: "any" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+	    addCaption: "Adicionar Registo",
+	    editCaption: "Modificar Registo",
+	    bSubmit: "Submeter",
+	    bCancel: "Cancelar",
+		bClose: "Fechar",
+		saveData: "Data has been changed! Save changes?",
+		bYes : "Yes",
+		bNo : "No",
+		bExit : "Cancel",
+	    msg: {
+	        required:"Campo obrigat�rio",
+	        number:"Por favor, introduza um numero",
+	        minValue:"O valor deve ser maior ou igual que",
+	        maxValue:"O valor deve ser menor ou igual a",
+	        email: "N�o � um endere�o de email v�lido",
+	        integer: "Por favor, introduza um numero inteiro",
+			url: "is not a valid URL. Prefix required ('http://' or 'https://')",
+			nodefined : " is not defined!",
+			novalue : " return value is required!",
+			customarray : "Custom function should return array!",
+			customfcheck : "Custom function should be present in case of custom checking!"
+		}
+	},
+	view : {
+	    caption: "View Record",
+	    bClose: "Close"
+	},
+	del : {
+	    caption: "Eliminar",
+	    msg: "Deseja eliminar o(s) registo(s) seleccionado(s)?",
+	    bSubmit: "Eliminar",
+	    bCancel: "Cancelar"
+	},
+	nav : {
+		edittext: " ",
+	    edittitle: "Modificar registo seleccionado",
+		addtext:" ",
+	    addtitle: "Adicionar novo registo",
+	    deltext: " ",
+	    deltitle: "Eliminar registo seleccionado",
+	    searchtext: " ",
+	    searchtitle: "Procurar",
+	    refreshtext: "",
+	    refreshtitle: "Actualizar",
+	    alertcap: "Aviso",
+	    alerttext: "Por favor, seleccione um registo",
+		viewtext: "",
+		viewtitle: "View selected row"
+	},
+	col : {
+	    caption: "Mostrar/Ocultar Colunas",
+	    bSubmit: "Enviar",
+	    bCancel: "Cancelar"	
+	},
+	errors : {
+		errcap : "Erro",
+		nourl : "N�o especificou um url",
+		norecords: "N�o existem dados para processar",
+	    model : "Tamanho do 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:   [
+				"Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab",
+				"Domingo", "Segunda-Feira", "Ter�a-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "S�bado"
+			],
+			monthNames: [
+				"Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez",
+				"Janeiro", "Fevereiro", "Mar�o", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
+			],
+			AmPm : ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['�', '�', '�', '�'][Math.min((j - 1) % 10, 3)] : '�'},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+	    target: '',
+	    checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 148 - 139
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-ro.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-ro.js

@@ -1,139 +1,148 @@
-;(function($){
-/**
- * jqGrid Romanian Translation
- * Alexandru Emil Lupu contact@alecslupu.ro
- * http://www.alecslupu.ro/ 
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Vizualizare {0} - {1} din {2}",
-		emptyrecords: "Nu există înregistrări de vizualizat",
-		loadtext: "Încărcare...",
-		pgtext : "Pagina {0} din {1}"
-	},
-	search : {
-		caption: "Caută...",
-		Find: "Caută",
-		Reset: "Resetare",
-		odata: [{ oper:'eq', text:"egal"},{ oper:'ne', text:"diferit"},{ oper:'lt', text:"mai mic"},{ oper:'le', text:"mai mic sau egal"},{ oper:'gt', text:"mai mare"},{ oper:'ge', text:"mai mare sau egal"},{ oper:'bw', text:"începe cu"},{ oper:'bn', text:"nu începe cu"},{ oper:'in', text:"se găsește în"},{ oper:'ni', text:"nu se găsește în"},{ oper:'ew', text:"se termină cu"},{ oper:'en', text:"nu se termină cu"},{ oper:'cn', text:"conține"},{ oper:'nc', text:""}],
-		groupOps: [	{ op: "AND", text: "toate" },	{ op: "OR",  text: "oricare" }	]
-	},
-	edit : {
-		addCaption: "Adăugare înregistrare",
-		editCaption: "Modificare înregistrare",
-		bSubmit: "Salvează",
-		bCancel: "Anulare",
-		bClose: "Închide",
-		saveData: "Informațiile au fost modificate! Salvați modificările?",
-		bYes : "Da",
-		bNo : "Nu",
-		bExit : "Anulare",
-		msg: {
-			required:"Câmpul este obligatoriu",
-			number:"Vă rugăm introduceți un număr valid",
-			minValue:"valoarea trebuie sa fie mai mare sau egală cu",
-			maxValue:"valoarea trebuie sa fie mai mică sau egală cu",
-			email: "nu este o adresă de e-mail validă",
-			integer: "Vă rugăm introduceți un număr valid",
-			date: "Vă rugăm să introduceți o dată validă",
-			url: "Nu este un URL valid. Prefixul  este necesar('http://' or 'https://')",
-			nodefined : " is not defined!",
-			novalue : " return value is required!",
-			customarray : "Custom function should return array!",
-			customfcheck : "Custom function should be present in case of custom checking!"
-		}
-	},
-	view : {
-		caption: "Vizualizare înregistrare",
-		bClose: "Închidere"
-	},
-	del : {
-		caption: "Ștegere",
-		msg: "Ștergeți înregistrarea (înregistrările) selectate?",
-		bSubmit: "Șterge",
-		bCancel: "Anulare"
-	},
-	nav : {
-		edittext: "",
-		edittitle: "Modifică rândul selectat",
-		addtext:"",
-		addtitle: "Adaugă rând nou",
-		deltext: "",
-		deltitle: "Șterge rândul selectat",
-		searchtext: "",
-		searchtitle: "Căutare înregistrări",
-		refreshtext: "",
-		refreshtitle: "Reîncarcare Grid",
-		alertcap: "Avertisment",
-		alerttext: "Vă rugăm să selectați un rând",
-		viewtext: "",
-		viewtitle: "Vizualizează rândul selectat"
-	},
-	col : {
-		caption: "Arată/Ascunde coloanele",
-		bSubmit: "Salvează",
-		bCancel: "Anulare"
-	},
-	errors : {
-		errcap : "Eroare",
-		nourl : "Niciun url nu este setat",
-		norecords: "Nu sunt înregistrări de procesat",
-		model : "Lungimea 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:   [
-				"Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm",
-				"Duminică", "Luni", "Marți", "Miercuri", "Joi", "Vineri", "Sâmbătă"
-			],
-			monthNames: [
-				"Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Noi", "Dec",
-				"Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"
-			],
-			AmPm : ["am","pm","AM","PM"],
-			/*
-			 Here is a problem in romanian: 
-					M	/	F
-			 1st = primul / prima
-			 2nd = Al doilea / A doua
-			 3rd = Al treilea / A treia 
-			 4th = Al patrulea/ A patra
-			 5th = Al cincilea / A cincea 
-			 6th = Al șaselea / A șasea
-			 7th = Al șaptelea / A șaptea
-			 .... 
-			 */
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Romanian Translation
+ * Alexandru Emil Lupu contact@alecslupu.ro
+ * http://www.alecslupu.ro/ 
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Vizualizare {0} - {1} din {2}",
+		emptyrecords: "Nu există înregistrări de vizualizat",
+		loadtext: "Încărcare...",
+		pgtext : "Pagina {0} din {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "Caută...",
+		Find: "Caută",
+		Reset: "Resetare",
+		odata: [{ oper:'eq', text:"egal"},{ oper:'ne', text:"diferit"},{ oper:'lt', text:"mai mic"},{ oper:'le', text:"mai mic sau egal"},{ oper:'gt', text:"mai mare"},{ oper:'ge', text:"mai mare sau egal"},{ oper:'bw', text:"începe cu"},{ oper:'bn', text:"nu începe cu"},{ oper:'in', text:"se găsește în"},{ oper:'ni', text:"nu se găsește în"},{ oper:'ew', text:"se termină cu"},{ oper:'en', text:"nu se termină cu"},{ oper:'cn', text:"conține"},{ oper:'nc', text:""},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+		groupOps: [	{ op: "AND", text: "toate" },	{ op: "OR",  text: "oricare" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "Adăugare înregistrare",
+		editCaption: "Modificare înregistrare",
+		bSubmit: "Salvează",
+		bCancel: "Anulare",
+		bClose: "Închide",
+		saveData: "Informațiile au fost modificate! Salvați modificările?",
+		bYes : "Da",
+		bNo : "Nu",
+		bExit : "Anulare",
+		msg: {
+			required:"Câmpul este obligatoriu",
+			number:"Vă rugăm introduceți un număr valid",
+			minValue:"valoarea trebuie sa fie mai mare sau egală cu",
+			maxValue:"valoarea trebuie sa fie mai mică sau egală cu",
+			email: "nu este o adresă de e-mail validă",
+			integer: "Vă rugăm introduceți un număr valid",
+			date: "Vă rugăm să introduceți o dată validă",
+			url: "Nu este un URL valid. Prefixul  este necesar('http://' or 'https://')",
+			nodefined : " is not defined!",
+			novalue : " return value is required!",
+			customarray : "Custom function should return array!",
+			customfcheck : "Custom function should be present in case of custom checking!"
+		}
+	},
+	view : {
+		caption: "Vizualizare înregistrare",
+		bClose: "Închidere"
+	},
+	del : {
+		caption: "Ștegere",
+		msg: "Ștergeți înregistrarea (înregistrările) selectate?",
+		bSubmit: "Șterge",
+		bCancel: "Anulare"
+	},
+	nav : {
+		edittext: "",
+		edittitle: "Modifică rândul selectat",
+		addtext:"",
+		addtitle: "Adaugă rând nou",
+		deltext: "",
+		deltitle: "Șterge rândul selectat",
+		searchtext: "",
+		searchtitle: "Căutare înregistrări",
+		refreshtext: "",
+		refreshtitle: "Reîncarcare Grid",
+		alertcap: "Avertisment",
+		alerttext: "Vă rugăm să selectați un rând",
+		viewtext: "",
+		viewtitle: "Vizualizează rândul selectat"
+	},
+	col : {
+		caption: "Arată/Ascunde coloanele",
+		bSubmit: "Salvează",
+		bCancel: "Anulare"
+	},
+	errors : {
+		errcap : "Eroare",
+		nourl : "Niciun url nu este setat",
+		norecords: "Nu sunt înregistrări de procesat",
+		model : "Lungimea 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:   [
+				"Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm",
+				"Duminică", "Luni", "Marți", "Miercuri", "Joi", "Vineri", "Sâmbătă"
+			],
+			monthNames: [
+				"Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Noi", "Dec",
+				"Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"
+			],
+			AmPm : ["am","pm","AM","PM"],
+			/*
+			 Here is a problem in romanian: 
+					M	/	F
+			 1st = primul / prima
+			 2nd = Al doilea / A doua
+			 3rd = Al treilea / A treia 
+			 4th = Al patrulea/ A patra
+			 5th = Al cincilea / A cincea 
+			 6th = Al șaselea / A șasea
+			 7th = Al șaptelea / A șaptea
+			 .... 
+			 */
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 136 - 0
app/Resources/public/assets/jqgrid/js/i18n/grid.locale-ru.js

@@ -0,0 +1,136 @@
+;(function($){
+/**
+ * jqGrid Russian Translation v1.0 02.07.2009 (based on translation by Alexey Kanaev v1.1 21.01.2009, http://softcore.com.ru)
+ * Sergey Dyagovchenko
+ * http://d.sumy.ua
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Просмотр {0} - {1} из {2}",
+		emptyrecords: "Нет записей для просмотра",
+		loadtext: "Загрузка...",
+		pgtext : "Стр. {0} из {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "Поиск...",
+		Find: "Найти",
+		Reset: "Сброс",
+		odata: [{ oper:'eq', text:"равно"},{ oper:'ne', text:"не равно"},{ oper:'lt', text:"меньше"},{ oper:'le', text:"меньше или равно"},{ oper:'gt', text:"больше"},{ oper:'ge', text:"больше или равно"},{ oper:'bw', text:"начинается с"},{ oper:'bn', text:"не начинается с"},{ oper:'in', text:"находится в"},{ oper:'ni', text:"не находится в"},{ oper:'ew', text:"заканчивается на"},{ oper:'en', text:"не заканчивается на"},{ oper:'cn', text:"содержит"},{ oper:'nc', text:"не содержит"},{ oper:'nu', text:"равно NULL"},{ oper:'nn', text:"не равно NULL"}],
+		groupOps: [	{ op: "AND", text: "все" }, { op: "OR", text: "любой" }],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "Добавить запись",
+		editCaption: "Редактировать запись",
+		bSubmit: "Сохранить",
+		bCancel: "Отмена",
+		bClose: "Закрыть",
+		saveData: "Данные были измененны! Сохранить изменения?",
+		bYes : "Да",
+		bNo : "Нет",
+		bExit : "Отмена",
+		msg: {
+			required:"Поле является обязательным",
+			number:"Пожалуйста, введите правильное число",
+			minValue:"значение должно быть больше либо равно",
+			maxValue:"значение должно быть меньше либо равно",
+			email: "некорректное значение e-mail",
+			integer: "Пожалуйста, введите целое число",
+			date: "Пожалуйста, введите правильную дату",
+			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 : ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';},
+			srcformat: 'Y-m-d',
+			newformat: 'd.m.Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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",
+				MonthDay: "F d",
+				ShortTime: "G:i",
+				LongTime: "G:i:s",
+				SortableDateTime: "Y-m-d\\TH:i:s",
+				UniversalSortableDateTime: "Y-m-d H:i:sO",
+				YearMonth: "F, Y"
+			},
+			reformatAfterEdit : false,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 136 - 127
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-sk.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-sk.js

@@ -1,127 +1,136 @@
-;(function($){
-/**
- * jqGrid Slovak Translation
- * Milan Cibulka
- * 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 = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Zobrazených {0} - {1} z {2} záznamov",
-	    emptyrecords: "Neboli nájdené žiadne záznamy",
-		loadtext: "Načítám...",
-		pgtext : "Strana {0} z {1}"
-	},
-	search : {
-		caption: "Vyhľadávam...",
-		Find: "Hľadať",
-		Reset: "Reset",
-	    odata: [{ oper:'eq', text:"rovná sa"},{ oper:'ne', text:"nerovná sa"},{ oper:'lt', text:"menšie"},{ oper:'le', text:"menšie alebo rovnajúce sa"},{ oper:'gt', text:"väčšie"},{ oper:'ge', text:"väčšie alebo rovnajúce sa"},{ oper:'bw', text:"začína s"},{ oper:'bn', text:"nezačína s"},{ oper:'in', text:"je v"},{ oper:'ni', text:"nie je v"},{ oper:'ew', text:"končí s"},{ oper:'en', text:"nekončí s"},{ oper:'cn', text:"obahuje"},{ oper:'nc', text:"neobsahuje"}],
-	    groupOps: [	{ op: "AND", text: "všetkých" },	{ op: "OR",  text: "niektorého z" }	]
-	},
-	edit : {
-		addCaption: "Pridať záznam",
-		editCaption: "Editácia záznamov",
-		bSubmit: "Uložiť",
-		bCancel: "Storno",
-		bClose: "Zavrieť",
-		saveData: "Údaje boli zmenené! Uložiť zmeny?",
-		bYes : "Ano",
-		bNo : "Nie",
-		bExit : "Zrušiť",
-		msg: {
-		    required:"Pole je požadované",
-		    number:"Prosím, vložte valídne číslo",
-		    minValue:"hodnota musí býť väčšia ako alebo rovná ",
-		    maxValue:"hodnota musí býť menšia ako alebo rovná ",
-		    email: "nie je valídny e-mail",
-		    integer: "Prosím, vložte celé číslo",
-			date: "Prosím, vložte valídny dátum",
-			url: "nie je platnou URL. Požadovaný prefix ('http://' alebo 'https://')",
-			nodefined : " nie je definovaný!",
-			novalue : " je vyžadovaná návratová hodnota!",
-			customarray : "Custom function mala vrátiť pole!",
-			customfcheck : "Custom function by mala byť prítomná v prípade custom checking!"
-		}
-	},
-	view : {
-	    caption: "Zobraziť záznam",
-	    bClose: "Zavrieť"
-	},
-	del : {
-		caption: "Zmazať",
-		msg: "Zmazať vybraný(é) záznam(y)?",
-		bSubmit: "Zmazať",
-		bCancel: "Storno"
-	},
-	nav : {
-		edittext: " ",
-		edittitle: "Editovať vybraný riadok",
-		addtext:" ",
-		addtitle: "Pridať nový riadek",
-		deltext: " ",
-		deltitle: "Zmazať vybraný záznam ",
-		searchtext: " ",
-		searchtitle: "Nájsť záznamy",
-		refreshtext: "",
-		refreshtitle: "Obnoviť tabuľku",
-		alertcap: "Varovanie",
-		alerttext: "Prosím, vyberte riadok",
-		viewtext: "",
-		viewtitle: "Zobraziť vybraný riadok"
-	},
-	col : {
-		caption: "Zobrazit/Skrýť stĺpce",
-		bSubmit: "Uložiť",
-		bCancel: "Storno"	
-	},
-	errors : {
-		errcap : "Chyba",
-		nourl : "Nie je nastavená url",
-		norecords: "Žiadne záznamy k spracovaniu",
-		model : "Dĺžka 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:   [
-				"Ne", "Po", "Ut", "St", "Št", "Pi", "So",
-				"Nedela", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatek", "Sobota"
-			],
-			monthNames: [
-				"Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec",
-				"Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"
-			],
-			AmPm : ["do","od","DO","OD"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Slovak Translation
+ * Milan Cibulka
+ * 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 = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Zobrazených {0} - {1} z {2} záznamov",
+	    emptyrecords: "Neboli nájdené žiadne záznamy",
+		loadtext: "Načítám...",
+		pgtext : "Strana {0} z {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "Vyhľadávam...",
+		Find: "Hľadať",
+		Reset: "Reset",
+	    odata: [{ oper:'eq', text:"rovná sa"},{ oper:'ne', text:"nerovná sa"},{ oper:'lt', text:"menšie"},{ oper:'le', text:"menšie alebo rovnajúce sa"},{ oper:'gt', text:"väčšie"},{ oper:'ge', text:"väčšie alebo rovnajúce sa"},{ oper:'bw', text:"začína s"},{ oper:'bn', text:"nezačína s"},{ oper:'in', text:"je v"},{ oper:'ni', text:"nie je v"},{ oper:'ew', text:"končí s"},{ oper:'en', text:"nekončí s"},{ oper:'cn', text:"obahuje"},{ oper:'nc', text:"neobsahuje"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+	    groupOps: [	{ op: "AND", text: "všetkých" },	{ op: "OR",  text: "niektorého z" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "Pridať záznam",
+		editCaption: "Editácia záznamov",
+		bSubmit: "Uložiť",
+		bCancel: "Storno",
+		bClose: "Zavrieť",
+		saveData: "Údaje boli zmenené! Uložiť zmeny?",
+		bYes : "Ano",
+		bNo : "Nie",
+		bExit : "Zrušiť",
+		msg: {
+		    required:"Pole je požadované",
+		    number:"Prosím, vložte valídne číslo",
+		    minValue:"hodnota musí býť väčšia ako alebo rovná ",
+		    maxValue:"hodnota musí býť menšia ako alebo rovná ",
+		    email: "nie je valídny e-mail",
+		    integer: "Prosím, vložte celé číslo",
+			date: "Prosím, vložte valídny dátum",
+			url: "nie je platnou URL. Požadovaný prefix ('http://' alebo 'https://')",
+			nodefined : " nie je definovaný!",
+			novalue : " je vyžadovaná návratová hodnota!",
+			customarray : "Custom function mala vrátiť pole!",
+			customfcheck : "Custom function by mala byť prítomná v prípade custom checking!"
+		}
+	},
+	view : {
+	    caption: "Zobraziť záznam",
+	    bClose: "Zavrieť"
+	},
+	del : {
+		caption: "Zmazať",
+		msg: "Zmazať vybraný(é) záznam(y)?",
+		bSubmit: "Zmazať",
+		bCancel: "Storno"
+	},
+	nav : {
+		edittext: " ",
+		edittitle: "Editovať vybraný riadok",
+		addtext:" ",
+		addtitle: "Pridať nový riadek",
+		deltext: " ",
+		deltitle: "Zmazať vybraný záznam ",
+		searchtext: " ",
+		searchtitle: "Nájsť záznamy",
+		refreshtext: "",
+		refreshtitle: "Obnoviť tabuľku",
+		alertcap: "Varovanie",
+		alerttext: "Prosím, vyberte riadok",
+		viewtext: "",
+		viewtitle: "Zobraziť vybraný riadok"
+	},
+	col : {
+		caption: "Zobrazit/Skrýť stĺpce",
+		bSubmit: "Uložiť",
+		bCancel: "Storno"	
+	},
+	errors : {
+		errcap : "Chyba",
+		nourl : "Nie je nastavená url",
+		norecords: "Žiadne záznamy k spracovaniu",
+		model : "Dĺžka 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:   [
+				"Ne", "Po", "Ut", "St", "Št", "Pi", "So",
+				"Nedela", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatek", "Sobota"
+			],
+			monthNames: [
+				"Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec",
+				"Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"
+			],
+			AmPm : ["do","od","DO","OD"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+	    target: '',
+	    checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 9 - 2
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-sr-latin.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-sr-latin.js

@@ -13,7 +13,13 @@ $.extend($.jgrid,{
 		recordtext: "Pregled {0} - {1} od {2}",
 		emptyrecords: "Ne postoji nijedan zapis",
 		loadtext: "Učitavanje…",
-		pgtext : "Strana {0} od {1}"
+		pgtext : "Strana {0} od {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
 	},
 	search : {
 		caption: "Traženje...",
@@ -118,7 +124,8 @@ $.extend($.jgrid,{
 				UniversalSortableDateTime: "Y-m-d H:i:sO",
 				YearMonth: "F, Y"
 			},
-			reformatAfterEdit : false
+			reformatAfterEdit : false,
+			userLocalTime : false
 		},
 		baseLinkUrl: '',
 		showAction: '',

+ 137 - 128
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-sr.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-sr.js

@@ -1,128 +1,137 @@
-;(function($){
-/**
- * jqGrid Serbian Translation
- * Александар Миловац(Aleksandar Milovac) aleksandar.milovac@gmail.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 = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Преглед {0} - {1} од {2}",
-		emptyrecords: "Не постоји ниједан запис",
-		loadtext: "Учитавање...",
-		pgtext : "Страна {0} од {1}"
-	},
-	search : {
-		caption: "Тражење...",
-		Find: "Тражи",
-		Reset: "Ресетуј",
-		odata: [{ oper:'eq', text:"једнако"},{ oper:'ne', text:"није једнако"},{ oper:'lt', text:"мање"},{ oper:'le', text:"мање или једнако"},{ oper:'gt', text:"веће"},{ oper:'ge', text:"веће или једнако"},{ oper:'bw', text:"почиње са"},{ oper:'bn', text:"не почиње са"},{ oper:'in', text:"је у"},{ oper:'ni', text:"није у"},{ oper:'ew', text:"завршава са"},{ oper:'en', text:"не завршава са"},{ oper:'cn', text:"садржи"},{ oper:'nc', text:"не садржи"}],
-		groupOps: [	{ op: "И", text: "сви" },	{ op: "ИЛИ",  text: "сваки" }	]
-	},
-	edit : {
-		addCaption: "Додај запис",
-		editCaption: "Измени запис",
-		bSubmit: "Пошаљи",
-		bCancel: "Одустани",
-		bClose: "Затвори",
-		saveData: "Податак је измењен! Сачувај измене?",
-		bYes : "Да",
-		bNo : "Не",
-		bExit : "Одустани",
-		msg: {
-			required:"Поље је обавезно",
-			number:"Молим, унесите исправан број",
-			minValue:"вредност мора бити већа од или једнака са ",
-			maxValue:"вредност мора бити мања од или једнака са",
-			email: "није исправна имејл адреса",
-			integer: "Молим, унесите исправну целобројну вредност ",
-			date: "Молим, унесите исправан датум",
-			url: "није исправан УРЛ. Потребан је префикс ('http://' or 'https://')",
-			nodefined : " није дефинисан!",
-			novalue : " захтевана је повратна вредност!",
-			customarray : "Custom function should return array!",
-			customfcheck : "Custom function should be present in case of custom checking!"
-			
-		}
-	},
-	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 : "Дужина модела 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 : ["am","pm","AM","PM"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Serbian Translation
+ * Александар Миловац(Aleksandar Milovac) aleksandar.milovac@gmail.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 = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Преглед {0} - {1} од {2}",
+		emptyrecords: "Не постоји ниједан запис",
+		loadtext: "Учитавање...",
+		pgtext : "Страна {0} од {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "Тражење...",
+		Find: "Тражи",
+		Reset: "Ресетуј",
+		odata: [{ oper:'eq', text:"једнако"},{ oper:'ne', text:"није једнако"},{ oper:'lt', text:"мање"},{ oper:'le', text:"мање или једнако"},{ oper:'gt', text:"веће"},{ oper:'ge', text:"веће или једнако"},{ oper:'bw', text:"почиње са"},{ oper:'bn', text:"не почиње са"},{ oper:'in', text:"је у"},{ oper:'ni', text:"није у"},{ oper:'ew', text:"завршава са"},{ oper:'en', text:"не завршава са"},{ oper:'cn', text:"садржи"},{ oper:'nc', text:"не садржи"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+		groupOps: [	{ op: "И", text: "сви" },	{ op: "ИЛИ",  text: "сваки" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "Додај запис",
+		editCaption: "Измени запис",
+		bSubmit: "Пошаљи",
+		bCancel: "Одустани",
+		bClose: "Затвори",
+		saveData: "Податак је измењен! Сачувај измене?",
+		bYes : "Да",
+		bNo : "Не",
+		bExit : "Одустани",
+		msg: {
+			required:"Поље је обавезно",
+			number:"Молим, унесите исправан број",
+			minValue:"вредност мора бити већа од или једнака са ",
+			maxValue:"вредност мора бити мања од или једнака са",
+			email: "није исправна имејл адреса",
+			integer: "Молим, унесите исправну целобројну вредност ",
+			date: "Молим, унесите исправан датум",
+			url: "није исправан УРЛ. Потребан је префикс ('http://' or 'https://')",
+			nodefined : " није дефинисан!",
+			novalue : " захтевана је повратна вредност!",
+			customarray : "Custom function should return array!",
+			customfcheck : "Custom function should be present in case of custom checking!"
+			
+		}
+	},
+	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 : "Дужина модела 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 : ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 136 - 127
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-sv.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-sv.js

@@ -1,127 +1,136 @@
-;(function($){
-/**
- * jqGrid Swedish Translation
- * Harald Normann harald.normann@wts.se, harald.normann@gmail.com
- * http://www.worldteamsoftware.com 
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Visar {0} - {1} av {2}",
-		emptyrecords: "Det finns inga poster att visa",
-		loadtext: "Laddar...",
-		pgtext : "Sida {0} av {1}"
-	},
-	search : {
-		caption: "Sök Poster - Ange sökvillkor",
-		Find: "Sök",
-		Reset: "Nollställ Villkor",
-		odata: [{ oper:'eq', text:"lika"},{ oper:'ne', text:"ej lika"},{ oper:'lt', text:"mindre"},{ oper:'le', text:"mindre eller lika"},{ oper:'gt', text:"större"},{ oper:'ge', text:"större eller lika"},{ oper:'bw', text:"börjar med"},{ oper:'bn', text:"börjar inte med"},{ oper:'in', text:"tillhör"},{ oper:'ni', text:"tillhör inte"},{ oper:'ew', text:"slutar med"},{ oper:'en', text:"slutar inte med"},{ oper:'cn', text:"innehåller"},{ oper:'nc', text:"innehåller inte"}],
-		groupOps: [	{ op: "AND", text: "alla" },	{ op: "OR",  text: "eller" }	]
-	},
-	edit : {
-		addCaption: "Ny Post",
-		editCaption: "Redigera Post",
-		bSubmit: "Spara",
-		bCancel: "Avbryt",
-		bClose: "Stäng",
-		saveData: "Data har ändrats! Spara förändringar?",
-		bYes : "Ja",
-		bNo : "Nej",
-		bExit : "Avbryt",
-		msg: {
-	        required:"Fältet är obligatoriskt",
-	        number:"Välj korrekt nummer",
-	        minValue:"värdet måste vara större än eller lika med",
-	        maxValue:"värdet måste vara mindre än eller lika med",
-	        email: "är inte korrekt e-post adress",
-	        integer: "Var god ange korrekt heltal",
-	        date: "Var god ange korrekt datum",
-	        url: "är inte en korrekt URL. Prefix måste anges ('http://' or 'https://')",
-	        nodefined : " är inte definierad!",
-	        novalue : " returvärde måste anges!",
-	        customarray : "Custom funktion måste returnera en vektor!",
-			customfcheck : "Custom funktion måste finnas om Custom kontroll sker!"
-		}
-	},
-	view : {
-		caption: "Visa Post",
-		bClose: "Stäng"
-	},
-	del : {
-		caption: "Radera",
-		msg: "Radera markerad(e) post(er)?",
-		bSubmit: "Radera",
-		bCancel: "Avbryt"
-	},
-	nav : {
-		edittext: "",
-		edittitle: "Redigera markerad rad",
-		addtext:"",
-		addtitle: "Skapa ny post",
-		deltext: "",
-		deltitle: "Radera markerad rad",
-		searchtext: "",
-		searchtitle: "Sök poster",
-		refreshtext: "",
-		refreshtitle: "Uppdatera data",
-		alertcap: "Varning",
-		alerttext: "Ingen rad är markerad",
-		viewtext: "",
-		viewtitle: "Visa markerad rad"
-	},
-	col : {
-		caption: "Välj Kolumner",
-		bSubmit: "OK",
-		bCancel: "Avbryt"
-	},
-	errors : {
-		errcap : "Fel",
-		nourl : "URL saknas",
-		norecords: "Det finns inga poster att bearbeta",
-		model : "Antal colNames <> colModel!"
-	},
-	formatter : {
-		integer : {thousandsSeparator: " ", defaultValue: '0'},
-		number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'},
-		currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"Kr", defaultValue: '0,00'},
-		date : {
-			dayNames:   [
-				"Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör",
-				"Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag"
-			],
-			monthNames: [
-				"Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec",
-				"Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"
-			],
-			AmPm : ["fm","em","FM","EM"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'Y-m-d',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Swedish Translation
+ * Harald Normann harald.normann@wts.se, harald.normann@gmail.com
+ * http://www.worldteamsoftware.com 
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Visar {0} - {1} av {2}",
+		emptyrecords: "Det finns inga poster att visa",
+		loadtext: "Laddar...",
+		pgtext : "Sida {0} av {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "Sök Poster - Ange sökvillkor",
+		Find: "Sök",
+		Reset: "Nollställ Villkor",
+		odata: [{ oper:'eq', text:"lika"},{ oper:'ne', text:"ej lika"},{ oper:'lt', text:"mindre"},{ oper:'le', text:"mindre eller lika"},{ oper:'gt', text:"större"},{ oper:'ge', text:"större eller lika"},{ oper:'bw', text:"börjar med"},{ oper:'bn', text:"börjar inte med"},{ oper:'in', text:"tillhör"},{ oper:'ni', text:"tillhör inte"},{ oper:'ew', text:"slutar med"},{ oper:'en', text:"slutar inte med"},{ oper:'cn', text:"innehåller"},{ oper:'nc', text:"innehåller inte"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+		groupOps: [	{ op: "AND", text: "alla" },	{ op: "OR",  text: "eller" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "Ny Post",
+		editCaption: "Redigera Post",
+		bSubmit: "Spara",
+		bCancel: "Avbryt",
+		bClose: "Stäng",
+		saveData: "Data har ändrats! Spara förändringar?",
+		bYes : "Ja",
+		bNo : "Nej",
+		bExit : "Avbryt",
+		msg: {
+	        required:"Fältet är obligatoriskt",
+	        number:"Välj korrekt nummer",
+	        minValue:"värdet måste vara större än eller lika med",
+	        maxValue:"värdet måste vara mindre än eller lika med",
+	        email: "är inte korrekt e-post adress",
+	        integer: "Var god ange korrekt heltal",
+	        date: "Var god ange korrekt datum",
+	        url: "är inte en korrekt URL. Prefix måste anges ('http://' or 'https://')",
+	        nodefined : " är inte definierad!",
+	        novalue : " returvärde måste anges!",
+	        customarray : "Custom funktion måste returnera en vektor!",
+			customfcheck : "Custom funktion måste finnas om Custom kontroll sker!"
+		}
+	},
+	view : {
+		caption: "Visa Post",
+		bClose: "Stäng"
+	},
+	del : {
+		caption: "Radera",
+		msg: "Radera markerad(e) post(er)?",
+		bSubmit: "Radera",
+		bCancel: "Avbryt"
+	},
+	nav : {
+		edittext: "",
+		edittitle: "Redigera markerad rad",
+		addtext:"",
+		addtitle: "Skapa ny post",
+		deltext: "",
+		deltitle: "Radera markerad rad",
+		searchtext: "",
+		searchtitle: "Sök poster",
+		refreshtext: "",
+		refreshtitle: "Uppdatera data",
+		alertcap: "Varning",
+		alerttext: "Ingen rad är markerad",
+		viewtext: "",
+		viewtitle: "Visa markerad rad"
+	},
+	col : {
+		caption: "Välj Kolumner",
+		bSubmit: "OK",
+		bCancel: "Avbryt"
+	},
+	errors : {
+		errcap : "Fel",
+		nourl : "URL saknas",
+		norecords: "Det finns inga poster att bearbeta",
+		model : "Antal colNames <> colModel!"
+	},
+	formatter : {
+		integer : {thousandsSeparator: " ", defaultValue: '0'},
+		number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0,00'},
+		currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"Kr", defaultValue: '0,00'},
+		date : {
+			dayNames:   [
+				"Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör",
+				"Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag"
+			],
+			monthNames: [
+				"Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec",
+				"Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"
+			],
+			AmPm : ["fm","em","FM","EM"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'Y-m-d',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 137 - 128
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-th.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-th.js

@@ -1,128 +1,137 @@
-;(function($){
-/**
- * jqGrid Thai Translation
- * Kittituch Manakul m.kittituch@Gmail.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 = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "แสดง {0} - {1} จาก {2}",
-		emptyrecords: "ไม่พบข้อมูล",
-		loadtext: "กำลังร้องขอข้อมูล...",
-		pgtext : "หน้า {0} จาก {1}"
-	},
-	search : {
-		caption: "กำลังค้นหา...",
-		Find: "ค้นหา",
-		Reset: "คืนค่ากลับ",
-		odata: [{ oper:'eq', text:"เท่ากับ"},{ oper:'ne', text:"ไม่เท่ากับ"},{ oper:'lt', text:"น้อยกว่า"},{ oper:'le', text:"ไม่มากกว่า"},{ oper:'gt', text:"มากกกว่า"},{ oper:'ge', text:"ไม่น้อยกว่า"},{ oper:'bw', text:"ขึ้นต้นด้วย"},{ oper:'bn', text:"ไม่ขึ้นต้นด้วย"},{ oper:'in', text:"มีคำใดคำหนึ่งใน"},{ oper:'ni', text:"ไม่มีคำใดคำหนึ่งใน"},{ oper:'ew', text:"ลงท้ายด้วย"},{ oper:'en', text:"ไม่ลงท้ายด้วย"},{ oper:'cn', text:"มีคำว่า"},{ oper:'nc', text:"ไม่มีคำว่า"}],
-		groupOps: [	{ op: "และ", text: "ทั้งหมด" },	{ op: "หรือ",  text: "ใดๆ" }	]
-	},
-	edit : {
-		addCaption: "เพิ่มข้อมูล",
-		editCaption: "แก้ไขข้อมูล",
-		bSubmit: "บันทึก",
-		bCancel: "ยกเลิก",
-		bClose: "ปิด",
-		saveData: "คุณต้องการบันทึการแก้ไข ใช่หรือไม่?",
-		bYes : "บันทึก",
-		bNo : "ละทิ้งการแก้ไข",
-		bExit : "ยกเลิก",
-		msg: {
-			required:"ข้อมูลนี้จำเป็น",
-			number:"กรุณากรอกหมายเลขให้ถูกต้อง",
-			minValue:"ค่าของข้อมูลนี้ต้องไม่น้อยกว่า",
-			maxValue:"ค่าของข้อมูลนี้ต้องไม่มากกว่า",
-			email: "อีเมลล์นี้ไม่ถูกต้อง",
-			integer: "กรุณากรอกเป็นจำนวนเต็ม",
-			date: "กรุณากรอกวันที่ให้ถูกต้อง",
-			url: "URL ไม่ถูกต้อง 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 : ["am","pm","AM","PM"],
-			S: function (j) {return ''},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Thai Translation
+ * Kittituch Manakul m.kittituch@Gmail.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 = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "แสดง {0} - {1} จาก {2}",
+		emptyrecords: "ไม่พบข้อมูล",
+		loadtext: "กำลังร้องขอข้อมูล...",
+		pgtext : "หน้า {0} จาก {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+		caption: "กำลังค้นหา...",
+		Find: "ค้นหา",
+		Reset: "คืนค่ากลับ",
+		odata: [{ oper:'eq', text:"เท่ากับ"},{ oper:'ne', text:"ไม่เท่ากับ"},{ oper:'lt', text:"น้อยกว่า"},{ oper:'le', text:"ไม่มากกว่า"},{ oper:'gt', text:"มากกกว่า"},{ oper:'ge', text:"ไม่น้อยกว่า"},{ oper:'bw', text:"ขึ้นต้นด้วย"},{ oper:'bn', text:"ไม่ขึ้นต้นด้วย"},{ oper:'in', text:"มีคำใดคำหนึ่งใน"},{ oper:'ni', text:"ไม่มีคำใดคำหนึ่งใน"},{ oper:'ew', text:"ลงท้ายด้วย"},{ oper:'en', text:"ไม่ลงท้ายด้วย"},{ oper:'cn', text:"มีคำว่า"},{ oper:'nc', text:"ไม่มีคำว่า"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+		groupOps: [	{ op: "และ", text: "ทั้งหมด" },	{ op: "หรือ",  text: "ใดๆ" }	],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+		addCaption: "เพิ่มข้อมูล",
+		editCaption: "แก้ไขข้อมูล",
+		bSubmit: "บันทึก",
+		bCancel: "ยกเลิก",
+		bClose: "ปิด",
+		saveData: "คุณต้องการบันทึการแก้ไข ใช่หรือไม่?",
+		bYes : "บันทึก",
+		bNo : "ละทิ้งการแก้ไข",
+		bExit : "ยกเลิก",
+		msg: {
+			required:"ข้อมูลนี้จำเป็น",
+			number:"กรุณากรอกหมายเลขให้ถูกต้อง",
+			minValue:"ค่าของข้อมูลนี้ต้องไม่น้อยกว่า",
+			maxValue:"ค่าของข้อมูลนี้ต้องไม่มากกว่า",
+			email: "อีเมลล์นี้ไม่ถูกต้อง",
+			integer: "กรุณากรอกเป็นจำนวนเต็ม",
+			date: "กรุณากรอกวันที่ให้ถูกต้อง",
+			url: "URL ไม่ถูกต้อง 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 : ["am","pm","AM","PM"],
+			S: function (j) {return ''},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+		target: '',
+		checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 135 - 126
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-tr.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-tr.js

@@ -1,126 +1,135 @@
-;(function($){
-/**
- * jqGrid Turkish Translation
- * Erhan Gündoğan (erhan@trposta.net)
- * http://blog.zakkum.com
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "{0}-{1} listeleniyor. Toplam:{2}",
-	    emptyrecords: "Kayıt bulunamadı",
-		loadtext: "Yükleniyor...",
-		pgtext : "{0}/{1}. Sayfa"
-	},
-	search : {
-	    caption: "Arama...",
-	    Find: "Bul",
-	    Reset: "Temizle",	    
-	    odata: [{ oper:'eq', text:"eşit"},{ oper:'ne', text:"eşit değil"},{ oper:'lt', text:"daha az"},{ oper:'le', text:"daha az veya eşit"},{ oper:'gt', text:"daha fazla"},{ oper:'ge', text:"daha fazla veya eşit"},{ oper:'bw', text:"ile başlayan"},{ oper:'bn', text:"ile başlamayan"},{ oper:'in', text:"içinde"},{ oper:'ni', text:"içinde değil"},{ oper:'ew', text:"ile biten"},{ oper:'en', text:"ile bitmeyen"},{ oper:'cn', text:"içeren"},{ oper:'nc', text:"içermeyen"}],
-	    groupOps: [	{ op: "VE", text: "tüm" },	{ op: "VEYA",  text: "herhangi" }	]
-	},
-	edit : {
-	    addCaption: "Kayıt Ekle",
-	    editCaption: "Kayıt Düzenle",
-	    bSubmit: "Gönder",
-	    bCancel: "İptal",
-		bClose: "Kapat",
-		saveData: "Veriler değişti! Kayıt edilsin mi?",
-		bYes : "Evet",
-		bNo : "Hayıt",
-		bExit : "İptal",
-	    msg: {
-	        required:"Alan gerekli",
-	        number:"Lütfen bir numara giriniz",
-	        minValue:"girilen değer daha büyük ya da buna eşit olmalıdır",
-	        maxValue:"girilen değer daha küçük ya da buna eşit olmalıdır",
-	        email: "geçerli bir e-posta adresi değildir",
-	        integer: "Lütfen bir tamsayı giriniz",
-			url: "Geçerli bir URL değil. ('http://' or 'https://') ön eki gerekli.",
-			nodefined : " is not defined!",
-			novalue : " return value is required!",
-			customarray : "Custom function should return array!",
-			customfcheck : "Custom function should be present in case of custom checking!"
-		}
-	},
-	view : {
-	    caption: "Kayıt Görüntüle",
-	    bClose: "Kapat"
-	},
-	del : {
-	    caption: "Sil",
-	    msg: "Seçilen kayıtlar silinsin mi?",
-	    bSubmit: "Sil",
-	    bCancel: "İptal"
-	},
-	nav : {
-		edittext: " ",
-	    edittitle: "Seçili satırı düzenle",
-		addtext:" ",
-	    addtitle: "Yeni satır ekle",
-	    deltext: " ",
-	    deltitle: "Seçili satırı sil",
-	    searchtext: " ",
-	    searchtitle: "Kayıtları bul",
-	    refreshtext: "",
-	    refreshtitle: "Tabloyu yenile",
-	    alertcap: "Uyarı",
-	    alerttext: "Lütfen bir satır seçiniz",
-		viewtext: "",
-		viewtitle: "Seçilen satırı görüntüle"
-	},
-	col : {
-	    caption: "Sütunları göster/gizle",
-	    bSubmit: "Gönder",
-	    bCancel: "İptal"	
-	},
-	errors : {
-		errcap : "Hata",
-		nourl : "Bir url yapılandırılmamış",
-		norecords: "İşlem yapılacak bir kayıt yok",
-	    model : "colNames uzunluğu <> 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:   [
-				"Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts",
-				"Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"
-			],
-			monthNames: [
-				"Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara",
-				"Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"
-			],
-			AmPm : ["am","pm","AM","PM"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'd/m/Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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);
+;(function($){
+/**
+ * jqGrid Turkish Translation
+ * Erhan Gündoğan (erhan@trposta.net)
+ * http://blog.zakkum.com
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "{0}-{1} listeleniyor. Toplam:{2}",
+	    emptyrecords: "Kayıt bulunamadı",
+		loadtext: "Yükleniyor...",
+		pgtext : "{0}/{1}. Sayfa",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+	    caption: "Arama...",
+	    Find: "Bul",
+	    Reset: "Temizle",	    
+	    odata: [{ oper:'eq', text:"eşit"},{ oper:'ne', text:"eşit değil"},{ oper:'lt', text:"daha az"},{ oper:'le', text:"daha az veya eşit"},{ oper:'gt', text:"daha fazla"},{ oper:'ge', text:"daha fazla veya eşit"},{ oper:'bw', text:"ile başlayan"},{ oper:'bn', text:"ile başlamayan"},{ oper:'in', text:"içinde"},{ oper:'ni', text:"içinde değil"},{ oper:'ew', text:"ile biten"},{ oper:'en', text:"ile bitmeyen"},{ oper:'cn', text:"içeren"},{ oper:'nc', text:"içermeyen"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+	    groupOps: [	{ op: "VE", text: "tüm" },	{ op: "VEYA",  text: "herhangi" }],
+		operandTitle : "Click to select search operation.",
+		resetTitle : "Reset Search Value"
+	},
+	edit : {
+	    addCaption: "Kayıt Ekle",
+	    editCaption: "Kayıt Düzenle",
+	    bSubmit: "Gönder",
+	    bCancel: "İptal",
+		bClose: "Kapat",
+		saveData: "Veriler değişti! Kayıt edilsin mi?",
+		bYes : "Evet",
+		bNo : "Hayıt",
+		bExit : "İptal",
+	    msg: {
+	        required:"Alan gerekli",
+	        number:"Lütfen bir numara giriniz",
+	        minValue:"girilen değer daha büyük ya da buna eşit olmalıdır",
+	        maxValue:"girilen değer daha küçük ya da buna eşit olmalıdır",
+	        email: "geçerli bir e-posta adresi değildir",
+	        integer: "Lütfen bir tamsayı giriniz",
+			url: "Geçerli bir URL değil. ('http://' or 'https://') ön eki gerekli.",
+			nodefined : " is not defined!",
+			novalue : " return value is required!",
+			customarray : "Custom function should return array!",
+			customfcheck : "Custom function should be present in case of custom checking!"
+		}
+	},
+	view : {
+	    caption: "Kayıt Görüntüle",
+	    bClose: "Kapat"
+	},
+	del : {
+	    caption: "Sil",
+	    msg: "Seçilen kayıtlar silinsin mi?",
+	    bSubmit: "Sil",
+	    bCancel: "İptal"
+	},
+	nav : {
+		edittext: " ",
+	    edittitle: "Seçili satırı düzenle",
+		addtext:" ",
+	    addtitle: "Yeni satır ekle",
+	    deltext: " ",
+	    deltitle: "Seçili satırı sil",
+	    searchtext: " ",
+	    searchtitle: "Kayıtları bul",
+	    refreshtext: "",
+	    refreshtitle: "Tabloyu yenile",
+	    alertcap: "Uyarı",
+	    alerttext: "Lütfen bir satır seçiniz",
+		viewtext: "",
+		viewtitle: "Seçilen satırı görüntüle"
+	},
+	col : {
+	    caption: "Sütunları göster/gizle",
+	    bSubmit: "Gönder",
+	    bCancel: "İptal"	
+	},
+	errors : {
+		errcap : "Hata",
+		nourl : "Bir url yapılandırılmamış",
+		norecords: "İşlem yapılacak bir kayıt yok",
+	    model : "colNames uzunluğu <> 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:   [
+				"Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts",
+				"Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"
+			],
+			monthNames: [
+				"Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara",
+				"Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"
+			],
+			AmPm : ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'd/m/Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+	    target: '',
+	    checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 9 - 2
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-tw.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-tw.js

@@ -14,7 +14,13 @@ $.extend($.jgrid,{
 		recordtext: "{0} - {1} 共 {2} 條",
 		emptyrecords: "沒有記錄",
 		loadtext: "載入中...",
-		pgtext : " {0} 共 {1} 頁"
+		pgtext : " {0} 共 {1} 頁",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
 	},
 	search : {
 		caption: "搜尋...",
@@ -119,7 +125,8 @@ $.extend($.jgrid,{
 				UniversalSortableDateTime: "Y-m-d H:i:sO",
 				YearMonth: "F, Y"
 			},
-			reformatAfterEdit : false
+			reformatAfterEdit : false,
+			userLocalTime : false
 		},
 		baseLinkUrl: '',
 		showAction: '',

+ 136 - 127
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-ua.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-ua.js

@@ -1,127 +1,136 @@
-;(function($){
-/**
- * jqGrid Ukrainian Translation v1.0 02.07.2009
- * Sergey Dyagovchenko
- * http://d.sumy.ua
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
-**/
-$.jgrid = $.jgrid || {};
-$.extend($.jgrid,{
-	defaults : {
-		recordtext: "Перегляд {0} - {1} з {2}",
-	  emptyrecords: "Немає записів для перегляду",
-		loadtext: "Завантаження...",
-		pgtext : "Стор. {0} з {1}"
-	},
-	search : {
-    caption: "Пошук...",
-    Find: "Знайти",
-    Reset: "Скидання",
-    odata: [{ oper:'eq', text:"рівно"},{ oper:'ne', text:"не рівно"},{ oper:'lt', text:"менше"},{ oper:'le', text:"менше або рівне"},{ oper:'gt', text:"більше"},{ oper:'ge', text:"більше або рівне"},{ oper:'bw', text:"починається з"},{ oper:'bn', text:"не починається з"},{ oper:'in', text:"знаходиться в"},{ oper:'ni', text:"не знаходиться в"},{ oper:'ew', text:"закінчується на"},{ oper:'en', text:"не закінчується на"},{ oper:'cn', text:"містить"},{ oper:'nc', text:"не містить"}],
-    groupOps: [	{ op: "AND", text: "все" },	{ op: "OR",  text: "будь-який" }	]
-	},
-	edit : {
-    addCaption: "Додати запис",
-    editCaption: "Змінити запис",
-    bSubmit: "Зберегти",
-    bCancel: "Відміна",
-		bClose: "Закрити",
-		saveData: "До данних були внесені зміни! Зберегти зміни?",
-		bYes : "Так",
-		bNo : "Ні",
-		bExit : "Відміна",
-	    msg: {
-        required:"Поле є обов'язковим",
-        number:"Будь ласка, введіть правильне число",
-        minValue:"значення повинне бути більше або дорівнює",
-        maxValue:"значення повинно бути менше або дорівнює",
-        email: "некоректна адреса електронної пошти",
-        integer: "Будь ласка, введення дійсне ціле значення",
-        date: "Будь ласка, введення дійсне значення дати",
-        url: "не дійсний URL. Необхідна приставка ('http://' or 'https://')",
-		nodefined : " is not defined!",
-		novalue : " return value is required!",
-		customarray : "Custom function should return array!",
-		customfcheck : "Custom function should be present in case of custom checking!"
-		}
-	},
-	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 : ["am","pm","AM","PM"],
-			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
-			srcformat: 'Y-m-d',
-			newformat: 'd.m.Y',
-			parseRe : /[Tt\\\/:_;.,\t\s-]/,
-			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",
-	            MonthDay: "F d",
-	            ShortTime: "G:i",
-	            LongTime: "G:i:s",
-	            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);
+;(function($){
+/**
+ * jqGrid Ukrainian Translation v1.0 02.07.2009
+ * Sergey Dyagovchenko
+ * http://d.sumy.ua
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+**/
+$.jgrid = $.jgrid || {};
+$.extend($.jgrid,{
+	defaults : {
+		recordtext: "Перегляд {0} - {1} з {2}",
+	  emptyrecords: "Немає записів для перегляду",
+		loadtext: "Завантаження...",
+		pgtext : "Стор. {0} з {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
+	},
+	search : {
+    caption: "Пошук...",
+    Find: "Знайти",
+    Reset: "Скидання",
+    odata: [{ oper:'eq', text:"рівно"},{ oper:'ne', text:"не рівно"},{ oper:'lt', text:"менше"},{ oper:'le', text:"менше або рівне"},{ oper:'gt', text:"більше"},{ oper:'ge', text:"більше або рівне"},{ oper:'bw', text:"починається з"},{ oper:'bn', text:"не починається з"},{ oper:'in', text:"знаходиться в"},{ oper:'ni', text:"не знаходиться в"},{ oper:'ew', text:"закінчується на"},{ oper:'en', text:"не закінчується на"},{ oper:'cn', text:"містить"},{ oper:'nc', text:"не містить"},{ oper:'nu', text:'is null'},{ oper:'nn', text:'is not null'}],
+    groupOps: [	{ op: "AND", text: "все" },	{ op: "OR",  text: "будь-який" }],
+	operandTitle : "Click to select search operation.",
+	resetTitle : "Reset Search Value"
+	},
+	edit : {
+    addCaption: "Додати запис",
+    editCaption: "Змінити запис",
+    bSubmit: "Зберегти",
+    bCancel: "Відміна",
+		bClose: "Закрити",
+		saveData: "До данних були внесені зміни! Зберегти зміни?",
+		bYes : "Так",
+		bNo : "Ні",
+		bExit : "Відміна",
+	    msg: {
+        required:"Поле є обов'язковим",
+        number:"Будь ласка, введіть правильне число",
+        minValue:"значення повинне бути більше або дорівнює",
+        maxValue:"значення повинно бути менше або дорівнює",
+        email: "некоректна адреса електронної пошти",
+        integer: "Будь ласка, введення дійсне ціле значення",
+        date: "Будь ласка, введення дійсне значення дати",
+        url: "не дійсний URL. Необхідна приставка ('http://' or 'https://')",
+		nodefined : " is not defined!",
+		novalue : " return value is required!",
+		customarray : "Custom function should return array!",
+		customfcheck : "Custom function should be present in case of custom checking!"
+		}
+	},
+	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 : ["am","pm","AM","PM"],
+			S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
+			srcformat: 'Y-m-d',
+			newformat: 'd.m.Y',
+			parseRe : /[#%\\\/:_;.,\t\s-]/,
+			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",
+	            MonthDay: "F d",
+	            ShortTime: "G:i",
+	            LongTime: "G:i:s",
+	            SortableDateTime: "Y-m-d\\TH:i:s",
+	            UniversalSortableDateTime: "Y-m-d H:i:sO",
+	            YearMonth: "F, Y"
+	        },
+	        reformatAfterEdit : false,
+			userLocalTime : false
+		},
+		baseLinkUrl: '',
+		showAction: '',
+	  target: '',
+	  checkbox : {disabled:true},
+		idName : 'id'
+	}
+});
+})(jQuery);

+ 9 - 2
main/inc/lib/javascript/jqgrid/js/i18n/grid.locale-vi.js → app/Resources/public/assets/jqgrid/js/i18n/grid.locale-vi.js

@@ -13,7 +13,13 @@ $.extend($.jgrid,{
 		recordtext: "View {0} - {1} of {2}",
 		emptyrecords: "Không có dữ liệu",
 		loadtext: "Đang nạp dữ liệu...",
-		pgtext : "Trang {0} trong tổng số {1}"
+		pgtext : "Trang {0} trong tổng số {1}",
+		pgfirst : "First Page",
+		pglast : "Last Page",
+		pgnext : "Next Page",
+		pgprev : "Previous Page",
+		pgrecs : "Records per Page",
+		showhide: "Toggle Expand Collapse Grid"
 	},
 	search : {
 		caption: "Tìm kiếm...",
@@ -158,7 +164,8 @@ $.extend($.jgrid,{
 				//    F - A full textual representation of a month
 				YearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy"
 			},
-			reformatAfterEdit : false
+			reformatAfterEdit : false,
+			userLocalTime : false
 		},
 		baseLinkUrl: '',
 		showAction: '',

+ 71 - 0
app/Resources/public/assets/jqgrid/js/jqDnR.js

@@ -0,0 +1,71 @@
+/*
+ * jqDnR - Minimalistic Drag'n'Resize for jQuery.
+ *
+ * Copyright (c) 2007 Brice Burgess <bhb@iceburg.net>, http://www.iceburg.net
+ * Licensed under the MIT License:
+ * http://www.opensource.org/licenses/mit-license.php
+ * 
+ * $Version: 2007.08.19 +r2
+ */
+
+(function($){
+$.fn.jqDrag=function(h){return i(this,h,'d');};
+$.fn.jqResize=function(h,ar){return i(this,h,'r',ar);};
+$.jqDnR={
+	dnr:{},
+	e:0,
+	drag:function(v){
+		if(M.k == 'd'){E.css({left:M.X+v.pageX-M.pX,top:M.Y+v.pageY-M.pY});}
+		else {
+			E.css({width:Math.max(v.pageX-M.pX+M.W,0),height:Math.max(v.pageY-M.pY+M.H,0)});
+			if(M1){E1.css({width:Math.max(v.pageX-M1.pX+M1.W,0),height:Math.max(v.pageY-M1.pY+M1.H,0)});}
+		}
+		return false;
+	},
+	stop:function(){
+		//E.css('opacity',M.o);
+		$(document).unbind('mousemove',J.drag).unbind('mouseup',J.stop);
+	}
+};
+var J=$.jqDnR,M=J.dnr,E=J.e,E1,M1,
+i=function(e,h,k,aR){
+	return e.each(function(){
+		h=(h)?$(h,e):e;
+		h.bind('mousedown',{e:e,k:k},function(v){
+			var d=v.data,p={};E=d.e;E1 = aR ? $(aR) : false;
+			// attempt utilization of dimensions plugin to fix IE issues
+			if(E.css('position') != 'relative'){try{E.position(p);}catch(e){}}
+			M={
+				X:p.left||f('left')||0,
+				Y:p.top||f('top')||0,
+				W:f('width')||E[0].scrollWidth||0,
+				H:f('height')||E[0].scrollHeight||0,
+				pX:v.pageX,
+				pY:v.pageY,
+				k:d.k
+				//o:E.css('opacity')
+			};
+			// also resize
+			if(E1 && d.k != 'd'){
+				M1={
+					X:p.left||f1('left')||0,
+					Y:p.top||f1('top')||0,
+					W:E1[0].offsetWidth||f1('width')||0,
+					H:E1[0].offsetHeight||f1('height')||0,
+					pX:v.pageX,
+					pY:v.pageY,
+					k:d.k
+				};
+			} else {M1 = false;}			
+			//E.css({opacity:0.8});
+			if($("input.hasDatepicker",E[0])[0]) {
+			try {$("input.hasDatepicker",E[0]).datepicker('hide');}catch (dpe){}
+			}
+			$(document).mousemove($.jqDnR.drag).mouseup($.jqDnR.stop);
+			return false;
+		});
+	});
+},
+f=function(k){return parseInt(E.css(k),10)||false;},
+f1=function(k){return parseInt(E1.css(k),10)||false;};
+})(jQuery);

+ 68 - 0
app/Resources/public/assets/jqgrid/js/jqModal.js

@@ -0,0 +1,68 @@
+/*
+ * jqModal - Minimalist Modaling with jQuery
+ *   (http://dev.iceburg.net/jquery/jqmodal/)
+ *
+ * Copyright (c) 2007,2008 Brice Burgess <bhb@iceburg.net>
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ * 
+ * $Version: 07/06/2008 +r13
+ */
+(function($) {
+$.fn.jqm=function(o){
+var p={
+overlay: 50,
+closeoverlay : true,
+overlayClass: 'jqmOverlay',
+closeClass: 'jqmClose',
+trigger: '.jqModal',
+ajax: F,
+ajaxText: '',
+target: F,
+modal: F,
+toTop: F,
+onShow: F,
+onHide: F,
+onLoad: F
+};
+return this.each(function(){if(this._jqm)return H[this._jqm].c=$.extend({},H[this._jqm].c,o);s++;this._jqm=s;
+H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass('jqmID'+s),s:s};
+if(p.trigger)$(this).jqmAddTrigger(p.trigger);
+});};
+
+$.fn.jqmAddClose=function(e){return hs(this,e,'jqmHide');};
+$.fn.jqmAddTrigger=function(e){return hs(this,e,'jqmShow');};
+$.fn.jqmShow=function(t){return this.each(function(){$.jqm.open(this._jqm,t);});};
+$.fn.jqmHide=function(t){return this.each(function(){$.jqm.close(this._jqm,t)});};
+
+$.jqm = {
+hash:{},
+open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(parseInt(h.w.css('z-index')));z=(z>0)?z:3000;var o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});if(h.a)return F;h.t=t;h.a=true;h.w.css('z-index',z);
+ if(c.modal) {if(!A[0])setTimeout(function(){L('bind');},1);A.push(s);}
+ else if(c.overlay > 0) {if(c.closeoverlay) h.w.jqmAddClose(o);}
+ else o=F;
+
+ h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F;
+
+ if(c.ajax) {var r=c.target||h.w,u=c.ajax;r=(typeof r == 'string')?$(r,h.w):$(r);u=(u.substr(0,1) == '@')?$(t).attr(u.substring(1)):u;
+  r.html(c.ajaxText).load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h);});}
+ else if(cc)h.w.jqmAddClose($(cc,h.w));
+
+ if(c.toTop&&h.o)h.w.before('<span id="jqmP'+h.w[0]._jqm+'"></span>').insertAfter(h.o);	
+ (c.onShow)?c.onShow(h):h.w.show();e(h);return F;
+},
+close:function(s){var h=H[s];if(!h.a)return F;h.a=F;
+ if(A[0]){A.pop();if(!A[0])L('unbind');}
+ if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove();
+ if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove();} return F;
+},
+params:{}};
+var s=0,H=$.jqm.hash,A=[],F=false,
+e=function(h){f(h);},
+f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}},
+L=function(t){$(document)[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m);},
+m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r){$('.jqmID'+h.s).each(function(){var $self=$(this),offset=$self.offset();if(offset.top<=e.pageY && e.pageY<=offset.top+$self.height() && offset.left<=e.pageX && e.pageX<=offset.left+$self.width()){r=false;return false;}});f(h);}return !r;},
+hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function() {
+ if(!this[c]){this[c]=[];$(this).click(function(){for(var i in {jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return F;});}this[c].push(s);});});};
+})(jQuery);

+ 467 - 0
app/Resources/public/assets/jqgrid/js/jquery.fmatter.js

@@ -0,0 +1,467 @@
+/*
+**
+ * formatter for values but most of the values if for jqGrid
+ * Some of this was inspired and based on how YUI does the table datagrid but in jQuery fashion
+ * we are trying to keep it as light as possible
+ * Joshua Burnett josh@9ci.com	
+ * http://www.greenbill.com
+ *
+ * Changes from Tony Tomov tony@trirand.com
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl-2.0.html
+ * 
+**/
+/*jshint eqeqeq:false */
+/*global jQuery */
+
+(function($) {
+"use strict";	
+	$.fmatter = {};
+	//opts can be id:row id for the row, rowdata:the data for the row, colmodel:the column model for this column
+	//example {id:1234,}
+	$.extend($.fmatter,{
+		isBoolean : function(o) {
+			return typeof o === 'boolean';
+		},
+		isObject : function(o) {
+			return (o && (typeof o === 'object' || $.isFunction(o))) || false;
+		},
+		isString : function(o) {
+			return typeof o === 'string';
+		},
+		isNumber : function(o) {
+			return typeof o === 'number' && isFinite(o);
+		},
+		isValue : function (o) {
+			return (this.isObject(o) || this.isString(o) || this.isNumber(o) || this.isBoolean(o));
+		},
+		isEmpty : function(o) {
+			if(!this.isString(o) && this.isValue(o)) {
+				return false;
+			}
+			if (!this.isValue(o)){
+				return true;
+			}
+			o = $.trim(o).replace(/\&nbsp\;/ig,'').replace(/\&#160\;/ig,'');
+			return o==="";	
+		}
+	});
+	$.fn.fmatter = function(formatType, cellval, opts, rwd, act) {
+		// build main options before element iteration
+		var v=cellval;
+		opts = $.extend({}, $.jgrid.formatter, opts);
+
+		try {
+			v = $.fn.fmatter[formatType].call(this, cellval, opts, rwd, act);
+		} catch(fe){}
+		return v;
+	};
+	$.fmatter.util = {
+		// Taken from YAHOO utils
+		NumberFormat : function(nData,opts) {
+			if(!$.fmatter.isNumber(nData)) {
+				nData *= 1;
+			}
+			if($.fmatter.isNumber(nData)) {
+				var bNegative = (nData < 0);
+				var sOutput = String(nData);
+				var sDecimalSeparator = opts.decimalSeparator || ".";
+				var nDotIndex;
+				if($.fmatter.isNumber(opts.decimalPlaces)) {
+					// Round to the correct decimal place
+					var nDecimalPlaces = opts.decimalPlaces;
+					var nDecimal = Math.pow(10, nDecimalPlaces);
+					sOutput = String(Math.round(nData*nDecimal)/nDecimal);
+					nDotIndex = sOutput.lastIndexOf(".");
+					if(nDecimalPlaces > 0) {
+					// Add the decimal separator
+						if(nDotIndex < 0) {
+							sOutput += sDecimalSeparator;
+							nDotIndex = sOutput.length-1;
+						}
+						// Replace the "."
+						else if(sDecimalSeparator !== "."){
+							sOutput = sOutput.replace(".",sDecimalSeparator);
+						}
+					// Add missing zeros
+						while((sOutput.length - 1 - nDotIndex) < nDecimalPlaces) {
+							sOutput += "0";
+						}
+					}
+				}
+				if(opts.thousandsSeparator) {
+					var sThousandsSeparator = opts.thousandsSeparator;
+					nDotIndex = sOutput.lastIndexOf(sDecimalSeparator);
+					nDotIndex = (nDotIndex > -1) ? nDotIndex : sOutput.length;
+					var sNewOutput = sOutput.substring(nDotIndex);
+					var nCount = -1, i;
+					for (i=nDotIndex; i>0; i--) {
+						nCount++;
+						if ((nCount%3 === 0) && (i !== nDotIndex) && (!bNegative || (i > 1))) {
+							sNewOutput = sThousandsSeparator + sNewOutput;
+						}
+						sNewOutput = sOutput.charAt(i-1) + sNewOutput;
+					}
+					sOutput = sNewOutput;
+				}
+				// Prepend prefix
+				sOutput = (opts.prefix) ? opts.prefix + sOutput : sOutput;
+				// Append suffix
+				sOutput = (opts.suffix) ? sOutput + opts.suffix : sOutput;
+				return sOutput;
+				
+			}
+			return nData;
+		}
+	};
+	$.fn.fmatter.defaultFormat = function(cellval, opts) {
+		return ($.fmatter.isValue(cellval) && cellval!=="" ) ?  cellval : opts.defaultValue || "&#160;";
+	};
+	$.fn.fmatter.email = function(cellval, opts) {
+		if(!$.fmatter.isEmpty(cellval)) {
+			return "<a href=\"mailto:" + cellval + "\">" + cellval + "</a>";
+		}
+		return $.fn.fmatter.defaultFormat(cellval,opts );
+	};
+	$.fn.fmatter.checkbox =function(cval, opts) {
+		var op = $.extend({},opts.checkbox), ds;
+		if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) {
+			op = $.extend({},op,opts.colModel.formatoptions);
+		}
+		if(op.disabled===true) {ds = "disabled=\"disabled\"";} else {ds="";}
+		if($.fmatter.isEmpty(cval) || cval === undefined ) {cval = $.fn.fmatter.defaultFormat(cval,op);}
+		cval=String(cval);
+		cval=(cval+"").toLowerCase();
+		var bchk = cval.search(/(false|f|0|no|n|off|undefined)/i)<0 ? " checked='checked' " : "";
+		return "<input type=\"checkbox\" " + bchk  + " value=\""+ cval+"\" offval=\"no\" "+ds+ "/>";
+	};
+	$.fn.fmatter.link = function(cellval, opts) {
+		var op = {target:opts.target};
+		var target = "";
+		if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) {
+			op = $.extend({},op,opts.colModel.formatoptions);
+		}
+		if(op.target) {target = 'target=' + op.target;}
+		if(!$.fmatter.isEmpty(cellval)) {
+			return "<a "+target+" href=\"" + cellval + "\">" + cellval + "</a>";
+		}
+		return $.fn.fmatter.defaultFormat(cellval,opts);
+	};
+	$.fn.fmatter.showlink = function(cellval, opts) {
+		var op = {baseLinkUrl: opts.baseLinkUrl,showAction:opts.showAction, addParam: opts.addParam || "", target: opts.target, idName: opts.idName},
+		target = "", idUrl;
+		if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) {
+			op = $.extend({},op,opts.colModel.formatoptions);
+		}
+		if(op.target) {target = 'target=' + op.target;}
+		idUrl = op.baseLinkUrl+op.showAction + '?'+ op.idName+'='+opts.rowId+op.addParam;
+		if($.fmatter.isString(cellval) || $.fmatter.isNumber(cellval)) {	//add this one even if its blank string
+			return "<a "+target+" href=\"" + idUrl + "\">" + cellval + "</a>";
+		}
+		return $.fn.fmatter.defaultFormat(cellval,opts);
+	};
+	$.fn.fmatter.integer = function(cellval, opts) {
+		var op = $.extend({},opts.integer);
+		if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) {
+			op = $.extend({},op,opts.colModel.formatoptions);
+		}
+		if($.fmatter.isEmpty(cellval)) {
+			return op.defaultValue;
+		}
+		return $.fmatter.util.NumberFormat(cellval,op);
+	};
+	$.fn.fmatter.number = function (cellval, opts) {
+		var op = $.extend({},opts.number);
+		if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) {
+			op = $.extend({},op,opts.colModel.formatoptions);
+		}
+		if($.fmatter.isEmpty(cellval)) {
+			return op.defaultValue;
+		}
+		return $.fmatter.util.NumberFormat(cellval,op);
+	};
+	$.fn.fmatter.currency = function (cellval, opts) {
+		var op = $.extend({},opts.currency);
+		if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) {
+			op = $.extend({},op,opts.colModel.formatoptions);
+		}
+		if($.fmatter.isEmpty(cellval)) {
+			return op.defaultValue;
+		}
+		return $.fmatter.util.NumberFormat(cellval,op);
+	};
+	$.fn.fmatter.date = function (cellval, opts, rwd, act) {
+		var op = $.extend({},opts.date);
+		if(opts.colModel !== undefined && opts.colModel.formatoptions !== undefined) {
+			op = $.extend({},op,opts.colModel.formatoptions);
+		}
+		if(!op.reformatAfterEdit && act === 'edit'){
+			return $.fn.fmatter.defaultFormat(cellval, opts);
+		}
+		if(!$.fmatter.isEmpty(cellval)) {
+			return $.jgrid.parseDate(op.srcformat,cellval,op.newformat,op);
+		}
+		return $.fn.fmatter.defaultFormat(cellval, opts);
+	};
+	$.fn.fmatter.select = function (cellval,opts) {
+		// jqGrid specific
+		cellval = String(cellval);
+		var oSelect = false, ret=[], sep, delim;
+		if(opts.colModel.formatoptions !== undefined){
+			oSelect= opts.colModel.formatoptions.value;
+			sep = opts.colModel.formatoptions.separator === undefined ? ":" : opts.colModel.formatoptions.separator;
+			delim = opts.colModel.formatoptions.delimiter === undefined ? ";" : opts.colModel.formatoptions.delimiter;
+		} else if(opts.colModel.editoptions !== undefined){
+			oSelect= opts.colModel.editoptions.value;
+			sep = opts.colModel.editoptions.separator === undefined ? ":" : opts.colModel.editoptions.separator;
+			delim = opts.colModel.editoptions.delimiter === undefined ? ";" : opts.colModel.editoptions.delimiter;
+		}
+		if (oSelect) {
+			var	msl =  (opts.colModel.editoptions != null && opts.colModel.editoptions.multiple === true) === true ? true : false,
+			scell = [], sv;
+			if(msl) {scell = cellval.split(",");scell = $.map(scell,function(n){return $.trim(n);});}
+			if ($.fmatter.isString(oSelect)) {
+				// mybe here we can use some caching with care ????
+				var so = oSelect.split(delim), j=0, i;
+				for(i=0; i<so.length;i++){
+					sv = so[i].split(sep);
+					if(sv.length > 2 ) {
+						sv[1] = $.map(sv,function(n,i){if(i>0) {return n;}}).join(sep);
+					}
+					if(msl) {
+						if($.inArray(sv[0],scell)>-1) {
+							ret[j] = sv[1];
+							j++;
+						}
+					} else if($.trim(sv[0]) === $.trim(cellval)) {
+						ret[0] = sv[1];
+						break;
+					}
+				}
+			} else if($.fmatter.isObject(oSelect)) {
+				// this is quicker
+				if(msl) {
+					ret = $.map(scell, function(n){
+						return oSelect[n];
+					});
+				} else {
+					ret[0] = oSelect[cellval] || "";
+				}
+			}
+		}
+		cellval = ret.join(", ");
+		return  cellval === "" ? $.fn.fmatter.defaultFormat(cellval,opts) : cellval;
+	};
+	$.fn.fmatter.rowactions = function(act) {
+		var $tr = $(this).closest("tr.jqgrow"),
+			rid = $tr.attr("id"),
+			$id = $(this).closest("table.ui-jqgrid-btable").attr('id').replace(/_frozen([^_]*)$/,'$1'),
+			$grid = $("#"+$id),
+			$t = $grid[0],
+			p = $t.p,
+			cm = p.colModel[$.jgrid.getCellIndex(this)],
+			$actionsDiv = cm.frozen ? $("tr#"+rid+" td:eq("+$.jgrid.getCellIndex(this)+") > div",$grid) :$(this).parent(),
+			op = {
+				extraparam: {}
+			},
+			saverow = function(rowid, res) {
+				if($.isFunction(op.afterSave)) { op.afterSave.call($t, rowid, res); }
+				$actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").show();
+				$actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").hide();
+			},
+			restorerow = function(rowid) {
+				if($.isFunction(op.afterRestore)) { op.afterRestore.call($t, rowid); }
+				$actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").show();
+				$actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").hide();
+			};
+
+		if (cm.formatoptions !== undefined) {
+			op = $.extend(op,cm.formatoptions);
+		}
+		if (p.editOptions !== undefined) {
+			op.editOptions = p.editOptions;
+		}
+		if (p.delOptions !== undefined) {
+			op.delOptions = p.delOptions;
+		}
+		if ($tr.hasClass("jqgrid-new-row")){
+			op.extraparam[p.prmNames.oper] = p.prmNames.addoper;
+		}
+		var actop = {
+			keys: op.keys,
+			oneditfunc: op.onEdit,
+			successfunc: op.onSuccess,
+			url: op.url,
+			extraparam: op.extraparam,
+			aftersavefunc: saverow,
+			errorfunc: op.onError,
+			afterrestorefunc: restorerow,
+			restoreAfterError: op.restoreAfterError,
+			mtype: op.mtype
+		};
+		switch(act)
+		{
+			case 'edit':
+				$grid.jqGrid('editRow', rid, actop);
+				$actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").hide();
+				$actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").show();
+				$grid.triggerHandler("jqGridAfterGridComplete");
+				break;
+			case 'save':
+				if ($grid.jqGrid('saveRow', rid, actop)) {
+					$actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").show();
+					$actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").hide();
+					$grid.triggerHandler("jqGridAfterGridComplete");
+				}
+				break;
+			case 'cancel' :
+				$grid.jqGrid('restoreRow', rid, restorerow);
+				$actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").show();
+				$actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").hide();
+				$grid.triggerHandler("jqGridAfterGridComplete");
+				break;
+			case 'del':
+				$grid.jqGrid('delGridRow', rid, op.delOptions);
+				break;
+			case 'formedit':
+				$grid.jqGrid('setSelection', rid);
+				$grid.jqGrid('editGridRow', rid, op.editOptions);
+				break;
+		}
+	};
+	$.fn.fmatter.actions = function(cellval,opts) {
+		var op={keys:false, editbutton:true, delbutton:true, editformbutton: false},
+			rowid=opts.rowId, str="",ocl;
+		if(opts.colModel.formatoptions !== undefined) {
+			op = $.extend(op,opts.colModel.formatoptions);
+		}
+		if(rowid === undefined || $.fmatter.isEmpty(rowid)) {return "";}
+		if(op.editformbutton){
+			ocl = "id='jEditButton_"+rowid+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'formedit'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ";
+			str += "<div title='"+$.jgrid.nav.edittitle+"' style='float:left;cursor:pointer;' class='ui-pg-div ui-inline-edit' "+ocl+"><span class='ui-icon ui-icon-pencil'></span></div>";
+		} else if(op.editbutton){
+			ocl = "id='jEditButton_"+rowid+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'edit'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover') ";
+			str += "<div title='"+$.jgrid.nav.edittitle+"' style='float:left;cursor:pointer;' class='ui-pg-div ui-inline-edit' "+ocl+"><span class='ui-icon ui-icon-pencil'></span></div>";
+		}
+		if(op.delbutton) {
+			ocl = "id='jDeleteButton_"+rowid+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'del'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ";
+			str += "<div title='"+$.jgrid.nav.deltitle+"' style='float:left;margin-left:5px;' class='ui-pg-div ui-inline-del' "+ocl+"><span class='ui-icon ui-icon-trash'></span></div>";
+		}
+		ocl = "id='jSaveButton_"+rowid+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'save'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ";
+		str += "<div title='"+$.jgrid.edit.bSubmit+"' style='float:left;display:none' class='ui-pg-div ui-inline-save' "+ocl+"><span class='ui-icon ui-icon-disk'></span></div>";
+		ocl = "id='jCancelButton_"+rowid+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'cancel'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ";
+		str += "<div title='"+$.jgrid.edit.bCancel+"' style='float:left;display:none;margin-left:5px;' class='ui-pg-div ui-inline-cancel' "+ocl+"><span class='ui-icon ui-icon-cancel'></span></div>";
+		return "<div style='margin-left:8px;'>" + str + "</div>";
+	};
+	$.unformat = function (cellval,options,pos,cnt) {
+		// specific for jqGrid only
+		var ret, formatType = options.colModel.formatter,
+		op =options.colModel.formatoptions || {}, sep,
+		re = /([\.\*\_\'\(\)\{\}\+\?\\])/g,
+		unformatFunc = options.colModel.unformat||($.fn.fmatter[formatType] && $.fn.fmatter[formatType].unformat);
+		if(unformatFunc !== undefined && $.isFunction(unformatFunc) ) {
+			ret = unformatFunc.call(this, $(cellval).text(), options, cellval);
+		} else if(formatType !== undefined && $.fmatter.isString(formatType) ) {
+			var opts = $.jgrid.formatter || {}, stripTag;
+			switch(formatType) {
+				case 'integer' :
+					op = $.extend({},opts.integer,op);
+					sep = op.thousandsSeparator.replace(re,"\\$1");
+					stripTag = new RegExp(sep, "g");
+					ret = $(cellval).text().replace(stripTag,'');
+					break;
+				case 'number' :
+					op = $.extend({},opts.number,op);
+					sep = op.thousandsSeparator.replace(re,"\\$1");
+					stripTag = new RegExp(sep, "g");
+					ret = $(cellval).text().replace(stripTag,"").replace(op.decimalSeparator,'.');
+					break;
+				case 'currency':
+					op = $.extend({},opts.currency,op);
+					sep = op.thousandsSeparator.replace(re,"\\$1");
+					stripTag = new RegExp(sep, "g");
+					ret = $(cellval).text();
+					if (op.prefix && op.prefix.length) {
+						ret = ret.substr(op.prefix.length);
+					}
+					if (op.suffix && op.suffix.length) {
+						ret = ret.substr(0, ret.length - op.suffix.length);
+					}
+					ret = ret.replace(stripTag,'').replace(op.decimalSeparator,'.');
+					break;
+				case 'checkbox':
+					var cbv = (options.colModel.editoptions) ? options.colModel.editoptions.value.split(":") : ["Yes","No"];
+					ret = $('input',cellval).is(":checked") ? cbv[0] : cbv[1];
+					break;
+				case 'select' :
+					ret = $.unformat.select(cellval,options,pos,cnt);
+					break;
+				case 'actions':
+					return "";
+				default:
+					ret= $(cellval).text();
+			}
+		}
+		return ret !== undefined ? ret : cnt===true ? $(cellval).text() : $.jgrid.htmlDecode($(cellval).html());
+	};
+	$.unformat.select = function (cellval,options,pos,cnt) {
+		// Spacial case when we have local data and perform a sort
+		// cnt is set to true only in sortDataArray
+		var ret = [];
+		var cell = $(cellval).text();
+		if(cnt===true) {return cell;}
+		var op = $.extend({}, options.colModel.formatoptions !== undefined ? options.colModel.formatoptions: options.colModel.editoptions),
+		sep = op.separator === undefined ? ":" : op.separator,
+		delim = op.delimiter === undefined ? ";" : op.delimiter;
+		
+		if(op.value){
+			var oSelect = op.value,
+			msl =  op.multiple === true ? true : false,
+			scell = [], sv;
+			if(msl) {scell = cell.split(",");scell = $.map(scell,function(n){return $.trim(n);});}
+			if ($.fmatter.isString(oSelect)) {
+				var so = oSelect.split(delim), j=0, i;
+				for(i=0; i<so.length;i++){
+					sv = so[i].split(sep);
+					if(sv.length > 2 ) {
+						sv[1] = $.map(sv,function(n,i){if(i>0) {return n;}}).join(sep);
+					}					
+					if(msl) {
+						if($.inArray(sv[1],scell)>-1) {
+							ret[j] = sv[0];
+							j++;
+						}
+					} else if($.trim(sv[1]) === $.trim(cell)) {
+						ret[0] = sv[0];
+						break;
+					}
+				}
+			} else if($.fmatter.isObject(oSelect) || $.isArray(oSelect) ){
+				if(!msl) {scell[0] =  cell;}
+				ret = $.map(scell, function(n){
+					var rv;
+					$.each(oSelect, function(i,val){
+						if (val === n) {
+							rv = i;
+							return false;
+						}
+					});
+					if( rv !== undefined ) {return rv;}
+				});
+			}
+			return ret.join(", ");
+		}
+		return cell || "";
+	};
+	$.unformat.date = function (cellval, opts) {
+		var op = $.jgrid.formatter.date || {};
+		if(opts.formatoptions !== undefined) {
+			op = $.extend({},op,opts.formatoptions);
+		}		
+		if(!$.fmatter.isEmpty(cellval)) {
+			return $.jgrid.parseDate(op.newformat,cellval,op.srcformat,op);
+		}
+		return $.fn.fmatter.defaultFormat(cellval, opts);
+	};
+})(jQuery);

Diff do ficheiro suprimidas por serem muito extensas
+ 2294 - 2561
app/Resources/public/assets/jqgrid/js/jquery.jqGrid.js


Diff do ficheiro suprimidas por serem muito extensas
+ 4 - 0
app/Resources/public/assets/jqgrid/js/minified/jquery.jqGrid.map.js


+ 561 - 0
app/Resources/public/assets/jqgrid/js/minified/jquery.jqGrid.min.js

@@ -0,0 +1,561 @@
+/*
+ jqGrid  4.7.0 - jQuery Grid
+ Copyright (c) 2008, Tony Tomov, tony@trirand.com
+ Dual licensed under the MIT and GPL licenses
+ http://www.opensource.org/licenses/mit-license.php
+ http://www.gnu.org/licenses/gpl-2.0.html
+ Date: 2014-12-08
+*/
+(function(a){a.jgrid=a.jgrid||{};a.extend(a.jgrid,{version:"4.7.0",htmlDecode:function(a){return a&&("&nbsp;"===a||"&#160;"===a||1===a.length&&160===a.charCodeAt(0))?"":a?String(a).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,'"').replace(/&amp;/g,"&"):a},htmlEncode:function(a){return a?String(a).replace(/&/g,"&amp;").replace(/\"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;"):a},format:function(b){var e=a.makeArray(arguments).slice(1);null==b&&(b="");return b.replace(/\{(\d+)\}/g,
+function(a,b){return e[b]})},msie:"Microsoft Internet Explorer"===navigator.appName,msiever:function(){var a=-1;null!=/MSIE ([0-9]{1,}[.0-9]{0,})/.exec(navigator.userAgent)&&(a=parseFloat(RegExp.$1));return a},getCellIndex:function(b){b=a(b);if(b.is("tr"))return-1;b=(b.is("td")||b.is("th")?b:b.closest("td,th"))[0];return a.jgrid.msie?a.inArray(b,b.parentNode.cells):b.cellIndex},stripHtml:function(a){a=String(a);var e=/<("[^"]*"|'[^']*'|[^'">])*>/gi;return a?(a=a.replace(e,""))&&"&nbsp;"!==a&&"&#160;"!==
+a?a.replace(/\"/g,"'"):"":a},stripPref:function(b,e){var c=a.type(b);if("string"===c||"number"===c)b=String(b),e=""!==b?String(e).replace(String(b),""):e;return e},parse:function(b){"while(1);"===b.substr(0,9)&&(b=b.substr(9));"/*"===b.substr(0,2)&&(b=b.substr(2,b.length-4));b||(b="{}");return!0===a.jgrid.useJSON&&"object"===typeof JSON&&"function"===typeof JSON.parse?JSON.parse(b):eval("("+b+")")},parseDate:function(b,e,c,f){var g=/^\/Date\((([-+])?[0-9]+)(([-+])([0-9]{2})([0-9]{2}))?\)\/$/,d="string"===
+typeof e?e.match(g):null,g=function(a,d){a=String(a);for(d=parseInt(d,10)||2;a.length<d;)a="0"+a;return a},h={m:1,d:1,y:1970,h:0,i:0,s:0,u:0},k=0,l,p,k=function(a,d){0===a?12===d&&(d=0):12!==d&&(d+=12);return d},m=0;void 0===f&&(f=a.jgrid.formatter.date);void 0===f.parseRe&&(f.parseRe=/[#%\\\/:_;.,\t\s-]/);f.masks.hasOwnProperty(b)&&(b=f.masks[b]);if(e&&null!=e)if(isNaN(e-0)||"u"!==String(b).toLowerCase())if(e.constructor===Date)k=e;else if(null!==d)k=new Date(parseInt(d[1],10)),d[3]&&(m=60*Number(d[5])+
+Number(d[6]),m*="-"===d[4]?1:-1,m-=k.getTimezoneOffset(),k.setTime(Number(Number(k)+6E4*m)));else{"ISO8601Long"===f.srcformat&&"Z"===e.charAt(e.length-1)&&(m-=(new Date).getTimezoneOffset());e=String(e).replace(/\T/g,"#").replace(/\t/,"%").split(f.parseRe);b=b.replace(/\T/g,"#").replace(/\t/,"%").split(f.parseRe);l=0;for(p=b.length;l<p;l++)"M"===b[l]&&(d=a.inArray(e[l],f.monthNames),-1!==d&&12>d&&(e[l]=d+1,h.m=e[l])),"F"===b[l]&&(d=a.inArray(e[l],f.monthNames,12),-1!==d&&11<d&&(e[l]=d+1-12,h.m=e[l])),
+"a"===b[l]&&(d=a.inArray(e[l],f.AmPm),-1!==d&&2>d&&e[l]===f.AmPm[d]&&(e[l]=d,h.h=k(e[l],h.h))),"A"===b[l]&&(d=a.inArray(e[l],f.AmPm),-1!==d&&1<d&&e[l]===f.AmPm[d]&&(e[l]=d-2,h.h=k(e[l],h.h))),"g"===b[l]&&(h.h=parseInt(e[l],10)),void 0!==e[l]&&(h[b[l].toLowerCase()]=parseInt(e[l],10));h.f&&(h.m=h.f);if(0===h.m&&0===h.y&&0===h.d)return"&#160;";h.m=parseInt(h.m,10)-1;k=h.y;70<=k&&99>=k?h.y=1900+h.y:0<=k&&69>=k&&(h.y=2E3+h.y);k=new Date(h.y,h.m,h.d,h.h,h.i,h.s,h.u);0<m&&k.setTime(Number(Number(k)+6E4*
+m))}else k=new Date(1E3*parseFloat(e));else k=new Date(h.y,h.m,h.d,h.h,h.i,h.s,h.u);f.userLocalTime&&0===m&&(m-=(new Date).getTimezoneOffset(),0<m&&k.setTime(Number(Number(k)+6E4*m)));if(void 0===c)return k;f.masks.hasOwnProperty(c)?c=f.masks[c]:c||(c="Y-m-d");b=k.getHours();e=k.getMinutes();h=k.getDate();m=k.getMonth()+1;d=k.getTimezoneOffset();l=k.getSeconds();p=k.getMilliseconds();var r=k.getDay(),q=k.getFullYear(),n=(r+6)%7+1,t=(new Date(q,m-1,h)-new Date(q,0,1))/864E5,u={d:g(h),D:f.dayNames[r],
+j:h,l:f.dayNames[r+7],N:n,S:f.S(h),w:r,z:t,W:5>n?Math.floor((t+n-1)/7)+1:Math.floor((t+n-1)/7)||(4>((new Date(q-1,0,1)).getDay()+6)%7?53:52),F:f.monthNames[m-1+12],m:g(m),M:f.monthNames[m-1],n:m,t:"?",L:"?",o:"?",Y:q,y:String(q).substring(2),a:12>b?f.AmPm[0]:f.AmPm[1],A:12>b?f.AmPm[2]:f.AmPm[3],B:"?",g:b%12||12,G:b,h:g(b%12||12),H:g(b),i:g(e),s:g(l),u:p,e:"?",I:"?",O:(0<d?"-":"+")+g(100*Math.floor(Math.abs(d)/60)+Math.abs(d)%60,4),P:"?",T:(String(k).match(/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g)||
+[""]).pop().replace(/[^-+\dA-Z]/g,""),Z:"?",c:"?",r:"?",U:Math.floor(k/1E3)};return c.replace(/\\.|[dDjlNSwzWFmMntLoYyaABgGhHisueIOPTZcrU]/g,function(a){return u.hasOwnProperty(a)?u[a]:a.substring(1)})},jqID:function(a){return String(a).replace(/[!"#$%&'()*+,.\/:; <=>?@\[\\\]\^`{|}~]/g,"\\$&")},guid:1,uidPref:"jqg",randId:function(b){return(b||a.jgrid.uidPref)+a.jgrid.guid++},getAccessor:function(a,e){var c,f,g=[],d;if("function"===typeof e)return e(a);c=a[e];if(void 0===c)try{if("string"===typeof e&&
+(g=e.split(".")),d=g.length)for(c=a;c&&d--;)f=g.shift(),c=c[f]}catch(h){}return c},getXmlData:function(b,e,c){var f="string"===typeof e?e.match(/^(.*)\[(\w+)\]$/):null;if("function"===typeof e)return e(b);if(f&&f[2])return f[1]?a(f[1],b).attr(f[2]):a(b).attr(f[2]);b=a(e,b);return c?b:0<b.length?a(b).text():void 0},cellWidth:function(){var b=a("<div class='ui-jqgrid' style='left:10000px'><table class='ui-jqgrid-btable' style='width:5px;'><tr class='jqgrow'><td style='width:5px;display:block;'></td></tr></table></div>"),
+e=b.appendTo("body").find("td").width();b.remove();return.1<Math.abs(e-5)},cell_width:!0,ajaxOptions:{},from:function(b){return new function(b,c){"string"===typeof b&&(b=a.data(b));var f=this,g=b,d=!0,h=!1,k=c,l=/[\$,%]/g,p=null,m=null,r=0,q=!1,n="",t=[],u=!0;if("object"===typeof b&&b.push)0<b.length&&(u="object"!==typeof b[0]?!1:!0);else throw"data provides is not an array";this._hasData=function(){return null===g?!1:0===g.length?!1:!0};this._getStr=function(a){var b=[];h&&b.push("jQuery.trim(");
+b.push("String("+a+")");h&&b.push(")");d||b.push(".toLowerCase()");return b.join("")};this._strComp=function(a){return"string"===typeof a?".toString()":""};this._group=function(a,d){return{field:a.toString(),unique:d,items:[]}};this._toStr=function(b){h&&(b=a.trim(b));b=b.toString().replace(/\\/g,"\\\\").replace(/\"/g,'\\"');return d?b:b.toLowerCase()};this._funcLoop=function(d){var b=[];a.each(g,function(a,c){b.push(d(c))});return b};this._append=function(a){var d;k=null===k?"":k+(""===n?" && ":
+n);for(d=0;d<r;d++)k+="(";q&&(k+="!");k+="("+a+")";q=!1;n="";r=0};this._setCommand=function(a,d){p=a;m=d};this._resetNegate=function(){q=!1};this._repeatCommand=function(a,d){return null===p?f:null!==a&&null!==d?p(a,d):null!==m&&u?p(m,a):p(a)};this._equals=function(a,d){return 0===f._compare(a,d,1)};this._compare=function(a,b,c){var e=Object.prototype.toString;void 0===c&&(c=1);void 0===a&&(a=null);void 0===b&&(b=null);if(null===a&&null===b)return 0;if(null===a&&null!==b)return 1;if(null!==a&&null===
+b)return-1;if("[object Date]"===e.call(a)&&"[object Date]"===e.call(b))return a<b?-c:a>b?c:0;d||"number"===typeof a||"number"===typeof b||(a=String(a),b=String(b));return a<b?-c:a>b?c:0};this._performSort=function(){0!==t.length&&(g=f._doSort(g,0))};this._doSort=function(a,d){var b=t[d].by,c=t[d].dir,e=t[d].type,h=t[d].datefmt,g=t[d].sfunc;if(d===t.length-1)return f._getOrder(a,b,c,e,h,g);d++;b=f._getGroup(a,b,c,e,h);c=[];for(e=0;e<b.length;e++)for(g=f._doSort(b[e].items,d),h=0;h<g.length;h++)c.push(g[h]);
+return c};this._getOrder=function(b,c,e,h,g,k){var p=[],n=[],m="a"===e?1:-1,r,q;void 0===h&&(h="text");q="float"===h||"number"===h||"currency"===h||"numeric"===h?function(a){a=parseFloat(String(a).replace(l,""));return isNaN(a)?Number.NEGATIVE_INFINITY:a}:"int"===h||"integer"===h?function(a){return a?parseFloat(String(a).replace(l,"")):Number.NEGATIVE_INFINITY}:"date"===h||"datetime"===h?function(d){return a.jgrid.parseDate(g,d).getTime()}:a.isFunction(h)?h:function(b){b=b?a.trim(String(b)):"";return d?
+b:b.toLowerCase()};a.each(b,function(d,b){r=""!==c?a.jgrid.getAccessor(b,c):b;void 0===r&&(r="");r=q(r,b);n.push({vSort:r,index:d})});a.isFunction(k)?n.sort(function(a,d){a=a.vSort;d=d.vSort;return k.call(this,a,d,m)}):n.sort(function(a,d){a=a.vSort;d=d.vSort;return f._compare(a,d,m)});h=0;for(var u=b.length;h<u;)e=n[h].index,p.push(b[e]),h++;return p};this._getGroup=function(d,b,c,e,h){var g=[],k=null,l=null,n;a.each(f._getOrder(d,b,c,e,h),function(d,c){n=a.jgrid.getAccessor(c,b);null==n&&(n="");
+f._equals(l,n)||(l=n,null!==k&&g.push(k),k=f._group(b,n));k.items.push(c)});null!==k&&g.push(k);return g};this.ignoreCase=function(){d=!1;return f};this.useCase=function(){d=!0;return f};this.trim=function(){h=!0;return f};this.noTrim=function(){h=!1;return f};this.execute=function(){var d=k,b=[];if(null===d)return f;a.each(g,function(){eval(d)&&b.push(this)});g=b;return f};this.data=function(){return g};this.select=function(d){f._performSort();if(!f._hasData())return[];f.execute();if(a.isFunction(d)){var b=
+[];a.each(g,function(a,c){b.push(d(c))});return b}return g};this.hasMatch=function(){if(!f._hasData())return!1;f.execute();return 0<g.length};this.andNot=function(a,d,b){q=!q;return f.and(a,d,b)};this.orNot=function(a,d,b){q=!q;return f.or(a,d,b)};this.not=function(a,d,b){return f.andNot(a,d,b)};this.and=function(a,d,b){n=" && ";return void 0===a?f:f._repeatCommand(a,d,b)};this.or=function(a,d,b){n=" || ";return void 0===a?f:f._repeatCommand(a,d,b)};this.orBegin=function(){r++;return f};this.orEnd=
+function(){null!==k&&(k+=")");return f};this.isNot=function(a){q=!q;return f.is(a)};this.is=function(a){f._append("this."+a);f._resetNegate();return f};this._compareValues=function(d,b,c,e,h){var g;g=u?"jQuery.jgrid.getAccessor(this,'"+b+"')":"this";void 0===c&&(c=null);var k=c,n=void 0===h.stype?"text":h.stype;if(null!==c)switch(n){case "int":case "integer":k=isNaN(Number(k))||""===k?"0":k;g="parseInt("+g+",10)";k="parseInt("+k+",10)";break;case "float":case "number":case "numeric":k=String(k).replace(l,
+"");k=isNaN(Number(k))||""===k?"0":k;g="parseFloat("+g+")";k="parseFloat("+k+")";break;case "date":case "datetime":k=String(a.jgrid.parseDate(h.newfmt||"Y-m-d",k).getTime());g='jQuery.jgrid.parseDate("'+h.srcfmt+'",'+g+").getTime()";break;default:g=f._getStr(g),k=f._getStr('"'+f._toStr(k)+'"')}f._append(g+" "+e+" "+k);f._setCommand(d,b);f._resetNegate();return f};this.equals=function(a,d,b){return f._compareValues(f.equals,a,d,"==",b)};this.notEquals=function(a,d,b){return f._compareValues(f.equals,
+a,d,"!==",b)};this.isNull=function(a,d,b){return f._compareValues(f.equals,a,null,"===",b)};this.greater=function(a,d,b){return f._compareValues(f.greater,a,d,">",b)};this.less=function(a,d,b){return f._compareValues(f.less,a,d,"<",b)};this.greaterOrEquals=function(a,d,b){return f._compareValues(f.greaterOrEquals,a,d,">=",b)};this.lessOrEquals=function(a,d,b){return f._compareValues(f.lessOrEquals,a,d,"<=",b)};this.startsWith=function(d,b){var c=null==b?d:b,c=h?a.trim(c.toString()).length:c.toString().length;
+u?f._append(f._getStr("jQuery.jgrid.getAccessor(this,'"+d+"')")+".substr(0,"+c+") == "+f._getStr('"'+f._toStr(b)+'"')):(null!=b&&(c=h?a.trim(b.toString()).length:b.toString().length),f._append(f._getStr("this")+".substr(0,"+c+") == "+f._getStr('"'+f._toStr(d)+'"')));f._setCommand(f.startsWith,d);f._resetNegate();return f};this.endsWith=function(d,b){var c=null==b?d:b,c=h?a.trim(c.toString()).length:c.toString().length;u?f._append(f._getStr("jQuery.jgrid.getAccessor(this,'"+d+"')")+".substr("+f._getStr("jQuery.jgrid.getAccessor(this,'"+
+d+"')")+".length-"+c+","+c+') == "'+f._toStr(b)+'"'):f._append(f._getStr("this")+".substr("+f._getStr("this")+'.length-"'+f._toStr(d)+'".length,"'+f._toStr(d)+'".length) == "'+f._toStr(d)+'"');f._setCommand(f.endsWith,d);f._resetNegate();return f};this.contains=function(a,d){u?f._append(f._getStr("jQuery.jgrid.getAccessor(this,'"+a+"')")+'.indexOf("'+f._toStr(d)+'",0) > -1'):f._append(f._getStr("this")+'.indexOf("'+f._toStr(a)+'",0) > -1');f._setCommand(f.contains,a);f._resetNegate();return f};this.groupBy=
+function(a,d,b,c){return f._hasData()?f._getGroup(g,a,d,b,c):null};this.orderBy=function(d,b,c,e,h){b=null==b?"a":a.trim(b.toString().toLowerCase());null==c&&(c="text");null==e&&(e="Y-m-d");null==h&&(h=!1);if("desc"===b||"descending"===b)b="d";if("asc"===b||"ascending"===b)b="a";t.push({by:d,dir:b,type:c,datefmt:e,sfunc:h});return f};return f}(b,null)},getMethod:function(b){return this.getAccessor(a.fn.jqGrid,b)},extend:function(b){a.extend(a.fn.jqGrid,b);this.no_legacy_api||a.fn.extend(b)}});a.fn.jqGrid=
+function(b){if("string"===typeof b){var e=a.jgrid.getMethod(b);if(!e)throw"jqGrid - No such method: "+b;var c=a.makeArray(arguments).slice(1);return e.apply(this,c)}return this.each(function(){if(!this.grid){var c;null!=b&&void 0!==b.data&&(c=b.data,b.data=[]);var e=a.extend(!0,{url:"",height:150,page:1,rowNum:20,rowTotal:null,records:0,pager:"",pgbuttons:!0,pginput:!0,colModel:[],rowList:[],colNames:[],sortorder:"asc",sortname:"",datatype:"xml",mtype:"GET",altRows:!1,selarrrow:[],savedRow:[],shrinkToFit:!0,
+xmlReader:{},jsonReader:{},subGrid:!1,subGridModel:[],reccount:0,lastpage:0,lastsort:0,selrow:null,beforeSelectRow:null,onSelectRow:null,onSortCol:null,ondblClickRow:null,onRightClickRow:null,onPaging:null,onSelectAll:null,onInitGrid:null,loadComplete:null,gridComplete:null,loadError:null,loadBeforeSend:null,afterInsertRow:null,beforeRequest:null,beforeProcessing:null,onHeaderClick:null,viewrecords:!1,loadonce:!1,multiselect:!1,multikey:!1,editurl:null,search:!1,caption:"",hidegrid:!0,hiddengrid:!1,
+postData:{},userData:{},treeGrid:!1,treeGridModel:"nested",treeReader:{},treeANode:-1,ExpandColumn:null,tree_root_level:0,prmNames:{page:"page",rows:"rows",sort:"sidx",order:"sord",search:"_search",nd:"nd",id:"id",oper:"oper",editoper:"edit",addoper:"add",deloper:"del",subgridid:"id",npage:null,totalrows:"totalrows"},forceFit:!1,gridstate:"visible",cellEdit:!1,cellsubmit:"remote",nv:0,loadui:"enable",toolbar:[!1,""],scroll:!1,multiboxonly:!1,deselectAfterSort:!0,scrollrows:!1,autowidth:!1,scrollOffset:18,
+cellLayout:5,subGridWidth:20,multiselectWidth:20,gridview:!1,rownumWidth:25,rownumbers:!1,pagerpos:"center",recordpos:"right",footerrow:!1,userDataOnFooter:!1,hoverrows:!0,altclass:"ui-priority-secondary",viewsortcols:[!1,"vertical",!0],resizeclass:"",autoencode:!1,remapColumns:[],ajaxGridOptions:{},direction:"ltr",toppager:!1,headertitles:!1,scrollTimeout:40,data:[],_index:{},grouping:!1,groupingView:{groupField:[],groupOrder:[],groupText:[],groupColumnShow:[],groupSummary:[],showSummaryOnHide:!1,
+sortitems:[],sortnames:[],summary:[],summaryval:[],plusicon:"ui-icon-circlesmall-plus",minusicon:"ui-icon-circlesmall-minus",displayField:[],groupSummaryPos:[],formatDisplayField:[],_locgr:!1},ignoreCase:!1,cmTemplate:{},idPrefix:"",multiSort:!1,minColWidth:33},a.jgrid.defaults,b||{});void 0!==c&&(e.data=c,b.data=c);var d=this,h={headers:[],cols:[],footers:[],dragStart:function(b,c,f){var h=a(this.bDiv).offset().left;this.resizing={idx:b,startX:c.pageX,sOL:c.pageX-h};this.hDiv.style.cursor="col-resize";
+this.curGbox=a("#rs_m"+a.jgrid.jqID(e.id),"#gbox_"+a.jgrid.jqID(e.id));this.curGbox.css({display:"block",left:c.pageX-h,top:f[1],height:f[2]});a(d).triggerHandler("jqGridResizeStart",[c,b]);a.isFunction(e.resizeStart)&&e.resizeStart.call(d,c,b);document.onselectstart=function(){return!1}},dragMove:function(a){if(this.resizing){var d=a.pageX-this.resizing.startX;a=this.headers[this.resizing.idx];var b="ltr"===e.direction?a.width+d:a.width-d,c;33<b&&(this.curGbox.css({left:this.resizing.sOL+d}),!0===
+e.forceFit?(c=this.headers[this.resizing.idx+e.nv],d="ltr"===e.direction?c.width-d:c.width+d,d>e.minColWidth&&(a.newWidth=b,c.newWidth=d)):(this.newWidth="ltr"===e.direction?e.tblwidth+d:e.tblwidth-d,a.newWidth=b))}},dragEnd:function(){this.hDiv.style.cursor="default";if(this.resizing){var b=this.resizing.idx,c=this.headers[b].newWidth||this.headers[b].width,c=parseInt(c,10);this.resizing=!1;a("#rs_m"+a.jgrid.jqID(e.id)).css("display","none");e.colModel[b].width=c;this.headers[b].width=c;this.headers[b].el.style.width=
+c+"px";this.cols[b].style.width=c+"px";0<this.footers.length&&(this.footers[b].style.width=c+"px");!0===e.forceFit?(c=this.headers[b+e.nv].newWidth||this.headers[b+e.nv].width,this.headers[b+e.nv].width=c,this.headers[b+e.nv].el.style.width=c+"px",this.cols[b+e.nv].style.width=c+"px",0<this.footers.length&&(this.footers[b+e.nv].style.width=c+"px"),e.colModel[b+e.nv].width=c):(e.tblwidth=this.newWidth||e.tblwidth,a("table:first",this.bDiv).css("width",e.tblwidth+"px"),a("table:first",this.hDiv).css("width",
+e.tblwidth+"px"),this.hDiv.scrollLeft=this.bDiv.scrollLeft,e.footerrow&&(a("table:first",this.sDiv).css("width",e.tblwidth+"px"),this.sDiv.scrollLeft=this.bDiv.scrollLeft));a(d).triggerHandler("jqGridResizeStop",[c,b]);a.isFunction(e.resizeStop)&&e.resizeStop.call(d,c,b)}this.curGbox=null;document.onselectstart=function(){return!0}},populateVisible:function(){h.timer&&clearTimeout(h.timer);h.timer=null;var d=a(h.bDiv).height();if(d){var b=a("table:first",h.bDiv),c,f;if(b[0].rows.length)try{f=(c=b[0].rows[1])?
+a(c).outerHeight()||h.prevRowHeight:h.prevRowHeight}catch(k){f=h.prevRowHeight}if(f){h.prevRowHeight=f;var l=e.rowNum;c=h.scrollTop=h.bDiv.scrollTop;var n=Math.round(b.position().top)-c,p=n+b.height();f*=l;var m,r,q;p<d&&0>=n&&(void 0===e.lastpage||(parseInt((p+c+f-1)/f,10)||0)<=e.lastpage)&&(r=parseInt((d-p+f-1)/f,10)||1,0<=p||2>r||!0===e.scroll?(m=(Math.round((p+c)/f)||0)+1,n=-1):n=1);0<n&&(m=(parseInt(c/f,10)||0)+1,r=(parseInt((c+d)/f,10)||0)+2-m,q=!0);!r||e.lastpage&&(m>e.lastpage||1===e.lastpage||
+m===e.page&&m===e.lastpage)||(h.hDiv.loading?h.timer=setTimeout(h.populateVisible,e.scrollTimeout):(e.page=m,q&&(h.selectionPreserver(b[0]),h.emptyRows.call(b[0],!1,!1)),h.populate(r)))}}},scrollGrid:function(a){if(e.scroll){var d=h.bDiv.scrollTop;void 0===h.scrollTop&&(h.scrollTop=0);d!==h.scrollTop&&(h.scrollTop=d,h.timer&&clearTimeout(h.timer),h.timer=setTimeout(h.populateVisible,e.scrollTimeout))}h.hDiv.scrollLeft=h.bDiv.scrollLeft;e.footerrow&&(h.sDiv.scrollLeft=h.bDiv.scrollLeft);a&&a.stopPropagation()},
+selectionPreserver:function(d){var b=d.p,c=b.selrow,e=b.selarrrow?a.makeArray(b.selarrrow):null,f=d.grid.bDiv.scrollLeft,h=function(){var g;b.selrow=null;b.selarrrow=[];if(b.multiselect&&e&&0<e.length)for(g=0;g<e.length;g++)e[g]!==c&&a(d).jqGrid("setSelection",e[g],!1,null);c&&a(d).jqGrid("setSelection",c,!1,null);d.grid.bDiv.scrollLeft=f;a(d).unbind(".selectionPreserver",h)};a(d).bind("jqGridGridComplete.selectionPreserver",h)}};if("TABLE"!==this.tagName.toUpperCase()||null==this.id)alert("Element is not a table or has no id!");
+else if(void 0!==document.documentMode&&5>=document.documentMode)alert("Grid can not be used in this ('quirks') mode!");else{a(this).empty().attr("tabindex","0");this.p=e;this.p.useProp=!!a.fn.prop;var k,l;if(0===this.p.colNames.length)for(k=0;k<this.p.colModel.length;k++)this.p.colNames[k]=this.p.colModel[k].label||this.p.colModel[k].name;if(this.p.colNames.length!==this.p.colModel.length)alert(a.jgrid.errors.model);else{var p=a("<div class='ui-jqgrid-view' role='grid'></div>");c=a.jgrid.msie;d.p.direction=
+a.trim(d.p.direction.toLowerCase());-1===a.inArray(d.p.direction,["ltr","rtl"])&&(d.p.direction="ltr");l=d.p.direction;a(p).insertBefore(this);a(this).removeClass("scroll").appendTo(p);var m=a("<div class='ui-jqgrid ui-widget ui-widget-content ui-corner-all'></div>");a(m).attr({id:"gbox_"+this.id,dir:l}).insertBefore(p);a(p).attr("id","gview_"+this.id).appendTo(m);a("<div class='ui-widget-overlay jqgrid-overlay' id='lui_"+this.id+"'></div>").insertBefore(p);a("<div class='loading ui-state-default ui-state-active' id='load_"+
+this.id+"'>"+this.p.loadtext+"</div>").insertBefore(p);a(this).attr({cellspacing:"0",cellpadding:"0",border:"0",role:"presentation","aria-multiselectable":!!this.p.multiselect,"aria-labelledby":"gbox_"+this.id});var r=function(a,d){a=parseInt(a,10);return isNaN(a)?d||0:a},q=function(b,c,e,f,g,k){var l=d.p.colModel[b],n=l.align,p='style="',m=l.classes,r=l.name,q=[];n&&(p+="text-align:"+n+";");!0===l.hidden&&(p+="display:none;");if(0===c)p+="width: "+h.headers[b].width+"px;";else if(a.isFunction(l.cellattr)||
+"string"===typeof l.cellattr&&null!=a.jgrid.cellattr&&a.isFunction(a.jgrid.cellattr[l.cellattr]))if(b=a.isFunction(l.cellattr)?l.cellattr:a.jgrid.cellattr[l.cellattr],(f=b.call(d,g,e,f,l,k))&&"string"===typeof f)if(f=f.replace(/style/i,"style").replace(/title/i,"title"),-1<f.indexOf("title")&&(l.title=!1),-1<f.indexOf("class")&&(m=void 0),q=f.replace(/\-style/g,"-sti").split(/style/),2===q.length){q[1]=a.trim(q[1].replace(/\-sti/g,"-style").replace("=",""));if(0===q[1].indexOf("'")||0===q[1].indexOf('"'))q[1]=
+q[1].substring(1);p+=q[1].replace(/'/gi,'"')}else p+='"';q.length||(q[0]="",p+='"');p+=(void 0!==m?' class="'+m+'"':"")+(l.title&&e?' title="'+a.jgrid.stripHtml(e)+'"':"");p+=' aria-describedby="'+d.p.id+"_"+r+'"';return p+q[0]},n=function(b){return null==b||""===b?"&#160;":d.p.autoencode?a.jgrid.htmlEncode(b):String(b)},t=function(b,c,e,f,h){var g=d.p.colModel[e];void 0!==g.formatter?(b=""!==String(d.p.idPrefix)?a.jgrid.stripPref(d.p.idPrefix,b):b,b={rowId:b,colModel:g,gid:d.p.id,pos:e},c=a.isFunction(g.formatter)?
+g.formatter.call(d,c,b,f,h):a.fmatter?a.fn.fmatter.call(d,g.formatter,c,b,f,h):n(c)):c=n(c);return c},u=function(a,d,b,c,e,f){d=t(a,d,b,e,"add");return'<td role="gridcell" '+q(b,c,d,e,a,f)+">"+d+"</td>"},w=function(a,b,c,e){e='<input role="checkbox" type="checkbox" id="jqg_'+d.p.id+"_"+a+'" class="cbox" name="jqg_'+d.p.id+"_"+a+'"'+(e?'checked="checked"':"")+"/>";return'<td role="gridcell" '+q(b,c,"",null,a,!0)+">"+e+"</td>"},s=function(a,d,b,c){b=(parseInt(b,10)-1)*parseInt(c,10)+1+d;return'<td role="gridcell" class="ui-state-default jqgrid-rownum" '+
+q(a,d,b,null,d,!0)+">"+b+"</td>"},x=function(a){var b,c=[],e=0,f;for(f=0;f<d.p.colModel.length;f++)b=d.p.colModel[f],"cb"!==b.name&&"subgrid"!==b.name&&"rn"!==b.name&&(c[e]="local"===a?b.name:"xml"===a||"xmlstring"===a?b.xmlmap||b.name:b.jsonmap||b.name,!1!==d.p.keyName&&!0===b.key&&(d.p.keyName=c[e]),e++);return c},A=function(b){var c=d.p.remapColumns;c&&c.length||(c=a.map(d.p.colModel,function(a,d){return d}));b&&(c=a.map(c,function(a){return a<b?null:a-b}));return c},v=function(d,b){var c;this.p.deepempty?
+a(this.rows).slice(1).remove():(c=0<this.rows.length?this.rows[0]:null,a(this.firstChild).empty().append(c));d&&this.p.scroll&&(a(this.grid.bDiv.firstChild).css({height:"auto"}),a(this.grid.bDiv.firstChild.firstChild).css({height:0,display:"none"}),0!==this.grid.bDiv.scrollTop&&(this.grid.bDiv.scrollTop=0));!0===b&&this.p.treeGrid&&(this.p.data=[],this.p._index={})},H=function(){var b=d.p,c=b.data,e=c.length,f,h,g,k,l,p=b.localReader,n=b.colModel,m=p.cell,r=(!0===b.multiselect?1:0)+(!0===b.subGrid?
+1:0)+(!0===b.rownumbers?1:0),q=b.scroll?a.jgrid.randId():1,u,s,t;if("local"===b.datatype&&!0===p.repeatitems)for(u=A(r),s=x("local"),g=!1===b.keyIndex?a.isFunction(p.id)?p.id.call(d,c):p.id:b.keyIndex,b=0;b<e;b++){h=c[b];f=a.jgrid.getAccessor(h,g);void 0===f&&("number"===typeof g&&null!=n[g+r]&&(f=a.jgrid.getAccessor(h,n[g+r].name)),void 0===f&&(f=q+b,m&&(k=a.jgrid.getAccessor(h,m)||h,f=null!=k&&void 0!==k[g]?k[g]:f)));k={};k[p.id]=f;m&&(h=a.jgrid.getAccessor(h,m)||h);t=a.isArray(h)?u:s;for(f=0;f<
+t.length;f++)l=a.jgrid.getAccessor(h,t[f]),k[n[f+r].name]=l;a.extend(!0,c[b],k)}},B=function(){var b=d.p.data.length,c,e,f;c=!1===d.p.keyName||!0===d.p.loadonce?d.p.localReader.id:d.p.keyName;d.p._index=[];for(e=0;e<b;e++)f=a.jgrid.getAccessor(d.p.data[e],c),void 0===f&&(f=String(e+1)),d.p._index[f]=e},D=function(b,c,e,f,h,g){var k="-1",l="",p;c=c?"display:none;":"";e="ui-widget-content jqgrow ui-row-"+d.p.direction+(e?" "+e:"")+(g?" ui-state-highlight":"");g=a(d).triggerHandler("jqGridRowAttr",[f,
+h,b]);"object"!==typeof g&&(g=a.isFunction(d.p.rowattr)?d.p.rowattr.call(d,f,h,b):"string"===typeof d.p.rowattr&&null!=a.jgrid.rowattr&&a.isFunction(a.jgrid.rowattr[d.p.rowattr])?a.jgrid.rowattr[d.p.rowattr].call(d,f,h,b):{});if(!a.isEmptyObject(g)){g.hasOwnProperty("id")&&(b=g.id,delete g.id);g.hasOwnProperty("tabindex")&&(k=g.tabindex,delete g.tabindex);g.hasOwnProperty("style")&&(c+=g.style,delete g.style);g.hasOwnProperty("class")&&(e+=" "+g["class"],delete g["class"]);try{delete g.role}catch(n){}for(p in g)g.hasOwnProperty(p)&&
+(l+=" "+p+"="+g[p])}return'<tr role="row" id="'+b+'" tabindex="'+k+'" class="'+e+'"'+(""===c?"":' style="'+c+'"')+l+">"},C=function(b,c,e,f,h){var g=new Date,k="local"!==d.p.datatype&&d.p.loadonce||"xmlstring"===d.p.datatype,l=d.p.xmlReader,p="local"===d.p.datatype?"local":"xml";k&&(d.p.data=[],d.p._index={},d.p.localReader.id="_id_");d.p.reccount=0;if(a.isXMLDoc(b)){-1!==d.p.treeANode||d.p.scroll?e=1<e?e:1:(v.call(d,!1,!0),e=1);var n=a(d),m,q,t=0,B,K=!0===d.p.multiselect?1:0,N=0,y,C=!0===d.p.rownumbers?
+1:0,H,I=[],P,z={},F,J,E=[],O=!0===d.p.altRows?d.p.altclass:"",ha;!0===d.p.subGrid&&(N=1,y=a.jgrid.getMethod("addSubGridCell"));l.repeatitems||(I=x(p));H=!1===d.p.keyName?a.isFunction(l.id)?l.id.call(d,b):l.id:d.p.keyName;p=-1===String(H).indexOf("[")?I.length?function(b,d){return a(H,b).text()||d}:function(b,d){return a(l.cell,b).eq(H).text()||d}:function(a,b){return a.getAttribute(H.replace(/[\[\]]/g,""))||b};d.p.userData={};d.p.page=r(a.jgrid.getXmlData(b,l.page),d.p.page);d.p.lastpage=r(a.jgrid.getXmlData(b,
+l.total),1);d.p.records=r(a.jgrid.getXmlData(b,l.records));a.isFunction(l.userdata)?d.p.userData=l.userdata.call(d,b)||{}:a.jgrid.getXmlData(b,l.userdata,!0).each(function(){d.p.userData[this.getAttribute("name")]=a(this).text()});b=a.jgrid.getXmlData(b,l.root,!0);(b=a.jgrid.getXmlData(b,l.row,!0))||(b=[]);var S=b.length,G=0,U=[],L=parseInt(d.p.rowNum,10),M=d.p.scroll?a.jgrid.randId():1;0<S&&0>=d.p.page&&(d.p.page=1);if(b&&S){h&&(L*=h+1);h=a.isFunction(d.p.afterInsertRow);var T=!1,Y;d.p.grouping&&
+(T=!0===d.p.groupingView.groupCollapse,Y=a.jgrid.getMethod("groupingPrepare"));for(;G<S;){F=b[G];J=p(F,M+G);J=d.p.idPrefix+J;m=0===e?0:e+1;ha=1===(m+G)%2?O:"";var ca=E.length;E.push("");C&&E.push(s(0,G,d.p.page,d.p.rowNum));K&&E.push(w(J,C,G,!1));N&&E.push(y.call(n,K+C,G+e));if(l.repeatitems){P||(P=A(K+N+C));var ba=a.jgrid.getXmlData(F,l.cell,!0);a.each(P,function(a){var b=ba[this];if(!b)return!1;B=b.textContent||b.text;z[d.p.colModel[a+K+N+C].name]=B;E.push(u(J,B,a+K+N+C,G+e,F,z))})}else for(m=0;m<
+I.length;m++)B=a.jgrid.getXmlData(F,I[m]),z[d.p.colModel[m+K+N+C].name]=B,E.push(u(J,B,m+K+N+C,G+e,F,z));E[ca]=D(J,T,ha,z,F,!1);E.push("</tr>");d.p.grouping&&(U.push(E),d.p.groupingView._locgr||Y.call(n,z,G),E=[]);if(k||!0===d.p.treeGrid)z._id_=a.jgrid.stripPref(d.p.idPrefix,J),d.p.data.push(z),d.p._index[z._id_]=d.p.data.length-1;!1===d.p.gridview&&(a("tbody:first",c).append(E.join("")),n.triggerHandler("jqGridAfterInsertRow",[J,z,F]),h&&d.p.afterInsertRow.call(d,J,z,F),E=[]);z={};t++;G++;if(t===
+L)break}}!0===d.p.gridview&&(q=-1<d.p.treeANode?d.p.treeANode:0,d.p.grouping?k||(n.jqGrid("groupingRender",U,d.p.colModel.length,d.p.page,L),U=null):!0===d.p.treeGrid&&0<q?a(d.rows[q]).after(E.join("")):(d.firstElementChild.innerHTML+=E.join(""),d.grid.cols=d.rows[0].cells));if(!0===d.p.subGrid)try{n.jqGrid("addSubGrid",K+C)}catch($){}d.p.totaltime=new Date-g;0<t&&0===d.p.records&&(d.p.records=S);E=null;if(!0===d.p.treeGrid)try{n.jqGrid("setTreeNode",q+1,t+q+1)}catch(Q){}d.p.reccount=t;d.p.treeANode=
+-1;d.p.userDataOnFooter&&n.jqGrid("footerData","set",d.p.userData,!0);k&&(d.p.records=S,d.p.lastpage=Math.ceil(S/L));f||d.updatepager(!1,!0);if(k){for(;t<S;){F=b[t];J=p(F,t+M);J=d.p.idPrefix+J;if(l.repeatitems){P||(P=A(K+N+C));var aa=a.jgrid.getXmlData(F,l.cell,!0);a.each(P,function(a){var b=aa[this];if(!b)return!1;B=b.textContent||b.text;z[d.p.colModel[a+K+N+C].name]=B})}else for(m=0;m<I.length;m++)B=a.jgrid.getXmlData(F,I[m]),z[d.p.colModel[m+K+N+C].name]=B;z._id_=a.jgrid.stripPref(d.p.idPrefix,
+J);d.p.grouping&&Y.call(n,z,t);d.p.data.push(z);d.p._index[z._id_]=d.p.data.length-1;z={};t++}d.p.grouping&&(d.p.groupingView._locgr=!0,n.jqGrid("groupingRender",U,d.p.colModel.length,d.p.page,L),U=null)}}},F=function(b,c,e,f,h){var g=new Date;if(b){-1!==d.p.treeANode||d.p.scroll?e=1<e?e:1:(v.call(d,!1,!0),e=1);var k,l="local"!==d.p.datatype&&d.p.loadonce||"jsonstring"===d.p.datatype;l&&(d.p.data=[],d.p._index={},d.p.localReader.id="_id_");d.p.reccount=0;"local"===d.p.datatype?(c=d.p.localReader,
+k="local"):(c=d.p.jsonReader,k="json");var p=a(d),n=0,m,q,t,B=[],K=d.p.multiselect?1:0,N=!0===d.p.subGrid?1:0,y,C=!0===d.p.rownumbers?1:0,H=A(K+N+C);k=x(k);var I,z,F,J={},P,E,G=[],ha=!0===d.p.altRows?d.p.altclass:"",S;d.p.page=r(a.jgrid.getAccessor(b,c.page),d.p.page);d.p.lastpage=r(a.jgrid.getAccessor(b,c.total),1);d.p.records=r(a.jgrid.getAccessor(b,c.records));d.p.userData=a.jgrid.getAccessor(b,c.userdata)||{};N&&(y=a.jgrid.getMethod("addSubGridCell"));F=!1===d.p.keyName?a.isFunction(c.id)?c.id.call(d,
+b):c.id:d.p.keyName;z=a.jgrid.getAccessor(b,c.root);null==z&&a.isArray(b)&&(z=b);z||(z=[]);b=z.length;q=0;0<b&&0>=d.p.page&&(d.p.page=1);var O=parseInt(d.p.rowNum,10),U=d.p.scroll?a.jgrid.randId():1,L=!1,M;h&&(O*=h+1);"local"!==d.p.datatype||d.p.deselectAfterSort||(L=!0);var Y=a.isFunction(d.p.afterInsertRow),T=[],ca=!1,ba;d.p.grouping&&(ca=!0===d.p.groupingView.groupCollapse,ba=a.jgrid.getMethod("groupingPrepare"));for(;q<b;){h=z[q];E=a.jgrid.getAccessor(h,F);void 0===E&&("number"===typeof F&&null!=
+d.p.colModel[F+K+N+C]&&(E=a.jgrid.getAccessor(h,d.p.colModel[F+K+N+C].name)),void 0===E&&(E=U+q,0===B.length&&c.cell&&(m=a.jgrid.getAccessor(h,c.cell)||h,E=null!=m&&void 0!==m[F]?m[F]:E)));E=d.p.idPrefix+E;m=1===e?0:e;S=1===(m+q)%2?ha:"";L&&(M=d.p.multiselect?-1!==a.inArray(E,d.p.selarrrow):E===d.p.selrow);var $=G.length;G.push("");C&&G.push(s(0,q,d.p.page,d.p.rowNum));K&&G.push(w(E,C,q,M));N&&G.push(y.call(p,K+C,q+e));I=k;c.repeatitems&&(c.cell&&(h=a.jgrid.getAccessor(h,c.cell)||h),a.isArray(h)&&
+(I=H));for(t=0;t<I.length;t++)m=a.jgrid.getAccessor(h,I[t]),J[d.p.colModel[t+K+N+C].name]=m,G.push(u(E,m,t+K+N+C,q+e,h,J));G[$]=D(E,ca,S,J,h,M);G.push("</tr>");d.p.grouping&&(T.push(G),d.p.groupingView._locgr||ba.call(p,J,q),G=[]);if(l||!0===d.p.treeGrid)J._id_=a.jgrid.stripPref(d.p.idPrefix,E),d.p.data.push(J),d.p._index[J._id_]=d.p.data.length-1;!1===d.p.gridview&&(a("#"+a.jgrid.jqID(d.p.id)+" tbody:first").append(G.join("")),p.triggerHandler("jqGridAfterInsertRow",[E,J,h]),Y&&d.p.afterInsertRow.call(d,
+E,J,h),G=[]);J={};n++;q++;if(n===O)break}!0===d.p.gridview&&(P=-1<d.p.treeANode?d.p.treeANode:0,d.p.grouping?l||(p.jqGrid("groupingRender",T,d.p.colModel.length,d.p.page,O),T=null):!0===d.p.treeGrid&&0<P?a(d.rows[P]).after(G.join("")):(d.firstElementChild.innerHTML+=G.join(""),d.grid.cols=d.rows[0].cells));if(!0===d.p.subGrid)try{p.jqGrid("addSubGrid",K+C)}catch(Q){}d.p.totaltime=new Date-g;0<n&&0===d.p.records&&(d.p.records=b);if(!0===d.p.treeGrid)try{p.jqGrid("setTreeNode",P+1,n+P+1)}catch(aa){}d.p.reccount=
+n;d.p.treeANode=-1;d.p.userDataOnFooter&&p.jqGrid("footerData","set",d.p.userData,!0);l&&(d.p.records=b,d.p.lastpage=Math.ceil(b/O));f||d.updatepager(!1,!0);if(l){for(;n<b&&z[n];){h=z[n];E=a.jgrid.getAccessor(h,F);void 0===E&&("number"===typeof F&&null!=d.p.colModel[F+K+N+C]&&(E=a.jgrid.getAccessor(h,d.p.colModel[F+K+N+C].name)),void 0===E&&(E=U+n,0===B.length&&c.cell&&(e=a.jgrid.getAccessor(h,c.cell)||h,E=null!=e&&void 0!==e[F]?e[F]:E)));if(h){E=d.p.idPrefix+E;I=k;c.repeatitems&&(c.cell&&(h=a.jgrid.getAccessor(h,
+c.cell)||h),a.isArray(h)&&(I=H));for(t=0;t<I.length;t++)J[d.p.colModel[t+K+N+C].name]=a.jgrid.getAccessor(h,I[t]);J._id_=a.jgrid.stripPref(d.p.idPrefix,E);d.p.grouping&&ba.call(p,J,n);d.p.data.push(J);d.p._index[J._id_]=d.p.data.length-1;J={}}n++}d.p.grouping&&(d.p.groupingView._locgr=!0,p.jqGrid("groupingRender",T,d.p.colModel.length,d.p.page,O))}}},y=function(){function b(a){var d=0,c,e,f,g,k;if(null!=a.groups){(e=a.groups.length&&"OR"===a.groupOp.toString().toUpperCase())&&u.orBegin();for(c=0;c<
+a.groups.length;c++){0<d&&e&&u.or();try{b(a.groups[c])}catch(l){alert(l)}d++}e&&u.orEnd()}if(null!=a.rules)try{(f=a.rules.length&&"OR"===a.groupOp.toString().toUpperCase())&&u.orBegin();for(c=0;c<a.rules.length;c++)k=a.rules[c],g=a.groupOp.toString().toUpperCase(),t[k.op]&&k.field&&(0<d&&g&&"OR"===g&&(u=u.or()),u=t[k.op](u,g)(k.field,k.data,h[k.field])),d++;f&&u.orEnd()}catch(p){alert(p)}}var c=d.p.multiSort?[]:"",e=[],f=!1,h={},g=[],k=[],l,p,n;if(a.isArray(d.p.data)){var m=d.p.grouping?d.p.groupingView:
+!1,r,q;a.each(d.p.colModel,function(){p=this.sorttype||"text";"date"===p||"datetime"===p?(this.formatter&&"string"===typeof this.formatter&&"date"===this.formatter?(l=this.formatoptions&&this.formatoptions.srcformat?this.formatoptions.srcformat:a.jgrid.formatter.date.srcformat,n=this.formatoptions&&this.formatoptions.newformat?this.formatoptions.newformat:a.jgrid.formatter.date.newformat):l=n=this.datefmt||"Y-m-d",h[this.name]={stype:p,srcfmt:l,newfmt:n,sfunc:this.sortfunc||null}):h[this.name]={stype:p,
+srcfmt:"",newfmt:"",sfunc:this.sortfunc||null};if(d.p.grouping)for(q=0,r=m.groupField.length;q<r;q++)if(this.name===m.groupField[q]){var b=this.name;this.index&&(b=this.index);g[q]=h[b];k[q]=b}d.p.multiSort?this.lso&&(c.push(this.name),b=this.lso.split("-"),e.push(b[b.length-1])):f||this.index!==d.p.sortname&&this.name!==d.p.sortname||(c=this.name,f=!0)});if(d.p.treeGrid)a(d).jqGrid("SortTree",c,d.p.sortorder,h[c].stype||"text",h[c].srcfmt||"");else{var t={eq:function(a){return a.equals},ne:function(a){return a.notEquals},
+lt:function(a){return a.less},le:function(a){return a.lessOrEquals},gt:function(a){return a.greater},ge:function(a){return a.greaterOrEquals},cn:function(a){return a.contains},nc:function(a,b){return"OR"===b?a.orNot().contains:a.andNot().contains},bw:function(a){return a.startsWith},bn:function(a,b){return"OR"===b?a.orNot().startsWith:a.andNot().startsWith},en:function(a,b){return"OR"===b?a.orNot().endsWith:a.andNot().endsWith},ew:function(a){return a.endsWith},ni:function(a,b){return"OR"===b?a.orNot().equals:
+a.andNot().equals},"in":function(a){return a.equals},nu:function(a){return a.isNull},nn:function(a,b){return"OR"===b?a.orNot().isNull:a.andNot().isNull}},u=a.jgrid.from(d.p.data);d.p.ignoreCase&&(u=u.ignoreCase());if(!0===d.p.search){var s=d.p.postData.filters;if(s)"string"===typeof s&&(s=a.jgrid.parse(s)),b(s);else try{u=t[d.p.postData.searchOper](u)(d.p.postData.searchField,d.p.postData.searchString,h[d.p.postData.searchField])}catch(x){}}if(d.p.grouping)for(q=0;q<r;q++)u.orderBy(k[q],m.groupOrder[q],
+g[q].stype,g[q].srcfmt);d.p.multiSort?a.each(c,function(a){u.orderBy(this,e[a],h[this].stype,h[this].srcfmt,h[this].sfunc)}):c&&d.p.sortorder&&f&&("DESC"===d.p.sortorder.toUpperCase()?u.orderBy(d.p.sortname,"d",h[c].stype,h[c].srcfmt,h[c].sfunc):u.orderBy(d.p.sortname,"a",h[c].stype,h[c].srcfmt,h[c].sfunc));var s=u.select(),v=parseInt(d.p.rowNum,10),w=s.length,D=parseInt(d.p.page,10),A=Math.ceil(w/v),K={};if((d.p.search||d.p.resetsearch)&&d.p.grouping&&d.p.groupingView._locgr){d.p.groupingView.groups=
+[];var N,B=a.jgrid.getMethod("groupingPrepare"),C,y;if(d.p.footerrow&&d.p.userDataOnFooter){for(C in d.p.userData)d.p.userData.hasOwnProperty(C)&&(d.p.userData[C]=0);y=!0}for(N=0;N<w;N++){if(y)for(C in d.p.userData)d.p.userData[C]+=parseFloat(s[N][C]||0);B.call(a(d),s[N],N,v)}}s=s.slice((D-1)*v,D*v);h=u=null;K[d.p.localReader.total]=A;K[d.p.localReader.page]=D;K[d.p.localReader.records]=w;K[d.p.localReader.root]=s;K[d.p.localReader.userdata]=d.p.userData;s=null;return K}}},O=function(){d.grid.hDiv.loading=
+!0;d.p.hiddengrid||a(d).jqGrid("progressBar",{method:"show",loadtype:d.p.loadui,htmlcontent:d.p.loadtext})},z=function(){d.grid.hDiv.loading=!1;a(d).jqGrid("progressBar",{method:"hide",loadtype:d.p.loadui})},L=function(b){if(!d.grid.hDiv.loading){var c=d.p.scroll&&!1===b,e={},f,h=d.p.prmNames;0>=d.p.page&&(d.p.page=Math.min(1,d.p.lastpage));null!==h.search&&(e[h.search]=d.p.search);null!==h.nd&&(e[h.nd]=(new Date).getTime());null!==h.rows&&(e[h.rows]=d.p.rowNum);null!==h.page&&(e[h.page]=d.p.page);
+null!==h.sort&&(e[h.sort]=d.p.sortname);null!==h.order&&(e[h.order]=d.p.sortorder);null!==d.p.rowTotal&&null!==h.totalrows&&(e[h.totalrows]=d.p.rowTotal);var g=a.isFunction(d.p.loadComplete),k=g?d.p.loadComplete:null,l=0;b=b||1;1<b?null!==h.npage?(e[h.npage]=b,l=b-1,b=1):k=function(a){d.p.page++;d.grid.hDiv.loading=!1;g&&d.p.loadComplete.call(d,a);L(b-1)}:null!==h.npage&&delete d.p.postData[h.npage];if(d.p.grouping){a(d).jqGrid("groupingSetup");var p=d.p.groupingView,n,m="";for(n=0;n<p.groupField.length;n++){var r=
+p.groupField[n];a.each(d.p.colModel,function(a,b){b.name===r&&b.index&&(r=b.index)});m+=r+" "+p.groupOrder[n]+", "}e[h.sort]=m+e[h.sort]}a.extend(d.p.postData,e);var q=d.p.scroll?d.rows.length-1:1,e=a(d).triggerHandler("jqGridBeforeRequest");if(!1!==e&&"stop"!==e)if(a.isFunction(d.p.datatype))d.p.datatype.call(d,d.p.postData,"load_"+d.p.id,q,b,l);else{if(a.isFunction(d.p.beforeRequest)&&(e=d.p.beforeRequest.call(d),void 0===e&&(e=!0),!1===e))return;f=d.p.datatype.toLowerCase();switch(f){case "json":case "jsonp":case "xml":case "script":a.ajax(a.extend({url:d.p.url,
+type:d.p.mtype,dataType:f,data:a.isFunction(d.p.serializeGridData)?d.p.serializeGridData.call(d,d.p.postData):d.p.postData,success:function(e,h,g){if(a.isFunction(d.p.beforeProcessing)&&!1===d.p.beforeProcessing.call(d,e,h,g))z();else{"xml"===f?C(e,d.grid.bDiv,q,1<b,l):F(e,d.grid.bDiv,q,1<b,l);a(d).triggerHandler("jqGridLoadComplete",[e]);k&&k.call(d,e);a(d).triggerHandler("jqGridAfterLoadComplete",[e]);c&&d.grid.populateVisible();if(d.p.loadonce||d.p.treeGrid)d.p.datatype="local";1===b&&z()}},error:function(c,
+e,f){a.isFunction(d.p.loadError)&&d.p.loadError.call(d,c,e,f);1===b&&z()},beforeSend:function(b,c){var e=!0;a.isFunction(d.p.loadBeforeSend)&&(e=d.p.loadBeforeSend.call(d,b,c));void 0===e&&(e=!0);if(!1===e)return!1;O()}},a.jgrid.ajaxOptions,d.p.ajaxGridOptions));break;case "xmlstring":O();e="string"!==typeof d.p.datastr?d.p.datastr:a.parseXML(d.p.datastr);C(e,d.grid.bDiv);a(d).triggerHandler("jqGridLoadComplete",[e]);g&&d.p.loadComplete.call(d,e);a(d).triggerHandler("jqGridAfterLoadComplete",[e]);
+d.p.datatype="local";d.p.datastr=null;z();break;case "jsonstring":O();e="string"===typeof d.p.datastr?a.jgrid.parse(d.p.datastr):d.p.datastr;F(e,d.grid.bDiv);a(d).triggerHandler("jqGridLoadComplete",[e]);g&&d.p.loadComplete.call(d,e);a(d).triggerHandler("jqGridAfterLoadComplete",[e]);d.p.datatype="local";d.p.datastr=null;z();break;case "local":case "clientside":O(),d.p.datatype="local",e=y(),F(e,d.grid.bDiv,q,1<b,l),a(d).triggerHandler("jqGridLoadComplete",[e]),k&&k.call(d,e),a(d).triggerHandler("jqGridAfterLoadComplete",
+[e]),c&&d.grid.populateVisible(),z()}}}},Q=function(b){a("#cb_"+a.jgrid.jqID(d.p.id),d.grid.hDiv)[d.p.useProp?"prop":"attr"]("checked",b);if(d.p.frozenColumns&&d.p.id+"_frozen")a("#cb_"+a.jgrid.jqID(d.p.id),d.grid.fhDiv)[d.p.useProp?"prop":"attr"]("checked",b)},V=function(b,c){var e="",f="<table cellspacing='0' cellpadding='0' border='0' style='table-layout:auto;' class='ui-pg-table'><tbody><tr>",h="",g,k,p,n,m=function(b){var c;a.isFunction(d.p.onPaging)&&(c=d.p.onPaging.call(d,b));if("stop"===c)return!1;
+d.p.selrow=null;d.p.multiselect&&(d.p.selarrrow=[],Q(!1));d.p.savedRow=[];return!0};b=b.substr(1);c+="_"+b;g="pg_"+b;k=b+"_left";p=b+"_center";n=b+"_right";a("#"+a.jgrid.jqID(b)).append("<div id='"+g+"' class='ui-pager-control' role='group'><table cellspacing='0' cellpadding='0' border='0' class='ui-pg-table' style='width:100%;table-layout:fixed;height:100%;' role='row'><tbody><tr><td id='"+k+"' align='left'></td><td id='"+p+"' align='center' style='white-space:pre;'></td><td id='"+n+"' align='right'></td></tr></tbody></table></div>").attr("dir",
+"ltr");if(0<d.p.rowList.length){h="<td dir='"+l+"'>";h+="<select class='ui-pg-selbox' role='listbox' "+(d.p.pgrecs?"title='"+d.p.pgrecs+"'":"")+">";for(k=0;k<d.p.rowList.length;k++)p=d.p.rowList[k].toString().split(":"),1===p.length&&(p[1]=p[0]),h+='<option role="option" value="'+p[0]+'"'+(r(d.p.rowNum,0)===r(p[0],0)?' selected="selected"':"")+">"+p[1]+"</option>";h+="</select></td>"}"rtl"===l&&(f+=h);!0===d.p.pginput&&(e="<td dir='"+l+"'>"+a.jgrid.format(d.p.pgtext||"","<input class='ui-pg-input' type='text' size='2' maxlength='7' value='0' role='textbox'/>",
+"<span id='sp_1_"+a.jgrid.jqID(b)+"'></span>")+"</td>");!0===d.p.pgbuttons?(k=["first"+c,"prev"+c,"next"+c,"last"+c],"rtl"===l&&k.reverse(),f+="<td id='"+k[0]+"' class='ui-pg-button ui-corner-all' "+(d.p.pgfirst?"title='"+d.p.pgfirst+"'":"")+"><span class='ui-icon ui-icon-seek-first'></span></td>",f+="<td id='"+k[1]+"' class='ui-pg-button ui-corner-all' "+(d.p.pgprev?"title='"+d.p.pgprev+"'":"")+"><span class='ui-icon ui-icon-seek-prev'></span></td>",f=f+(""!==e?"<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='ui-separator'></span></td>"+
+e+"<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='ui-separator'></span></td>":"")+("<td id='"+k[2]+"' class='ui-pg-button ui-corner-all' "+(d.p.pgnext?"title='"+d.p.pgnext+"'":"")+"><span class='ui-icon ui-icon-seek-next'></span></td>"),f+="<td id='"+k[3]+"' class='ui-pg-button ui-corner-all' "+(d.p.pglast?"title='"+d.p.pglast+"'":"")+"><span class='ui-icon ui-icon-seek-end'></span></td>"):""!==e&&(f+=e);"ltr"===l&&(f+=h);f+="</tr></tbody></table>";!0===d.p.viewrecords&&
+a("td#"+b+"_"+d.p.recordpos,"#"+g).append("<div dir='"+l+"' style='text-align:"+d.p.recordpos+"' class='ui-paging-info'></div>");a("td#"+b+"_"+d.p.pagerpos,"#"+g).append(f);h=a(".ui-jqgrid").css("font-size")||"11px";a(document.body).append("<div id='testpg' class='ui-jqgrid ui-widget ui-widget-content' style='font-size:"+h+";visibility:hidden;' ></div>");f=a(f).clone().appendTo("#testpg").width();a("#testpg").remove();0<f&&(""!==e&&(f+=50),a("td#"+b+"_"+d.p.pagerpos,"#"+g).width(f));d.p._nvtd=[];
+d.p._nvtd[0]=f?Math.floor((d.p.width-f)/2):Math.floor(d.p.width/3);d.p._nvtd[1]=0;f=null;a(".ui-pg-selbox","#"+g).bind("change",function(){if(!m("records"))return!1;d.p.page=Math.round(d.p.rowNum*(d.p.page-1)/this.value-.5)+1;d.p.rowNum=this.value;d.p.pager&&a(".ui-pg-selbox",d.p.pager).val(this.value);d.p.toppager&&a(".ui-pg-selbox",d.p.toppager).val(this.value);L();return!1});!0===d.p.pgbuttons&&(a(".ui-pg-button","#"+g).hover(function(){a(this).hasClass("ui-state-disabled")?this.style.cursor="default":
+(a(this).addClass("ui-state-hover"),this.style.cursor="pointer")},function(){a(this).hasClass("ui-state-disabled")||(a(this).removeClass("ui-state-hover"),this.style.cursor="default")}),a("#first"+a.jgrid.jqID(c)+", #prev"+a.jgrid.jqID(c)+", #next"+a.jgrid.jqID(c)+", #last"+a.jgrid.jqID(c)).click(function(){if(a(this).hasClass("ui-state-disabled"))return!1;var b=r(d.p.page,1),e=r(d.p.lastpage,1),f=!1,h=!0,g=!0,k=!0,l=!0;0===e||1===e?l=k=g=h=!1:1<e&&1<=b?1===b?g=h=!1:b===e&&(l=k=!1):1<e&&0===b&&(l=
+k=!1,b=e-1);if(!m(this.id))return!1;this.id==="first"+c&&h&&(d.p.page=1,f=!0);this.id==="prev"+c&&g&&(d.p.page=b-1,f=!0);this.id==="next"+c&&k&&(d.p.page=b+1,f=!0);this.id==="last"+c&&l&&(d.p.page=e,f=!0);f&&L();return!1}));!0===d.p.pginput&&a("input.ui-pg-input","#"+g).keypress(function(b){if(13===(b.charCode||b.keyCode||0)){if(!m("user"))return!1;a(this).val(r(a(this).val(),1));d.p.page=0<a(this).val()?a(this).val():d.p.page;L();return!1}return this})},X=function(b,c){var e,f="",h=d.p.colModel,
+g=!1,k;k=d.p.frozenColumns?c:d.grid.headers[b].el;var l="";a("span.ui-grid-ico-sort",k).addClass("ui-state-disabled");a(k).attr("aria-selected","false");if(h[b].lso)if("asc"===h[b].lso)h[b].lso+="-desc",l="desc";else if("desc"===h[b].lso)h[b].lso+="-asc",l="asc";else{if("asc-desc"===h[b].lso||"desc-asc"===h[b].lso)h[b].lso=""}else h[b].lso=l=h[b].firstsortorder||"asc";l?(a("span.s-ico",k).show(),a("span.ui-icon-"+l,k).removeClass("ui-state-disabled"),a(k).attr("aria-selected","true")):d.p.viewsortcols[0]||
+a("span.s-ico",k).hide();d.p.sortorder="";a.each(h,function(a){this.lso&&(0<a&&g&&(f+=", "),e=this.lso.split("-"),f+=h[a].index||h[a].name,f+=" "+e[e.length-1],g=!0,d.p.sortorder=e[e.length-1])});k=f.lastIndexOf(d.p.sortorder);f=f.substring(0,k);d.p.sortname=f},E=function(b,c,e,f,h){if(d.p.colModel[c].sortable&&!(0<d.p.savedRow.length)){e||(d.p.lastsort===c&&""!==d.p.sortname?"asc"===d.p.sortorder?d.p.sortorder="desc":"desc"===d.p.sortorder&&(d.p.sortorder="asc"):d.p.sortorder=d.p.colModel[c].firstsortorder||
+"asc",d.p.page=1);if(d.p.multiSort)X(c,h);else{if(f){if(d.p.lastsort===c&&d.p.sortorder===f&&!e)return;d.p.sortorder=f}e=d.grid.headers[d.p.lastsort].el;h=d.p.frozenColumns?h:d.grid.headers[c].el;a("span.ui-grid-ico-sort",e).addClass("ui-state-disabled");a(e).attr("aria-selected","false");d.p.frozenColumns&&(d.grid.fhDiv.find("span.ui-grid-ico-sort").addClass("ui-state-disabled"),d.grid.fhDiv.find("th").attr("aria-selected","false"));a("span.ui-icon-"+d.p.sortorder,h).removeClass("ui-state-disabled");
+a(h).attr("aria-selected","true");d.p.viewsortcols[0]||(d.p.lastsort!==c?(d.p.frozenColumns&&d.grid.fhDiv.find("span.s-ico").hide(),a("span.s-ico",e).hide(),a("span.s-ico",h).show()):""===d.p.sortname&&a("span.s-ico",h).show());b=b.substring(5+d.p.id.length+1);d.p.sortname=d.p.colModel[c].index||b}"stop"===a(d).triggerHandler("jqGridSortCol",[d.p.sortname,c,d.p.sortorder])?d.p.lastsort=c:a.isFunction(d.p.onSortCol)&&"stop"===d.p.onSortCol.call(d,d.p.sortname,c,d.p.sortorder)?d.p.lastsort=c:("local"===
+d.p.datatype?d.p.deselectAfterSort&&a(d).jqGrid("resetSelection"):(d.p.selrow=null,d.p.multiselect&&Q(!1),d.p.selarrrow=[],d.p.savedRow=[]),d.p.scroll&&(h=d.grid.bDiv.scrollLeft,v.call(d,!0,!1),d.grid.hDiv.scrollLeft=h),d.p.subGrid&&"local"===d.p.datatype&&a("td.sgexpanded","#"+a.jgrid.jqID(d.p.id)).each(function(){a(this).trigger("click")}),L(),d.p.lastsort=c,d.p.sortname!==b&&c&&(d.p.lastsort=c))}},aa=function(b){b=a(d.grid.headers[b].el);b=[b.position().left+b.outerWidth()];"rtl"===d.p.direction&&
+(b[0]=d.p.width-b[0]);b[0]-=d.grid.bDiv.scrollLeft;b.push(a(d.grid.hDiv).position().top);b.push(a(d.grid.bDiv).offset().top-a(d.grid.hDiv).offset().top+a(d.grid.bDiv).height());return b},T=function(b){var c,e=d.grid.headers,f=a.jgrid.getCellIndex(b);for(c=0;c<e.length;c++)if(b===e[c].el){f=c;break}return f},M;this.p.id=this.id;-1===a.inArray(d.p.multikey,["shiftKey","altKey","ctrlKey"])&&(d.p.multikey=!1);d.p.keyName=!1;for(k=0;k<d.p.colModel.length;k++)M="string"===typeof d.p.colModel[k].template?
+null!=a.jgrid.cmTemplate&&"object"===typeof a.jgrid.cmTemplate[d.p.colModel[k].template]?a.jgrid.cmTemplate[d.p.colModel[k].template]:{}:d.p.colModel[k].template,d.p.colModel[k]=a.extend(!0,{},d.p.cmTemplate,M||{},d.p.colModel[k]),!1===d.p.keyName&&!0===d.p.colModel[k].key&&(d.p.keyName=d.p.colModel[k].name);d.p.sortorder=d.p.sortorder.toLowerCase();a.jgrid.cell_width=a.jgrid.cellWidth();!0===d.p.grouping&&(d.p.scroll=!1,d.p.rownumbers=!1,d.p.treeGrid=!1,d.p.gridview=!0);if(!0===this.p.treeGrid){try{a(this).jqGrid("setTreeGrid")}catch(K){}"local"!==
+d.p.datatype&&(d.p.localReader={id:"_id_"})}if(this.p.subGrid)try{a(d).jqGrid("setSubGrid")}catch(N){}this.p.multiselect&&(this.p.colNames.unshift("<input role='checkbox' id='cb_"+this.p.id+"' class='cbox' type='checkbox'/>"),this.p.colModel.unshift({name:"cb",width:a.jgrid.cell_width?d.p.multiselectWidth+d.p.cellLayout:d.p.multiselectWidth,sortable:!1,resizable:!1,hidedlg:!0,search:!1,align:"center",fixed:!0}));this.p.rownumbers&&(this.p.colNames.unshift(""),this.p.colModel.unshift({name:"rn",width:d.p.rownumWidth,
+sortable:!1,resizable:!1,hidedlg:!0,search:!1,align:"center",fixed:!0}));d.p.xmlReader=a.extend(!0,{root:"rows",row:"row",page:"rows>page",total:"rows>total",records:"rows>records",repeatitems:!0,cell:"cell",id:"[id]",userdata:"userdata",subgrid:{root:"rows",row:"row",repeatitems:!0,cell:"cell"}},d.p.xmlReader);d.p.jsonReader=a.extend(!0,{root:"rows",page:"page",total:"total",records:"records",repeatitems:!0,cell:"cell",id:"id",userdata:"userdata",subgrid:{root:"rows",repeatitems:!0,cell:"cell"}},
+d.p.jsonReader);d.p.localReader=a.extend(!0,{root:"rows",page:"page",total:"total",records:"records",repeatitems:!1,cell:"cell",id:"id",userdata:"userdata",subgrid:{root:"rows",repeatitems:!0,cell:"cell"}},d.p.localReader);d.p.scroll&&(d.p.pgbuttons=!1,d.p.pginput=!1,d.p.rowList=[]);d.p.data.length&&(H(),B());M="<thead><tr class='ui-jqgrid-labels' role='row'>";var J,P,Y,U,S,G,I,ea,ca=ea="",ga=[],ba=[];P=[];if(!0===d.p.shrinkToFit&&!0===d.p.forceFit)for(k=d.p.colModel.length-1;0<=k;k--)if(!d.p.colModel[k].hidden){d.p.colModel[k].resizable=
+!1;break}"horizontal"===d.p.viewsortcols[1]&&(ea=" ui-i-asc",ca=" ui-i-desc");J=c?"class='ui-th-div-ie'":"";ea="<span class='s-ico' style='display:none'><span sort='asc' class='ui-grid-ico-sort ui-icon-asc"+ea+" ui-state-disabled ui-icon ui-icon-triangle-1-n ui-sort-"+l+"'></span>"+("<span sort='desc' class='ui-grid-ico-sort ui-icon-desc"+ca+" ui-state-disabled ui-icon ui-icon-triangle-1-s ui-sort-"+l+"'></span></span>");if(d.p.multiSort)for(ga=d.p.sortname.split(","),k=0;k<ga.length;k++)P=a.trim(ga[k]).split(" "),
+ga[k]=a.trim(P[0]),ba[k]=P[1]?a.trim(P[1]):d.p.sortorder||"asc";for(k=0;k<this.p.colNames.length;k++)P=d.p.headertitles?' title="'+a.jgrid.stripHtml(d.p.colNames[k])+'"':"",M+="<th id='"+d.p.id+"_"+d.p.colModel[k].name+"' role='columnheader' class='ui-state-default ui-th-column ui-th-"+l+"'"+P+">",P=d.p.colModel[k].index||d.p.colModel[k].name,M+="<div id='jqgh_"+d.p.id+"_"+d.p.colModel[k].name+"' "+J+">"+d.p.colNames[k],d.p.colModel[k].width=d.p.colModel[k].width?parseInt(d.p.colModel[k].width,10):
+150,"boolean"!==typeof d.p.colModel[k].title&&(d.p.colModel[k].title=!0),d.p.colModel[k].lso="",P===d.p.sortname&&(d.p.lastsort=k),d.p.multiSort&&(P=a.inArray(P,ga),-1!==P&&(d.p.colModel[k].lso=ba[P])),M+=ea+"</div></th>";M+="</tr></thead>";ea=null;a(this).append(M);a("thead tr:first th",this).hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")});if(this.p.multiselect){var ia=[],$;a("#cb_"+a.jgrid.jqID(d.p.id),this).bind("click",function(){d.p.selarrrow=
+[];var b=!0===d.p.frozenColumns?d.p.id+"_frozen":"";this.checked?(a(d.rows).each(function(c){0<c&&!(a(this).hasClass("ui-subgrid")||a(this).hasClass("jqgroup")||a(this).hasClass("ui-state-disabled")||a(this).hasClass("jqfoot"))&&(a("#jqg_"+a.jgrid.jqID(d.p.id)+"_"+a.jgrid.jqID(this.id))[d.p.useProp?"prop":"attr"]("checked",!0),a(this).addClass("ui-state-highlight").attr("aria-selected","true"),d.p.selarrrow.push(this.id),d.p.selrow=this.id,b&&(a("#jqg_"+a.jgrid.jqID(d.p.id)+"_"+a.jgrid.jqID(this.id),
+d.grid.fbDiv)[d.p.useProp?"prop":"attr"]("checked",!0),a("#"+a.jgrid.jqID(this.id),d.grid.fbDiv).addClass("ui-state-highlight")))}),$=!0,ia=[]):(a(d.rows).each(function(c){0<c&&!(a(this).hasClass("ui-subgrid")||a(this).hasClass("jqgroup")||a(this).hasClass("ui-state-disabled")||a(this).hasClass("jqfoot"))&&(a("#jqg_"+a.jgrid.jqID(d.p.id)+"_"+a.jgrid.jqID(this.id))[d.p.useProp?"prop":"attr"]("checked",!1),a(this).removeClass("ui-state-highlight").attr("aria-selected","false"),ia.push(this.id),b&&(a("#jqg_"+
+a.jgrid.jqID(d.p.id)+"_"+a.jgrid.jqID(this.id),d.grid.fbDiv)[d.p.useProp?"prop":"attr"]("checked",!1),a("#"+a.jgrid.jqID(this.id),d.grid.fbDiv).removeClass("ui-state-highlight")))}),d.p.selrow=null,$=!1);a(d).triggerHandler("jqGridSelectAll",[$?d.p.selarrrow:ia,$]);a.isFunction(d.p.onSelectAll)&&d.p.onSelectAll.call(d,$?d.p.selarrrow:ia,$)})}!0===d.p.autowidth&&(M=a(m).innerWidth(),d.p.width=0<M?M:"nw");(function(){var b=0,c=a.jgrid.cell_width?0:r(d.p.cellLayout,0),e=0,f,g=r(d.p.scrollOffset,0),k,
+l=!1,p,n=0,m;a.each(d.p.colModel,function(){void 0===this.hidden&&(this.hidden=!1);if(d.p.grouping&&d.p.autowidth){var f=a.inArray(this.name,d.p.groupingView.groupField);0<=f&&d.p.groupingView.groupColumnShow.length>f&&(this.hidden=!d.p.groupingView.groupColumnShow[f])}this.widthOrg=k=r(this.width,0);!1===this.hidden&&(b+=k+c,this.fixed?n+=k+c:e++)});isNaN(d.p.width)&&(d.p.width=b+(!1!==d.p.shrinkToFit||isNaN(d.p.height)?0:g));h.width=d.p.width;d.p.tblwidth=b;!1===d.p.shrinkToFit&&!0===d.p.forceFit&&
+(d.p.forceFit=!1);!0===d.p.shrinkToFit&&0<e&&(p=h.width-c*e-n,isNaN(d.p.height)||(p-=g,l=!0),b=0,a.each(d.p.colModel,function(a){!1!==this.hidden||this.fixed||(this.width=k=Math.round(p*this.width/(d.p.tblwidth-c*e-n)),b+=k,f=a)}),m=0,l?h.width-n-(b+c*e)!==g&&(m=h.width-n-(b+c*e)-g):l||1===Math.abs(h.width-n-(b+c*e))||(m=h.width-n-(b+c*e)),d.p.colModel[f].width+=m,d.p.tblwidth=b+m+c*e+n,d.p.tblwidth>d.p.width&&(d.p.colModel[f].width-=d.p.tblwidth-parseInt(d.p.width,10),d.p.tblwidth=d.p.width))})();
+a(m).css("width",h.width+"px").append("<div class='ui-jqgrid-resize-mark' id='rs_m"+d.p.id+"'>&#160;</div>");a(p).css("width",h.width+"px");M=a("thead:first",d).get(0);var da="";d.p.footerrow&&(da+="<table role='presentation' style='width:"+d.p.tblwidth+"px' class='ui-jqgrid-ftable' cellspacing='0' cellpadding='0' border='0'><tbody><tr role='row' class='ui-widget-content footrow footrow-"+l+"'>");var p=a("tr:first",M),fa="<tr class='jqgfirstrow' role='row' style='height:auto'>";d.p.disableClick=!1;
+a("th",p).each(function(b){Y=d.p.colModel[b].width;void 0===d.p.colModel[b].resizable&&(d.p.colModel[b].resizable=!0);d.p.colModel[b].resizable?(U=document.createElement("span"),a(U).html("&#160;").addClass("ui-jqgrid-resize ui-jqgrid-resize-"+l).css("cursor","col-resize"),a(this).addClass(d.p.resizeclass)):U="";a(this).css("width",Y+"px").prepend(U);U=null;var c="";d.p.colModel[b].hidden&&(a(this).css("display","none"),c="display:none;");fa+="<td role='gridcell' style='height:0px;width:"+Y+"px;"+
+c+"'></td>";h.headers[b]={width:Y,el:this};S=d.p.colModel[b].sortable;"boolean"!==typeof S&&(S=d.p.colModel[b].sortable=!0);c=d.p.colModel[b].name;"cb"!==c&&"subgrid"!==c&&"rn"!==c&&d.p.viewsortcols[2]&&a(">div",this).addClass("ui-jqgrid-sortable");S&&(d.p.multiSort?d.p.viewsortcols[0]?(a("div span.s-ico",this).show(),d.p.colModel[b].lso&&a("div span.ui-icon-"+d.p.colModel[b].lso,this).removeClass("ui-state-disabled")):d.p.colModel[b].lso&&(a("div span.s-ico",this).show(),a("div span.ui-icon-"+d.p.colModel[b].lso,
+this).removeClass("ui-state-disabled")):d.p.viewsortcols[0]?(a("div span.s-ico",this).show(),b===d.p.lastsort&&a("div span.ui-icon-"+d.p.sortorder,this).removeClass("ui-state-disabled")):b===d.p.lastsort&&""!==d.p.sortname&&(a("div span.s-ico",this).show(),a("div span.ui-icon-"+d.p.sortorder,this).removeClass("ui-state-disabled")));d.p.footerrow&&(da+="<td role='gridcell' "+q(b,0,"",null,"",!1)+">&#160;</td>")}).mousedown(function(b){if(1===a(b.target).closest("th>span.ui-jqgrid-resize").length){var c=
+T(this);if(!0===d.p.forceFit){var e=d.p,f=c,g;for(g=c+1;g<d.p.colModel.length;g++)if(!0!==d.p.colModel[g].hidden){f=g;break}e.nv=f-c}h.dragStart(c,b,aa(c));return!1}}).click(function(b){if(d.p.disableClick)return d.p.disableClick=!1;var c="th>div.ui-jqgrid-sortable",e,f;d.p.viewsortcols[2]||(c="th>div>span>span.ui-grid-ico-sort");b=a(b.target).closest(c);if(1===b.length){var h;if(d.p.frozenColumns){var g=a(this)[0].id.substring(d.p.id.length+1);a(d.p.colModel).each(function(a){if(this.name===g)return h=
+a,!1})}else h=T(this);d.p.viewsortcols[2]||(e=!0,f=b.attr("sort"));null!=h&&E(a("div",this)[0].id,h,e,f,this);return!1}});if(d.p.sortable&&a.fn.sortable)try{a(d).jqGrid("sortableColumns",p)}catch(ma){}d.p.footerrow&&(da+="</tr></tbody></table>");fa+="</tr>";p=document.createElement("tbody");this.appendChild(p);a(this).addClass("ui-jqgrid-btable").append(fa);var fa=null,p=a("<table class='ui-jqgrid-htable' style='width:"+d.p.tblwidth+"px' role='presentation' aria-labelledby='gbox_"+this.id+"' cellspacing='0' cellpadding='0' border='0'></table>").append(M),
+W=d.p.caption&&!0===d.p.hiddengrid?!0:!1;k=a("<div class='ui-jqgrid-hbox"+("rtl"===l?"-rtl":"")+"'></div>");M=null;h.hDiv=document.createElement("div");a(h.hDiv).css({width:h.width+"px"}).addClass("ui-state-default ui-jqgrid-hdiv").append(k);a(k).append(p);p=null;W&&a(h.hDiv).hide();d.p.pager&&("string"===typeof d.p.pager?"#"!==d.p.pager.substr(0,1)&&(d.p.pager="#"+d.p.pager):d.p.pager="#"+a(d.p.pager).attr("id"),a(d.p.pager).css({width:h.width+"px"}).addClass("ui-state-default ui-jqgrid-pager ui-corner-bottom").appendTo(m),
+W&&a(d.p.pager).hide(),V(d.p.pager,""));!1===d.p.cellEdit&&!0===d.p.hoverrows&&a(d).bind("mouseover",function(b){I=a(b.target).closest("tr.jqgrow");"ui-subgrid"!==a(I).attr("class")&&a(I).addClass("ui-state-hover")}).bind("mouseout",function(b){I=a(b.target).closest("tr.jqgrow");a(I).removeClass("ui-state-hover")});var R,Z,ja;a(d).before(h.hDiv).click(function(b){G=b.target;I=a(G,d.rows).closest("tr.jqgrow");if(0===a(I).length||-1<I[0].className.indexOf("ui-state-disabled")||(a(G,d).closest("table.ui-jqgrid-btable").attr("id")||
+"").replace("_frozen","")!==d.id)return this;var c=a(G).hasClass("cbox"),e=a(d).triggerHandler("jqGridBeforeSelectRow",[I[0].id,b]),e=!1===e||"stop"===e?!1:!0;if(a.isFunction(d.p.beforeSelectRow)){var f=d.p.beforeSelectRow.call(d,I[0].id,b);if(!1===f||"stop"===f)e=!1}if("A"!==G.tagName&&("INPUT"!==G.tagName&&"TEXTAREA"!==G.tagName&&"OPTION"!==G.tagName&&"SELECT"!==G.tagName||c)){R=I[0].id;G=a(G).closest("tr.jqgrow>td");0<G.length&&(Z=a.jgrid.getCellIndex(G),ja=a(G).closest("td,th").html(),a(d).triggerHandler("jqGridCellSelect",
+[R,Z,ja,b]),a.isFunction(d.p.onCellSelect)&&d.p.onCellSelect.call(d,R,Z,ja,b));if(!0===d.p.cellEdit)if(d.p.multiselect&&c&&e)a(d).jqGrid("setSelection",R,!0,b);else if(0<G.length){R=I[0].rowIndex;try{a(d).jqGrid("editCell",R,Z,!0)}catch(h){}}if(e)if(d.p.multikey)b[d.p.multikey]?a(d).jqGrid("setSelection",R,!0,b):d.p.multiselect&&c&&(c=a("#jqg_"+a.jgrid.jqID(d.p.id)+"_"+R).is(":checked"),a("#jqg_"+a.jgrid.jqID(d.p.id)+"_"+R)[d.p.useProp?"prop":"attr"]("checked",c));else{if(d.p.multiselect&&d.p.multiboxonly&&
+!c){var g=d.p.frozenColumns?d.p.id+"_frozen":"";a(d.p.selarrrow).each(function(b,c){var e=a(d).jqGrid("getGridRowById",c);e&&a(e).removeClass("ui-state-highlight");a("#jqg_"+a.jgrid.jqID(d.p.id)+"_"+a.jgrid.jqID(c))[d.p.useProp?"prop":"attr"]("checked",!1);g&&(a("#"+a.jgrid.jqID(c),"#"+a.jgrid.jqID(g)).removeClass("ui-state-highlight"),a("#jqg_"+a.jgrid.jqID(d.p.id)+"_"+a.jgrid.jqID(c),"#"+a.jgrid.jqID(g))[d.p.useProp?"prop":"attr"]("checked",!1))});d.p.selarrrow=[]}a(d).jqGrid("setSelection",R,!0,
+b)}}}).bind("reloadGrid",function(b,c){!0===d.p.treeGrid&&(d.p.datatype=d.p.treedatatype);c&&c.current&&d.grid.selectionPreserver(d);"local"===d.p.datatype?(a(d).jqGrid("resetSelection"),d.p.data.length&&(H(),B())):d.p.treeGrid||(d.p.selrow=null,d.p.multiselect&&(d.p.selarrrow=[],Q(!1)),d.p.savedRow=[]);d.p.scroll&&v.call(d,!0,!1);if(c&&c.page){var e=c.page;e>d.p.lastpage&&(e=d.p.lastpage);1>e&&(e=1);d.p.page=e;d.grid.bDiv.scrollTop=d.grid.prevRowHeight?(e-1)*d.grid.prevRowHeight*d.p.rowNum:0}d.grid.prevRowHeight&&
+d.p.scroll?(delete d.p.lastpage,d.grid.populateVisible()):d.grid.populate();!0===d.p._inlinenav&&a(d).jqGrid("showAddEditButtons");return!1}).dblclick(function(b){G=b.target;I=a(G,d.rows).closest("tr.jqgrow");if(0!==a(I).length){R=I[0].rowIndex;Z=a.jgrid.getCellIndex(G);var c=a(d).triggerHandler("jqGridDblClickRow",[a(I).attr("id"),R,Z,b]);if(null!=c||a.isFunction(d.p.ondblClickRow)&&(c=d.p.ondblClickRow.call(d,a(I).attr("id"),R,Z,b),null!=c))return c}}).bind("contextmenu",function(b){G=b.target;
+I=a(G,d.rows).closest("tr.jqgrow");if(0!==a(I).length){d.p.multiselect||a(d).jqGrid("setSelection",I[0].id,!0,b);R=I[0].rowIndex;Z=a.jgrid.getCellIndex(G);var c=a(d).triggerHandler("jqGridRightClickRow",[a(I).attr("id"),R,Z,b]);if(null!=c||a.isFunction(d.p.onRightClickRow)&&(c=d.p.onRightClickRow.call(d,a(I).attr("id"),R,Z,b),null!=c))return c}});h.bDiv=document.createElement("div");c&&"auto"===String(d.p.height).toLowerCase()&&(d.p.height="100%");a(h.bDiv).append(a('<div style="position:relative;'+
+(c&&8>a.jgrid.msiever()?"height:0.01%;":"")+'"></div>').append("<div></div>").append(this)).addClass("ui-jqgrid-bdiv").css({height:d.p.height+(isNaN(d.p.height)?"":"px"),width:h.width+"px"}).scroll(h.scrollGrid);a("table:first",h.bDiv).css({width:d.p.tblwidth+"px"});a.support.tbody||2===a("tbody",this).length&&a("tbody:gt(0)",this).remove();d.p.multikey&&(a.jgrid.msie?a(h.bDiv).bind("selectstart",function(){return!1}):a(h.bDiv).bind("mousedown",function(){return!1}));W&&a(h.bDiv).hide();h.cDiv=document.createElement("div");
+var ka=!0===d.p.hidegrid?a("<a role='link' class='ui-jqgrid-titlebar-close ui-corner-all HeaderButton' "+(d.p.showhide?"title='"+d.p.showhide+"'":"")+" />").hover(function(){ka.addClass("ui-state-hover")},function(){ka.removeClass("ui-state-hover")}).append("<span class='ui-icon ui-icon-circle-triangle-n'></span>").css("rtl"===l?"left":"right","0px"):"";a(h.cDiv).append(ka).append("<span class='ui-jqgrid-title'>"+d.p.caption+"</span>").addClass("ui-jqgrid-titlebar ui-jqgrid-caption"+("rtl"===l?"-rtl":
+"")+" ui-widget-header ui-corner-top ui-helper-clearfix");a(h.cDiv).insertBefore(h.hDiv);d.p.toolbar[0]&&(h.uDiv=document.createElement("div"),"top"===d.p.toolbar[1]?a(h.uDiv).insertBefore(h.hDiv):"bottom"===d.p.toolbar[1]&&a(h.uDiv).insertAfter(h.hDiv),"both"===d.p.toolbar[1]?(h.ubDiv=document.createElement("div"),a(h.uDiv).addClass("ui-userdata ui-state-default").attr("id","t_"+this.id).insertBefore(h.hDiv),a(h.ubDiv).addClass("ui-userdata ui-state-default").attr("id","tb_"+this.id).insertAfter(h.hDiv),
+W&&a(h.ubDiv).hide()):a(h.uDiv).width(h.width).addClass("ui-userdata ui-state-default").attr("id","t_"+this.id),W&&a(h.uDiv).hide());d.p.toppager&&(d.p.toppager=a.jgrid.jqID(d.p.id)+"_toppager",h.topDiv=a("<div id='"+d.p.toppager+"'></div>")[0],d.p.toppager="#"+d.p.toppager,a(h.topDiv).addClass("ui-state-default ui-jqgrid-toppager").width(h.width).insertBefore(h.hDiv),V(d.p.toppager,"_t"));d.p.footerrow&&(h.sDiv=a("<div class='ui-jqgrid-sdiv'></div>")[0],k=a("<div class='ui-jqgrid-hbox"+("rtl"===
+l?"-rtl":"")+"'></div>"),a(h.sDiv).append(k).width(h.width).insertAfter(h.hDiv),a(k).append(da),h.footers=a(".ui-jqgrid-ftable",h.sDiv)[0].rows[0].cells,d.p.rownumbers&&(h.footers[0].className="ui-state-default jqgrid-rownum"),W&&a(h.sDiv).hide());k=null;if(d.p.caption){var la=d.p.datatype;!0===d.p.hidegrid&&(a(".ui-jqgrid-titlebar-close",h.cDiv).click(function(b){var c=a.isFunction(d.p.onHeaderClick),e=".ui-jqgrid-bdiv, .ui-jqgrid-hdiv, .ui-jqgrid-pager, .ui-jqgrid-sdiv",f,g=this;!0===d.p.toolbar[0]&&
+("both"===d.p.toolbar[1]&&(e+=", #"+a(h.ubDiv).attr("id")),e+=", #"+a(h.uDiv).attr("id"));f=a(e,"#gview_"+a.jgrid.jqID(d.p.id)).length;"visible"===d.p.gridstate?a(e,"#gbox_"+a.jgrid.jqID(d.p.id)).slideUp("fast",function(){f--;0===f&&(a("span",g).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s"),d.p.gridstate="hidden",a("#gbox_"+a.jgrid.jqID(d.p.id)).hasClass("ui-resizable")&&a(".ui-resizable-handle","#gbox_"+a.jgrid.jqID(d.p.id)).hide(),a(d).triggerHandler("jqGridHeaderClick",
+[d.p.gridstate,b]),c&&(W||d.p.onHeaderClick.call(d,d.p.gridstate,b)))}):"hidden"===d.p.gridstate&&a(e,"#gbox_"+a.jgrid.jqID(d.p.id)).slideDown("fast",function(){f--;0===f&&(a("span",g).removeClass("ui-icon-circle-triangle-s").addClass("ui-icon-circle-triangle-n"),W&&(d.p.datatype=la,L(),W=!1),d.p.gridstate="visible",a("#gbox_"+a.jgrid.jqID(d.p.id)).hasClass("ui-resizable")&&a(".ui-resizable-handle","#gbox_"+a.jgrid.jqID(d.p.id)).show(),a(d).triggerHandler("jqGridHeaderClick",[d.p.gridstate,b]),c&&
+(W||d.p.onHeaderClick.call(d,d.p.gridstate,b)))});return!1}),W&&(d.p.datatype="local",a(".ui-jqgrid-titlebar-close",h.cDiv).trigger("click")))}else a(h.cDiv).hide(),a(h.hDiv).addClass("ui-corner-top");a(h.hDiv).after(h.bDiv).mousemove(function(a){if(h.resizing)return h.dragMove(a),!1});a(".ui-jqgrid-labels",h.hDiv).bind("selectstart",function(){return!1});a(document).bind("mouseup.jqGrid"+d.p.id,function(){return h.resizing?(h.dragEnd(),!1):!0});d.formatCol=q;d.sortData=E;d.updatepager=function(b,
+c){var e,f,h,g,k,l,p,n="",m=d.p.pager?"_"+a.jgrid.jqID(d.p.pager.substr(1)):"",q=d.p.toppager?"_"+d.p.toppager.substr(1):"";h=parseInt(d.p.page,10)-1;0>h&&(h=0);h*=parseInt(d.p.rowNum,10);k=h+d.p.reccount;if(d.p.scroll){e=a("tbody:first > tr:gt(0)",d.grid.bDiv);h=k-e.length;d.p.reccount=e.length;if(e=e.outerHeight()||d.grid.prevRowHeight)f=h*e,p=parseInt(d.p.records,10)*e,a(">div:first",d.grid.bDiv).css({height:p}).children("div:first").css({height:f,display:f?"":"none"}),0==d.grid.bDiv.scrollTop&&
+1<d.p.page&&(d.grid.bDiv.scrollTop=d.p.rowNum*(d.p.page-1)*e);d.grid.bDiv.scrollLeft=d.grid.hDiv.scrollLeft}n=d.p.pager||"";if(n+=d.p.toppager?n?","+d.p.toppager:d.p.toppager:"")p=a.jgrid.formatter.integer||{},e=r(d.p.page),f=r(d.p.lastpage),a(".selbox",n)[this.p.useProp?"prop":"attr"]("disabled",!1),!0===d.p.pginput&&(a(".ui-pg-input",n).val(d.p.page),g=d.p.toppager?"#sp_1"+m+",#sp_1"+q:"#sp_1"+m,a(g).html(a.fmatter?a.fmatter.util.NumberFormat(d.p.lastpage,p):d.p.lastpage)),d.p.viewrecords&&(0===
+d.p.reccount?a(".ui-paging-info",n).html(d.p.emptyrecords):(g=h+1,l=d.p.records,a.fmatter&&(g=a.fmatter.util.NumberFormat(g,p),k=a.fmatter.util.NumberFormat(k,p),l=a.fmatter.util.NumberFormat(l,p)),a(".ui-paging-info",n).html(a.jgrid.format(d.p.recordtext,g,k,l)))),!0===d.p.pgbuttons&&(0>=e&&(e=f=0),1===e||0===e?(a("#first"+m+", #prev"+m).addClass("ui-state-disabled").removeClass("ui-state-hover"),d.p.toppager&&a("#first_t"+q+", #prev_t"+q).addClass("ui-state-disabled").removeClass("ui-state-hover")):
+(a("#first"+m+", #prev"+m).removeClass("ui-state-disabled"),d.p.toppager&&a("#first_t"+q+", #prev_t"+q).removeClass("ui-state-disabled")),e===f||0===e?(a("#next"+m+", #last"+m).addClass("ui-state-disabled").removeClass("ui-state-hover"),d.p.toppager&&a("#next_t"+q+", #last_t"+q).addClass("ui-state-disabled").removeClass("ui-state-hover")):(a("#next"+m+", #last"+m).removeClass("ui-state-disabled"),d.p.toppager&&a("#next_t"+q+", #last_t"+q).removeClass("ui-state-disabled")));!0===b&&!0===d.p.rownumbers&&
+a(">td.jqgrid-rownum",d.rows).each(function(b){a(this).html(h+1+b)});c&&d.p.jqgdnd&&a(d).jqGrid("gridDnD","updateDnD");a(d).triggerHandler("jqGridGridComplete");a.isFunction(d.p.gridComplete)&&d.p.gridComplete.call(d);a(d).triggerHandler("jqGridAfterGridComplete")};d.refreshIndex=B;d.setHeadCheckBox=Q;d.constructTr=D;d.formatter=function(a,b,c,d,e){return t(a,b,c,d,e)};a.extend(h,{populate:L,emptyRows:v,beginReq:O,endReq:z});this.grid=h;d.addXmlData=function(a){C(a,d.grid.bDiv)};d.addJSONData=function(a){F(a,
+d.grid.bDiv)};this.grid.cols=this.rows[0].cells;a(d).triggerHandler("jqGridInitGrid");a.isFunction(d.p.onInitGrid)&&d.p.onInitGrid.call(d);L();d.p.hiddengrid=!1}}}})};a.jgrid.extend({getGridParam:function(a){var e=this[0];if(e&&e.grid)return a?void 0!==e.p[a]?e.p[a]:null:e.p},setGridParam:function(b,e){return this.each(function(){null==e&&(e=!1);this.grid&&"object"===typeof b&&(!0===e?this.p=a.extend({},this.p,b):a.extend(!0,this.p,b))})},getGridRowById:function(b){var e;this.each(function(){try{for(var c=
+this.rows.length;c--;)if(b.toString()===this.rows[c].id){e=this.rows[c];break}}catch(f){e=a(this.grid.bDiv).find("#"+a.jgrid.jqID(b))}});return e},getDataIDs:function(){var b=[],e=0,c,f=0;this.each(function(){if((c=this.rows.length)&&0<c)for(;e<c;)a(this.rows[e]).hasClass("jqgrow")&&(b[f]=this.rows[e].id,f++),e++});return b},setSelection:function(b,e,c){return this.each(function(){var f,g,d,h,k,l;void 0!==b&&(e=!1===e?!1:!0,!(g=a(this).jqGrid("getGridRowById",b))||!g.className||-1<g.className.indexOf("ui-state-disabled")||
+(!0===this.p.scrollrows&&(d=a(this).jqGrid("getGridRowById",b).rowIndex,0<=d&&(f=a(this.grid.bDiv)[0].clientHeight,h=a(this.grid.bDiv)[0].scrollTop,k=a(this.rows[d]).position().top,d=this.rows[d].clientHeight,k+d>=f+h?a(this.grid.bDiv)[0].scrollTop=k-(f+h)+d+h:k<f+h&&k<h&&(a(this.grid.bDiv)[0].scrollTop=k))),!0===this.p.frozenColumns&&(l=this.p.id+"_frozen"),this.p.multiselect?(this.setHeadCheckBox(!1),this.p.selrow=g.id,h=a.inArray(this.p.selrow,this.p.selarrrow),-1===h?("ui-subgrid"!==g.className&&
+a(g).addClass("ui-state-highlight").attr("aria-selected","true"),f=!0,this.p.selarrrow.push(this.p.selrow)):("ui-subgrid"!==g.className&&a(g).removeClass("ui-state-highlight").attr("aria-selected","false"),f=!1,this.p.selarrrow.splice(h,1),k=this.p.selarrrow[0],this.p.selrow=void 0===k?null:k),a("#jqg_"+a.jgrid.jqID(this.p.id)+"_"+a.jgrid.jqID(g.id))[this.p.useProp?"prop":"attr"]("checked",f),l&&(-1===h?a("#"+a.jgrid.jqID(b),"#"+a.jgrid.jqID(l)).addClass("ui-state-highlight"):a("#"+a.jgrid.jqID(b),
+"#"+a.jgrid.jqID(l)).removeClass("ui-state-highlight"),a("#jqg_"+a.jgrid.jqID(this.p.id)+"_"+a.jgrid.jqID(b),"#"+a.jgrid.jqID(l))[this.p.useProp?"prop":"attr"]("checked",f)),e&&(a(this).triggerHandler("jqGridSelectRow",[g.id,f,c]),this.p.onSelectRow&&this.p.onSelectRow.call(this,g.id,f,c))):"ui-subgrid"!==g.className&&(this.p.selrow!==g.id?((f=a(this).jqGrid("getGridRowById",this.p.selrow))&&a(f).removeClass("ui-state-highlight").attr({"aria-selected":"false",tabindex:"-1"}),a(g).addClass("ui-state-highlight").attr({"aria-selected":"true",
+tabindex:"0"}),l&&(a("#"+a.jgrid.jqID(this.p.selrow),"#"+a.jgrid.jqID(l)).removeClass("ui-state-highlight"),a("#"+a.jgrid.jqID(b),"#"+a.jgrid.jqID(l)).addClass("ui-state-highlight")),f=!0):f=!1,this.p.selrow=g.id,e&&(a(this).triggerHandler("jqGridSelectRow",[g.id,f,c]),this.p.onSelectRow&&this.p.onSelectRow.call(this,g.id,f,c)))))})},resetSelection:function(b){return this.each(function(){var e=this,c,f;!0===e.p.frozenColumns&&(f=e.p.id+"_frozen");if(void 0!==b){c=b===e.p.selrow?e.p.selrow:b;a("#"+
+a.jgrid.jqID(e.p.id)+" tbody:first tr#"+a.jgrid.jqID(c)).removeClass("ui-state-highlight").attr("aria-selected","false");f&&a("#"+a.jgrid.jqID(c),"#"+a.jgrid.jqID(f)).removeClass("ui-state-highlight");if(e.p.multiselect){a("#jqg_"+a.jgrid.jqID(e.p.id)+"_"+a.jgrid.jqID(c),"#"+a.jgrid.jqID(e.p.id))[e.p.useProp?"prop":"attr"]("checked",!1);if(f)a("#jqg_"+a.jgrid.jqID(e.p.id)+"_"+a.jgrid.jqID(c),"#"+a.jgrid.jqID(f))[e.p.useProp?"prop":"attr"]("checked",!1);e.setHeadCheckBox(!1);c=a.inArray(a.jgrid.jqID(c),
+e.p.selarrrow);-1!==c&&e.p.selarrrow.splice(c,1)}c=null}else e.p.multiselect?(a(e.p.selarrrow).each(function(b,c){a(a(e).jqGrid("getGridRowById",c)).removeClass("ui-state-highlight").attr("aria-selected","false");a("#jqg_"+a.jgrid.jqID(e.p.id)+"_"+a.jgrid.jqID(c))[e.p.useProp?"prop":"attr"]("checked",!1);f&&(a("#"+a.jgrid.jqID(c),"#"+a.jgrid.jqID(f)).removeClass("ui-state-highlight"),a("#jqg_"+a.jgrid.jqID(e.p.id)+"_"+a.jgrid.jqID(c),"#"+a.jgrid.jqID(f))[e.p.useProp?"prop":"attr"]("checked",!1))}),
+e.setHeadCheckBox(!1),e.p.selarrrow=[],e.p.selrow=null):e.p.selrow&&(a("#"+a.jgrid.jqID(e.p.id)+" tbody:first tr#"+a.jgrid.jqID(e.p.selrow)).removeClass("ui-state-highlight").attr("aria-selected","false"),f&&a("#"+a.jgrid.jqID(e.p.selrow),"#"+a.jgrid.jqID(f)).removeClass("ui-state-highlight"),e.p.selrow=null);!0===e.p.cellEdit&&0<=parseInt(e.p.iCol,10)&&0<=parseInt(e.p.iRow,10)&&(a("td:eq("+e.p.iCol+")",e.rows[e.p.iRow]).removeClass("edit-cell ui-state-highlight"),a(e.rows[e.p.iRow]).removeClass("selected-row ui-state-hover"));
+e.p.savedRow=[]})},getRowData:function(b){var e={},c,f=!1,g,d=0;this.each(function(){var h=this,k,l;if(void 0===b)f=!0,c=[],g=h.rows.length;else{l=a(h).jqGrid("getGridRowById",b);if(!l)return e;g=2}for(;d<g;)f&&(l=h.rows[d]),a(l).hasClass("jqgrow")&&(a('td[role="gridcell"]',l).each(function(b){k=h.p.colModel[b].name;if("cb"!==k&&"subgrid"!==k&&"rn"!==k)if(!0===h.p.treeGrid&&k===h.p.ExpandColumn)e[k]=a.jgrid.htmlDecode(a("span:first",this).html());else try{e[k]=a.unformat.call(h,this,{rowId:l.id,colModel:h.p.colModel[b]},
+b)}catch(c){e[k]=a.jgrid.htmlDecode(a(this).html())}}),f&&(c.push(e),e={})),d++});return c||e},delRowData:function(b){var e=!1,c,f,g;this.each(function(){c=a(this).jqGrid("getGridRowById",b);if(!c)return!1;this.p.subGrid&&(g=a(c).next(),g.hasClass("ui-subgrid")&&g.remove());a(c).remove();this.p.records--;this.p.reccount--;this.updatepager(!0,!1);e=!0;this.p.multiselect&&(f=a.inArray(b,this.p.selarrrow),-1!==f&&this.p.selarrrow.splice(f,1));this.p.selrow=this.p.multiselect&&0<this.p.selarrrow.length?
+this.p.selarrrow[this.p.selarrrow.length-1]:null;if("local"===this.p.datatype){var d=a.jgrid.stripPref(this.p.idPrefix,b),d=this.p._index[d];void 0!==d&&(this.p.data.splice(d,1),this.refreshIndex())}if(!0===this.p.altRows&&e){var h=this.p.altclass;a(this.rows).each(function(b){1===b%2?a(this).addClass(h):a(this).removeClass(h)})}});return e},setRowData:function(b,e,c){var f,g=!0,d;this.each(function(){if(!this.grid)return!1;var h=this,k,l,p=typeof c,m={};l=a(this).jqGrid("getGridRowById",b);if(!l)return!1;
+if(e)try{if(a(this.p.colModel).each(function(c){f=this.name;var g=a.jgrid.getAccessor(e,f);void 0!==g&&(m[f]=this.formatter&&"string"===typeof this.formatter&&"date"===this.formatter?a.unformat.date.call(h,g,this):g,k=h.formatter(b,m[f],c,e,"edit"),d=this.title?{title:a.jgrid.stripHtml(k)}:{},!0===h.p.treeGrid&&f===h.p.ExpandColumn?a("td[role='gridcell']:eq("+c+") > span:first",l).html(k).attr(d):a("td[role='gridcell']:eq("+c+")",l).html(k).attr(d))}),"local"===h.p.datatype){var r=a.jgrid.stripPref(h.p.idPrefix,
+b),q=h.p._index[r],n;if(h.p.treeGrid)for(n in h.p.treeReader)h.p.treeReader.hasOwnProperty(n)&&delete m[h.p.treeReader[n]];void 0!==q&&(h.p.data[q]=a.extend(!0,h.p.data[q],m));m=null}}catch(t){g=!1}g&&("string"===p?a(l).addClass(c):null!==c&&"object"===p&&a(l).css(c),a(h).triggerHandler("jqGridAfterGridComplete"))});return g},addRowData:function(b,e,c,f){-1==["first","last","before","after"].indexOf(c)&&(c="last");var g=!1,d,h,k,l,p,m,r,q,n="",t,u,w,s,x,A;e&&(a.isArray(e)?(t=!0,u=b):(e=[e],t=!1),
+this.each(function(){var v=e.length;p=!0===this.p.rownumbers?1:0;k=!0===this.p.multiselect?1:0;l=!0===this.p.subGrid?1:0;t||(void 0!==b?b=String(b):(b=a.jgrid.randId(),!1!==this.p.keyName&&(u=this.p.keyName,void 0!==e[0][u]&&(b=e[0][u]))));w=this.p.altclass;for(var H=0,B="",D={},C=a.isFunction(this.p.afterInsertRow)?!0:!1;H<v;){s=e[H];h=[];if(t){try{b=s[u],void 0===b&&(b=a.jgrid.randId())}catch(F){b=a.jgrid.randId()}B=!0===this.p.altRows?0===(this.rows.length-1)%2?w:"":""}A=b;b=this.p.idPrefix+b;
+p&&(n=this.formatCol(0,1,"",null,b,!0),h[h.length]='<td role="gridcell" class="ui-state-default jqgrid-rownum" '+n+">0</td>");k&&(q='<input role="checkbox" type="checkbox" id="jqg_'+this.p.id+"_"+b+'" class="cbox"/>',n=this.formatCol(p,1,"",null,b,!0),h[h.length]='<td role="gridcell" '+n+">"+q+"</td>");l&&(h[h.length]=a(this).jqGrid("addSubGridCell",k+p,1));for(r=k+l+p;r<this.p.colModel.length;r++)x=this.p.colModel[r],d=x.name,D[d]=s[d],q=this.formatter(b,a.jgrid.getAccessor(s,d),r,s),n=this.formatCol(r,
+1,q,s,b,D),h[h.length]='<td role="gridcell" '+n+">"+q+"</td>";h.unshift(this.constructTr(b,!1,B,D,s,!1));h[h.length]="</tr>";if(0===this.rows.length)a("table:first",this.grid.bDiv).append(h.join(""));else switch(c){case "last":a(this.rows[this.rows.length-1]).after(h.join(""));m=this.rows.length-1;break;case "first":a(this.rows[0]).after(h.join(""));m=1;break;case "after":if(m=a(this).jqGrid("getGridRowById",f))a(this.rows[m.rowIndex+1]).hasClass("ui-subgrid")?a(this.rows[m.rowIndex+1]).after(h):
+a(m).after(h.join("")),m=m.rowIndex+1;break;case "before":if(m=a(this).jqGrid("getGridRowById",f))a(m).before(h.join("")),m=m.rowIndex-1}!0===this.p.subGrid&&a(this).jqGrid("addSubGrid",k+p,m);this.p.records++;this.p.reccount++;a(this).triggerHandler("jqGridAfterInsertRow",[b,s,s]);C&&this.p.afterInsertRow.call(this,b,s,s);H++;"local"===this.p.datatype&&(D[this.p.localReader.id]=A,this.p._index[A]=this.p.data.length,this.p.data.push(D),D={})}!0!==this.p.altRows||t||("last"===c?1===(this.rows.length-
+1)%2&&a(this.rows[this.rows.length-1]).addClass(w):a(this.rows).each(function(b){1===b%2?a(this).addClass(w):a(this).removeClass(w)}));this.updatepager(!0,!0);g=!0}));return g},footerData:function(b,e,c){function f(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}var g,d=!1,h={},k;void 0==b&&(b="get");"boolean"!==typeof c&&(c=!0);b=b.toLowerCase();this.each(function(){var l=this,p;if(!l.grid||!l.p.footerrow||"set"===b&&f(e))return!1;d=!0;a(this.p.colModel).each(function(f){g=this.name;"set"===
+b?void 0!==e[g]&&(p=c?l.formatter("",e[g],f,e,"edit"):e[g],k=this.title?{title:a.jgrid.stripHtml(p)}:{},a("tr.footrow td:eq("+f+")",l.grid.sDiv).html(p).attr(k),d=!0):"get"===b&&(h[g]=a("tr.footrow td:eq("+f+")",l.grid.sDiv).html())})});return"get"===b?h:d},showHideCol:function(b,e){return this.each(function(){var c=this,f=!1,g=a.jgrid.cell_width?0:c.p.cellLayout,d;if(c.grid){"string"===typeof b&&(b=[b]);e="none"!==e?"":"none";var h=""===e?!0:!1,k=c.p.groupHeader&&("object"===typeof c.p.groupHeader||
+a.isFunction(c.p.groupHeader));k&&a(c).jqGrid("destroyGroupHeader",!1);a(this.p.colModel).each(function(k){if(-1!==a.inArray(this.name,b)&&this.hidden===h){if(!0===c.p.frozenColumns&&!0===this.frozen)return!0;a("tr[role=row]",c.grid.hDiv).each(function(){a(this.cells[k]).css("display",e)});a(c.rows).each(function(){a(this).hasClass("jqgroup")||a(this.cells[k]).css("display",e)});c.p.footerrow&&a("tr.footrow td:eq("+k+")",c.grid.sDiv).css("display",e);d=parseInt(this.width,10);c.p.tblwidth="none"===
+e?c.p.tblwidth-(d+g):c.p.tblwidth+(d+g);this.hidden=!h;f=!0;a(c).triggerHandler("jqGridShowHideCol",[h,this.name,k])}});!0===f&&(!0!==c.p.shrinkToFit||isNaN(c.p.height)||(c.p.tblwidth+=parseInt(c.p.scrollOffset,10)),a(c).jqGrid("setGridWidth",!0===c.p.shrinkToFit?c.p.tblwidth:c.p.width));k&&a(c).jqGrid("setGroupHeaders",c.p.groupHeader)}})},hideCol:function(b){return this.each(function(){a(this).jqGrid("showHideCol",b,"none")})},showCol:function(b){return this.each(function(){a(this).jqGrid("showHideCol",
+b,"")})},remapColumns:function(b,e,c){function f(c){var d;d=c.length?a.makeArray(c):a.extend({},c);a.each(b,function(a){c[a]=d[this]})}function g(c,d){a(">tr"+(d||""),c).each(function(){var c=this,d=a.makeArray(c.cells);a.each(b,function(){var a=d[this];a&&c.appendChild(a)})})}var d=this.get(0);f(d.p.colModel);f(d.p.colNames);f(d.grid.headers);g(a("thead:first",d.grid.hDiv),c&&":not(.ui-jqgrid-labels)");e&&g(a("#"+a.jgrid.jqID(d.p.id)+" tbody:first"),".jqgfirstrow, tr.jqgrow, tr.jqfoot");d.p.footerrow&&
+g(a("tbody:first",d.grid.sDiv));d.p.remapColumns&&(d.p.remapColumns.length?f(d.p.remapColumns):d.p.remapColumns=a.makeArray(b));d.p.lastsort=a.inArray(d.p.lastsort,b);d.p.treeGrid&&(d.p.expColInd=a.inArray(d.p.expColInd,b));a(d).triggerHandler("jqGridRemapColumns",[b,e,c])},setGridWidth:function(b,e){return this.each(function(){if(this.grid){var c=this,f,g=0,d=a.jgrid.cell_width?0:c.p.cellLayout,h,k=0,l=!1,p=c.p.scrollOffset,m,r=0,q;"boolean"!==typeof e&&(e=c.p.shrinkToFit);if(!isNaN(b)){b=parseInt(b,
+10);c.grid.width=c.p.width=b;a("#gbox_"+a.jgrid.jqID(c.p.id)).css("width",b+"px");a("#gview_"+a.jgrid.jqID(c.p.id)).css("width",b+"px");a(c.grid.bDiv).css("width",b+"px");a(c.grid.hDiv).css("width",b+"px");c.p.pager&&a(c.p.pager).css("width",b+"px");c.p.toppager&&a(c.p.toppager).css("width",b+"px");!0===c.p.toolbar[0]&&(a(c.grid.uDiv).css("width",b+"px"),"both"===c.p.toolbar[1]&&a(c.grid.ubDiv).css("width",b+"px"));c.p.footerrow&&a(c.grid.sDiv).css("width",b+"px");!1===e&&!0===c.p.forceFit&&(c.p.forceFit=
+!1);if(!0===e){a.each(c.p.colModel,function(){!1===this.hidden&&(f=this.widthOrg,g+=f+d,this.fixed?r+=f+d:k++)});if(0===k)return;c.p.tblwidth=g;m=b-d*k-r;!isNaN(c.p.height)&&(a(c.grid.bDiv)[0].clientHeight<a(c.grid.bDiv)[0].scrollHeight||1===c.rows.length)&&(l=!0,m-=p);var g=0,n=0<c.grid.cols.length;a.each(c.p.colModel,function(a){!1!==this.hidden||this.fixed||(f=this.widthOrg,f=Math.round(m*f/(c.p.tblwidth-d*k-r)),0>f||(this.width=f,g+=f,c.grid.headers[a].width=f,c.grid.headers[a].el.style.width=
+f+"px",c.p.footerrow&&(c.grid.footers[a].style.width=f+"px"),n&&(c.grid.cols[a].style.width=f+"px"),h=a))});if(!h)return;q=0;l?b-r-(g+d*k)!==p&&(q=b-r-(g+d*k)-p):1!==Math.abs(b-r-(g+d*k))&&(q=b-r-(g+d*k));c.p.colModel[h].width+=q;c.p.tblwidth=g+q+d*k+r;c.p.tblwidth>b?(l=c.p.tblwidth-parseInt(b,10),c.p.tblwidth=b,f=c.p.colModel[h].width-=l):f=c.p.colModel[h].width;c.grid.headers[h].width=f;c.grid.headers[h].el.style.width=f+"px";n&&(c.grid.cols[h].style.width=f+"px");c.p.footerrow&&(c.grid.footers[h].style.width=
+f+"px")}c.p.tblwidth&&(a("table:first",c.grid.bDiv).css("width",c.p.tblwidth+"px"),a("table:first",c.grid.hDiv).css("width",c.p.tblwidth+"px"),c.grid.hDiv.scrollLeft=c.grid.bDiv.scrollLeft,c.p.footerrow&&a("table:first",c.grid.sDiv).css("width",c.p.tblwidth+"px"))}}})},setGridHeight:function(b){return this.each(function(){if(this.grid){var e=a(this.grid.bDiv);e.css({height:b+(isNaN(b)?"":"px")});!0===this.p.frozenColumns&&a("#"+a.jgrid.jqID(this.p.id)+"_frozen").parent().height(e.height()-16);this.p.height=
+b;this.p.scroll&&this.grid.populateVisible()}})},setCaption:function(b){return this.each(function(){this.p.caption=b;a("span.ui-jqgrid-title, span.ui-jqgrid-title-rtl",this.grid.cDiv).html(b);a(this.grid.cDiv).show();a(this.grid.hDiv).removeClass("ui-corner-top")})},setLabel:function(b,e,c,f){return this.each(function(){var g=-1;if(this.grid&&void 0!==b&&(a(this.p.colModel).each(function(a){if(this.name===b)return g=a,!1}),0<=g)){var d=a("tr.ui-jqgrid-labels th:eq("+g+")",this.grid.hDiv);if(e){var h=
+a(".s-ico",d);a("[id^=jqgh_]",d).empty().html(e).append(h);this.p.colNames[g]=e}c&&("string"===typeof c?a(d).addClass(c):a(d).css(c));"object"===typeof f&&a(d).attr(f)}})},setCell:function(b,e,c,f,g,d){return this.each(function(){var h=-1,k,l;if(this.grid&&(isNaN(e)?a(this.p.colModel).each(function(a){if(this.name===e)return h=a,!1}):h=parseInt(e,10),0<=h&&(k=a(this).jqGrid("getGridRowById",b)))){var p=a("td:eq("+h+")",k);l=0;var m=[];if(""!==c||!0===d){for(;l<k.cells.length;)m.push(k.cells[l].innerHTML),
+l++;k=this.formatter(b,c,h,m,"edit");l=this.p.colModel[h].title?{title:a.jgrid.stripHtml(k)}:{};this.p.treeGrid&&0<a(".tree-wrap",a(p)).length?a("span",a(p)).html(k).attr(l):a(p).html(k).attr(l);"local"===this.p.datatype&&(k=this.p.colModel[h],c=k.formatter&&"string"===typeof k.formatter&&"date"===k.formatter?a.unformat.date.call(this,c,k):c,l=this.p._index[a.jgrid.stripPref(this.p.idPrefix,b)],void 0!==l&&(this.p.data[l][k.name]=c))}"string"===typeof f?a(p).addClass(f):f&&a(p).css(f);"object"===
+typeof g&&a(p).attr(g)}})},getCell:function(b,e){var c=!1;this.each(function(){var f=-1;if(this.grid&&(isNaN(e)?a(this.p.colModel).each(function(a){if(this.name===e)return f=a,!1}):f=parseInt(e,10),0<=f)){var g=a(this).jqGrid("getGridRowById",b);if(g)try{c=a.unformat.call(this,a("td:eq("+f+")",g),{rowId:g.id,colModel:this.p.colModel[f]},f)}catch(d){c=a.jgrid.htmlDecode(a("td:eq("+f+")",g).html())}}});return c},getCol:function(b,e,c){var f=[],g,d=0,h,k,l;e="boolean"!==typeof e?!1:e;void 0===c&&(c=
+!1);this.each(function(){var p=-1;if(this.grid&&(isNaN(b)?a(this.p.colModel).each(function(a){if(this.name===b)return p=a,!1}):p=parseInt(b,10),0<=p)){var m=this.rows.length,r=0,q=0;if(m&&0<m){for(;r<m;){if(a(this.rows[r]).hasClass("jqgrow")){try{g=a.unformat.call(this,a(this.rows[r].cells[p]),{rowId:this.rows[r].id,colModel:this.p.colModel[p]},p)}catch(n){g=a.jgrid.htmlDecode(this.rows[r].cells[p].innerHTML)}c?(l=parseFloat(g),isNaN(l)||(d+=l,void 0===k&&(k=h=l),h=Math.min(h,l),k=Math.max(k,l),q++)):
+e?f.push({id:this.rows[r].id,value:g}):f.push(g)}r++}if(c)switch(c.toLowerCase()){case "sum":f=d;break;case "avg":f=d/q;break;case "count":f=m-1;break;case "min":f=h;break;case "max":f=k}}}});return f},clearGridData:function(b){return this.each(function(){if(this.grid){"boolean"!==typeof b&&(b=!1);if(this.p.deepempty)a("#"+a.jgrid.jqID(this.p.id)+" tbody:first tr:gt(0)").remove();else{var e=a("#"+a.jgrid.jqID(this.p.id)+" tbody:first tr:first")[0];a("#"+a.jgrid.jqID(this.p.id)+" tbody:first").empty().append(e)}this.p.footerrow&&
+b&&a(".ui-jqgrid-ftable td",this.grid.sDiv).html("&#160;");this.p.selrow=null;this.p.selarrrow=[];this.p.savedRow=[];this.p.records=0;this.p.page=1;this.p.lastpage=0;this.p.reccount=0;this.p.data=[];this.p._index={};this.updatepager(!0,!1)}})},getInd:function(b,e){var c=!1,f;this.each(function(){(f=a(this).jqGrid("getGridRowById",b))&&(c=!0===e?f:f.rowIndex)});return c},bindKeys:function(b){var e=a.extend({onEnter:null,onSpace:null,onLeftKey:null,onRightKey:null,scrollingRows:!0},b||{});return this.each(function(){var b=
+this;a("body").is("[role]")||a("body").attr("role","application");b.p.scrollrows=e.scrollingRows;a(b).keydown(function(f){var g=a(b).find("tr[tabindex=0]")[0],d,h,k,l=b.p.treeReader.expanded_field;if(g)if(k=b.p._index[a.jgrid.stripPref(b.p.idPrefix,g.id)],37===f.keyCode||38===f.keyCode||39===f.keyCode||40===f.keyCode){if(38===f.keyCode){h=g.previousSibling;d="";if(h)if(a(h).is(":hidden"))for(;h;){if(h=h.previousSibling,!a(h).is(":hidden")&&a(h).hasClass("jqgrow")){d=h.id;break}}else d=h.id;a(b).jqGrid("setSelection",
+d,!0,f);f.preventDefault()}if(40===f.keyCode){h=g.nextSibling;d="";if(h)if(a(h).is(":hidden"))for(;h;){if(h=h.nextSibling,!a(h).is(":hidden")&&a(h).hasClass("jqgrow")){d=h.id;break}}else d=h.id;a(b).jqGrid("setSelection",d,!0,f);f.preventDefault()}37===f.keyCode&&(b.p.treeGrid&&b.p.data[k][l]&&a(g).find("div.treeclick").trigger("click"),a(b).triggerHandler("jqGridKeyLeft",[b.p.selrow]),a.isFunction(e.onLeftKey)&&e.onLeftKey.call(b,b.p.selrow));39===f.keyCode&&(b.p.treeGrid&&!b.p.data[k][l]&&a(g).find("div.treeclick").trigger("click"),
+a(b).triggerHandler("jqGridKeyRight",[b.p.selrow]),a.isFunction(e.onRightKey)&&e.onRightKey.call(b,b.p.selrow))}else 13===f.keyCode?(a(b).triggerHandler("jqGridKeyEnter",[b.p.selrow]),a.isFunction(e.onEnter)&&e.onEnter.call(b,b.p.selrow)):32===f.keyCode&&(a(b).triggerHandler("jqGridKeySpace",[b.p.selrow]),a.isFunction(e.onSpace)&&e.onSpace.call(b,b.p.selrow))})})},unbindKeys:function(){return this.each(function(){a(this).unbind("keydown")})},getLocalRow:function(b){var e=!1,c;this.each(function(){void 0!==
+b&&(c=this.p._index[a.jgrid.stripPref(this.p.idPrefix,b)],0<=c&&(e=this.p.data[c]))});return e},progressBar:function(b){b=a.extend({htmlcontent:"",method:"hide",loadtype:"disable"},b||{});return this.each(function(){var e="show"===b.method?!0:!1;""!==b.htmlcontent&&a("#load_"+a.jgrid.jqID(this.p.id)).html(b.htmlcontent);switch(b.loadtype){case "enable":a("#load_"+a.jgrid.jqID(this.p.id)).toggle(e);break;case "block":a("#lui_"+a.jgrid.jqID(this.p.id)).toggle(e),a("#load_"+a.jgrid.jqID(this.p.id)).toggle(e)}})}})})(jQuery);
+(function(a){a.jgrid.extend({editCell:function(b,e,c){return this.each(function(){var f=this,g,d,h,k;if(f.grid&&!0===f.p.cellEdit){e=parseInt(e,10);f.p.selrow=f.rows[b].id;f.p.knv||a(f).jqGrid("GridNav");if(0<f.p.savedRow.length){if(!0===c&&b==f.p.iRow&&e==f.p.iCol)return;a(f).jqGrid("saveCell",f.p.savedRow[0].id,f.p.savedRow[0].ic)}else window.setTimeout(function(){a("#"+a.jgrid.jqID(f.p.knv)).attr("tabindex","-1").focus()},1);k=f.p.colModel[e];g=k.name;if("subgrid"!==g&&"cb"!==g&&"rn"!==g){h=a("td:eq("+
+e+")",f.rows[b]);if(!0!==k.editable||!0!==c||h.hasClass("not-editable-cell"))0<=parseInt(f.p.iCol,10)&&0<=parseInt(f.p.iRow,10)&&(a("td:eq("+f.p.iCol+")",f.rows[f.p.iRow]).removeClass("edit-cell ui-state-highlight"),a(f.rows[f.p.iRow]).removeClass("selected-row ui-state-hover")),h.addClass("edit-cell ui-state-highlight"),a(f.rows[b]).addClass("selected-row ui-state-hover"),d=h.html().replace(/\&#160\;/ig,""),a(f).triggerHandler("jqGridSelectCell",[f.rows[b].id,g,d,b,e]),a.isFunction(f.p.onSelectCell)&&
+f.p.onSelectCell.call(f,f.rows[b].id,g,d,b,e);else{0<=parseInt(f.p.iCol,10)&&0<=parseInt(f.p.iRow,10)&&(a("td:eq("+f.p.iCol+")",f.rows[f.p.iRow]).removeClass("edit-cell ui-state-highlight"),a(f.rows[f.p.iRow]).removeClass("selected-row ui-state-hover"));a(h).addClass("edit-cell ui-state-highlight");a(f.rows[b]).addClass("selected-row ui-state-hover");try{d=a.unformat.call(f,h,{rowId:f.rows[b].id,colModel:k},e)}catch(l){d=k.edittype&&"textarea"===k.edittype?a(h).text():a(h).html()}f.p.autoencode&&
+(d=a.jgrid.htmlDecode(d));k.edittype||(k.edittype="text");f.p.savedRow.push({id:b,ic:e,name:g,v:d});if("&nbsp;"===d||"&#160;"===d||1===d.length&&160===d.charCodeAt(0))d="";if(a.isFunction(f.p.formatCell)){var p=f.p.formatCell.call(f,f.rows[b].id,g,d,b,e);void 0!==p&&(d=p)}a(f).triggerHandler("jqGridBeforeEditCell",[f.rows[b].id,g,d,b,e]);a.isFunction(f.p.beforeEditCell)&&f.p.beforeEditCell.call(f,f.rows[b].id,g,d,b,e);var p=a.extend({},k.editoptions||{},{id:b+"_"+g,name:g,rowId:f.rows[b].id}),m=a.jgrid.createEl.call(f,
+k.edittype,p,d,!0,a.extend({},a.jgrid.ajaxOptions,f.p.ajaxSelectOptions||{}));a(h).html("").append(m).attr("tabindex","0");a.jgrid.bindEv.call(f,m,p);window.setTimeout(function(){a(m).focus()},1);a("input, select, textarea",h).bind("keydown",function(c){27===c.keyCode&&(0<a("input.hasDatepicker",h).length?a(".ui-datepicker").is(":hidden")?a(f).jqGrid("restoreCell",b,e):a("input.hasDatepicker",h).datepicker("hide"):a(f).jqGrid("restoreCell",b,e));if(13===c.keyCode&&!c.shiftKey)return a(f).jqGrid("saveCell",
+b,e),!1;if(9===c.keyCode){if(f.grid.hDiv.loading)return!1;c.shiftKey?a(f).jqGrid("prevCell",b,e):a(f).jqGrid("nextCell",b,e)}c.stopPropagation()});a(f).triggerHandler("jqGridAfterEditCell",[f.rows[b].id,g,d,b,e]);a.isFunction(f.p.afterEditCell)&&f.p.afterEditCell.call(f,f.rows[b].id,g,d,b,e)}f.p.iCol=e;f.p.iRow=b}}})},saveCell:function(b,e){return this.each(function(){var c=this,f;if(c.grid&&!0===c.p.cellEdit){f=1<=c.p.savedRow.length?0:null;if(null!==f){var g=a("td:eq("+e+")",c.rows[b]),d,h,k=c.p.colModel[e],
+l=k.name,p=a.jgrid.jqID(l);switch(k.edittype){case "select":if(k.editoptions.multiple){var p=a("#"+b+"_"+p,c.rows[b]),m=[];(d=a(p).val())?d.join(","):d="";a("option:selected",p).each(function(b,c){m[b]=a(c).text()});h=m.join(",")}else d=a("#"+b+"_"+p+" option:selected",c.rows[b]).val(),h=a("#"+b+"_"+p+" option:selected",c.rows[b]).text();k.formatter&&(h=d);break;case "checkbox":var r=["Yes","No"];k.editoptions&&(r=k.editoptions.value.split(":"));h=d=a("#"+b+"_"+p,c.rows[b]).is(":checked")?r[0]:r[1];
+break;case "password":case "text":case "textarea":case "button":h=d=a("#"+b+"_"+p,c.rows[b]).val();break;case "custom":try{if(k.editoptions&&a.isFunction(k.editoptions.custom_value)){d=k.editoptions.custom_value.call(c,a(".customelement",g),"get");if(void 0===d)throw"e2";h=d}else throw"e1";}catch(q){"e1"===q&&a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_value' "+a.jgrid.edit.msg.nodefined,a.jgrid.edit.bClose),"e2"===q?a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_value' "+
+a.jgrid.edit.msg.novalue,a.jgrid.edit.bClose):a.jgrid.info_dialog(a.jgrid.errors.errcap,q.message,a.jgrid.edit.bClose)}}if(h!==c.p.savedRow[f].v){if(f=a(c).triggerHandler("jqGridBeforeSaveCell",[c.rows[b].id,l,d,b,e]))h=d=f;a.isFunction(c.p.beforeSaveCell)&&(f=c.p.beforeSaveCell.call(c,c.rows[b].id,l,d,b,e))&&(h=d=f);var n=a.jgrid.checkValues.call(c,d,e);if(!0===n[0]){f=a(c).triggerHandler("jqGridBeforeSubmitCell",[c.rows[b].id,l,d,b,e])||{};a.isFunction(c.p.beforeSubmitCell)&&((f=c.p.beforeSubmitCell.call(c,
+c.rows[b].id,l,d,b,e))||(f={}));0<a("input.hasDatepicker",g).length&&a("input.hasDatepicker",g).datepicker("hide");if("remote"===c.p.cellsubmit)if(c.p.cellurl){var t={};c.p.autoencode&&(d=a.jgrid.htmlEncode(d));t[l]=d;r=c.p.prmNames;k=r.id;p=r.oper;t[k]=a.jgrid.stripPref(c.p.idPrefix,c.rows[b].id);t[p]=r.editoper;t=a.extend(f,t);a(c).jqGrid("progressBar",{method:"show",loadtype:c.p.loadui,htmlcontent:a.jgrid.defaults.savetext||"Saving..."});c.grid.hDiv.loading=!0;a.ajax(a.extend({url:c.p.cellurl,
+data:a.isFunction(c.p.serializeCellData)?c.p.serializeCellData.call(c,t):t,type:"POST",complete:function(f,k){a(c).jqGrid("progressBar",{method:"hide",loadtype:c.p.loadui});c.grid.hDiv.loading=!1;if("success"===k){var n=a(c).triggerHandler("jqGridAfterSubmitCell",[c,f,t.id,l,d,b,e])||[!0,""];!0===n[0]&&a.isFunction(c.p.afterSubmitCell)&&(n=c.p.afterSubmitCell.call(c,f,t.id,l,d,b,e));!0===n[0]?(a(g).empty(),a(c).jqGrid("setCell",c.rows[b].id,e,h,!1,!1,!0),a(g).addClass("dirty-cell"),a(c.rows[b]).addClass("edited"),
+a(c).triggerHandler("jqGridAfterSaveCell",[c.rows[b].id,l,d,b,e]),a.isFunction(c.p.afterSaveCell)&&c.p.afterSaveCell.call(c,c.rows[b].id,l,d,b,e),c.p.savedRow.splice(0,1)):(a.jgrid.info_dialog(a.jgrid.errors.errcap,n[1],a.jgrid.edit.bClose),a(c).jqGrid("restoreCell",b,e))}},error:function(d,f,h){a("#lui_"+a.jgrid.jqID(c.p.id)).hide();c.grid.hDiv.loading=!1;a(c).triggerHandler("jqGridErrorCell",[d,f,h]);a.isFunction(c.p.errorCell)?c.p.errorCell.call(c,d,f,h):a.jgrid.info_dialog(a.jgrid.errors.errcap,
+d.status+" : "+d.statusText+"<br/>"+f,a.jgrid.edit.bClose);a(c).jqGrid("restoreCell",b,e)}},a.jgrid.ajaxOptions,c.p.ajaxCellOptions||{}))}else try{a.jgrid.info_dialog(a.jgrid.errors.errcap,a.jgrid.errors.nourl,a.jgrid.edit.bClose),a(c).jqGrid("restoreCell",b,e)}catch(u){}"clientArray"===c.p.cellsubmit&&(a(g).empty(),a(c).jqGrid("setCell",c.rows[b].id,e,h,!1,!1,!0),a(g).addClass("dirty-cell"),a(c.rows[b]).addClass("edited"),a(c).triggerHandler("jqGridAfterSaveCell",[c.rows[b].id,l,d,b,e]),a.isFunction(c.p.afterSaveCell)&&
+c.p.afterSaveCell.call(c,c.rows[b].id,l,d,b,e),c.p.savedRow.splice(0,1))}else try{window.setTimeout(function(){a.jgrid.info_dialog(a.jgrid.errors.errcap,d+" "+n[1],a.jgrid.edit.bClose)},100),a(c).jqGrid("restoreCell",b,e)}catch(w){}}else a(c).jqGrid("restoreCell",b,e)}window.setTimeout(function(){a("#"+a.jgrid.jqID(c.p.knv)).attr("tabindex","-1").focus()},0)}})},restoreCell:function(b,e){return this.each(function(){var c=this,f;if(c.grid&&!0===c.p.cellEdit){f=1<=c.p.savedRow.length?0:null;if(null!==
+f){var g=a("td:eq("+e+")",c.rows[b]);if(a.isFunction(a.fn.datepicker))try{a("input.hasDatepicker",g).datepicker("hide")}catch(d){}a(g).empty().attr("tabindex","-1");a(c).jqGrid("setCell",c.rows[b].id,e,c.p.savedRow[f].v,!1,!1,!0);a(c).triggerHandler("jqGridAfterRestoreCell",[c.rows[b].id,c.p.savedRow[f].v,b,e]);a.isFunction(c.p.afterRestoreCell)&&c.p.afterRestoreCell.call(c,c.rows[b].id,c.p.savedRow[f].v,b,e);c.p.savedRow.splice(0,1)}window.setTimeout(function(){a("#"+c.p.knv).attr("tabindex","-1").focus()},
+0)}})},nextCell:function(b,e){return this.each(function(){var c=!1,f;if(this.grid&&!0===this.p.cellEdit){for(f=e+1;f<this.p.colModel.length;f++)if(!0===this.p.colModel[f].editable){c=f;break}!1!==c?a(this).jqGrid("editCell",b,c,!0):0<this.p.savedRow.length&&a(this).jqGrid("saveCell",b,e)}})},prevCell:function(b,e){return this.each(function(){var c=!1,f;if(this.grid&&!0===this.p.cellEdit){for(f=e-1;0<=f;f--)if(!0===this.p.colModel[f].editable){c=f;break}!1!==c?a(this).jqGrid("editCell",b,c,!0):0<this.p.savedRow.length&&
+a(this).jqGrid("saveCell",b,e)}})},GridNav:function(){return this.each(function(){function b(b,d,e){if("v"===e.substr(0,1)){var f=a(c.grid.bDiv)[0].clientHeight,g=a(c.grid.bDiv)[0].scrollTop,r=c.rows[b].offsetTop+c.rows[b].clientHeight,q=c.rows[b].offsetTop;"vd"===e&&r>=f&&(a(c.grid.bDiv)[0].scrollTop=a(c.grid.bDiv)[0].scrollTop+c.rows[b].clientHeight);"vu"===e&&q<g&&(a(c.grid.bDiv)[0].scrollTop=a(c.grid.bDiv)[0].scrollTop-c.rows[b].clientHeight)}"h"===e&&(e=a(c.grid.bDiv)[0].clientWidth,f=a(c.grid.bDiv)[0].scrollLeft,
+g=c.rows[b].cells[d].offsetLeft,c.rows[b].cells[d].offsetLeft+c.rows[b].cells[d].clientWidth>=e+parseInt(f,10)?a(c.grid.bDiv)[0].scrollLeft=a(c.grid.bDiv)[0].scrollLeft+c.rows[b].cells[d].clientWidth:g<f&&(a(c.grid.bDiv)[0].scrollLeft=a(c.grid.bDiv)[0].scrollLeft-c.rows[b].cells[d].clientWidth))}function e(a,b){var d,e;if("lft"===b)for(d=a+1,e=a;0<=e;e--)if(!0!==c.p.colModel[e].hidden){d=e;break}if("rgt"===b)for(d=a-1,e=a;e<c.p.colModel.length;e++)if(!0!==c.p.colModel[e].hidden){d=e;break}return d}
+var c=this;if(c.grid&&!0===c.p.cellEdit){c.p.knv=c.p.id+"_kn";var f=a("<div style='position:fixed;top:0px;width:1px;height:1px;' tabindex='0'><div tabindex='-1' style='width:1px;height:1px;' id='"+c.p.knv+"'></div></div>"),g,d;a(f).insertBefore(c.grid.cDiv);a("#"+c.p.knv).focus().keydown(function(f){d=f.keyCode;"rtl"===c.p.direction&&(37===d?d=39:39===d&&(d=37));switch(d){case 38:0<c.p.iRow-1&&(b(c.p.iRow-1,c.p.iCol,"vu"),a(c).jqGrid("editCell",c.p.iRow-1,c.p.iCol,!1));break;case 40:c.p.iRow+1<=c.rows.length-
+1&&(b(c.p.iRow+1,c.p.iCol,"vd"),a(c).jqGrid("editCell",c.p.iRow+1,c.p.iCol,!1));break;case 37:0<=c.p.iCol-1&&(g=e(c.p.iCol-1,"lft"),b(c.p.iRow,g,"h"),a(c).jqGrid("editCell",c.p.iRow,g,!1));break;case 39:c.p.iCol+1<=c.p.colModel.length-1&&(g=e(c.p.iCol+1,"rgt"),b(c.p.iRow,g,"h"),a(c).jqGrid("editCell",c.p.iRow,g,!1));break;case 13:0<=parseInt(c.p.iCol,10)&&0<=parseInt(c.p.iRow,10)&&a(c).jqGrid("editCell",c.p.iRow,c.p.iCol,!0);break;default:return!0}return!1})}})},getChangedCells:function(b){var e=
+[];b||(b="all");this.each(function(){var c=this,f;c.grid&&!0===c.p.cellEdit&&a(c.rows).each(function(g){var d={};a(this).hasClass("edited")&&(a("td",this).each(function(e){f=c.p.colModel[e].name;if("cb"!==f&&"subgrid"!==f)if("dirty"===b){if(a(this).hasClass("dirty-cell"))try{d[f]=a.unformat.call(c,this,{rowId:c.rows[g].id,colModel:c.p.colModel[e]},e)}catch(k){d[f]=a.jgrid.htmlDecode(a(this).html())}}else try{d[f]=a.unformat.call(c,this,{rowId:c.rows[g].id,colModel:c.p.colModel[e]},e)}catch(l){d[f]=
+a.jgrid.htmlDecode(a(this).html())}}),d.id=this.id,e.push(d))})});return e}})})(jQuery);
+(function(a){a.extend(a.jgrid,{showModal:function(a){a.w.show()},closeModal:function(a){a.w.hide().attr("aria-hidden","true");a.o&&a.o.remove()},hideModal:function(b,e){e=a.extend({jqm:!0,gb:"",removemodal:!1,formprop:!1,form:""},e||{});var c=e.gb&&"string"===typeof e.gb&&"#gbox_"===e.gb.substr(0,6)?a("#"+e.gb.substr(6))[0]:!1;if(e.onClose){var f=c?e.onClose.call(c,b):e.onClose(b);if("boolean"===typeof f&&!f)return}if(e.formprop&&c&&e.form){f=a(b)[0].style.height;-1<f.indexOf("px")&&(f=parseFloat(f));
+var g,d;"edit"===e.form?(g="#"+a.jgrid.jqID("FrmGrid_"+e.gb.substr(6)),d="formProp"):"view"===e.form&&(g="#"+a.jgrid.jqID("ViewGrid_"+e.gb.substr(6)),d="viewProp");a(c).data(d,{top:parseFloat(a(b).css("top")),left:parseFloat(a(b).css("left")),width:a(b).width(),height:f,dataheight:a(g).height(),datawidth:a(g).width()})}if(a.fn.jqm&&!0===e.jqm)a(b).attr("aria-hidden","true").jqmHide();else{if(""!==e.gb)try{a(".jqgrid-overlay:first",e.gb).hide()}catch(h){}a(b).hide().attr("aria-hidden","true")}e.removemodal&&
+a(b).remove()},findPos:function(a){var e=0,c=0;if(a.offsetParent){do e+=a.offsetLeft,c+=a.offsetTop;while(a=a.offsetParent)}return[e,c]},createModal:function(b,e,c,f,g,d,h){c=a.extend(!0,{},a.jgrid.jqModal||{},c);var k=document.createElement("div"),l,p=this;h=a.extend({},h||{});l="rtl"===a(c.gbox).attr("dir")?!0:!1;k.className="ui-widget ui-widget-content ui-corner-all ui-jqdialog";k.id=b.themodal;var m=document.createElement("div");m.className="ui-jqdialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix";
+m.id=b.modalhead;a(m).append("<span class='ui-jqdialog-title'>"+c.caption+"</span>");var r=a("<a class='ui-jqdialog-titlebar-close ui-corner-all'></a>").hover(function(){r.addClass("ui-state-hover")},function(){r.removeClass("ui-state-hover")}).append("<span class='ui-icon ui-icon-closethick'></span>");a(m).append(r);l?(k.dir="rtl",a(".ui-jqdialog-title",m).css("float","right"),a(".ui-jqdialog-titlebar-close",m).css("left","0.3em")):(k.dir="ltr",a(".ui-jqdialog-title",m).css("float","left"),a(".ui-jqdialog-titlebar-close",
+m).css("right","0.3em"));var q=document.createElement("div");a(q).addClass("ui-jqdialog-content ui-widget-content").attr("id",b.modalcontent);a(q).append(e);k.appendChild(q);a(k).prepend(m);!0===d?a("body").append(k):"string"===typeof d?a(d).append(k):a(k).insertBefore(f);a(k).css(h);void 0===c.jqModal&&(c.jqModal=!0);e={};if(a.fn.jqm&&!0===c.jqModal)0===c.left&&0===c.top&&c.overlay&&(h=[],h=a.jgrid.findPos(g),c.left=h[0]+4,c.top=h[1]+4),e.top=c.top+"px",e.left=c.left;else if(0!==c.left||0!==c.top)e.left=
+c.left,e.top=c.top+"px";a("a.ui-jqdialog-titlebar-close",m).click(function(){var d=a("#"+a.jgrid.jqID(b.themodal)).data("onClose")||c.onClose,e=a("#"+a.jgrid.jqID(b.themodal)).data("gbox")||c.gbox;p.hideModal("#"+a.jgrid.jqID(b.themodal),{gb:e,jqm:c.jqModal,onClose:d,removemodal:c.removemodal||!1,formprop:!c.recreateForm||!1,form:c.form||""});return!1});0!==c.width&&c.width||(c.width=300);0!==c.height&&c.height||(c.height=200);c.zIndex||(f=a(f).parents("*[role=dialog]").filter(":first").css("z-index"),
+c.zIndex=f?parseInt(f,10)+2:950);f=0;l&&e.left&&!d&&(f=a(c.gbox).width()-(isNaN(c.width)?0:parseInt(c.width,10))-8,e.left=parseInt(e.left,10)+parseInt(f,10));e.left&&(e.left+="px");a(k).css(a.extend({width:isNaN(c.width)?"auto":c.width+"px",height:isNaN(c.height)?"auto":c.height+"px",zIndex:c.zIndex,overflow:"hidden"},e)).attr({tabIndex:"-1",role:"dialog","aria-labelledby":b.modalhead,"aria-hidden":"true"});void 0===c.drag&&(c.drag=!0);void 0===c.resize&&(c.resize=!0);if(c.drag)if(a(m).css("cursor",
+"move"),a.fn.jqDrag)a(k).jqDrag(m);else try{a(k).draggable({handle:a("#"+a.jgrid.jqID(m.id))})}catch(n){}if(c.resize)if(a.fn.jqResize)a(k).append("<div class='jqResize ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se'></div>"),a("#"+a.jgrid.jqID(b.themodal)).jqResize(".jqResize",b.scrollelm?"#"+a.jgrid.jqID(b.scrollelm):!1);else try{a(k).resizable({handles:"se, sw",alsoResize:b.scrollelm?"#"+a.jgrid.jqID(b.scrollelm):!1})}catch(t){}!0===c.closeOnEscape&&a(k).keydown(function(d){27===
+d.which&&(d=a("#"+a.jgrid.jqID(b.themodal)).data("onClose")||c.onClose,p.hideModal("#"+a.jgrid.jqID(b.themodal),{gb:c.gbox,jqm:c.jqModal,onClose:d,removemodal:c.removemodal||!1,formprop:!c.recreateForm||!1,form:c.form||""}))})},viewModal:function(b,e){e=a.extend({toTop:!0,overlay:10,modal:!1,overlayClass:"ui-widget-overlay",onShow:a.jgrid.showModal,onHide:a.jgrid.closeModal,gbox:"",jqm:!0,jqM:!0},e||{});if(a.fn.jqm&&!0===e.jqm)e.jqM?a(b).attr("aria-hidden","false").jqm(e).jqmShow():a(b).attr("aria-hidden",
+"false").jqmShow();else{""!==e.gbox&&(a(".jqgrid-overlay:first",e.gbox).show(),a(b).data("gbox",e.gbox));a(b).show().attr("aria-hidden","false");try{a(":input:visible",b)[0].focus()}catch(c){}}},info_dialog:function(b,e,c,f){var g={width:290,height:"auto",dataheight:"auto",drag:!0,resize:!1,left:250,top:170,zIndex:1E3,jqModal:!0,modal:!1,closeOnEscape:!0,align:"center",buttonalign:"center",buttons:[]};a.extend(!0,g,a.jgrid.jqModal||{},{caption:"<b>"+b+"</b>"},f||{});var d=g.jqModal,h=this;a.fn.jqm&&
+!d&&(d=!1);b="";if(0<g.buttons.length)for(f=0;f<g.buttons.length;f++)void 0===g.buttons[f].id&&(g.buttons[f].id="info_button_"+f),b+="<a id='"+g.buttons[f].id+"' class='fm-button ui-state-default ui-corner-all'>"+g.buttons[f].text+"</a>";f=isNaN(g.dataheight)?g.dataheight:g.dataheight+"px";e="<div id='info_id'>"+("<div id='infocnt' style='margin:0px;padding-bottom:1em;width:100%;overflow:auto;position:relative;height:"+f+";"+("text-align:"+g.align+";")+"'>"+e+"</div>");e+=c?"<div class='ui-widget-content ui-helper-clearfix' style='text-align:"+
+g.buttonalign+";padding-bottom:0.8em;padding-top:0.5em;background-image: none;border-width: 1px 0 0 0;'><a id='closedialog' class='fm-button ui-state-default ui-corner-all'>"+c+"</a>"+b+"</div>":""!==b?"<div class='ui-widget-content ui-helper-clearfix' style='text-align:"+g.buttonalign+";padding-bottom:0.8em;padding-top:0.5em;background-image: none;border-width: 1px 0 0 0;'>"+b+"</div>":"";e+="</div>";try{"false"===a("#info_dialog").attr("aria-hidden")&&a.jgrid.hideModal("#info_dialog",{jqm:d}),a("#info_dialog").remove()}catch(k){}a.jgrid.createModal({themodal:"info_dialog",
+modalhead:"info_head",modalcontent:"info_content",scrollelm:"infocnt"},e,g,"","",!0);b&&a.each(g.buttons,function(b){a("#"+a.jgrid.jqID(this.id),"#info_id").bind("click",function(){g.buttons[b].onClick.call(a("#info_dialog"));return!1})});a("#closedialog","#info_id").click(function(){h.hideModal("#info_dialog",{jqm:d,onClose:a("#info_dialog").data("onClose")||g.onClose,gb:a("#info_dialog").data("gbox")||g.gbox});return!1});a(".fm-button","#info_dialog").hover(function(){a(this).addClass("ui-state-hover")},
+function(){a(this).removeClass("ui-state-hover")});a.isFunction(g.beforeOpen)&&g.beforeOpen();a.jgrid.viewModal("#info_dialog",{onHide:function(a){a.w.hide().remove();a.o&&a.o.remove()},modal:g.modal,jqm:d});a.isFunction(g.afterOpen)&&g.afterOpen();try{a("#info_dialog").focus()}catch(l){}},bindEv:function(b,e){a.isFunction(e.dataInit)&&e.dataInit.call(this,b,e);e.dataEvents&&a.each(e.dataEvents,function(){void 0!==this.data?a(b).bind(this.type,this.data,this.fn):a(b).bind(this.type,this.fn)})},createEl:function(b,
+e,c,f,g){function d(b,c,d){var e="dataInit dataEvents dataUrl buildSelect sopt searchhidden defaultValue attr custom_element custom_value".split(" ");void 0!==d&&a.isArray(d)&&a.merge(e,d);a.each(c,function(c,d){-1===a.inArray(c,e)&&a(b).attr(c,d)});c.hasOwnProperty("id")||a(b).attr("id",a.jgrid.randId())}var h="",k=this;switch(b){case "textarea":h=document.createElement("textarea");f?e.cols||a(h).css({width:"98%"}):e.cols||(e.cols=20);e.rows||(e.rows=2);if("&nbsp;"===c||"&#160;"===c||1===c.length&&
+160===c.charCodeAt(0))c="";h.value=c;d(h,e);a(h).attr({role:"textbox",multiline:"true"});break;case "checkbox":h=document.createElement("input");h.type="checkbox";e.value?(b=e.value.split(":"),c===b[0]&&(h.checked=!0,h.defaultChecked=!0),h.value=b[0],a(h).attr("offval",b[1])):(b=(c+"").toLowerCase(),0>b.search(/(false|f|0|no|n|off|undefined)/i)&&""!==b?(h.checked=!0,h.defaultChecked=!0,h.value=c):h.value="on",a(h).attr("offval","off"));d(h,e,["value"]);a(h).attr("role","checkbox");break;case "select":h=
+document.createElement("select");h.setAttribute("role","select");f=[];!0===e.multiple?(b=!0,h.multiple="multiple",a(h).attr("aria-multiselectable","true")):b=!1;if(void 0!==e.dataUrl){b=null;var l=e.postData||g.postData;try{b=e.rowId}catch(p){}k.p&&k.p.idPrefix&&(b=a.jgrid.stripPref(k.p.idPrefix,b));a.ajax(a.extend({url:a.isFunction(e.dataUrl)?e.dataUrl.call(k,b,c,String(e.name)):e.dataUrl,type:"GET",dataType:"html",data:a.isFunction(l)?l.call(k,b,c,String(e.name)):l,context:{elem:h,options:e,vl:c},
+success:function(b){var c=[],e=this.elem,f=this.vl,h=a.extend({},this.options),g=!0===h.multiple;b=a.isFunction(h.buildSelect)?h.buildSelect.call(k,b):b;"string"===typeof b&&(b=a(a.trim(b)).html());b&&(a(e).append(b),d(e,h,l?["postData"]:void 0),void 0===h.size&&(h.size=g?3:1),g?(c=f.split(","),c=a.map(c,function(b){return a.trim(b)})):c[0]=a.trim(f),setTimeout(function(){a("option",e).each(function(b){0===b&&e.multiple&&(this.selected=!1);a(this).attr("role","option");if(-1<a.inArray(a.trim(a(this).text()),
+c)||-1<a.inArray(a.trim(a(this).val()),c))this.selected="selected"})},0))}},g||{}))}else if(e.value){var m;void 0===e.size&&(e.size=b?3:1);b&&(f=c.split(","),f=a.map(f,function(b){return a.trim(b)}));"function"===typeof e.value&&(e.value=e.value());var r,q,n=void 0===e.separator?":":e.separator;g=void 0===e.delimiter?";":e.delimiter;if("string"===typeof e.value)for(r=e.value.split(g),m=0;m<r.length;m++)q=r[m].split(n),2<q.length&&(q[1]=a.map(q,function(a,b){if(0<b)return a}).join(n)),g=document.createElement("option"),
+g.setAttribute("role","option"),g.value=q[0],g.innerHTML=q[1],h.appendChild(g),b||a.trim(q[0])!==a.trim(c)&&a.trim(q[1])!==a.trim(c)||(g.selected="selected"),b&&(-1<a.inArray(a.trim(q[1]),f)||-1<a.inArray(a.trim(q[0]),f))&&(g.selected="selected");else if("object"===typeof e.value)for(m in n=e.value,n)n.hasOwnProperty(m)&&(g=document.createElement("option"),g.setAttribute("role","option"),g.value=m,g.innerHTML=n[m],h.appendChild(g),b||a.trim(m)!==a.trim(c)&&a.trim(n[m])!==a.trim(c)||(g.selected="selected"),
+b&&(-1<a.inArray(a.trim(n[m]),f)||-1<a.inArray(a.trim(m),f))&&(g.selected="selected"));d(h,e,["value"])}break;case "text":case "password":case "button":m="button"===b?"button":"textbox";h=document.createElement("input");h.type=b;h.value=c;d(h,e);"button"!==b&&(f?e.size||a(h).css({width:"98%"}):e.size||(e.size=20));a(h).attr("role",m);break;case "image":case "file":h=document.createElement("input");h.type=b;d(h,e);break;case "custom":h=document.createElement("span");try{if(a.isFunction(e.custom_element))if(n=
+e.custom_element.call(k,c,e))n=a(n).addClass("customelement").attr({id:e.id,name:e.name}),a(h).empty().append(n);else throw"e2";else throw"e1";}catch(t){"e1"===t&&a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_element' "+a.jgrid.edit.msg.nodefined,a.jgrid.edit.bClose),"e2"===t?a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_element' "+a.jgrid.edit.msg.novalue,a.jgrid.edit.bClose):a.jgrid.info_dialog(a.jgrid.errors.errcap,"string"===typeof t?t:t.message,a.jgrid.edit.bClose)}}return h},
+checkDate:function(a,e){var c={},f;a=a.toLowerCase();f=-1!==a.indexOf("/")?"/":-1!==a.indexOf("-")?"-":-1!==a.indexOf(".")?".":"/";a=a.split(f);e=e.split(f);if(3!==e.length)return!1;var g=-1,d,h=f=-1,k;for(k=0;k<a.length;k++)d=isNaN(e[k])?0:parseInt(e[k],10),c[a[k]]=d,d=a[k],-1!==d.indexOf("y")&&(g=k),-1!==d.indexOf("m")&&(h=k),-1!==d.indexOf("d")&&(f=k);d="y"===a[g]||"yyyy"===a[g]?4:"yy"===a[g]?2:-1;k=[0,31,29,31,30,31,30,31,31,30,31,30,31];var l;if(-1===g)return!1;l=c[a[g]].toString();2===d&&1===
+l.length&&(d=1);if(l.length!==d||0===c[a[g]]&&"00"!==e[g]||-1===h)return!1;l=c[a[h]].toString();if(1>l.length||1>c[a[h]]||12<c[a[h]]||-1===f)return!1;l=c[a[f]].toString();!(d=1>l.length||1>c[a[f]]||31<c[a[f]])&&(d=2===c[a[h]])&&(g=c[a[g]],d=c[a[f]]>(0!==g%4||0===g%100&&0!==g%400?28:29));return d||c[a[f]]>k[c[a[h]]]?!1:!0},isEmpty:function(a){return a.match(/^\s+$/)||""===a?!0:!1},checkTime:function(b){var e=/^(\d{1,2}):(\d{2})([apAP][Mm])?$/;if(!a.jgrid.isEmpty(b))if(b=b.match(e)){if(b[3]){if(1>b[1]||
+12<b[1])return!1}else if(23<b[1])return!1;if(59<b[2])return!1}else return!1;return!0},checkValues:function(b,e,c,f){var g,d,h;h=this.p.colModel;if(void 0===c)if("string"===typeof e)for(c=0,f=h.length;c<f;c++){if(h[c].name===e){g=h[c].editrules;e=c;null!=h[c].formoptions&&(d=h[c].formoptions.label);break}}else 0<=e&&(g=h[e].editrules);else g=c,d=void 0===f?"_":f;if(g){d||(d=null!=this.p.colNames?this.p.colNames[e]:h[e].label);if(!0===g.required&&a.jgrid.isEmpty(b))return[!1,d+": "+a.jgrid.edit.msg.required,
+""];c=!1===g.required?!1:!0;if(!0===g.number&&(!1!==c||!a.jgrid.isEmpty(b))&&isNaN(b))return[!1,d+": "+a.jgrid.edit.msg.number,""];if(void 0!==g.minValue&&!isNaN(g.minValue)&&parseFloat(b)<parseFloat(g.minValue))return[!1,d+": "+a.jgrid.edit.msg.minValue+" "+g.minValue,""];if(void 0!==g.maxValue&&!isNaN(g.maxValue)&&parseFloat(b)>parseFloat(g.maxValue))return[!1,d+": "+a.jgrid.edit.msg.maxValue+" "+g.maxValue,""];if(!(!0!==g.email||!1===c&&a.jgrid.isEmpty(b)||(f=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i,
+f.test(b))))return[!1,d+": "+a.jgrid.edit.msg.email,""];if(!(!0!==g.integer||!1===c&&a.jgrid.isEmpty(b)||!isNaN(b)&&0===b%1&&-1===b.indexOf(".")))return[!1,d+": "+a.jgrid.edit.msg.integer,""];if(!(!0!==g.date||!1===c&&a.jgrid.isEmpty(b)||(h[e].formatoptions&&h[e].formatoptions.newformat?(h=h[e].formatoptions.newformat,a.jgrid.formatter.date.masks.hasOwnProperty(h)&&(h=a.jgrid.formatter.date.masks[h])):h=h[e].datefmt||"Y-m-d",a.jgrid.checkDate(h,b))))return[!1,d+": "+a.jgrid.edit.msg.date+" - "+h,
+""];if(!0===g.time&&!(!1===c&&a.jgrid.isEmpty(b)||a.jgrid.checkTime(b)))return[!1,d+": "+a.jgrid.edit.msg.date+" - hh:mm (am/pm)",""];if(!(!0!==g.url||!1===c&&a.jgrid.isEmpty(b)||(f=/^(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i,f.test(b))))return[!1,d+": "+a.jgrid.edit.msg.url,""];if(!0===g.custom&&(!1!==c||!a.jgrid.isEmpty(b)))return a.isFunction(g.custom_func)?(b=g.custom_func.call(this,b,d,e),a.isArray(b)?b:[!1,a.jgrid.edit.msg.customarray,
+""]):[!1,a.jgrid.edit.msg.customfcheck,""]}return[!0,"",""]}})})(jQuery);
+(function(a){a.jgrid.extend({getColProp:function(a){var e={},c=this[0];if(!c.grid)return!1;var c=c.p.colModel,f;for(f=0;f<c.length;f++)if(c[f].name===a){e=c[f];break}return e},setColProp:function(b,e){return this.each(function(){if(this.grid&&e){var c=this.p.colModel,f;for(f=0;f<c.length;f++)if(c[f].name===b){a.extend(!0,this.p.colModel[f],e);break}}})},sortGrid:function(a,e,c){return this.each(function(){var f=-1,g,d=!1;if(this.grid){a||(a=this.p.sortname);for(g=0;g<this.p.colModel.length;g++)if(this.p.colModel[g].index===
+a||this.p.colModel[g].name===a){f=g;!0===this.p.frozenColumns&&!0===this.p.colModel[g].frozen&&(d=this.grid.fhDiv.find("#"+this.p.id+"_"+a));break}-1!==f&&(g=this.p.colModel[f].sortable,d||(d=this.grid.headers[f].el),"boolean"!==typeof g&&(g=!0),"boolean"!==typeof e&&(e=!1),g&&this.sortData("jqgh_"+this.p.id+"_"+a,f,e,c,d))}})},clearBeforeUnload:function(){return this.each(function(){var b=this.grid;a.isFunction(b.emptyRows)&&b.emptyRows.call(this,!0,!0);a(document).unbind("mouseup.jqGrid"+this.p.id);
+a(b.hDiv).unbind("mousemove");a(this).unbind();b.dragEnd=null;b.dragMove=null;b.dragStart=null;b.emptyRows=null;b.populate=null;b.populateVisible=null;b.scrollGrid=null;b.selectionPreserver=null;b.bDiv=null;b.cDiv=null;b.hDiv=null;b.cols=null;var e,c=b.headers.length;for(e=0;e<c;e++)b.headers[e].el=null;this.grid=this.addJSONData=this.addXmlData=this.formatter=this.constructTr=this.setHeadCheckBox=this.refreshIndex=this.updatepager=this.sortData=this.formatCol=null})},GridDestroy:function(){return this.each(function(){if(this.grid){this.p.pager&&
+a(this.p.pager).remove();try{a(this).jqGrid("clearBeforeUnload"),a("#gbox_"+a.jgrid.jqID(this.id)).remove(),a("#alertmod_"+a.jgrid.jqID(this.id)).remove()}catch(b){}}})},GridUnload:function(){return this.each(function(){if(this.grid){var b=a(this).attr("id"),e=a(this).attr("class");this.p.pager&&a(this.p.pager).empty().removeClass("ui-state-default ui-jqgrid-pager ui-corner-bottom");var c=document.createElement("table");a(c).attr({id:b});c.className=e;b=a.jgrid.jqID(this.id);a(c).removeClass("ui-jqgrid-btable");
+1===a(this.p.pager).parents("#gbox_"+b).length?(a(c).insertBefore("#gbox_"+b).show(),a(this.p.pager).insertBefore("#gbox_"+b)):a(c).insertBefore("#gbox_"+b).show();a(this).jqGrid("clearBeforeUnload");a("#gbox_"+b).remove()}})},setGridState:function(b){return this.each(function(){this.grid&&("hidden"===b?(a(".ui-jqgrid-bdiv, .ui-jqgrid-hdiv","#gview_"+a.jgrid.jqID(this.p.id)).slideUp("fast"),this.p.pager&&a(this.p.pager).slideUp("fast"),this.p.toppager&&a(this.p.toppager).slideUp("fast"),!0===this.p.toolbar[0]&&
+("both"===this.p.toolbar[1]&&a(this.grid.ubDiv).slideUp("fast"),a(this.grid.uDiv).slideUp("fast")),this.p.footerrow&&a(".ui-jqgrid-sdiv","#gbox_"+a.jgrid.jqID(this.p.id)).slideUp("fast"),a(".ui-jqgrid-titlebar-close span",this.grid.cDiv).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s"),this.p.gridstate="hidden"):"visible"===b&&(a(".ui-jqgrid-hdiv, .ui-jqgrid-bdiv","#gview_"+a.jgrid.jqID(this.p.id)).slideDown("fast"),this.p.pager&&a(this.p.pager).slideDown("fast"),this.p.toppager&&
+a(this.p.toppager).slideDown("fast"),!0===this.p.toolbar[0]&&("both"===this.p.toolbar[1]&&a(this.grid.ubDiv).slideDown("fast"),a(this.grid.uDiv).slideDown("fast")),this.p.footerrow&&a(".ui-jqgrid-sdiv","#gbox_"+a.jgrid.jqID(this.p.id)).slideDown("fast"),a(".ui-jqgrid-titlebar-close span",this.grid.cDiv).removeClass("ui-icon-circle-triangle-s").addClass("ui-icon-circle-triangle-n"),this.p.gridstate="visible"))})},filterToolbar:function(b){b=a.extend({autosearch:!0,autosearchDelay:500,searchOnEnter:!0,
+beforeSearch:null,afterSearch:null,beforeClear:null,afterClear:null,searchurl:"",stringResult:!1,groupOp:"AND",defaultSearch:"bw",searchOperators:!1,resetIcon:"x",operands:{eq:"==",ne:"!",lt:"<",le:"<=",gt:">",ge:">=",bw:"^",bn:"!^","in":"=",ni:"!=",ew:"|",en:"!@",cn:"~",nc:"!~",nu:"#",nn:"!#"}},a.jgrid.search,b||{});return this.each(function(){var e=this;if(!this.ftoolbar){var c=function(){var c={},d=0,f,g,m={},r;a.each(e.p.colModel,function(){var n=a("#gs_"+a.jgrid.jqID(this.name),!0===this.frozen&&
+!0===e.p.frozenColumns?e.grid.fhDiv:e.grid.hDiv);g=this.index||this.name;r=b.searchOperators?n.parent().prev().children("a").attr("soper")||b.defaultSearch:this.searchoptions&&this.searchoptions.sopt?this.searchoptions.sopt[0]:"select"===this.stype?"eq":b.defaultSearch;if((f="custom"===this.stype&&a.isFunction(this.searchoptions.custom_value)&&0<n.length&&"SPAN"===n[0].nodeName.toUpperCase()?this.searchoptions.custom_value.call(e,n.children(".customelement:first"),"get"):n.val())||"nu"===r||"nn"===
+r)c[g]=f,m[g]=r,d++;else try{delete e.p.postData[g]}catch(q){}});var q=0<d?!0:!1;if(!0===b.stringResult||"local"===e.p.datatype||!0===b.searchOperators){var n='{"groupOp":"'+b.groupOp+'","rules":[',t=0;a.each(c,function(a,b){0<t&&(n+=",");n+='{"field":"'+a+'",';n+='"op":"'+m[a]+'",';n+='"data":"'+(b+"").replace(/\\/g,"\\\\").replace(/\"/g,'\\"')+'"}';t++});n+="]}";a.extend(e.p.postData,{filters:n});a.each(["searchField","searchString","searchOper"],function(a,b){e.p.postData.hasOwnProperty(b)&&delete e.p.postData[b]})}else a.extend(e.p.postData,
+c);var u;e.p.searchurl&&(u=e.p.url,a(e).jqGrid("setGridParam",{url:e.p.searchurl}));var w="stop"===a(e).triggerHandler("jqGridToolbarBeforeSearch")?!0:!1;!w&&a.isFunction(b.beforeSearch)&&(w=b.beforeSearch.call(e));w||a(e).jqGrid("setGridParam",{search:q}).trigger("reloadGrid",[{page:1}]);u&&a(e).jqGrid("setGridParam",{url:u});a(e).triggerHandler("jqGridToolbarAfterSearch");a.isFunction(b.afterSearch)&&b.afterSearch.call(e)},f=function(d,f,g){a("#sopt_menu").remove();f=parseInt(f,10);g=parseInt(g,
+10)+18;f='<ul id="sopt_menu" class="ui-search-menu" role="menu" tabindex="0" style="font-size:'+(a(".ui-jqgrid-view").css("font-size")||"11px")+";left:"+f+"px;top:"+g+'px;">';g=a(d).attr("soper");var p,m=[],r,q=0,n=a(d).attr("colname");for(p=e.p.colModel.length;q<p&&e.p.colModel[q].name!==n;)q++;q=e.p.colModel[q];n=a.extend({},q.searchoptions);n.sopt||(n.sopt=[],n.sopt[0]="select"===q.stype?"eq":b.defaultSearch);a.each(b.odata,function(){m.push(this.oper)});for(q=0;q<n.sopt.length;q++)r=a.inArray(n.sopt[q],
+m),-1!==r&&(p=g===b.odata[r].oper?"ui-state-highlight":"",f+='<li class="ui-menu-item '+p+'" role="presentation"><a class="ui-corner-all g-menu-item" tabindex="0" role="menuitem" value="'+b.odata[r].oper+'" oper="'+b.operands[b.odata[r].oper]+'"><table cellspacing="0" cellpadding="0" border="0"><tr><td width="25px">'+b.operands[b.odata[r].oper]+"</td><td>"+b.odata[r].text+"</td></tr></table></a></li>");f+="</ul>";a("body").append(f);a("#sopt_menu").addClass("ui-menu ui-widget ui-widget-content ui-corner-all");
+a("#sopt_menu > li > a").hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).click(function(f){f=a(this).attr("value");var g=a(this).attr("oper");a(e).triggerHandler("jqGridToolbarSelectOper",[f,g,d]);a("#sopt_menu").hide();a(d).text(g).attr("soper",f);!0===b.autosearch&&(g=a(d).parent().next().children()[0],(a(g).val()||"nu"===f||"nn"===f)&&c())})},g=a("<tr class='ui-search-toolbar' role='row'></tr>"),d;a.each(e.p.colModel,function(f){var k=this,
+l,p;p="";var m="=",r,q=a("<th role='columnheader' class='ui-state-default ui-th-column ui-th-"+e.p.direction+"'></th>"),n=a("<div style='position:relative;height:auto;padding-right:0.3em;padding-left:0.3em;'></div>"),t=a("<table class='ui-search-table' cellspacing='0'><tr><td class='ui-search-oper'></td><td class='ui-search-input'></td><td class='ui-search-clear'></td></tr></table>");!0===this.hidden&&a(q).css("display","none");this.search=!1===this.search?!1:!0;void 0===this.stype&&(this.stype="text");
+l=a.extend({},this.searchoptions||{});if(this.search){if(b.searchOperators){p=l.sopt?l.sopt[0]:"select"===k.stype?"eq":b.defaultSearch;for(r=0;r<b.odata.length;r++)if(b.odata[r].oper===p){m=b.operands[p]||"";break}p="<a title='"+(null!=l.searchtitle?l.searchtitle:b.operandTitle)+"' style='padding-right: 0.5em;' soper='"+p+"' class='soptclass' colname='"+this.name+"'>"+m+"</a>"}a("td:eq(0)",t).attr("colindex",f).append(p);void 0===l.clearSearch&&(l.clearSearch=!0);l.clearSearch?(p=b.resetTitle||"Clear Search Value",
+a("td:eq(2)",t).append("<a title='"+p+"' style='padding-right: 0.3em;padding-left: 0.3em;' class='clearsearchclass'>"+b.resetIcon+"</a>")):a("td:eq(2)",t).hide();switch(this.stype){case "select":if(p=this.surl||l.dataUrl)a(n).append(t),a.ajax(a.extend({url:p,dataType:"html",success:function(d){void 0!==l.buildSelect?(d=l.buildSelect(d))&&a("td:eq(1)",t).append(d):a("td:eq(1)",t).append(d);void 0!==l.defaultValue&&a("select",n).val(l.defaultValue);a("select",n).attr({name:k.index||k.name,id:"gs_"+
+k.name});l.attr&&a("select",n).attr(l.attr);a("select",n).css({width:"100%"});a.jgrid.bindEv.call(e,a("select",n)[0],l);!0===b.autosearch&&a("select",n).change(function(){c();return!1});d=null}},a.jgrid.ajaxOptions,e.p.ajaxSelectOptions||{}));else{var u,w,s;k.searchoptions?(u=void 0===k.searchoptions.value?"":k.searchoptions.value,w=void 0===k.searchoptions.separator?":":k.searchoptions.separator,s=void 0===k.searchoptions.delimiter?";":k.searchoptions.delimiter):k.editoptions&&(u=void 0===k.editoptions.value?
+"":k.editoptions.value,w=void 0===k.editoptions.separator?":":k.editoptions.separator,s=void 0===k.editoptions.delimiter?";":k.editoptions.delimiter);if(u){var x=document.createElement("select");x.style.width="100%";a(x).attr({name:k.index||k.name,id:"gs_"+k.name});var A;if("string"===typeof u)for(p=u.split(s),A=0;A<p.length;A++)u=p[A].split(w),s=document.createElement("option"),s.value=u[0],s.innerHTML=u[1],x.appendChild(s);else if("object"===typeof u)for(A in u)u.hasOwnProperty(A)&&(s=document.createElement("option"),
+s.value=A,s.innerHTML=u[A],x.appendChild(s));void 0!==l.defaultValue&&a(x).val(l.defaultValue);l.attr&&a(x).attr(l.attr);a(n).append(t);a.jgrid.bindEv.call(e,x,l);a("td:eq(1)",t).append(x);!0===b.autosearch&&a(x).change(function(){c();return!1})}}break;case "text":w=void 0!==l.defaultValue?l.defaultValue:"";a("td:eq(1)",t).append("<input type='text' style='width:100%;padding:0px;' name='"+(k.index||k.name)+"' id='gs_"+k.name+"' value='"+w+"'/>");a(n).append(t);l.attr&&a("input",n).attr(l.attr);a.jgrid.bindEv.call(e,
+a("input",n)[0],l);!0===b.autosearch&&(b.searchOnEnter?a("input",n).keypress(function(a){return 13===(a.charCode||a.keyCode||0)?(c(),!1):this}):a("input",n).keydown(function(a){switch(a.which){case 13:return!1;case 9:case 16:case 37:case 38:case 39:case 40:case 27:break;default:d&&clearTimeout(d),d=setTimeout(function(){c()},b.autosearchDelay)}}));break;case "custom":a("td:eq(1)",t).append("<span style='width:95%;padding:0px;' name='"+(k.index||k.name)+"' id='gs_"+k.name+"'/>");a(n).append(t);try{if(a.isFunction(l.custom_element))if(x=
+l.custom_element.call(e,void 0!==l.defaultValue?l.defaultValue:"",l))x=a(x).addClass("customelement"),a(n).find("span[name='"+(k.index||k.name)+"']").append(x);else throw"e2";else throw"e1";}catch(v){"e1"===v&&a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_element' "+a.jgrid.edit.msg.nodefined,a.jgrid.edit.bClose),"e2"===v?a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_element' "+a.jgrid.edit.msg.novalue,a.jgrid.edit.bClose):a.jgrid.info_dialog(a.jgrid.errors.errcap,"string"===
+typeof v?v:v.message,a.jgrid.edit.bClose)}}}a(q).append(n);a(g).append(q);b.searchOperators||a("td:eq(0)",t).hide()});a("table thead",e.grid.hDiv).append(g);b.searchOperators&&(a(".soptclass",g).click(function(b){var c=a(this).offset();f(this,c.left,c.top);b.stopPropagation()}),a("body").on("click",function(b){"soptclass"!==b.target.className&&a("#sopt_menu").hide()}));a(".clearsearchclass",g).click(function(d){d=a(this).parents("tr:first");var f=parseInt(a("td.ui-search-oper",d).attr("colindex"),
+10),g=a.extend({},e.p.colModel[f].searchoptions||{}),g=g.defaultValue?g.defaultValue:"";"select"===e.p.colModel[f].stype?g?a("td.ui-search-input select",d).val(g):a("td.ui-search-input select",d)[0].selectedIndex=0:a("td.ui-search-input input",d).val(g);!0===b.autosearch&&c()});this.ftoolbar=!0;this.triggerToolbar=c;this.clearToolbar=function(c){var d={},f=0,g;c="boolean"!==typeof c?!0:c;a.each(e.p.colModel,function(){var b,c=a("#gs_"+a.jgrid.jqID(this.name),!0===this.frozen&&!0===e.p.frozenColumns?
+e.grid.fhDiv:e.grid.hDiv);this.searchoptions&&void 0!==this.searchoptions.defaultValue&&(b=this.searchoptions.defaultValue);g=this.index||this.name;switch(this.stype){case "select":c.find("option").each(function(c){0===c&&(this.selected=!0);if(a(this).val()===b)return this.selected=!0,!1});if(void 0!==b)d[g]=b,f++;else try{delete e.p.postData[g]}catch(h){}break;case "text":c.val(b||"");if(void 0!==b)d[g]=b,f++;else try{delete e.p.postData[g]}catch(n){}break;case "custom":a.isFunction(this.searchoptions.custom_value)&&
+0<c.length&&"SPAN"===c[0].nodeName.toUpperCase()&&this.searchoptions.custom_value.call(e,c.children(".customelement:first"),"set",b||"")}});var m=0<f?!0:!1;e.p.resetsearch=!0;if(!0===b.stringResult||"local"===e.p.datatype){var r='{"groupOp":"'+b.groupOp+'","rules":[',q=0;a.each(d,function(a,b){0<q&&(r+=",");r+='{"field":"'+a+'",';r+='"op":"eq",';r+='"data":"'+(b+"").replace(/\\/g,"\\\\").replace(/\"/g,'\\"')+'"}';q++});r+="]}";a.extend(e.p.postData,{filters:r});a.each(["searchField","searchString",
+"searchOper"],function(a,b){e.p.postData.hasOwnProperty(b)&&delete e.p.postData[b]})}else a.extend(e.p.postData,d);var n;e.p.searchurl&&(n=e.p.url,a(e).jqGrid("setGridParam",{url:e.p.searchurl}));var t="stop"===a(e).triggerHandler("jqGridToolbarBeforeClear")?!0:!1;!t&&a.isFunction(b.beforeClear)&&(t=b.beforeClear.call(e));t||c&&a(e).jqGrid("setGridParam",{search:m}).trigger("reloadGrid",[{page:1}]);n&&a(e).jqGrid("setGridParam",{url:n});a(e).triggerHandler("jqGridToolbarAfterClear");a.isFunction(b.afterClear)&&
+b.afterClear()};this.toggleToolbar=function(){var b=a("tr.ui-search-toolbar",e.grid.hDiv),c=!0===e.p.frozenColumns?a("tr.ui-search-toolbar",e.grid.fhDiv):!1;"none"===b.css("display")?(b.show(),c&&c.show()):(b.hide(),c&&c.hide())}}})},destroyFilterToolbar:function(){return this.each(function(){this.ftoolbar&&(this.toggleToolbar=this.clearToolbar=this.triggerToolbar=null,this.ftoolbar=!1,a(this.grid.hDiv).find("table thead tr.ui-search-toolbar").remove())})},destroyGroupHeader:function(b){void 0===
+b&&(b=!0);return this.each(function(){var e,c,f,g,d,h;c=this.grid;var k=a("table.ui-jqgrid-htable thead",c.hDiv),l=this.p.colModel;if(c){a(this).unbind(".setGroupHeaders");e=a("<tr>",{role:"row"}).addClass("ui-jqgrid-labels");g=c.headers;c=0;for(f=g.length;c<f;c++){d=l[c].hidden?"none":"";d=a(g[c].el).width(g[c].width).css("display",d);try{d.removeAttr("rowSpan")}catch(p){d.attr("rowSpan",1)}e.append(d);h=d.children("span.ui-jqgrid-resize");0<h.length&&(h[0].style.height="");d.children("div")[0].style.top=
+""}a(k).children("tr.ui-jqgrid-labels").remove();a(k).prepend(e);!0===b&&a(this).jqGrid("setGridParam",{groupHeader:null})}})},setGroupHeaders:function(b){b=a.extend({useColSpanStyle:!1,groupHeaders:[]},b||{});return this.each(function(){this.p.groupHeader=b;var e,c,f=0,g,d,h,k,l,p=this.p.colModel,m=p.length,r=this.grid.headers,q=a("table.ui-jqgrid-htable",this.grid.hDiv),n=q.children("thead").children("tr.ui-jqgrid-labels:last").addClass("jqg-second-row-header");g=q.children("thead");var t=q.find(".jqg-first-row-header");
+void 0===t[0]?t=a("<tr>",{role:"row","aria-hidden":"true"}).addClass("jqg-first-row-header").css("height","auto"):t.empty();var u,w=function(a,b){var c=b.length,d;for(d=0;d<c;d++)if(b[d].startColumnName===a)return d;return-1};a(this).prepend(g);g=a("<tr>",{role:"row"}).addClass("ui-jqgrid-labels jqg-third-row-header");for(e=0;e<m;e++)if(h=r[e].el,k=a(h),c=p[e],d={height:"0px",width:r[e].width+"px",display:c.hidden?"none":""},a("<th>",{role:"gridcell"}).css(d).addClass("ui-first-th-"+this.p.direction).appendTo(t),
+h.style.width="",d=w(c.name,b.groupHeaders),0<=d){d=b.groupHeaders[d];f=d.numberOfColumns;l=d.titleText;for(d=c=0;d<f&&e+d<m;d++)p[e+d].hidden||c++;d=a("<th>").attr({role:"columnheader"}).addClass("ui-state-default ui-th-column-header ui-th-"+this.p.direction).css({height:"22px","border-top":"0 none"}).html(l);0<c&&d.attr("colspan",String(c));this.p.headertitles&&d.attr("title",d.text());0===c&&d.hide();k.before(d);g.append(h);--f}else 0===f?b.useColSpanStyle?k.attr("rowspan","2"):(a("<th>",{role:"columnheader"}).addClass("ui-state-default ui-th-column-header ui-th-"+
+this.p.direction).css({display:c.hidden?"none":"","border-top":"0 none"}).insertBefore(k),g.append(h)):(g.append(h),f--);p=a(this).children("thead");p.prepend(t);g.insertAfter(n);q.append(p);b.useColSpanStyle&&(q.find("span.ui-jqgrid-resize").each(function(){var b=a(this).parent();b.is(":visible")&&(this.style.cssText="height: "+b.height()+"px !important; cursor: col-resize;")}),q.find("div.ui-jqgrid-sortable").each(function(){var b=a(this),c=b.parent();c.is(":visible")&&c.is(":has(span.ui-jqgrid-resize)")&&
+b.css("top",(c.height()-b.outerHeight())/2+"px")}));u=p.find("tr.jqg-first-row-header");a(this).bind("jqGridResizeStop.setGroupHeaders",function(a,b,c){u.find("th").eq(c).width(b)})})},setFrozenColumns:function(){return this.each(function(){if(this.grid){var b=this,e=b.p.colModel,c=0,f=e.length,g=-1,d=!1;if(!0!==b.p.subGrid&&!0!==b.p.treeGrid&&!0!==b.p.cellEdit&&!b.p.sortable&&!b.p.scroll){b.p.rownumbers&&c++;for(b.p.multiselect&&c++;c<f;){if(!0===e[c].frozen)d=!0,g=c;else break;c++}if(0<=g&&d){e=
+b.p.caption?a(b.grid.cDiv).outerHeight():0;c=a(".ui-jqgrid-htable","#gview_"+a.jgrid.jqID(b.p.id)).height();b.p.toppager&&(e+=a(b.grid.topDiv).outerHeight());!0===b.p.toolbar[0]&&"bottom"!==b.p.toolbar[1]&&(e+=a(b.grid.uDiv).outerHeight());b.grid.fhDiv=a('<div style="position:absolute;left:0px;top:'+e+"px;height:"+c+'px;" class="frozen-div ui-state-default ui-jqgrid-hdiv"></div>');b.grid.fbDiv=a('<div style="position:absolute;left:0px;top:'+(parseInt(e,10)+parseInt(c,10)+1)+'px;overflow-y:hidden" class="frozen-bdiv ui-jqgrid-bdiv"></div>');
+a("#gview_"+a.jgrid.jqID(b.p.id)).append(b.grid.fhDiv);f=a(".ui-jqgrid-htable","#gview_"+a.jgrid.jqID(b.p.id)).clone(!0);if(b.p.groupHeader){a("tr.jqg-first-row-header, tr.jqg-third-row-header",f).each(function(){a("th:gt("+g+")",this).remove()});var h=-1,k=-1,l,p;a("tr.jqg-second-row-header th",f).each(function(){l=parseInt(a(this).attr("colspan"),10);if(p=parseInt(a(this).attr("rowspan"),10))h++,k++;l&&(h+=l,k++);if(h===g)return!1});h!==g&&(k=g);a("tr.jqg-second-row-header",f).each(function(){a("th:gt("+
+k+")",this).remove()})}else a("tr",f).each(function(){a("th:gt("+g+")",this).remove()});a(f).width(1);a(b.grid.fhDiv).append(f).mousemove(function(a){if(b.grid.resizing)return b.grid.dragMove(a),!1});b.p.footerrow&&(f=a(".ui-jqgrid-bdiv","#gview_"+a.jgrid.jqID(b.p.id)).height(),b.grid.fsDiv=a('<div style="position:absolute;left:0px;top:'+(parseInt(e,10)+parseInt(c,10)+parseInt(f,10)+1)+'px;" class="frozen-sdiv ui-jqgrid-sdiv"></div>'),a("#gview_"+a.jgrid.jqID(b.p.id)).append(b.grid.fsDiv),e=a(".ui-jqgrid-ftable",
+"#gview_"+a.jgrid.jqID(b.p.id)).clone(!0),a("tr",e).each(function(){a("td:gt("+g+")",this).remove()}),a(e).width(1),a(b.grid.fsDiv).append(e));a(b).bind("jqGridResizeStop.setFrozenColumns",function(c,d,e){c=a(".ui-jqgrid-htable",b.grid.fhDiv);a("th:eq("+e+")",c).width(d);c=a(".ui-jqgrid-btable",b.grid.fbDiv);a("tr:first td:eq("+e+")",c).width(d);b.p.footerrow&&(c=a(".ui-jqgrid-ftable",b.grid.fsDiv),a("tr:first td:eq("+e+")",c).width(d))});a(b).bind("jqGridSortCol.setFrozenColumns",function(c,d,e){c=
+a("tr.ui-jqgrid-labels:last th:eq("+b.p.lastsort+")",b.grid.fhDiv);d=a("tr.ui-jqgrid-labels:last th:eq("+e+")",b.grid.fhDiv);a("span.ui-grid-ico-sort",c).addClass("ui-state-disabled");a(c).attr("aria-selected","false");a("span.ui-icon-"+b.p.sortorder,d).removeClass("ui-state-disabled");a(d).attr("aria-selected","true");b.p.viewsortcols[0]||b.p.lastsort===e||(a("span.s-ico",c).hide(),a("span.s-ico",d).show())});a("#gview_"+a.jgrid.jqID(b.p.id)).append(b.grid.fbDiv);a(b.grid.bDiv).scroll(function(){a(b.grid.fbDiv).scrollTop(a(this).scrollTop())});
+!0===b.p.hoverrows&&a("#"+a.jgrid.jqID(b.p.id)).unbind("mouseover").unbind("mouseout");a(b).bind("jqGridAfterGridComplete.setFrozenColumns",function(){a("#"+a.jgrid.jqID(b.p.id)+"_frozen").remove();a(b.grid.fbDiv).height(a(b.grid.bDiv).height()-16);var c=a("#"+a.jgrid.jqID(b.p.id)).clone(!0);a("tr[role=row]",c).each(function(){a("td[role=gridcell]:gt("+g+")",this).remove()});a(c).width(1).attr("id",b.p.id+"_frozen");a(b.grid.fbDiv).append(c);!0===b.p.hoverrows&&(a("tr.jqgrow",c).hover(function(){a(this).addClass("ui-state-hover");
+a("#"+a.jgrid.jqID(this.id),"#"+a.jgrid.jqID(b.p.id)).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover");a("#"+a.jgrid.jqID(this.id),"#"+a.jgrid.jqID(b.p.id)).removeClass("ui-state-hover")}),a("tr.jqgrow","#"+a.jgrid.jqID(b.p.id)).hover(function(){a(this).addClass("ui-state-hover");a("#"+a.jgrid.jqID(this.id),"#"+a.jgrid.jqID(b.p.id)+"_frozen").addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover");a("#"+a.jgrid.jqID(this.id),"#"+a.jgrid.jqID(b.p.id)+
+"_frozen").removeClass("ui-state-hover")}));c=null});b.grid.hDiv.loading||a(b).triggerHandler("jqGridAfterGridComplete");b.p.frozenColumns=!0}}}})},destroyFrozenColumns:function(){return this.each(function(){if(this.grid&&!0===this.p.frozenColumns){a(this.grid.fhDiv).remove();a(this.grid.fbDiv).remove();this.grid.fhDiv=null;this.grid.fbDiv=null;this.p.footerrow&&(a(this.grid.fsDiv).remove(),this.grid.fsDiv=null);a(this).unbind(".setFrozenColumns");if(!0===this.p.hoverrows){var b;a("#"+a.jgrid.jqID(this.p.id)).bind("mouseover",
+function(e){b=a(e.target).closest("tr.jqgrow");"ui-subgrid"!==a(b).attr("class")&&a(b).addClass("ui-state-hover")}).bind("mouseout",function(e){b=a(e.target).closest("tr.jqgrow");a(b).removeClass("ui-state-hover")})}this.p.frozenColumns=!1}})}})})(jQuery);
+(function(a){a.fn.jqFilter=function(b){if("string"===typeof b){var e=a.fn.jqFilter[b];if(!e)throw"jqFilter - No such method: "+b;var c=a.makeArray(arguments).slice(1);return e.apply(this,c)}var f=a.extend(!0,{filter:null,columns:[],onChange:null,afterRedraw:null,checkValues:null,error:!1,errmsg:"",errorcheck:!0,showQuery:!0,sopt:null,ops:[],operands:null,numopts:"eq ne lt le gt ge nu nn in ni".split(" "),stropts:"eq ne bw bn ew en cn nc nu nn in ni".split(" "),strarr:["text","string","blob"],groupOps:[{op:"AND",
+text:"AND"},{op:"OR",text:"OR"}],groupButton:!0,ruleButtons:!0,direction:"ltr"},a.jgrid.filter,b||{});return this.each(function(){if(!this.filter){this.p=f;if(null===this.p.filter||void 0===this.p.filter)this.p.filter={groupOp:this.p.groupOps[0].op,rules:[],groups:[]};var b,c=this.p.columns.length,e,k=/msie/i.test(navigator.userAgent)&&!window.opera;this.p.initFilter=a.extend(!0,{},this.p.filter);if(c){for(b=0;b<c;b++)e=this.p.columns[b],e.stype?e.inputtype=e.stype:e.inputtype||(e.inputtype="text"),
+e.sorttype?e.searchtype=e.sorttype:e.searchtype||(e.searchtype="string"),void 0===e.hidden&&(e.hidden=!1),e.label||(e.label=e.name),e.index&&(e.name=e.index),e.hasOwnProperty("searchoptions")||(e.searchoptions={}),e.hasOwnProperty("searchrules")||(e.searchrules={});this.p.showQuery&&a(this).append("<table class='queryresult ui-widget ui-widget-content' style='display:block;max-width:440px;border:0px none;' dir='"+this.p.direction+"'><tbody><tr><td class='query'></td></tr></tbody></table>");var l=
+function(b,c){var d=[!0,""],e=a("#"+a.jgrid.jqID(f.id))[0]||null;if(a.isFunction(c.searchrules))d=c.searchrules.call(e,b,c);else if(a.jgrid&&a.jgrid.checkValues)try{d=a.jgrid.checkValues.call(e,b,-1,c.searchrules,c.label)}catch(h){}d&&d.length&&!1===d[0]&&(f.error=!d[0],f.errmsg=d[1])};this.onchange=function(){this.p.error=!1;this.p.errmsg="";return a.isFunction(this.p.onChange)?this.p.onChange.call(this,this.p):!1};this.reDraw=function(){a("table.group:first",this).remove();var b=this.createTableForGroup(f.filter,
+null);a(this).append(b);a.isFunction(this.p.afterRedraw)&&this.p.afterRedraw.call(this,this.p)};this.createTableForGroup=function(b,c){var d=this,e,h=a("<table class='group ui-widget ui-widget-content' style='border:0px none;'><tbody></tbody></table>"),g="left";"rtl"===this.p.direction&&(g="right",h.attr("dir","rtl"));null===c&&h.append("<tr class='error' style='display:none;'><th colspan='5' class='ui-state-error' align='"+g+"'></th></tr>");var k=a("<tr></tr>");h.append(k);g=a("<th colspan='5' align='"+
+g+"'></th>");k.append(g);if(!0===this.p.ruleButtons){var l=a("<select class='opsel'></select>");g.append(l);var k="",s;for(e=0;e<f.groupOps.length;e++)s=b.groupOp===d.p.groupOps[e].op?" selected='selected'":"",k+="<option value='"+d.p.groupOps[e].op+"'"+s+">"+d.p.groupOps[e].text+"</option>";l.append(k).bind("change",function(){b.groupOp=a(l).val();d.onchange()})}k="<span></span>";this.p.groupButton&&(k=a("<input type='button' value='+ {}' title='Add subgroup' class='add-group'/>"),k.bind("click",
+function(){void 0===b.groups&&(b.groups=[]);b.groups.push({groupOp:f.groupOps[0].op,rules:[],groups:[]});d.reDraw();d.onchange();return!1}));g.append(k);if(!0===this.p.ruleButtons){var k=a("<input type='button' value='+' title='Add rule' class='add-rule ui-add'/>"),x;k.bind("click",function(){void 0===b.rules&&(b.rules=[]);for(e=0;e<d.p.columns.length;e++){var c=void 0===d.p.columns[e].search?!0:d.p.columns[e].search,f=!0===d.p.columns[e].hidden;if(!0===d.p.columns[e].searchoptions.searchhidden&&
+c||c&&!f){x=d.p.columns[e];break}}c=x.searchoptions.sopt?x.searchoptions.sopt:d.p.sopt?d.p.sopt:-1!==a.inArray(x.searchtype,d.p.strarr)?d.p.stropts:d.p.numopts;b.rules.push({field:x.name,op:c[0],data:""});d.reDraw();return!1});g.append(k)}null!==c&&(k=a("<input type='button' value='-' title='Delete group' class='delete-group'/>"),g.append(k),k.bind("click",function(){for(e=0;e<c.groups.length;e++)if(c.groups[e]===b){c.groups.splice(e,1);break}d.reDraw();d.onchange();return!1}));if(void 0!==b.groups)for(e=
+0;e<b.groups.length;e++)g=a("<tr></tr>"),h.append(g),k=a("<td class='first'></td>"),g.append(k),k=a("<td colspan='4'></td>"),k.append(this.createTableForGroup(b.groups[e],b)),g.append(k);void 0===b.groupOp&&(b.groupOp=d.p.groupOps[0].op);if(void 0!==b.rules)for(e=0;e<b.rules.length;e++)h.append(this.createTableRowForRule(b.rules[e],b));return h};this.createTableRowForRule=function(b,c){var d=this,e=a("#"+a.jgrid.jqID(f.id))[0]||null,h=a("<tr></tr>"),g,l,w,s,x="",A;h.append("<td class='first'></td>");
+var v=a("<td class='columns'></td>");h.append(v);var H=a("<select></select>"),B,D=[];v.append(H);H.bind("change",function(){b.field=a(H).val();w=a(this).parents("tr:first");for(g=0;g<d.p.columns.length;g++)if(d.p.columns[g].name===b.field){s=d.p.columns[g];break}if(s){s.searchoptions.id=a.jgrid.randId();k&&"text"===s.inputtype&&!s.searchoptions.size&&(s.searchoptions.size=10);var c=a.jgrid.createEl.call(e,s.inputtype,s.searchoptions,"",!0,d.p.ajaxSelectOptions||{},!0);a(c).addClass("input-elm");l=
+s.searchoptions.sopt?s.searchoptions.sopt:d.p.sopt?d.p.sopt:-1!==a.inArray(s.searchtype,d.p.strarr)?d.p.stropts:d.p.numopts;var f="",h=0;D=[];a.each(d.p.ops,function(){D.push(this.oper)});for(g=0;g<l.length;g++)B=a.inArray(l[g],D),-1!==B&&(0===h&&(b.op=d.p.ops[B].oper),f+="<option value='"+d.p.ops[B].oper+"'>"+d.p.ops[B].text+"</option>",h++);a(".selectopts",w).empty().append(f);a(".selectopts",w)[0].selectedIndex=0;a.jgrid.msie&&9>a.jgrid.msiever()&&(f=parseInt(a("select.selectopts",w)[0].offsetWidth,
+10)+1,a(".selectopts",w).width(f),a(".selectopts",w).css("width","auto"));a(".data",w).empty().append(c);a.jgrid.bindEv.call(e,c,s.searchoptions);a(".input-elm",w).bind("change",function(c){c=c.target;b.data="SPAN"===c.nodeName.toUpperCase()&&s.searchoptions&&a.isFunction(s.searchoptions.custom_value)?s.searchoptions.custom_value.call(e,a(c).children(".customelement:first"),"get"):c.value;d.onchange()});setTimeout(function(){b.data=a(c).val();d.onchange()},0)}});for(g=v=0;g<d.p.columns.length;g++){A=
+void 0===d.p.columns[g].search?!0:d.p.columns[g].search;var C=!0===d.p.columns[g].hidden;if(!0===d.p.columns[g].searchoptions.searchhidden&&A||A&&!C)A="",b.field===d.p.columns[g].name&&(A=" selected='selected'",v=g),x+="<option value='"+d.p.columns[g].name+"'"+A+">"+d.p.columns[g].label+"</option>"}H.append(x);x=a("<td class='operators'></td>");h.append(x);s=f.columns[v];s.searchoptions.id=a.jgrid.randId();k&&"text"===s.inputtype&&!s.searchoptions.size&&(s.searchoptions.size=10);v=a.jgrid.createEl.call(e,
+s.inputtype,s.searchoptions,b.data,!0,d.p.ajaxSelectOptions||{},!0);if("nu"===b.op||"nn"===b.op)a(v).attr("readonly","true"),a(v).attr("disabled","true");var F=a("<select class='selectopts'></select>");x.append(F);F.bind("change",function(){b.op=a(F).val();w=a(this).parents("tr:first");var c=a(".input-elm",w)[0];"nu"===b.op||"nn"===b.op?(b.data="","SELECT"!==c.tagName.toUpperCase()&&(c.value=""),c.setAttribute("readonly","true"),c.setAttribute("disabled","true")):("SELECT"===c.tagName.toUpperCase()&&
+(b.data=c.value),c.removeAttribute("readonly"),c.removeAttribute("disabled"));d.onchange()});l=s.searchoptions.sopt?s.searchoptions.sopt:d.p.sopt?d.p.sopt:-1!==a.inArray(s.searchtype,d.p.strarr)?d.p.stropts:d.p.numopts;x="";a.each(d.p.ops,function(){D.push(this.oper)});for(g=0;g<l.length;g++)B=a.inArray(l[g],D),-1!==B&&(A=b.op===d.p.ops[B].oper?" selected='selected'":"",x+="<option value='"+d.p.ops[B].oper+"'"+A+">"+d.p.ops[B].text+"</option>");F.append(x);x=a("<td class='data'></td>");h.append(x);
+x.append(v);a.jgrid.bindEv.call(e,v,s.searchoptions);a(v).addClass("input-elm").bind("change",function(){b.data="custom"===s.inputtype?s.searchoptions.custom_value.call(e,a(this).children(".customelement:first"),"get"):a(this).val();d.onchange()});x=a("<td></td>");h.append(x);!0===this.p.ruleButtons&&(v=a("<input type='button' value='-' title='Delete rule' class='delete-rule ui-del'/>"),x.append(v),v.bind("click",function(){for(g=0;g<c.rules.length;g++)if(c.rules[g]===b){c.rules.splice(g,1);break}d.reDraw();
+d.onchange();return!1}));return h};this.getStringForGroup=function(a){var b="(",c;if(void 0!==a.groups)for(c=0;c<a.groups.length;c++){1<b.length&&(b+=" "+a.groupOp+" ");try{b+=this.getStringForGroup(a.groups[c])}catch(d){alert(d)}}if(void 0!==a.rules)try{for(c=0;c<a.rules.length;c++)1<b.length&&(b+=" "+a.groupOp+" "),b+=this.getStringForRule(a.rules[c])}catch(e){alert(e)}b+=")";return"()"===b?"":b};this.getStringForRule=function(b){var c="",d="",e,g;for(e=0;e<this.p.ops.length;e++)if(this.p.ops[e].oper===
+b.op){c=this.p.operands.hasOwnProperty(b.op)?this.p.operands[b.op]:"";d=this.p.ops[e].oper;break}for(e=0;e<this.p.columns.length;e++)if(this.p.columns[e].name===b.field){g=this.p.columns[e];break}if(void 0==g)return"";e=b.data;if("bw"===d||"bn"===d)e+="%";if("ew"===d||"en"===d)e="%"+e;if("cn"===d||"nc"===d)e="%"+e+"%";if("in"===d||"ni"===d)e=" ("+e+")";f.errorcheck&&l(b.data,g);return-1!==a.inArray(g.searchtype,["int","integer","float","number","currency"])||"nn"===d||"nu"===d?b.field+" "+c+" "+e:
+b.field+" "+c+' "'+e+'"'};this.resetFilter=function(){this.p.filter=a.extend(!0,{},this.p.initFilter);this.reDraw();this.onchange()};this.hideError=function(){a("th.ui-state-error",this).html("");a("tr.error",this).hide()};this.showError=function(){a("th.ui-state-error",this).html(this.p.errmsg);a("tr.error",this).show()};this.toUserFriendlyString=function(){return this.getStringForGroup(f.filter)};this.toString=function(){function a(c){var d="(",e;if(void 0!==c.groups)for(e=0;e<c.groups.length;e++)1<
+d.length&&(d="OR"===c.groupOp?d+" || ":d+" && "),d+=a(c.groups[e]);if(void 0!==c.rules)for(e=0;e<c.rules.length;e++){1<d.length&&(d="OR"===c.groupOp?d+" || ":d+" && ");var f=c.rules[e];if(b.p.errorcheck){for(var g=void 0,h=void 0,g=0;g<b.p.columns.length;g++)if(b.p.columns[g].name===f.field){h=b.p.columns[g];break}h&&l(f.data,h)}d+=f.op+"(item."+f.field+",'"+f.data+"')"}d+=")";return"()"===d?"":d}var b=this;return a(this.p.filter)};this.reDraw();if(this.p.showQuery)this.onchange();this.filter=!0}}})};
+a.extend(a.fn.jqFilter,{toSQLString:function(){var a="";this.each(function(){a=this.toUserFriendlyString()});return a},filterData:function(){var a;this.each(function(){a=this.p.filter});return a},getParameter:function(a){return void 0!==a&&this.p.hasOwnProperty(a)?this.p[a]:this.p},resetFilter:function(){return this.each(function(){this.resetFilter()})},addFilter:function(b){"string"===typeof b&&(b=a.jgrid.parse(b));this.each(function(){this.p.filter=b;this.reDraw();this.onchange()})}})})(jQuery);
+(function(a){var b={};a.jgrid.extend({searchGrid:function(b){b=a.extend(!0,{recreateFilter:!1,drag:!0,sField:"searchField",sValue:"searchString",sOper:"searchOper",sFilter:"filters",loadDefaults:!0,beforeShowSearch:null,afterShowSearch:null,onInitializeSearch:null,afterRedraw:null,afterChange:null,closeAfterSearch:!1,closeAfterReset:!1,closeOnEscape:!1,searchOnEnter:!1,multipleSearch:!1,multipleGroup:!1,top:0,left:0,jqModal:!0,modal:!1,resize:!0,width:450,height:"auto",dataheight:"auto",showQuery:!1,
+errorcheck:!0,sopt:null,stringResult:void 0,onClose:null,onSearch:null,onReset:null,toTop:!0,overlay:30,columns:[],tmplNames:null,tmplFilters:null,tmplLabel:" Template: ",showOnLoad:!1,layer:null,operands:{eq:"=",ne:"<>",lt:"<",le:"<=",gt:">",ge:">=",bw:"LIKE",bn:"NOT LIKE","in":"IN",ni:"NOT IN",ew:"LIKE",en:"NOT LIKE",cn:"LIKE",nc:"NOT LIKE",nu:"IS NULL",nn:"ISNOT NULL"}},a.jgrid.search,b||{});return this.each(function(){function c(c){d=a(f).triggerHandler("jqGridFilterBeforeShow",[c]);void 0===
+d&&(d=!0);d&&a.isFunction(b.beforeShowSearch)&&(d=b.beforeShowSearch.call(f,c));d&&(a.jgrid.viewModal("#"+a.jgrid.jqID(k.themodal),{gbox:"#gbox_"+a.jgrid.jqID(g),jqm:b.jqModal,modal:b.modal,overlay:b.overlay,toTop:b.toTop}),a(f).triggerHandler("jqGridFilterAfterShow",[c]),a.isFunction(b.afterShowSearch)&&b.afterShowSearch.call(f,c))}var f=this;if(f.grid){var g="fbox_"+f.p.id,d=!0,h=!0,k={themodal:"searchmod"+g,modalhead:"searchhd"+g,modalcontent:"searchcnt"+g,scrollelm:g},l=f.p.postData[b.sFilter],
+p;"string"===typeof l&&(l=a.jgrid.parse(l));!0===b.recreateFilter&&a("#"+a.jgrid.jqID(k.themodal)).remove();if(void 0!==a("#"+a.jgrid.jqID(k.themodal))[0])c(a("#fbox_"+a.jgrid.jqID(+f.p.id)));else{var m=a("<div><div id='"+g+"' class='searchFilter' style='overflow:auto'></div></div>").insertBefore("#gview_"+a.jgrid.jqID(f.p.id)),r="left",q="";"rtl"===f.p.direction&&(r="right",q=" style='text-align:left'",m.attr("dir","rtl"));var n=a.extend([],f.p.colModel),t="<a id='"+g+"_search' class='fm-button ui-state-default ui-corner-all fm-button-icon-right ui-reset'><span class='ui-icon ui-icon-search'></span>"+
+b.Find+"</a>",u="<a id='"+g+"_reset' class='fm-button ui-state-default ui-corner-all fm-button-icon-left ui-search'><span class='ui-icon ui-icon-arrowreturnthick-1-w'></span>"+b.Reset+"</a>",w="",s="",x,A=!1,v=-1;b.showQuery&&(w="<a id='"+g+"_query' class='fm-button ui-state-default ui-corner-all fm-button-icon-left'><span class='ui-icon ui-icon-comment'></span>Query</a>");b.columns.length?(n=b.columns,v=0,x=n[0].index||n[0].name):a.each(n,function(a,b){b.label||(b.label=f.p.colNames[a]);if(!A){var c=
+void 0===b.search?!0:b.search,d=!0===b.hidden;if(b.searchoptions&&!0===b.searchoptions.searchhidden&&c||c&&!d)A=!0,x=b.index||b.name,v=a}});if(!l&&x||!1===b.multipleSearch){var H="eq";0<=v&&n[v].searchoptions&&n[v].searchoptions.sopt?H=n[v].searchoptions.sopt[0]:b.sopt&&b.sopt.length&&(H=b.sopt[0]);l={groupOp:"AND",rules:[{field:x,op:H,data:""}]}}A=!1;b.tmplNames&&b.tmplNames.length&&(A=!0,s=b.tmplLabel,s+="<select class='ui-template'>",s+="<option value='default'>Default</option>",a.each(b.tmplNames,
+function(a,b){s+="<option value='"+a+"'>"+b+"</option>"}),s+="</select>");r="<table class='EditTable' style='border:0px none;margin-top:5px' id='"+g+"_2'><tbody><tr><td colspan='2'><hr class='ui-widget-content' style='margin:1px'/></td></tr><tr><td class='EditButton' style='text-align:"+r+"'>"+u+s+"</td><td class='EditButton' "+q+">"+w+t+"</td></tr></tbody></table>";g=a.jgrid.jqID(g);a("#"+g).jqFilter({columns:n,filter:b.loadDefaults?l:null,showQuery:b.showQuery,errorcheck:b.errorcheck,sopt:b.sopt,
+groupButton:b.multipleGroup,ruleButtons:b.multipleSearch,afterRedraw:b.afterRedraw,ops:b.odata,operands:b.operands,ajaxSelectOptions:f.p.ajaxSelectOptions,groupOps:b.groupOps,onChange:function(){this.p.showQuery&&a(".query",this).html(this.toUserFriendlyString());a.isFunction(b.afterChange)&&b.afterChange.call(f,a("#"+g),b)},direction:f.p.direction,id:f.p.id});m.append(r);A&&b.tmplFilters&&b.tmplFilters.length&&a(".ui-template",m).bind("change",function(){var c=a(this).val();"default"===c?a("#"+g).jqFilter("addFilter",
+l):a("#"+g).jqFilter("addFilter",b.tmplFilters[parseInt(c,10)]);return!1});!0===b.multipleGroup&&(b.multipleSearch=!0);a(f).triggerHandler("jqGridFilterInitialize",[a("#"+g)]);a.isFunction(b.onInitializeSearch)&&b.onInitializeSearch.call(f,a("#"+g));b.gbox="#gbox_"+g;b.layer?a.jgrid.createModal(k,m,b,"#gview_"+a.jgrid.jqID(f.p.id),a("#gbox_"+a.jgrid.jqID(f.p.id))[0],"#"+a.jgrid.jqID(b.layer),{position:"relative"}):a.jgrid.createModal(k,m,b,"#gview_"+a.jgrid.jqID(f.p.id),a("#gbox_"+a.jgrid.jqID(f.p.id))[0]);
+(b.searchOnEnter||b.closeOnEscape)&&a("#"+a.jgrid.jqID(k.themodal)).keydown(function(c){var d=a(c.target);if(!(!b.searchOnEnter||13!==c.which||d.hasClass("add-group")||d.hasClass("add-rule")||d.hasClass("delete-group")||d.hasClass("delete-rule")||d.hasClass("fm-button")&&d.is("[id$=_query]")))return a("#"+g+"_search").click(),!1;if(b.closeOnEscape&&27===c.which)return a("#"+a.jgrid.jqID(k.modalhead)).find(".ui-jqdialog-titlebar-close").click(),!1});w&&a("#"+g+"_query").bind("click",function(){a(".queryresult",
+m).toggle();return!1});void 0===b.stringResult&&(b.stringResult=b.multipleSearch);a("#"+g+"_search").bind("click",function(){var c={},d,l;p=a("#"+g);p.find(".input-elm:focus").change();l=p.jqFilter("filterData");if(b.errorcheck&&(p[0].hideError(),b.showQuery||p.jqFilter("toSQLString"),p[0].p.error))return p[0].showError(),!1;if(b.stringResult){try{d=xmlJsonClass.toJson(l,"","",!1)}catch(n){try{d=JSON.stringify(l)}catch(m){}}"string"===typeof d&&(c[b.sFilter]=d,a.each([b.sField,b.sValue,b.sOper],function(){c[this]=
+""}))}else b.multipleSearch?(c[b.sFilter]=l,a.each([b.sField,b.sValue,b.sOper],function(){c[this]=""})):(c[b.sField]=l.rules[0].field,c[b.sValue]=l.rules[0].data,c[b.sOper]=l.rules[0].op,c[b.sFilter]="");f.p.search=!0;a.extend(f.p.postData,c);h=a(f).triggerHandler("jqGridFilterSearch");void 0===h&&(h=!0);h&&a.isFunction(b.onSearch)&&(h=b.onSearch.call(f,f.p.filters));!1!==h&&a(f).trigger("reloadGrid",[{page:1}]);b.closeAfterSearch&&a.jgrid.hideModal("#"+a.jgrid.jqID(k.themodal),{gb:"#gbox_"+a.jgrid.jqID(f.p.id),
+jqm:b.jqModal,onClose:b.onClose});return!1});a("#"+g+"_reset").bind("click",function(){var c={},d=a("#"+g);f.p.search=!1;f.p.resetsearch=!0;!1===b.multipleSearch?c[b.sField]=c[b.sValue]=c[b.sOper]="":c[b.sFilter]="";d[0].resetFilter();A&&a(".ui-template",m).val("default");a.extend(f.p.postData,c);h=a(f).triggerHandler("jqGridFilterReset");void 0===h&&(h=!0);h&&a.isFunction(b.onReset)&&(h=b.onReset.call(f));!1!==h&&a(f).trigger("reloadGrid",[{page:1}]);b.closeAfterReset&&a.jgrid.hideModal("#"+a.jgrid.jqID(k.themodal),
+{gb:"#gbox_"+a.jgrid.jqID(f.p.id),jqm:b.jqModal,onClose:b.onClose});return!1});c(a("#"+g));a(".fm-button:not(.ui-state-disabled)",m).hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")})}}})},editGridRow:function(e,c){c=a.extend(!0,{top:0,left:0,width:300,datawidth:"auto",height:"auto",dataheight:"auto",modal:!1,overlay:30,drag:!0,resize:!0,url:null,mtype:"POST",clearAfterAdd:!0,closeAfterEdit:!1,reloadAfterSubmit:!0,onInitializeForm:null,beforeInitData:null,
+beforeShowForm:null,afterShowForm:null,beforeSubmit:null,afterSubmit:null,onclickSubmit:null,afterComplete:null,onclickPgButtons:null,afterclickPgButtons:null,editData:{},recreateForm:!1,jqModal:!0,closeOnEscape:!1,addedrow:"first",topinfo:"",bottominfo:"",saveicon:[],closeicon:[],savekey:[!1,13],navkeys:[!1,38,40],checkOnSubmit:!1,checkOnUpdate:!1,_savedData:{},processing:!1,onClose:null,ajaxEditOptions:{},serializeEditData:null,viewPagerButtons:!0,overlayClass:"ui-widget-overlay",removemodal:!0,
+form:"edit"},a.jgrid.edit,c||{});b[a(this)[0].p.id]=c;return this.each(function(){function f(){a(s+" > tbody > tr > td .FormElement").each(function(){var b=a(".customelement",this);if(b.length){var c=a(b[0]).attr("name");a.each(n.p.colModel,function(){if(this.name===c&&this.editoptions&&a.isFunction(this.editoptions.custom_value)){try{if(y[c]=this.editoptions.custom_value.call(n,a("#"+a.jgrid.jqID(c),s),"get"),void 0===y[c])throw"e1";}catch(b){"e1"===b?a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_value' "+
+a.jgrid.edit.msg.novalue,a.jgrid.edit.bClose):a.jgrid.info_dialog(a.jgrid.errors.errcap,b.message,a.jgrid.edit.bClose)}return!0}})}else{switch(a(this).get(0).type){case "checkbox":a(this).is(":checked")?y[this.name]=a(this).val():(b=a(this).attr("offval"),y[this.name]=b);break;case "select-one":y[this.name]=a("option:selected",this).val();break;case "select-multiple":y[this.name]=a(this).val();y[this.name]=y[this.name]?y[this.name].join(","):"";a("option:selected",this).each(function(b,c){a(c).text()});
+break;case "password":case "text":case "textarea":case "button":y[this.name]=a(this).val()}n.p.autoencode&&(y[this.name]=a.jgrid.htmlEncode(y[this.name]))}});return!0}function g(c,d,e,f){var g,h,k,l=0,m,p,q,r=[],s=!1,t="",v;for(v=1;v<=f;v++)t+="<td class='CaptionTD'>&#160;</td><td class='DataTD'>&#160;</td>";"_empty"!==c&&(s=a(d).jqGrid("getInd",c));a(d.p.colModel).each(function(v){g=this.name;p=(h=this.editrules&&!0===this.editrules.edithidden?!1:!0===this.hidden?!0:!1)?"style='display:none'":"";
+if("cb"!==g&&"subgrid"!==g&&!0===this.editable&&"rn"!==g){if(!1===s)m="";else if(g===d.p.ExpandColumn&&!0===d.p.treeGrid)m=a("td[role='gridcell']:eq("+v+")",d.rows[s]).text();else{try{m=a.unformat.call(d,a("td[role='gridcell']:eq("+v+")",d.rows[s]),{rowId:c,colModel:this},v)}catch(x){m=this.edittype&&"textarea"===this.edittype?a("td[role='gridcell']:eq("+v+")",d.rows[s]).text():a("td[role='gridcell']:eq("+v+")",d.rows[s]).html()}if(!m||"&nbsp;"===m||"&#160;"===m||1===m.length&&160===m.charCodeAt(0))m=
+""}var D=a.extend({},this.editoptions||{},{id:g,name:g,rowId:c}),w=a.extend({},{elmprefix:"",elmsuffix:"",rowabove:!1,rowcontent:""},this.formoptions||{}),A=parseInt(w.rowpos,10)||l+1,C=parseInt(2*(parseInt(w.colpos,10)||1),10);"_empty"===c&&D.defaultValue&&(m=a.isFunction(D.defaultValue)?D.defaultValue.call(n):D.defaultValue);this.edittype||(this.edittype="text");n.p.autoencode&&(m=a.jgrid.htmlDecode(m));q=a.jgrid.createEl.call(n,this.edittype,D,m,!1,a.extend({},a.jgrid.ajaxOptions,d.p.ajaxSelectOptions||
+{}));if(b[n.p.id].checkOnSubmit||b[n.p.id].checkOnUpdate)b[n.p.id]._savedData[g]=m;a(q).addClass("FormElement");-1<a.inArray(this.edittype,["text","textarea","password","select"])&&a(q).addClass("ui-widget-content ui-corner-all");k=a(e).find("tr[rowpos="+A+"]");if(w.rowabove){var y=a("<tr><td class='contentinfo' colspan='"+2*f+"'>"+w.rowcontent+"</td></tr>");a(e).append(y);y[0].rp=A}0===k.length&&(k=a("<tr "+p+" rowpos='"+A+"'></tr>").addClass("FormData").attr("id","tr_"+g),a(k).append(t),a(e).append(k),
+k[0].rp=A);a("td:eq("+(C-2)+")",k[0]).html(void 0===w.label?d.p.colNames[v]:w.label);a("td:eq("+(C-1)+")",k[0]).append(w.elmprefix).append(q).append(w.elmsuffix);"custom"===this.edittype&&a.isFunction(D.custom_value)&&D.custom_value.call(n,a("#"+g,"#"+u),"set",m);a.jgrid.bindEv.call(n,q,D);r[l]=v;l++}});0<l&&(v=a("<tr class='FormData' style='display:none'><td class='CaptionTD'></td><td colspan='"+(2*f-1)+"' class='DataTD'><input class='FormElement' id='id_g' type='text' name='"+d.p.id+"_id' value='"+
+c+"'/></td></tr>"),v[0].rp=l+999,a(e).append(v),b[n.p.id].checkOnSubmit||b[n.p.id].checkOnUpdate)&&(b[n.p.id]._savedData[d.p.id+"_id"]=c);return r}function d(c,d,e){var f,g=0,h,k,l,m,p;if(b[n.p.id].checkOnSubmit||b[n.p.id].checkOnUpdate)b[n.p.id]._savedData={},b[n.p.id]._savedData[d.p.id+"_id"]=c;var q=d.p.colModel;if("_empty"===c)a(q).each(function(){f=this.name;l=a.extend({},this.editoptions||{});(k=a("#"+a.jgrid.jqID(f),"#"+e))&&k.length&&null!==k[0]&&(m="","custom"===this.edittype&&a.isFunction(l.custom_value)?
+l.custom_value.call(n,a("#"+f,"#"+e),"set",m):l.defaultValue?(m=a.isFunction(l.defaultValue)?l.defaultValue.call(n):l.defaultValue,"checkbox"===k[0].type?(p=m.toLowerCase(),0>p.search(/(false|f|0|no|n|off|undefined)/i)&&""!==p?(k[0].checked=!0,k[0].defaultChecked=!0,k[0].value=m):(k[0].checked=!1,k[0].defaultChecked=!1)):k.val(m)):"checkbox"===k[0].type?(k[0].checked=!1,k[0].defaultChecked=!1,m=a(k).attr("offval")):k[0].type&&"select"===k[0].type.substr(0,6)?k[0].selectedIndex=0:k.val(m),!0===b[n.p.id].checkOnSubmit||
+b[n.p.id].checkOnUpdate)&&(b[n.p.id]._savedData[f]=m)}),a("#id_g","#"+e).val(c);else{var r=a(d).jqGrid("getInd",c,!0);r&&(a('td[role="gridcell"]',r).each(function(k){f=q[k].name;if("cb"!==f&&"subgrid"!==f&&"rn"!==f&&!0===q[k].editable){if(f===d.p.ExpandColumn&&!0===d.p.treeGrid)h=a(this).text();else try{h=a.unformat.call(d,a(this),{rowId:c,colModel:q[k]},k)}catch(l){h="textarea"===q[k].edittype?a(this).text():a(this).html()}n.p.autoencode&&(h=a.jgrid.htmlDecode(h));if(!0===b[n.p.id].checkOnSubmit||
+b[n.p.id].checkOnUpdate)b[n.p.id]._savedData[f]=h;f=a.jgrid.jqID(f);switch(q[k].edittype){case "password":case "text":case "button":case "image":case "textarea":if("&nbsp;"===h||"&#160;"===h||1===h.length&&160===h.charCodeAt(0))h="";a("#"+f,"#"+e).val(h);break;case "select":var m=h.split(","),m=a.map(m,function(b){return a.trim(b)});a("#"+f+" option","#"+e).each(function(){q[k].editoptions.multiple||a.trim(h)!==a.trim(a(this).text())&&m[0]!==a.trim(a(this).text())&&m[0]!==a.trim(a(this).val())?q[k].editoptions.multiple?
+-1<a.inArray(a.trim(a(this).text()),m)||-1<a.inArray(a.trim(a(this).val()),m)?this.selected=!0:this.selected=!1:this.selected=!1:this.selected=!0});break;case "checkbox":h=String(h);if(q[k].editoptions&&q[k].editoptions.value)if(q[k].editoptions.value.split(":")[0]===h)a("#"+f,"#"+e)[n.p.useProp?"prop":"attr"]({checked:!0,defaultChecked:!0});else a("#"+f,"#"+e)[n.p.useProp?"prop":"attr"]({checked:!1,defaultChecked:!1});else h=h.toLowerCase(),0>h.search(/(false|f|0|no|n|off|undefined)/i)&&""!==h?(a("#"+
+f,"#"+e)[n.p.useProp?"prop":"attr"]("checked",!0),a("#"+f,"#"+e)[n.p.useProp?"prop":"attr"]("defaultChecked",!0)):(a("#"+f,"#"+e)[n.p.useProp?"prop":"attr"]("checked",!1),a("#"+f,"#"+e)[n.p.useProp?"prop":"attr"]("defaultChecked",!1));break;case "custom":try{if(q[k].editoptions&&a.isFunction(q[k].editoptions.custom_value))q[k].editoptions.custom_value.call(n,a("#"+f,"#"+e),"set",h);else throw"e1";}catch(p){"e1"===p?a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_value' "+a.jgrid.edit.msg.nodefined,
+a.jgrid.edit.bClose):a.jgrid.info_dialog(a.jgrid.errors.errcap,p.message,a.jgrid.edit.bClose)}}g++}}),0<g&&a("#id_g",s).val(c))}}function h(){a.each(n.p.colModel,function(a,b){b.editoptions&&!0===b.editoptions.NullIfEmpty&&y.hasOwnProperty(b.name)&&""===y[b.name]&&(y[b.name]="null")})}function k(){var e,f=[!0,"",""],g={},k=n.p.prmNames,l,m,p,q,r,v=a(n).triggerHandler("jqGridAddEditBeforeCheckValues",[a("#"+u),z]);v&&"object"===typeof v&&(y=v);a.isFunction(b[n.p.id].beforeCheckValues)&&(v=b[n.p.id].beforeCheckValues.call(n,
+y,a("#"+u),z))&&"object"===typeof v&&(y=v);for(p in y)if(y.hasOwnProperty(p)&&(f=a.jgrid.checkValues.call(n,y[p],p),!1===f[0]))break;h();f[0]&&(g=a(n).triggerHandler("jqGridAddEditClickSubmit",[b[n.p.id],y,z]),void 0===g&&a.isFunction(b[n.p.id].onclickSubmit)&&(g=b[n.p.id].onclickSubmit.call(n,b[n.p.id],y,z)||{}),f=a(n).triggerHandler("jqGridAddEditBeforeSubmit",[y,a("#"+u),z]),void 0===f&&(f=[!0,"",""]),f[0]&&a.isFunction(b[n.p.id].beforeSubmit)&&(f=b[n.p.id].beforeSubmit.call(n,y,a("#"+u),z)));
+if(f[0]&&!b[n.p.id].processing){b[n.p.id].processing=!0;a("#sData",s+"_2").addClass("ui-state-active");p=b[n.p.id].url||a(n).jqGrid("getGridParam","editurl");m=k.oper;l="clientArray"===p?n.p.keyName:k.id;y[m]="_empty"===a.trim(y[n.p.id+"_id"])?k.addoper:k.editoper;y[m]!==k.addoper?y[l]=y[n.p.id+"_id"]:void 0===y[l]&&(y[l]=y[n.p.id+"_id"]);delete y[n.p.id+"_id"];y=a.extend(y,b[n.p.id].editData,g);if(!0===n.p.treeGrid)for(r in y[m]===k.addoper&&(q=a(n).jqGrid("getGridParam","selrow"),y["adjacency"===
+n.p.treeGridModel?n.p.treeReader.parent_id_field:"parent_id"]=q),n.p.treeReader)n.p.treeReader.hasOwnProperty(r)&&(g=n.p.treeReader[r],!y.hasOwnProperty(g)||y[m]===k.addoper&&"parent_id_field"===r||delete y[g]);y[l]=a.jgrid.stripPref(n.p.idPrefix,y[l]);r=a.extend({url:p,type:b[n.p.id].mtype,data:a.isFunction(b[n.p.id].serializeEditData)?b[n.p.id].serializeEditData.call(n,y):y,complete:function(g,h){var p;a("#sData",s+"_2").removeClass("ui-state-active");y[l]=n.p.idPrefix+y[l];300<=g.status&&304!==
+g.status?(f[0]=!1,f[1]=a(n).triggerHandler("jqGridAddEditErrorTextFormat",[g,z]),a.isFunction(b[n.p.id].errorTextFormat)?f[1]=b[n.p.id].errorTextFormat.call(n,g,z):f[1]=h+" Status: '"+g.statusText+"'. Error code: "+g.status):(f=a(n).triggerHandler("jqGridAddEditAfterSubmit",[g,y,z]),void 0===f&&(f=[!0,"",""]),f[0]&&a.isFunction(b[n.p.id].afterSubmit)&&(f=b[n.p.id].afterSubmit.call(n,g,y,z)));if(!1===f[0])a("#FormError>td",s).html(f[1]),a("#FormError",s).show();else if(n.p.autoencode&&a.each(y,function(b,
+c){y[b]=a.jgrid.htmlDecode(c)}),y[m]===k.addoper?(f[2]||(f[2]=a.jgrid.randId()),null==y[l]?y[l]=f[2]:f[2]=y[l],b[n.p.id].reloadAfterSubmit?a(n).trigger("reloadGrid"):!0===n.p.treeGrid?a(n).jqGrid("addChildNode",f[2],q,y):a(n).jqGrid("addRowData",f[2],y,c.addedrow),b[n.p.id].closeAfterAdd?(!0!==n.p.treeGrid&&a(n).jqGrid("setSelection",f[2]),a.jgrid.hideModal("#"+a.jgrid.jqID(x.themodal),{gb:"#gbox_"+a.jgrid.jqID(t),jqm:c.jqModal,onClose:b[n.p.id].onClose,removemodal:b[n.p.id].removemodal,formprop:!b[n.p.id].recreateForm,
+form:b[n.p.id].form})):b[n.p.id].clearAfterAdd&&d("_empty",n,u)):(b[n.p.id].reloadAfterSubmit?(a(n).trigger("reloadGrid"),b[n.p.id].closeAfterEdit||setTimeout(function(){a(n).jqGrid("setSelection",y[l])},1E3)):!0===n.p.treeGrid?a(n).jqGrid("setTreeRow",y[l],y):a(n).jqGrid("setRowData",y[l],y),b[n.p.id].closeAfterEdit&&a.jgrid.hideModal("#"+a.jgrid.jqID(x.themodal),{gb:"#gbox_"+a.jgrid.jqID(t),jqm:c.jqModal,onClose:b[n.p.id].onClose,removemodal:b[n.p.id].removemodal,formprop:!b[n.p.id].recreateForm,
+form:b[n.p.id].form})),a.isFunction(b[n.p.id].afterComplete)&&(e=g,setTimeout(function(){a(n).triggerHandler("jqGridAddEditAfterComplete",[e,y,a("#"+u),z]);b[n.p.id].afterComplete.call(n,e,y,a("#"+u),z);e=null},500)),b[n.p.id].checkOnSubmit||b[n.p.id].checkOnUpdate)if(a("#"+u).data("disabled",!1),"_empty"!==b[n.p.id]._savedData[n.p.id+"_id"])for(p in b[n.p.id]._savedData)b[n.p.id]._savedData.hasOwnProperty(p)&&y[p]&&(b[n.p.id]._savedData[p]=y[p]);b[n.p.id].processing=!1;try{a(":input:visible","#"+
+u)[0].focus()}catch(r){}}},a.jgrid.ajaxOptions,b[n.p.id].ajaxEditOptions);r.url||b[n.p.id].useDataProxy||(a.isFunction(n.p.dataProxy)?b[n.p.id].useDataProxy=!0:(f[0]=!1,f[1]+=" "+a.jgrid.errors.nourl));f[0]&&(b[n.p.id].useDataProxy?(g=n.p.dataProxy.call(n,r,"set_"+n.p.id),void 0===g&&(g=[!0,""]),!1===g[0]?(f[0]=!1,f[1]=g[1]||"Error deleting the selected row!"):(r.data.oper===k.addoper&&b[n.p.id].closeAfterAdd&&a.jgrid.hideModal("#"+a.jgrid.jqID(x.themodal),{gb:"#gbox_"+a.jgrid.jqID(t),jqm:c.jqModal,
+onClose:b[n.p.id].onClose,removemodal:b[n.p.id].removemodal,formprop:!b[n.p.id].recreateForm,form:b[n.p.id].form}),r.data.oper===k.editoper&&b[n.p.id].closeAfterEdit&&a.jgrid.hideModal("#"+a.jgrid.jqID(x.themodal),{gb:"#gbox_"+a.jgrid.jqID(t),jqm:c.jqModal,onClose:b[n.p.id].onClose,removemodal:b[n.p.id].removemodal,formprop:!b[n.p.id].recreateForm,form:b[n.p.id].form}))):"clientArray"===r.url?(b[n.p.id].reloadAfterSubmit=!1,y=r.data,r.complete({status:200,statusText:""},"")):a.ajax(r))}!1===f[0]&&
+(a("#FormError>td",s).html(f[1]),a("#FormError",s).show())}function l(a,b){var c=!1,d;for(d in a)if(a.hasOwnProperty(d)&&a[d]!=b[d]){c=!0;break}return c}function p(){var c=!0;a("#FormError",s).hide();b[n.p.id].checkOnUpdate&&(y={},f(),O=l(y,b[n.p.id]._savedData))&&(a("#"+u).data("disabled",!0),a(".confirm","#"+x.themodal).show(),c=!1);return c}function m(){var b;if("_empty"!==e&&void 0!==n.p.savedRow&&0<n.p.savedRow.length&&a.isFunction(a.fn.jqGrid.restoreRow))for(b=0;b<n.p.savedRow.length;b++)if(n.p.savedRow[b].id==
+e){a(n).jqGrid("restoreRow",e);break}}function r(b,c){var d=c[1].length-1;0===b?a("#pData",s+"_2").addClass("ui-state-disabled"):void 0!==c[1][b-1]&&a("#"+a.jgrid.jqID(c[1][b-1])).hasClass("ui-state-disabled")?a("#pData",s+"_2").addClass("ui-state-disabled"):a("#pData",s+"_2").removeClass("ui-state-disabled");b===d?a("#nData",s+"_2").addClass("ui-state-disabled"):void 0!==c[1][b+1]&&a("#"+a.jgrid.jqID(c[1][b+1])).hasClass("ui-state-disabled")?a("#nData",s+"_2").addClass("ui-state-disabled"):a("#nData",
+s+"_2").removeClass("ui-state-disabled")}function q(){var b=a(n).jqGrid("getDataIDs"),c=a("#id_g",s).val();return[a.inArray(c,b),b]}var n=this;if(n.grid&&e){var t=n.p.id,u="FrmGrid_"+t,w="TblGrid_"+t,s="#"+a.jgrid.jqID(w),x={themodal:"editmod"+t,modalhead:"edithd"+t,modalcontent:"editcnt"+t,scrollelm:u},A=a.isFunction(b[n.p.id].beforeShowForm)?b[n.p.id].beforeShowForm:!1,v=a.isFunction(b[n.p.id].afterShowForm)?b[n.p.id].afterShowForm:!1,H=a.isFunction(b[n.p.id].beforeInitData)?b[n.p.id].beforeInitData:
+!1,B=a.isFunction(b[n.p.id].onInitializeForm)?b[n.p.id].onInitializeForm:!1,D=!0,C=1,F=0,y,O,z,u=a.jgrid.jqID(u);"new"===e?(e="_empty",z="add",c.caption=b[n.p.id].addCaption):(c.caption=b[n.p.id].editCaption,z="edit");c.recreateForm||a(n).data("formProp")&&a.extend(b[a(this)[0].p.id],a(n).data("formProp"));var L=!0;c.checkOnUpdate&&c.jqModal&&!c.modal&&(L=!1);var Q=isNaN(b[a(this)[0].p.id].dataheight)?b[a(this)[0].p.id].dataheight:b[a(this)[0].p.id].dataheight+"px",D=isNaN(b[a(this)[0].p.id].datawidth)?
+b[a(this)[0].p.id].datawidth:b[a(this)[0].p.id].datawidth+"px",Q=a("<form name='FormPost' id='"+u+"' class='FormGrid' onSubmit='return false;' style='width:"+D+";overflow:auto;position:relative;height:"+Q+";'></form>").data("disabled",!1),V=a("<table id='"+w+"' class='EditTable' cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>");a(n.p.colModel).each(function(){var a=this.formoptions;C=Math.max(C,a?a.colpos||0:0);F=Math.max(F,a?a.rowpos||0:0)});a(Q).append(V);D=a("<tr id='FormError' style='display:none'><td class='ui-state-error' colspan='"+
+2*C+"'></td></tr>");D[0].rp=0;a(V).append(D);D=a("<tr style='display:none' class='tinfo'><td class='topinfo' colspan='"+2*C+"'>"+b[n.p.id].topinfo+"</td></tr>");D[0].rp=0;a(V).append(D);D=a(n).triggerHandler("jqGridAddEditBeforeInitData",[Q,z]);void 0===D&&(D=!0);D&&H&&(D=H.call(n,Q,z));if(!1!==D){m();var D=(H="rtl"===n.p.direction?!0:!1)?"nData":"pData",X=H?"pData":"nData";g(e,n,V,C);var D="<a id='"+D+"' class='fm-button ui-state-default ui-corner-left'><span class='ui-icon ui-icon-triangle-1-w'></span></a>",
+X="<a id='"+X+"' class='fm-button ui-state-default ui-corner-right'><span class='ui-icon ui-icon-triangle-1-e'></span></a>",E="<a id='sData' class='fm-button ui-state-default ui-corner-all'>"+c.bSubmit+"</a>",aa="<a id='cData' class='fm-button ui-state-default ui-corner-all'>"+c.bCancel+"</a>",w="<table border='0' cellspacing='0' cellpadding='0' class='EditTable' id='"+w+"_2'><tbody><tr><td colspan='2'><hr class='ui-widget-content' style='margin:1px'/></td></tr><tr id='Act_Buttons'><td class='navButton'>"+
+(H?X+D:D+X)+"</td><td class='EditButton'>"+E+aa+"</td></tr>"+("<tr style='display:none' class='binfo'><td class='bottominfo' colspan='2'>"+b[n.p.id].bottominfo+"</td></tr>"),w=w+"</tbody></table>";if(0<F){var T=[];a.each(a(V)[0].rows,function(a,b){T[a]=b});T.sort(function(a,b){return a.rp>b.rp?1:a.rp<b.rp?-1:0});a.each(T,function(b,c){a("tbody",V).append(c)})}c.gbox="#gbox_"+a.jgrid.jqID(t);var M=!1;!0===c.closeOnEscape&&(c.closeOnEscape=!1,M=!0);w=a("<div></div>").append(Q).append(w);a.jgrid.createModal(x,
+w,b[a(this)[0].p.id],"#gview_"+a.jgrid.jqID(n.p.id),a("#gbox_"+a.jgrid.jqID(n.p.id))[0]);H&&(a("#pData, #nData",s+"_2").css("float","right"),a(".EditButton",s+"_2").css("text-align","left"));b[n.p.id].topinfo&&a(".tinfo",s).show();b[n.p.id].bottominfo&&a(".binfo",s+"_2").show();w=w=null;a("#"+a.jgrid.jqID(x.themodal)).keydown(function(d){var e=d.target;if(!0===a("#"+u).data("disabled"))return!1;if(!0===b[n.p.id].savekey[0]&&d.which===b[n.p.id].savekey[1]&&"TEXTAREA"!==e.tagName)return a("#sData",
+s+"_2").trigger("click"),!1;if(27===d.which){if(!p())return!1;M&&a.jgrid.hideModal("#"+a.jgrid.jqID(x.themodal),{gb:c.gbox,jqm:c.jqModal,onClose:b[n.p.id].onClose,removemodal:b[n.p.id].removemodal,formprop:!b[n.p.id].recreateForm,form:b[n.p.id].form});return!1}if(!0===b[n.p.id].navkeys[0]){if("_empty"===a("#id_g",s).val())return!0;if(d.which===b[n.p.id].navkeys[1])return a("#pData",s+"_2").trigger("click"),!1;if(d.which===b[n.p.id].navkeys[2])return a("#nData",s+"_2").trigger("click"),!1}});c.checkOnUpdate&&
+(a("a.ui-jqdialog-titlebar-close span","#"+a.jgrid.jqID(x.themodal)).removeClass("jqmClose"),a("a.ui-jqdialog-titlebar-close","#"+a.jgrid.jqID(x.themodal)).unbind("click").click(function(){if(!p())return!1;a.jgrid.hideModal("#"+a.jgrid.jqID(x.themodal),{gb:"#gbox_"+a.jgrid.jqID(t),jqm:c.jqModal,onClose:b[n.p.id].onClose,removemodal:b[n.p.id].removemodal,formprop:!b[n.p.id].recreateForm,form:b[n.p.id].form});return!1}));c.saveicon=a.extend([!0,"left","ui-icon-disk"],c.saveicon);c.closeicon=a.extend([!0,
+"left","ui-icon-close"],c.closeicon);!0===c.saveicon[0]&&a("#sData",s+"_2").addClass("right"===c.saveicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class='ui-icon "+c.saveicon[2]+"'></span>");!0===c.closeicon[0]&&a("#cData",s+"_2").addClass("right"===c.closeicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class='ui-icon "+c.closeicon[2]+"'></span>");if(b[n.p.id].checkOnSubmit||b[n.p.id].checkOnUpdate)E="<a id='sNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>"+
+c.bYes+"</a>",X="<a id='nNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>"+c.bNo+"</a>",aa="<a id='cNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>"+c.bExit+"</a>",w=c.zIndex||999,w++,a("<div class='"+c.overlayClass+" jqgrid-overlay confirm' style='z-index:"+w+";display:none;'>&#160;</div><div class='confirm ui-widget-content ui-jqconfirm' style='z-index:"+(w+1)+"'>"+c.saveData+"<br/><br/>"+E+X+aa+"</div>").insertAfter("#"+u),a("#sNew","#"+a.jgrid.jqID(x.themodal)).click(function(){k();
+a("#"+u).data("disabled",!1);a(".confirm","#"+a.jgrid.jqID(x.themodal)).hide();return!1}),a("#nNew","#"+a.jgrid.jqID(x.themodal)).click(function(){a(".confirm","#"+a.jgrid.jqID(x.themodal)).hide();a("#"+u).data("disabled",!1);setTimeout(function(){a(":input:visible","#"+u)[0].focus()},0);return!1}),a("#cNew","#"+a.jgrid.jqID(x.themodal)).click(function(){a(".confirm","#"+a.jgrid.jqID(x.themodal)).hide();a("#"+u).data("disabled",!1);a.jgrid.hideModal("#"+a.jgrid.jqID(x.themodal),{gb:"#gbox_"+a.jgrid.jqID(t),
+jqm:c.jqModal,onClose:b[n.p.id].onClose,removemodal:b[n.p.id].removemodal,formprop:!b[n.p.id].recreateForm,form:b[n.p.id].form});return!1});a(n).triggerHandler("jqGridAddEditInitializeForm",[a("#"+u),z]);B&&B.call(n,a("#"+u),z);"_empty"!==e&&b[n.p.id].viewPagerButtons?a("#pData,#nData",s+"_2").show():a("#pData,#nData",s+"_2").hide();a(n).triggerHandler("jqGridAddEditBeforeShowForm",[a("#"+u),z]);A&&A.call(n,a("#"+u),z);a("#"+a.jgrid.jqID(x.themodal)).data("onClose",b[n.p.id].onClose);a.jgrid.viewModal("#"+
+a.jgrid.jqID(x.themodal),{gbox:"#gbox_"+a.jgrid.jqID(t),jqm:c.jqModal,overlay:c.overlay,modal:c.modal,overlayClass:c.overlayClass,onHide:function(b){var c=a("#editmod"+t)[0].style.height;-1<c.indexOf("px")&&(c=parseFloat(c));a(n).data("formProp",{top:parseFloat(a(b.w).css("top")),left:parseFloat(a(b.w).css("left")),width:a(b.w).width(),height:c,dataheight:a("#"+u).height(),datawidth:a("#"+u).width()});b.w.remove();b.o&&b.o.remove()}});L||a("."+a.jgrid.jqID(c.overlayClass)).click(function(){if(!p())return!1;
+a.jgrid.hideModal("#"+a.jgrid.jqID(x.themodal),{gb:"#gbox_"+a.jgrid.jqID(t),jqm:c.jqModal,onClose:b[n.p.id].onClose,removemodal:b[n.p.id].removemodal,formprop:!b[n.p.id].recreateForm,form:b[n.p.id].form});return!1});a(".fm-button","#"+a.jgrid.jqID(x.themodal)).hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")});a("#sData",s+"_2").click(function(){y={};a("#FormError",s).hide();f();"_empty"===y[n.p.id+"_id"]?k():!0===c.checkOnSubmit?(O=l(y,b[n.p.id]._savedData))?
+(a("#"+u).data("disabled",!0),a(".confirm","#"+a.jgrid.jqID(x.themodal)).show()):k():k();return!1});a("#cData",s+"_2").click(function(){if(!p())return!1;a.jgrid.hideModal("#"+a.jgrid.jqID(x.themodal),{gb:"#gbox_"+a.jgrid.jqID(t),jqm:c.jqModal,onClose:b[n.p.id].onClose,removemodal:b[n.p.id].removemodal,formprop:!b[n.p.id].recreateForm,form:b[n.p.id].form});return!1});a("#nData",s+"_2").click(function(){if(!p())return!1;a("#FormError",s).hide();var b=q();b[0]=parseInt(b[0],10);if(-1!==b[0]&&b[1][b[0]+
+1]){a(n).triggerHandler("jqGridAddEditClickPgButtons",["next",a("#"+u),b[1][b[0]]]);var e;if(a.isFunction(c.onclickPgButtons)&&(e=c.onclickPgButtons.call(n,"next",a("#"+u),b[1][b[0]]),void 0!==e&&!1===e)||a("#"+a.jgrid.jqID(b[1][b[0]+1])).hasClass("ui-state-disabled"))return!1;d(b[1][b[0]+1],n,u);a(n).jqGrid("setSelection",b[1][b[0]+1]);a(n).triggerHandler("jqGridAddEditAfterClickPgButtons",["next",a("#"+u),b[1][b[0]]]);a.isFunction(c.afterclickPgButtons)&&c.afterclickPgButtons.call(n,"next",a("#"+
+u),b[1][b[0]+1]);r(b[0]+1,b)}return!1});a("#pData",s+"_2").click(function(){if(!p())return!1;a("#FormError",s).hide();var b=q();if(-1!==b[0]&&b[1][b[0]-1]){a(n).triggerHandler("jqGridAddEditClickPgButtons",["prev",a("#"+u),b[1][b[0]]]);var e;if(a.isFunction(c.onclickPgButtons)&&(e=c.onclickPgButtons.call(n,"prev",a("#"+u),b[1][b[0]]),void 0!==e&&!1===e)||a("#"+a.jgrid.jqID(b[1][b[0]-1])).hasClass("ui-state-disabled"))return!1;d(b[1][b[0]-1],n,u);a(n).jqGrid("setSelection",b[1][b[0]-1]);a(n).triggerHandler("jqGridAddEditAfterClickPgButtons",
+["prev",a("#"+u),b[1][b[0]]]);a.isFunction(c.afterclickPgButtons)&&c.afterclickPgButtons.call(n,"prev",a("#"+u),b[1][b[0]-1]);r(b[0]-1,b)}return!1});a(n).triggerHandler("jqGridAddEditAfterShowForm",[a("#"+u),z]);v&&v.call(n,a("#"+u),z);A=q();r(A[0],A)}}})},viewGridRow:function(e,c){c=a.extend(!0,{top:0,left:0,width:0,datawidth:"auto",height:"auto",dataheight:"auto",modal:!1,overlay:30,drag:!0,resize:!0,jqModal:!0,closeOnEscape:!1,labelswidth:"30%",closeicon:[],navkeys:[!1,38,40],onClose:null,beforeShowForm:null,
+beforeInitData:null,viewPagerButtons:!0,recreateForm:!1,removemodal:!0,form:"view"},a.jgrid.view,c||{});b[a(this)[0].p.id]=c;return this.each(function(){function f(){!0!==b[l.p.id].closeOnEscape&&!0!==b[l.p.id].navkeys[0]||setTimeout(function(){a(".ui-jqdialog-titlebar-close","#"+a.jgrid.jqID(t.modalhead)).attr("tabindex","-1").focus()},0)}function g(b,d,e,f){var g,h,k,l=0,n,m,p=[],q=!1,r,s="<td class='CaptionTD form-view-label ui-widget-content' width='"+c.labelswidth+"'>&#160;</td><td class='DataTD form-view-data ui-helper-reset ui-widget-content'>&#160;</td>",
+t="",u=["integer","number","currency"],v=0,x=0,w,A,B;for(r=1;r<=f;r++)t+=1===r?s:"<td class='CaptionTD form-view-label ui-widget-content'>&#160;</td><td class='DataTD form-view-data ui-widget-content'>&#160;</td>";a(d.p.colModel).each(function(){(h=this.editrules&&!0===this.editrules.edithidden?!1:!0===this.hidden?!0:!1)||"right"!==this.align||(this.formatter&&-1!==a.inArray(this.formatter,u)?v=Math.max(v,parseInt(this.width,10)):x=Math.max(x,parseInt(this.width,10)))});w=0!==v?v:0!==x?x:0;q=a(d).jqGrid("getInd",
+b);a(d.p.colModel).each(function(b){g=this.name;A=!1;m=(h=this.editrules&&!0===this.editrules.edithidden?!1:!0===this.hidden?!0:!1)?"style='display:none'":"";B="boolean"!==typeof this.viewable?!0:this.viewable;if("cb"!==g&&"subgrid"!==g&&"rn"!==g&&B){n=!1===q?"":g===d.p.ExpandColumn&&!0===d.p.treeGrid?a("td:eq("+b+")",d.rows[q]).text():a("td:eq("+b+")",d.rows[q]).html();A="right"===this.align&&0!==w?!0:!1;var c=a.extend({},{rowabove:!1,rowcontent:""},this.formoptions||{}),r=parseInt(c.rowpos,10)||
+l+1,s=parseInt(2*(parseInt(c.colpos,10)||1),10);if(c.rowabove){var v=a("<tr><td class='contentinfo' colspan='"+2*f+"'>"+c.rowcontent+"</td></tr>");a(e).append(v);v[0].rp=r}k=a(e).find("tr[rowpos="+r+"]");0===k.length&&(k=a("<tr "+m+" rowpos='"+r+"'></tr>").addClass("FormData").attr("id","trv_"+g),a(k).append(t),a(e).append(k),k[0].rp=r);a("td:eq("+(s-2)+")",k[0]).html("<b>"+(void 0===c.label?d.p.colNames[b]:c.label)+"</b>");a("td:eq("+(s-1)+")",k[0]).append("<span>"+n+"</span>").attr("id","v_"+g);
+A&&a("td:eq("+(s-1)+") span",k[0]).css({"text-align":"right",width:w+"px"});p[l]=b;l++}});0<l&&(b=a("<tr class='FormData' style='display:none'><td class='CaptionTD'></td><td colspan='"+(2*f-1)+"' class='DataTD'><input class='FormElement' id='id_g' type='text' name='id' value='"+b+"'/></td></tr>"),b[0].rp=l+99,a(e).append(b));return p}function d(b,c){var d,e,f=0,g,h;if(h=a(c).jqGrid("getInd",b,!0))a("td",h).each(function(b){d=c.p.colModel[b].name;e=c.p.colModel[b].editrules&&!0===c.p.colModel[b].editrules.edithidden?
+!1:!0===c.p.colModel[b].hidden?!0:!1;"cb"!==d&&"subgrid"!==d&&"rn"!==d&&(g=d===c.p.ExpandColumn&&!0===c.p.treeGrid?a(this).text():a(this).html(),d=a.jgrid.jqID("v_"+d),a("#"+d+" span","#"+r).html(g),e&&a("#"+d,"#"+r).parents("tr:first").hide(),f++)}),0<f&&a("#id_g","#"+r).val(b)}function h(b,c){var d=c[1].length-1;0===b?a("#pData","#"+r+"_2").addClass("ui-state-disabled"):void 0!==c[1][b-1]&&a("#"+a.jgrid.jqID(c[1][b-1])).hasClass("ui-state-disabled")?a("#pData",r+"_2").addClass("ui-state-disabled"):
+a("#pData","#"+r+"_2").removeClass("ui-state-disabled");b===d?a("#nData","#"+r+"_2").addClass("ui-state-disabled"):void 0!==c[1][b+1]&&a("#"+a.jgrid.jqID(c[1][b+1])).hasClass("ui-state-disabled")?a("#nData",r+"_2").addClass("ui-state-disabled"):a("#nData","#"+r+"_2").removeClass("ui-state-disabled")}function k(){var b=a(l).jqGrid("getDataIDs"),c=a("#id_g","#"+r).val();return[a.inArray(c,b),b]}var l=this;if(l.grid&&e){var p=l.p.id,m="ViewGrid_"+a.jgrid.jqID(p),r="ViewTbl_"+a.jgrid.jqID(p),q="ViewGrid_"+
+p,n="ViewTbl_"+p,t={themodal:"viewmod"+p,modalhead:"viewhd"+p,modalcontent:"viewcnt"+p,scrollelm:m},u=a.isFunction(b[l.p.id].beforeInitData)?b[l.p.id].beforeInitData:!1,w=!0,s=1,x=0;c.recreateForm||a(l).data("viewProp")&&a.extend(b[a(this)[0].p.id],a(l).data("viewProp"));var A=isNaN(b[a(this)[0].p.id].dataheight)?b[a(this)[0].p.id].dataheight:b[a(this)[0].p.id].dataheight+"px",v=isNaN(b[a(this)[0].p.id].datawidth)?b[a(this)[0].p.id].datawidth:b[a(this)[0].p.id].datawidth+"px",q=a("<form name='FormPost' id='"+
+q+"' class='FormGrid' style='width:"+v+";overflow:auto;position:relative;height:"+A+";'></form>"),H=a("<table id='"+n+"' class='EditTable' cellspacing='1' cellpadding='2' border='0' style='table-layout:fixed'><tbody></tbody></table>");a(l.p.colModel).each(function(){var a=this.formoptions;s=Math.max(s,a?a.colpos||0:0);x=Math.max(x,a?a.rowpos||0:0)});a(q).append(H);u&&(w=u.call(l,q),void 0===w&&(w=!0));if(!1!==w){g(e,l,H,s);n="rtl"===l.p.direction?!0:!1;u="<a id='"+(n?"nData":"pData")+"' class='fm-button ui-state-default ui-corner-left'><span class='ui-icon ui-icon-triangle-1-w'></span></a>";
+w="<a id='"+(n?"pData":"nData")+"' class='fm-button ui-state-default ui-corner-right'><span class='ui-icon ui-icon-triangle-1-e'></span></a>";A="<a id='cData' class='fm-button ui-state-default ui-corner-all'>"+c.bClose+"</a>";if(0<x){var B=[];a.each(a(H)[0].rows,function(a,b){B[a]=b});B.sort(function(a,b){return a.rp>b.rp?1:a.rp<b.rp?-1:0});a.each(B,function(b,c){a("tbody",H).append(c)})}c.gbox="#gbox_"+a.jgrid.jqID(p);q=a("<div></div>").append(q).append("<table border='0' class='EditTable' id='"+
+r+"_2'><tbody><tr id='Act_Buttons'><td class='navButton' width='"+c.labelswidth+"'>"+(n?w+u:u+w)+"</td><td class='EditButton'>"+A+"</td></tr></tbody></table>");a.jgrid.createModal(t,q,c,"#gview_"+a.jgrid.jqID(l.p.id),a("#gview_"+a.jgrid.jqID(l.p.id))[0]);n&&(a("#pData, #nData","#"+r+"_2").css("float","right"),a(".EditButton","#"+r+"_2").css("text-align","left"));c.viewPagerButtons||a("#pData, #nData","#"+r+"_2").hide();q=null;a("#"+t.themodal).keydown(function(d){if(27===d.which)return b[l.p.id].closeOnEscape&&
+a.jgrid.hideModal("#"+a.jgrid.jqID(t.themodal),{gb:c.gbox,jqm:c.jqModal,onClose:c.onClose,removemodal:b[l.p.id].removemodal,formprop:!b[l.p.id].recreateForm,form:b[l.p.id].form}),!1;if(!0===c.navkeys[0]){if(d.which===c.navkeys[1])return a("#pData","#"+r+"_2").trigger("click"),!1;if(d.which===c.navkeys[2])return a("#nData","#"+r+"_2").trigger("click"),!1}});c.closeicon=a.extend([!0,"left","ui-icon-close"],c.closeicon);!0===c.closeicon[0]&&a("#cData","#"+r+"_2").addClass("right"===c.closeicon[1]?"fm-button-icon-right":
+"fm-button-icon-left").append("<span class='ui-icon "+c.closeicon[2]+"'></span>");a.isFunction(c.beforeShowForm)&&c.beforeShowForm.call(l,a("#"+m));a.jgrid.viewModal("#"+a.jgrid.jqID(t.themodal),{gbox:"#gbox_"+a.jgrid.jqID(p),jqm:c.jqModal,overlay:c.overlay,modal:c.modal,onHide:function(b){a(l).data("viewProp",{top:parseFloat(a(b.w).css("top")),left:parseFloat(a(b.w).css("left")),width:a(b.w).width(),height:a(b.w).height(),dataheight:a("#"+m).height(),datawidth:a("#"+m).width()});b.w.remove();b.o&&
+b.o.remove()}});a(".fm-button:not(.ui-state-disabled)","#"+r+"_2").hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")});f();a("#cData","#"+r+"_2").click(function(){a.jgrid.hideModal("#"+a.jgrid.jqID(t.themodal),{gb:"#gbox_"+a.jgrid.jqID(p),jqm:c.jqModal,onClose:c.onClose,removemodal:b[l.p.id].removemodal,formprop:!b[l.p.id].recreateForm,form:b[l.p.id].form});return!1});a("#nData","#"+r+"_2").click(function(){a("#FormError","#"+r).hide();var b=k();
+b[0]=parseInt(b[0],10);-1!==b[0]&&b[1][b[0]+1]&&(a.isFunction(c.onclickPgButtons)&&c.onclickPgButtons.call(l,"next",a("#"+m),b[1][b[0]]),d(b[1][b[0]+1],l),a(l).jqGrid("setSelection",b[1][b[0]+1]),a.isFunction(c.afterclickPgButtons)&&c.afterclickPgButtons.call(l,"next",a("#"+m),b[1][b[0]+1]),h(b[0]+1,b));f();return!1});a("#pData","#"+r+"_2").click(function(){a("#FormError","#"+r).hide();var b=k();-1!==b[0]&&b[1][b[0]-1]&&(a.isFunction(c.onclickPgButtons)&&c.onclickPgButtons.call(l,"prev",a("#"+m),
+b[1][b[0]]),d(b[1][b[0]-1],l),a(l).jqGrid("setSelection",b[1][b[0]-1]),a.isFunction(c.afterclickPgButtons)&&c.afterclickPgButtons.call(l,"prev",a("#"+m),b[1][b[0]-1]),h(b[0]-1,b));f();return!1});q=k();h(q[0],q)}}})},delGridRow:function(e,c){c=a.extend(!0,{top:0,left:0,width:240,height:"auto",dataheight:"auto",modal:!1,overlay:30,drag:!0,resize:!0,url:"",mtype:"POST",reloadAfterSubmit:!0,beforeShowForm:null,beforeInitData:null,afterShowForm:null,beforeSubmit:null,onclickSubmit:null,afterSubmit:null,
+jqModal:!0,closeOnEscape:!1,delData:{},delicon:[],cancelicon:[],onClose:null,ajaxDelOptions:{},processing:!1,serializeDelData:null,useDataProxy:!1},a.jgrid.del,c||{});b[a(this)[0].p.id]=c;return this.each(function(){var f=this;if(f.grid&&e){var g=a.isFunction(b[f.p.id].beforeShowForm),d=a.isFunction(b[f.p.id].afterShowForm),h=a.isFunction(b[f.p.id].beforeInitData)?b[f.p.id].beforeInitData:!1,k=f.p.id,l={},p=!0,m="DelTbl_"+a.jgrid.jqID(k),r,q,n,t,u="DelTbl_"+k,w={themodal:"delmod"+k,modalhead:"delhd"+
+k,modalcontent:"delcnt"+k,scrollelm:m};a.isArray(e)&&(e=e.join());if(void 0!==a("#"+a.jgrid.jqID(w.themodal))[0]){h&&(p=h.call(f,a("#"+m)),void 0===p&&(p=!0));if(!1===p)return;a("#DelData>td","#"+m).text(e);a("#DelError","#"+m).hide();!0===b[f.p.id].processing&&(b[f.p.id].processing=!1,a("#dData","#"+m).removeClass("ui-state-active"));g&&b[f.p.id].beforeShowForm.call(f,a("#"+m));a.jgrid.viewModal("#"+a.jgrid.jqID(w.themodal),{gbox:"#gbox_"+a.jgrid.jqID(k),jqm:b[f.p.id].jqModal,jqM:!1,overlay:b[f.p.id].overlay,
+modal:b[f.p.id].modal})}else{var s=isNaN(b[f.p.id].dataheight)?b[f.p.id].dataheight:b[f.p.id].dataheight+"px",x=isNaN(c.datawidth)?c.datawidth:c.datawidth+"px",u="<div id='"+u+"' class='formdata' style='width:"+x+";overflow:auto;position:relative;height:"+s+";'><table class='DelTable'><tbody>",u=u+"<tr id='DelError' style='display:none'><td class='ui-state-error'></td></tr>",u=u+("<tr id='DelData' style='display:none'><td >"+e+"</td></tr>"),u=u+('<tr><td class="delmsg" style="white-space:pre;">'+
+b[f.p.id].msg+"</td></tr><tr><td >&#160;</td></tr>"),u=u+"</tbody></table></div>",u=u+("<table cellspacing='0' cellpadding='0' border='0' class='EditTable' id='"+m+"_2'><tbody><tr><td><hr class='ui-widget-content' style='margin:1px'/></td></tr><tr><td class='DelButton EditButton'>"+("<a id='dData' class='fm-button ui-state-default ui-corner-all'>"+c.bSubmit+"</a>")+"&#160;"+("<a id='eData' class='fm-button ui-state-default ui-corner-all'>"+c.bCancel+"</a>")+"</td></tr></tbody></table>");c.gbox="#gbox_"+
+a.jgrid.jqID(k);a.jgrid.createModal(w,u,c,"#gview_"+a.jgrid.jqID(f.p.id),a("#gview_"+a.jgrid.jqID(f.p.id))[0]);h&&(p=h.call(f,a(u)),void 0===p&&(p=!0));if(!1===p)return;a(".fm-button","#"+m+"_2").hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")});c.delicon=a.extend([!0,"left","ui-icon-scissors"],b[f.p.id].delicon);c.cancelicon=a.extend([!0,"left","ui-icon-cancel"],b[f.p.id].cancelicon);!0===c.delicon[0]&&a("#dData","#"+m+"_2").addClass("right"===
+c.delicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class='ui-icon "+c.delicon[2]+"'></span>");!0===c.cancelicon[0]&&a("#eData","#"+m+"_2").addClass("right"===c.cancelicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class='ui-icon "+c.cancelicon[2]+"'></span>");a("#dData","#"+m+"_2").click(function(){var d=[!0,""],e,g=a("#DelData>td","#"+m).text();l={};a.isFunction(b[f.p.id].onclickSubmit)&&(l=b[f.p.id].onclickSubmit.call(f,b[f.p.id],g)||{});a.isFunction(b[f.p.id].beforeSubmit)&&
+(d=b[f.p.id].beforeSubmit.call(f,g));if(d[0]&&!b[f.p.id].processing){b[f.p.id].processing=!0;n=f.p.prmNames;r=a.extend({},b[f.p.id].delData,l);t=n.oper;r[t]=n.deloper;q=n.id;g=String(g).split(",");if(!g.length)return!1;for(e in g)g.hasOwnProperty(e)&&(g[e]=a.jgrid.stripPref(f.p.idPrefix,g[e]));r[q]=g.join();a(this).addClass("ui-state-active");e=a.extend({url:b[f.p.id].url||a(f).jqGrid("getGridParam","editurl"),type:b[f.p.id].mtype,data:a.isFunction(b[f.p.id].serializeDelData)?b[f.p.id].serializeDelData.call(f,
+r):r,complete:function(e,h){var l;a("#dData","#"+m+"_2").removeClass("ui-state-active");300<=e.status&&304!==e.status?(d[0]=!1,a.isFunction(b[f.p.id].errorTextFormat)?d[1]=b[f.p.id].errorTextFormat.call(f,e):d[1]=h+" Status: '"+e.statusText+"'. Error code: "+e.status):a.isFunction(b[f.p.id].afterSubmit)&&(d=b[f.p.id].afterSubmit.call(f,e,r));if(!1===d[0])a("#DelError>td","#"+m).html(d[1]),a("#DelError","#"+m).show();else{if(b[f.p.id].reloadAfterSubmit&&"local"!==f.p.datatype)a(f).trigger("reloadGrid");
+else{if(!0===f.p.treeGrid)try{a(f).jqGrid("delTreeNode",f.p.idPrefix+g[0])}catch(n){}else for(l=0;l<g.length;l++)a(f).jqGrid("delRowData",f.p.idPrefix+g[l]);f.p.selrow=null;f.p.selarrrow=[]}a.isFunction(b[f.p.id].afterComplete)&&setTimeout(function(){b[f.p.id].afterComplete.call(f,e,g)},500)}b[f.p.id].processing=!1;d[0]&&a.jgrid.hideModal("#"+a.jgrid.jqID(w.themodal),{gb:"#gbox_"+a.jgrid.jqID(k),jqm:c.jqModal,onClose:b[f.p.id].onClose})}},a.jgrid.ajaxOptions,b[f.p.id].ajaxDelOptions);e.url||b[f.p.id].useDataProxy||
+(a.isFunction(f.p.dataProxy)?b[f.p.id].useDataProxy=!0:(d[0]=!1,d[1]+=" "+a.jgrid.errors.nourl));d[0]&&(b[f.p.id].useDataProxy?(e=f.p.dataProxy.call(f,e,"del_"+f.p.id),void 0===e&&(e=[!0,""]),!1===e[0]?(d[0]=!1,d[1]=e[1]||"Error deleting the selected row!"):a.jgrid.hideModal("#"+a.jgrid.jqID(w.themodal),{gb:"#gbox_"+a.jgrid.jqID(k),jqm:c.jqModal,onClose:b[f.p.id].onClose})):"clientArray"===e.url?(r=e.data,e.complete({status:200,statusText:""},"")):a.ajax(e))}!1===d[0]&&(a("#DelError>td","#"+m).html(d[1]),
+a("#DelError","#"+m).show());return!1});a("#eData","#"+m+"_2").click(function(){a.jgrid.hideModal("#"+a.jgrid.jqID(w.themodal),{gb:"#gbox_"+a.jgrid.jqID(k),jqm:b[f.p.id].jqModal,onClose:b[f.p.id].onClose});return!1});g&&b[f.p.id].beforeShowForm.call(f,a("#"+m));a.jgrid.viewModal("#"+a.jgrid.jqID(w.themodal),{gbox:"#gbox_"+a.jgrid.jqID(k),jqm:b[f.p.id].jqModal,overlay:b[f.p.id].overlay,modal:b[f.p.id].modal})}d&&b[f.p.id].afterShowForm.call(f,a("#"+m));!0===b[f.p.id].closeOnEscape&&setTimeout(function(){a(".ui-jqdialog-titlebar-close",
+"#"+a.jgrid.jqID(w.modalhead)).attr("tabindex","-1").focus()},0)}})},navGrid:function(b,c,f,g,d,h,k){c=a.extend({edit:!0,editicon:"ui-icon-pencil",add:!0,addicon:"ui-icon-plus",del:!0,delicon:"ui-icon-trash",search:!0,searchicon:"ui-icon-search",refresh:!0,refreshicon:"ui-icon-refresh",refreshstate:"firstpage",view:!1,viewicon:"ui-icon-document",position:"left",closeOnEscape:!0,beforeRefresh:null,afterRefresh:null,cloneToTop:!1,alertwidth:200,alertheight:"auto",alerttop:null,alertleft:null,alertzIndex:null},
+a.jgrid.nav,c||{});return this.each(function(){if(!this.nav){var l={themodal:"alertmod_"+this.p.id,modalhead:"alerthd_"+this.p.id,modalcontent:"alertcnt_"+this.p.id},p=this,m;if(p.grid&&"string"===typeof b){void 0===a("#"+l.themodal)[0]&&(c.alerttop||c.alertleft||(void 0!==window.innerWidth?(c.alertleft=window.innerWidth,c.alerttop=window.innerHeight):void 0!==document.documentElement&&void 0!==document.documentElement.clientWidth&&0!==document.documentElement.clientWidth?(c.alertleft=document.documentElement.clientWidth,
+c.alerttop=document.documentElement.clientHeight):(c.alertleft=1024,c.alerttop=768),c.alertleft=c.alertleft/2-parseInt(c.alertwidth,10)/2,c.alerttop=c.alerttop/2-25),a.jgrid.createModal(l,"<div>"+c.alerttext+"</div><span tabindex='0'><span tabindex='-1' id='jqg_alrt'></span></span>",{gbox:"#gbox_"+a.jgrid.jqID(p.p.id),jqModal:!0,drag:!0,resize:!0,caption:c.alertcap,top:c.alerttop,left:c.alertleft,width:c.alertwidth,height:c.alertheight,closeOnEscape:c.closeOnEscape,zIndex:c.alertzIndex},"#gview_"+
+a.jgrid.jqID(p.p.id),a("#gbox_"+a.jgrid.jqID(p.p.id))[0],!0));var r=1,q,n=function(){a(this).hasClass("ui-state-disabled")||a(this).addClass("ui-state-hover")},t=function(){a(this).removeClass("ui-state-hover")};c.cloneToTop&&p.p.toppager&&(r=2);for(q=0;q<r;q++){var u=a("<table cellspacing='0' cellpadding='0' border='0' class='ui-pg-table navtable' style='float:left;table-layout:auto;'><tbody><tr></tr></tbody></table>"),w,s;0===q?(w=b,s=p.p.id,w===p.p.toppager&&(s+="_top",r=1)):(w=p.p.toppager,s=
+p.p.id+"_top");"rtl"===p.p.direction&&a(u).attr("dir","rtl").css("float","right");c.add&&(g=g||{},m=a("<td class='ui-pg-button ui-corner-all'></td>"),a(m).append("<div class='ui-pg-div'><span class='ui-icon "+c.addicon+"'></span>"+c.addtext+"</div>"),a("tr",u).append(m),a(m,u).attr({title:c.addtitle||"",id:g.id||"add_"+s}).click(function(){a(this).hasClass("ui-state-disabled")||(a.isFunction(c.addfunc)?c.addfunc.call(p):a(p).jqGrid("editGridRow","new",g));return!1}).hover(n,t),m=null);c.edit&&(m=
+a("<td class='ui-pg-button ui-corner-all'></td>"),f=f||{},a(m).append("<div class='ui-pg-div'><span class='ui-icon "+c.editicon+"'></span>"+c.edittext+"</div>"),a("tr",u).append(m),a(m,u).attr({title:c.edittitle||"",id:f.id||"edit_"+s}).click(function(){if(!a(this).hasClass("ui-state-disabled")){var b=p.p.selrow;b?a.isFunction(c.editfunc)?c.editfunc.call(p,b):a(p).jqGrid("editGridRow",b,f):(a.jgrid.viewModal("#"+l.themodal,{gbox:"#gbox_"+a.jgrid.jqID(p.p.id),jqm:!0}),a("#jqg_alrt").focus())}return!1}).hover(n,
+t),m=null);c.view&&(m=a("<td class='ui-pg-button ui-corner-all'></td>"),k=k||{},a(m).append("<div class='ui-pg-div'><span class='ui-icon "+c.viewicon+"'></span>"+c.viewtext+"</div>"),a("tr",u).append(m),a(m,u).attr({title:c.viewtitle||"",id:k.id||"view_"+s}).click(function(){if(!a(this).hasClass("ui-state-disabled")){var b=p.p.selrow;b?a.isFunction(c.viewfunc)?c.viewfunc.call(p,b):a(p).jqGrid("viewGridRow",b,k):(a.jgrid.viewModal("#"+l.themodal,{gbox:"#gbox_"+a.jgrid.jqID(p.p.id),jqm:!0}),a("#jqg_alrt").focus())}return!1}).hover(n,
+t),m=null);c.del&&(m=a("<td class='ui-pg-button ui-corner-all'></td>"),d=d||{},a(m).append("<div class='ui-pg-div'><span class='ui-icon "+c.delicon+"'></span>"+c.deltext+"</div>"),a("tr",u).append(m),a(m,u).attr({title:c.deltitle||"",id:d.id||"del_"+s}).click(function(){if(!a(this).hasClass("ui-state-disabled")){var b;p.p.multiselect?(b=p.p.selarrrow,0===b.length&&(b=null)):b=p.p.selrow;b?a.isFunction(c.delfunc)?c.delfunc.call(p,b):a(p).jqGrid("delGridRow",b,d):(a.jgrid.viewModal("#"+l.themodal,{gbox:"#gbox_"+
+a.jgrid.jqID(p.p.id),jqm:!0}),a("#jqg_alrt").focus())}return!1}).hover(n,t),m=null);(c.add||c.edit||c.del||c.view)&&a("tr",u).append("<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='ui-separator'></span></td>");c.search&&(m=a("<td class='ui-pg-button ui-corner-all'></td>"),h=h||{},a(m).append("<div class='ui-pg-div'><span class='ui-icon "+c.searchicon+"'></span>"+c.searchtext+"</div>"),a("tr",u).append(m),a(m,u).attr({title:c.searchtitle||"",id:h.id||"search_"+s}).click(function(){a(this).hasClass("ui-state-disabled")||
+(a.isFunction(c.searchfunc)?c.searchfunc.call(p,h):a(p).jqGrid("searchGrid",h));return!1}).hover(n,t),h.showOnLoad&&!0===h.showOnLoad&&a(m,u).click(),m=null);c.refresh&&(m=a("<td class='ui-pg-button ui-corner-all'></td>"),a(m).append("<div class='ui-pg-div'><span class='ui-icon "+c.refreshicon+"'></span>"+c.refreshtext+"</div>"),a("tr",u).append(m),a(m,u).attr({title:c.refreshtitle||"",id:"refresh_"+s}).click(function(){if(!a(this).hasClass("ui-state-disabled")){a.isFunction(c.beforeRefresh)&&c.beforeRefresh.call(p);
+p.p.search=!1;p.p.resetsearch=!0;try{if("currentfilter"!==c.refreshstate){var b=p.p.id;p.p.postData.filters="";try{a("#fbox_"+a.jgrid.jqID(b)).jqFilter("resetFilter")}catch(d){}a.isFunction(p.clearToolbar)&&p.clearToolbar.call(p,!1)}}catch(e){}switch(c.refreshstate){case "firstpage":a(p).trigger("reloadGrid",[{page:1}]);break;case "current":case "currentfilter":a(p).trigger("reloadGrid",[{current:!0}])}a.isFunction(c.afterRefresh)&&c.afterRefresh.call(p)}return!1}).hover(n,t),m=null);m=a(".ui-jqgrid").css("font-size")||
+"11px";a("body").append("<div id='testpg2' class='ui-jqgrid ui-widget ui-widget-content' style='font-size:"+m+";visibility:hidden;' ></div>");m=a(u).clone().appendTo("#testpg2").width();a("#testpg2").remove();a(w+"_"+c.position,w).append(u);p.p._nvtd&&(m>p.p._nvtd[0]&&(a(w+"_"+c.position,w).width(m),p.p._nvtd[0]=m),p.p._nvtd[1]=m);u=m=m=null;this.nav=!0}}}})},navButtonAdd:function(b,c){c=a.extend({caption:"newButton",title:"",buttonicon:"ui-icon-newwin",onClickButton:null,position:"last",cursor:"pointer"},
+c||{});return this.each(function(){if(this.grid){"string"===typeof b&&0!==b.indexOf("#")&&(b="#"+a.jgrid.jqID(b));var f=a(".navtable",b)[0],g=this;if(f&&(!c.id||void 0===a("#"+a.jgrid.jqID(c.id),f)[0])){var d=a("<td></td>");"NONE"===c.buttonicon.toString().toUpperCase()?a(d).addClass("ui-pg-button ui-corner-all").append("<div class='ui-pg-div'>"+c.caption+"</div>"):a(d).addClass("ui-pg-button ui-corner-all").append("<div class='ui-pg-div'><span class='ui-icon "+c.buttonicon+"'></span>"+c.caption+
+"</div>");c.id&&a(d).attr("id",c.id);"first"===c.position?0===f.rows[0].cells.length?a("tr",f).append(d):a("tr td:eq(0)",f).before(d):a("tr",f).append(d);a(d,f).attr("title",c.title||"").click(function(b){a(this).hasClass("ui-state-disabled")||a.isFunction(c.onClickButton)&&c.onClickButton.call(g,b);return!1}).hover(function(){a(this).hasClass("ui-state-disabled")||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")})}}})},navSeparatorAdd:function(b,c){c=a.extend({sepclass:"ui-separator",
+sepcontent:"",position:"last"},c||{});return this.each(function(){if(this.grid){"string"===typeof b&&0!==b.indexOf("#")&&(b="#"+a.jgrid.jqID(b));var f=a(".navtable",b)[0];if(f){var g="<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='"+c.sepclass+"'></span>"+c.sepcontent+"</td>";"first"===c.position?0===f.rows[0].cells.length?a("tr",f).append(g):a("tr td:eq(0)",f).before(g):a("tr",f).append(g)}}})},GridToForm:function(b,c){return this.each(function(){var f=this,g;if(f.grid){var d=
+a(f).jqGrid("getRowData",b);if(d)for(g in d)d.hasOwnProperty(g)&&(a("[name="+a.jgrid.jqID(g)+"]",c).is("input:radio")||a("[name="+a.jgrid.jqID(g)+"]",c).is("input:checkbox")?a("[name="+a.jgrid.jqID(g)+"]",c).each(function(){if(a(this).val()==d[g])a(this)[f.p.useProp?"prop":"attr"]("checked",!0);else a(this)[f.p.useProp?"prop":"attr"]("checked",!1)}):a("[name="+a.jgrid.jqID(g)+"]",c).val(d[g]))}})},FormToGrid:function(b,c,f,g){return this.each(function(){if(this.grid){f||(f="set");g||(g="first");var d=
+a(c).serializeArray(),h={};a.each(d,function(a,b){h[b.name]=b.value});"add"===f?a(this).jqGrid("addRowData",b,h,g):"set"===f&&a(this).jqGrid("setRowData",b,h)}})}})})(jQuery);
+(function(a){a.extend(a.jgrid,{template:function(b){var e=a.makeArray(arguments).slice(1),c,f=e.length;null==b&&(b="");return b.replace(/\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,function(b,d){if(!isNaN(parseInt(d,10)))return e[parseInt(d,10)];for(c=0;c<f;c++)if(a.isArray(e[c]))for(var h=e[c],k=h.length;k--;)if(d===h[k].nm)return h[k].v})}});a.jgrid.extend({groupingSetup:function(){return this.each(function(){var b,e,c=this.p.colModel,f=this.p.groupingView;if(null===f||"object"!==typeof f&&!a.isFunction(f))this.p.grouping=
+!1;else if(f.groupField.length){void 0===f.visibiltyOnNextGrouping&&(f.visibiltyOnNextGrouping=[]);f.lastvalues=[];f._locgr||(f.groups=[]);f.counters=[];for(b=0;b<f.groupField.length;b++)f.groupOrder[b]||(f.groupOrder[b]="asc"),f.groupText[b]||(f.groupText[b]="{0}"),"boolean"!==typeof f.groupColumnShow[b]&&(f.groupColumnShow[b]=!0),"boolean"!==typeof f.groupSummary[b]&&(f.groupSummary[b]=!1),f.groupSummaryPos[b]||(f.groupSummaryPos[b]="footer"),!0===f.groupColumnShow[b]?(f.visibiltyOnNextGrouping[b]=
+!0,a(this).jqGrid("showCol",f.groupField[b])):(f.visibiltyOnNextGrouping[b]=a("#"+a.jgrid.jqID(this.p.id+"_"+f.groupField[b])).is(":visible"),a(this).jqGrid("hideCol",f.groupField[b]));f.summary=[];f.hideFirstGroupCol&&(f.formatDisplayField[0]=function(a){return a});b=0;for(e=c.length;b<e;b++)f.hideFirstGroupCol&&!c[b].hidden&&f.groupField[0]===c[b].name&&(c[b].formatter=function(){return""}),c[b].summaryType&&(c[b].summaryDivider?f.summary.push({nm:c[b].name,st:c[b].summaryType,v:"",sd:c[b].summaryDivider,
+vd:"",sr:c[b].summaryRound,srt:c[b].summaryRoundType||"round"}):f.summary.push({nm:c[b].name,st:c[b].summaryType,v:"",sr:c[b].summaryRound,srt:c[b].summaryRoundType||"round"}))}else this.p.grouping=!1})},groupingPrepare:function(b,e){this.each(function(){var c=this.p.groupingView,f=this,g,d=c.groupField.length,h,k,l,p=0;for(g=0;g<d;g++)h=c.groupField[g],l=c.displayField[g],k=b[h],l=null==l?null:b[l],null==l&&(l=k),void 0!==k&&(0===e?(c.groups.push({idx:g,dataIndex:h,value:k,displayValue:l,startRow:e,
+cnt:1,summary:[]}),c.lastvalues[g]=k,c.counters[g]={cnt:1,pos:c.groups.length-1,summary:a.extend(!0,[],c.summary)}):"object"===typeof k||(a.isArray(c.isInTheSameGroup)&&a.isFunction(c.isInTheSameGroup[g])?c.isInTheSameGroup[g].call(f,c.lastvalues[g],k,g,c):c.lastvalues[g]===k)?1===p?(c.groups.push({idx:g,dataIndex:h,value:k,displayValue:l,startRow:e,cnt:1,summary:[]}),c.lastvalues[g]=k,c.counters[g]={cnt:1,pos:c.groups.length-1,summary:a.extend(!0,[],c.summary)}):(c.counters[g].cnt+=1,c.groups[c.counters[g].pos].cnt=
+c.counters[g].cnt):(c.groups.push({idx:g,dataIndex:h,value:k,displayValue:l,startRow:e,cnt:1,summary:[]}),c.lastvalues[g]=k,p=1,c.counters[g]={cnt:1,pos:c.groups.length-1,summary:a.extend(!0,[],c.summary)}),a.each(c.counters[g].summary,function(){a.isFunction(this.st)?this.v=this.st.call(f,this.v,this.nm,b):(this.v=a(f).jqGrid("groupingCalculations.handler",this.st,this.v,this.nm,this.sr,this.srt,b),"avg"===this.st.toLowerCase()&&this.sd&&(this.vd=a(f).jqGrid("groupingCalculations.handler",this.st,
+this.vd,this.sd,this.sr,this.srt,b)))}),c.groups[c.counters[g].pos].summary=c.counters[g].summary)});return this},groupingToggle:function(b){this.each(function(){var e=this.p.groupingView,c=b.split("_"),f=parseInt(c[c.length-2],10);c.splice(c.length-2,2);var g=c.join("_"),c=e.minusicon,e=e.plusicon,d=a("#"+a.jgrid.jqID(b)),d=d.length?d[0].nextSibling:null,h=a("#"+a.jgrid.jqID(b)+" span.tree-wrap-"+this.p.direction),k=function(b){b=a.map(b.split(" "),function(a){if(a.substring(0,g.length+1)===g+"_")return parseInt(a.substring(g.length+
+1),10)});return 0<b.length?b[0]:void 0},l,p,m=!1,r=this.p.frozenColumns?this.p.id+"_frozen":!1,q=(l=r?a("#"+a.jgrid.jqID(b),"#"+a.jgrid.jqID(r)):!1)&&l.length?l[0].nextSibling:null;if(h.hasClass(c)){if(d)for(;d;){l=k(d.className);if(void 0!==l&&l<=f)break;a(d).hide();d=d.nextSibling;r&&(a(q).hide(),q=q.nextSibling)}h.removeClass(c).addClass(e);m=!0}else{if(d)for(p=void 0;d;){l=k(d.className);void 0===p&&(p=void 0===l);if(void 0!==l){if(l<=f)break;l===f+1&&(a(d).show().find(">td>span.tree-wrap-"+this.p.direction).removeClass(c).addClass(e),
+r&&a(q).show().find(">td>span.tree-wrap-"+this.p.direction).removeClass(c).addClass(e))}else p&&(a(d).show(),r&&a(q).show());d=d.nextSibling;r&&(q=q.nextSibling)}h.removeClass(e).addClass(c)}a(this).triggerHandler("jqGridGroupingClickGroup",[b,m]);a.isFunction(this.p.onClickGroup)&&this.p.onClickGroup.call(this,b,m)});return!1},groupingRender:function(b,e,c,f){return this.each(function(){function g(a,b,c){var d=!1;if(0===b)d=c[a];else{var e=c[a].idx;if(0===e)d=c[a];else for(;0<=a;a--)if(c[a].idx===
+e-b){d=c[a];break}}return d}function d(b,c,d,f){var k=g(b,c,d),l=h.p.colModel,n,m=k.cnt;b="";var p;for(p=f;p<e;p++){var q="<td "+h.formatCol(p,1,"")+">&#160;</td>",r="{0}";a.each(k.summary,function(){if(this.nm===l[p].name){l[p].summaryTpl&&(r=l[p].summaryTpl);"string"===typeof this.st&&"avg"===this.st.toLowerCase()&&(this.sd&&this.vd?this.v/=this.vd:this.v&&0<m&&(this.v/=m));try{this.groupCount=k.cnt,this.groupIndex=k.dataIndex,this.groupValue=k.value,n=h.formatter("",this.v,p,this)}catch(b){n=this.v}q=
+"<td "+h.formatCol(p,1,"")+">"+a.jgrid.format(r,n)+"</td>";return!1}});b+=q}return b}var h=this,k=h.p.groupingView,l="",p="",m,r,q=k.groupCollapse?k.plusicon:k.minusicon,n,t=[],u=k.groupField.length,q=q+(" tree-wrap-"+h.p.direction);a.each(h.p.colModel,function(a,b){var c;for(c=0;c<u;c++)if(k.groupField[c]===b.name){t[c]=a;break}});var w=0,s=a.makeArray(k.groupSummary),x;s.reverse();x=h.p.multiselect?' colspan="2"':"";a.each(k.groups,function(g,v){if(k._locgr&&!(v.startRow+v.cnt>(c-1)*f&&v.startRow<
+c*f))return!0;w++;r=h.p.id+"ghead_"+v.idx;m=r+"_"+g;p="<span style='cursor:pointer;' class='ui-icon "+q+"' onclick=\"jQuery('#"+a.jgrid.jqID(h.p.id)+"').jqGrid('groupingToggle','"+m+"');return false;\"></span>";try{a.isArray(k.formatDisplayField)&&a.isFunction(k.formatDisplayField[v.idx])?(v.displayValue=k.formatDisplayField[v.idx].call(h,v.displayValue,v.value,h.p.colModel[t[v.idx]],v.idx,k),n=v.displayValue):n=h.formatter(m,v.displayValue,t[v.idx],v.value)}catch(H){n=v.displayValue}"header"===k.groupSummaryPos[v.idx]?
+(l+='<tr id="'+m+'"'+(k.groupCollapse&&0<v.idx?' style="display:none;" ':" ")+'role="row" class= "ui-widget-content jqgroup ui-row-'+h.p.direction+" "+r+'"><td style="padding-left:'+12*v.idx+'px;"'+x+">"+p+a.jgrid.template(k.groupText[v.idx],n,v.cnt,v.summary)+"</td>",l+=d(g,0,k.groups,!1===k.groupColumnShow[v.idx]?""===x?2:3:""===x?1:2),l+="</tr>"):l+='<tr id="'+m+'"'+(k.groupCollapse&&0<v.idx?' style="display:none;" ':" ")+'role="row" class= "ui-widget-content jqgroup ui-row-'+h.p.direction+" "+
+r+'"><td style="padding-left:'+12*v.idx+'px;" colspan="'+(!1===k.groupColumnShow[v.idx]?e-1:e)+'">'+p+a.jgrid.template(k.groupText[v.idx],n,v.cnt,v.summary)+"</td></tr>";if(u-1===v.idx){var B=k.groups[g+1],D,C=0;D=v.startRow;var F=void 0!==B?B.startRow:k.groups[g].startRow+k.groups[g].cnt;k._locgr&&(C=(c-1)*f,C>v.startRow&&(D=C));for(;D<F&&b[D-C];D++)l+=b[D-C].join("");if("header"!==k.groupSummaryPos[v.idx]){var y;if(void 0!==B){for(y=0;y<k.groupField.length&&B.dataIndex!==k.groupField[y];y++);w=
+k.groupField.length-y}for(B=0;B<w;B++)s[B]&&(C="",k.groupCollapse&&!k.showSummaryOnHide&&(C=' style="display:none;"'),l+="<tr"+C+' jqfootlevel="'+(v.idx-B)+'" role="row" class="ui-widget-content jqfoot ui-row-'+h.p.direction+'">',l+=d(g,B,k.groups,0),l+="</tr>");w=y}}});a("#"+a.jgrid.jqID(h.p.id)+" tbody:first").append(l);l=null})},groupingGroupBy:function(b,e){return this.each(function(){"string"===typeof b&&(b=[b]);var c=this.p.groupingView;this.p.grouping=!0;c._locgr=!1;void 0===c.visibiltyOnNextGrouping&&
+(c.visibiltyOnNextGrouping=[]);var f;for(f=0;f<c.groupField.length;f++)!c.groupColumnShow[f]&&c.visibiltyOnNextGrouping[f]&&a(this).jqGrid("showCol",c.groupField[f]);for(f=0;f<b.length;f++)c.visibiltyOnNextGrouping[f]=a("#"+a.jgrid.jqID(this.p.id)+"_"+a.jgrid.jqID(b[f])).is(":visible");this.p.groupingView=a.extend(this.p.groupingView,e||{});c.groupField=b;a(this).trigger("reloadGrid")})},groupingRemove:function(b){return this.each(function(){void 0===b&&(b=!0);this.p.grouping=!1;if(!0===b){var e=
+this.p.groupingView,c;for(c=0;c<e.groupField.length;c++)!e.groupColumnShow[c]&&e.visibiltyOnNextGrouping[c]&&a(this).jqGrid("showCol",e.groupField);a("tr.jqgroup, tr.jqfoot","#"+a.jgrid.jqID(this.p.id)+" tbody:first").remove();a("tr.jqgrow:hidden","#"+a.jgrid.jqID(this.p.id)+" tbody:first").show()}else a(this).trigger("reloadGrid")})},groupingCalculations:{handler:function(a,e,c,f,g,d){var h={sum:function(){return parseFloat(e||0)+parseFloat(d[c]||0)},min:function(){return""===e?parseFloat(d[c]||
+0):Math.min(parseFloat(e),parseFloat(d[c]||0))},max:function(){return""===e?parseFloat(d[c]||0):Math.max(parseFloat(e),parseFloat(d[c]||0))},count:function(){""===e&&(e=0);return d.hasOwnProperty(c)?e+1:0},avg:function(){return h.sum()}};if(!h[a])throw"jqGrid Grouping No such method: "+a;a=h[a]();null!=f&&("fixed"===g?a=a.toFixed(f):(f=Math.pow(10,f),a=Math.round(a*f)/f));return a}}})})(jQuery);
+(function(a){a.jgrid.extend({jqGridImport:function(b){b=a.extend({imptype:"xml",impstring:"",impurl:"",mtype:"GET",impData:{},xmlGrid:{config:"roots>grid",data:"roots>rows"},jsonGrid:{config:"grid",data:"data"},ajaxOptions:{}},b||{});return this.each(function(){var e=this,c=function(b,c){var f=a(c.xmlGrid.config,b)[0],g=a(c.xmlGrid.data,b)[0],p,m;if(xmlJsonClass.xml2json&&a.jgrid.parse){f=xmlJsonClass.xml2json(f," ");f=a.jgrid.parse(f);for(m in f)f.hasOwnProperty(m)&&(p=f[m]);g?(g=f.grid.datatype,
+f.grid.datatype="xmlstring",f.grid.datastr=b,a(e).jqGrid(p).jqGrid("setGridParam",{datatype:g})):a(e).jqGrid(p)}else alert("xml2json or parse are not present")},f=function(b,c){if(b&&"string"===typeof b){var f=!1;a.jgrid.useJSON&&(a.jgrid.useJSON=!1,f=!0);var g=a.jgrid.parse(b);f&&(a.jgrid.useJSON=!0);f=g[c.jsonGrid.config];if(g=g[c.jsonGrid.data]){var p=f.datatype;f.datatype="jsonstring";f.datastr=g;a(e).jqGrid(f).jqGrid("setGridParam",{datatype:p})}else a(e).jqGrid(f)}};switch(b.imptype){case "xml":a.ajax(a.extend({url:b.impurl,
+type:b.mtype,data:b.impData,dataType:"xml",complete:function(d,f){"success"===f&&(c(d.responseXML,b),a(e).triggerHandler("jqGridImportComplete",[d,b]),a.isFunction(b.importComplete)&&b.importComplete(d))}},b.ajaxOptions));break;case "xmlstring":if(b.impstring&&"string"===typeof b.impstring){var g=a.parseXML(b.impstring);g&&(c(g,b),a(e).triggerHandler("jqGridImportComplete",[g,b]),a.isFunction(b.importComplete)&&b.importComplete(g),b.impstring=null);g=null}break;case "json":a.ajax(a.extend({url:b.impurl,
+type:b.mtype,data:b.impData,dataType:"json",complete:function(c){try{f(c.responseText,b),a(e).triggerHandler("jqGridImportComplete",[c,b]),a.isFunction(b.importComplete)&&b.importComplete(c)}catch(g){}}},b.ajaxOptions));break;case "jsonstring":b.impstring&&"string"===typeof b.impstring&&(f(b.impstring,b),a(e).triggerHandler("jqGridImportComplete",[b.impstring,b]),a.isFunction(b.importComplete)&&b.importComplete(b.impstring),b.impstring=null)}})},jqGridExport:function(b){b=a.extend({exptype:"xmlstring",
+root:"grid",ident:"\t"},b||{});var e=null;this.each(function(){if(this.grid){var c,f=a.extend(!0,{},a(this).jqGrid("getGridParam"));f.rownumbers&&(f.colNames.splice(0,1),f.colModel.splice(0,1));f.multiselect&&(f.colNames.splice(0,1),f.colModel.splice(0,1));f.subGrid&&(f.colNames.splice(0,1),f.colModel.splice(0,1));f.knv=null;if(f.treeGrid)for(c in f.treeReader)f.treeReader.hasOwnProperty(c)&&(f.colNames.splice(f.colNames.length-1),f.colModel.splice(f.colModel.length-1));switch(b.exptype){case "xmlstring":e=
+"<"+b.root+">"+xmlJsonClass.json2xml(f,b.ident)+"</"+b.root+">";break;case "jsonstring":e="{"+xmlJsonClass.toJson(f,b.root,b.ident,!1)+"}",void 0!==f.postData.filters&&(e=e.replace(/filters":"/,'filters":'),e=e.replace(/}]}"/,"}]}"))}}});return e},excelExport:function(b){b=a.extend({exptype:"remote",url:null,oper:"oper",tag:"excel",exportOptions:{}},b||{});return this.each(function(){if(this.grid){var e;"remote"===b.exptype&&(e=a.extend({},this.p.postData),e[b.oper]=b.tag,e=jQuery.param(e),e=-1!==
+b.url.indexOf("?")?b.url+"&"+e:b.url+"?"+e,window.location=e)}})}})})(jQuery);
+(function(a){a.jgrid.inlineEdit=a.jgrid.inlineEdit||{};a.jgrid.extend({editRow:function(b,e,c,f,g,d,h,k,l){var p={},m=a.makeArray(arguments).slice(1);"object"===a.type(m[0])?p=m[0]:(void 0!==e&&(p.keys=e),a.isFunction(c)&&(p.oneditfunc=c),a.isFunction(f)&&(p.successfunc=f),void 0!==g&&(p.url=g),void 0!==d&&(p.extraparam=d),a.isFunction(h)&&(p.aftersavefunc=h),a.isFunction(k)&&(p.errorfunc=k),a.isFunction(l)&&(p.afterrestorefunc=l));p=a.extend(!0,{keys:!1,oneditfunc:null,successfunc:null,url:null,
+extraparam:{},aftersavefunc:null,errorfunc:null,afterrestorefunc:null,restoreAfterError:!0,mtype:"POST",focusField:!0},a.jgrid.inlineEdit,p);return this.each(function(){var c=this,d,e,f,g=0,h=null,k={},l,m;c.grid&&(l=a(c).jqGrid("getInd",b,!0),!1!==l&&(f=a.isFunction(p.beforeEditRow)?p.beforeEditRow.call(c,p,b):void 0,void 0===f&&(f=!0),f&&(f=a(l).attr("editable")||"0","0"!==f||a(l).hasClass("not-editable-row")||(m=c.p.colModel,a('td[role="gridcell"]',l).each(function(f){d=m[f].name;var l=!0===c.p.treeGrid&&
+d===c.p.ExpandColumn;if(l)e=a("span:first",this).html();else try{e=a.unformat.call(c,this,{rowId:b,colModel:m[f]},f)}catch(p){e=m[f].edittype&&"textarea"===m[f].edittype?a(this).text():a(this).html()}if("cb"!==d&&"subgrid"!==d&&"rn"!==d&&(c.p.autoencode&&(e=a.jgrid.htmlDecode(e)),k[d]=e,!0===m[f].editable)){null===h&&(h=f);l?a("span:first",this).html(""):a(this).html("");var t=a.extend({},m[f].editoptions||{},{id:b+"_"+d,name:d,rowId:b});m[f].edittype||(m[f].edittype="text");if("&nbsp;"===e||"&#160;"===
+e||1===e.length&&160===e.charCodeAt(0))e="";var x=a.jgrid.createEl.call(c,m[f].edittype,t,e,!0,a.extend({},a.jgrid.ajaxOptions,c.p.ajaxSelectOptions||{}));a(x).addClass("editable");l?a("span:first",this).append(x):a(this).append(x);a.jgrid.bindEv.call(c,x,t);"select"===m[f].edittype&&void 0!==m[f].editoptions&&!0===m[f].editoptions.multiple&&void 0===m[f].editoptions.dataUrl&&a.jgrid.msie&&a(x).width(a(x).width());g++}}),0<g&&(k.id=b,c.p.savedRow.push(k),a(l).attr("editable","1"),p.focusField&&("number"===
+typeof p.focusField&&parseInt(p.focusField,10)<=m.length&&(h=p.focusField),setTimeout(function(){var b=a("td:eq("+h+") :input:visible",l).not(":disabled");0<b.length&&b.focus()},0)),!0===p.keys&&a(l).bind("keydown",function(d){if(27===d.keyCode){a(c).jqGrid("restoreRow",b,p.afterrestorefunc);if(c.p._inlinenav)try{a(c).jqGrid("showAddEditButtons")}catch(e){}return!1}if(13===d.keyCode){if("TEXTAREA"===d.target.tagName)return!0;if(a(c).jqGrid("saveRow",b,p)&&c.p._inlinenav)try{a(c).jqGrid("showAddEditButtons")}catch(f){}return!1}}),
+a(c).triggerHandler("jqGridInlineEditRow",[b,p]),a.isFunction(p.oneditfunc)&&p.oneditfunc.call(c,b))))))})},saveRow:function(b,e,c,f,g,d,h){var k=a.makeArray(arguments).slice(1),l={};"object"===a.type(k[0])?l=k[0]:(a.isFunction(e)&&(l.successfunc=e),void 0!==c&&(l.url=c),void 0!==f&&(l.extraparam=f),a.isFunction(g)&&(l.aftersavefunc=g),a.isFunction(d)&&(l.errorfunc=d),a.isFunction(h)&&(l.afterrestorefunc=h));var l=a.extend(!0,{successfunc:null,url:null,extraparam:{},aftersavefunc:null,errorfunc:null,
+afterrestorefunc:null,restoreAfterError:!0,mtype:"POST",saveui:"enable",savetext:a.jgrid.defaults.savetext||"Saving..."},a.jgrid.inlineEdit,l),p=!1,m=this[0],r,q={},n={},t={},u,w,s;if(!m.grid)return p;s=a(m).jqGrid("getInd",b,!0);if(!1===s)return p;k=a.isFunction(l.beforeSaveRow)?l.beforeSaveRow.call(m,l,b):void 0;void 0===k&&(k=!0);if(k){k=a(s).attr("editable");l.url=l.url||m.p.editurl;if("1"===k){var x;a('td[role="gridcell"]',s).each(function(b){x=m.p.colModel[b];r=x.name;if("cb"!==r&&"subgrid"!==
+r&&!0===x.editable&&"rn"!==r&&!a(this).hasClass("not-editable-cell")){switch(x.edittype){case "checkbox":var c=["Yes","No"];x.editoptions&&(c=x.editoptions.value.split(":"));q[r]=a("input",this).is(":checked")?c[0]:c[1];break;case "text":case "password":case "textarea":case "button":q[r]=a("input, textarea",this).val();break;case "select":if(x.editoptions.multiple){var c=a("select",this),d=[];q[r]=a(c).val();q[r]=q[r]?q[r].join(","):"";a("select option:selected",this).each(function(b,c){d[b]=a(c).text()});
+n[r]=d.join(",")}else q[r]=a("select option:selected",this).val(),n[r]=a("select option:selected",this).text();x.formatter&&"select"===x.formatter&&(n={});break;case "custom":try{if(x.editoptions&&a.isFunction(x.editoptions.custom_value)){if(q[r]=x.editoptions.custom_value.call(m,a(".customelement",this),"get"),void 0===q[r])throw"e2";}else throw"e1";}catch(e){"e1"===e&&a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_value' "+a.jgrid.edit.msg.nodefined,a.jgrid.edit.bClose),"e2"===e?a.jgrid.info_dialog(a.jgrid.errors.errcap,
+"function 'custom_value' "+a.jgrid.edit.msg.novalue,a.jgrid.edit.bClose):a.jgrid.info_dialog(a.jgrid.errors.errcap,e.message,a.jgrid.edit.bClose)}}w=a.jgrid.checkValues.call(m,q[r],b);if(!1===w[0])return!1;m.p.autoencode&&(q[r]=a.jgrid.htmlEncode(q[r]));"clientArray"!==l.url&&x.editoptions&&!0===x.editoptions.NullIfEmpty&&""===q[r]&&(t[r]="null")}});if(!1===w[0]){try{var A=a(m).jqGrid("getGridRowById",b),v=a.jgrid.findPos(A);a.jgrid.info_dialog(a.jgrid.errors.errcap,w[1],a.jgrid.edit.bClose,{left:v[0],
+top:v[1]+a(A).outerHeight()})}catch(H){alert(w[1])}return p}k=m.p.prmNames;A=b;v=!1===m.p.keyName?k.id:m.p.keyName;q&&(q[k.oper]=k.editoper,void 0===q[v]||""===q[v]?q[v]=b:s.id!==m.p.idPrefix+q[v]&&(k=a.jgrid.stripPref(m.p.idPrefix,b),void 0!==m.p._index[k]&&(m.p._index[q[v]]=m.p._index[k],delete m.p._index[k]),b=m.p.idPrefix+q[v],a(s).attr("id",b),m.p.selrow===A&&(m.p.selrow=b),a.isArray(m.p.selarrrow)&&(k=a.inArray(A,m.p.selarrrow),0<=k&&(m.p.selarrrow[k]=b)),m.p.multiselect&&(k="jqg_"+m.p.id+"_"+
+b,a("input.cbox",s).attr("id",k).attr("name",k))),void 0===m.p.inlineData&&(m.p.inlineData={}),q=a.extend({},q,m.p.inlineData,l.extraparam));if("clientArray"===l.url){q=a.extend({},q,n);m.p.autoencode&&a.each(q,function(b,c){q[b]=a.jgrid.htmlDecode(c)});k=a(m).jqGrid("setRowData",b,q);a(s).attr("editable","0");for(v=0;v<m.p.savedRow.length;v++)if(String(m.p.savedRow[v].id)===String(A)){u=v;break}0<=u&&m.p.savedRow.splice(u,1);a(m).triggerHandler("jqGridInlineAfterSaveRow",[b,k,q,l]);a.isFunction(l.aftersavefunc)&&
+l.aftersavefunc.call(m,b,k,q,l);p=!0;a(s).removeClass("jqgrid-new-row").unbind("keydown")}else a(m).jqGrid("progressBar",{method:"show",loadtype:l.saveui,htmlcontent:l.savetext}),t=a.extend({},q,t),t[v]=a.jgrid.stripPref(m.p.idPrefix,t[v]),a.ajax(a.extend({url:l.url,data:a.isFunction(m.p.serializeRowData)?m.p.serializeRowData.call(m,t):t,type:l.mtype,async:!1,complete:function(c,d){a(m).jqGrid("progressBar",{method:"hide",loadtype:l.saveui,htmlcontent:l.savetext});if("success"===d){var e=!0,f;f=a(m).triggerHandler("jqGridInlineSuccessSaveRow",
+[c,b,l]);a.isArray(f)||(f=[!0,q]);f[0]&&a.isFunction(l.successfunc)&&(f=l.successfunc.call(m,c));a.isArray(f)?(e=f[0],q=f[1]||q):e=f;if(!0===e){m.p.autoencode&&a.each(q,function(b,c){q[b]=a.jgrid.htmlDecode(c)});q=a.extend({},q,n);a(m).jqGrid("setRowData",b,q);a(s).attr("editable","0");for(e=0;e<m.p.savedRow.length;e++)if(String(m.p.savedRow[e].id)===String(b)){u=e;break}0<=u&&m.p.savedRow.splice(u,1);a(m).triggerHandler("jqGridInlineAfterSaveRow",[b,c,q,l]);a.isFunction(l.aftersavefunc)&&l.aftersavefunc.call(m,
+b,c,q,l);p=!0;a(s).removeClass("jqgrid-new-row").unbind("keydown")}else a(m).triggerHandler("jqGridInlineErrorSaveRow",[b,c,d,null,l]),a.isFunction(l.errorfunc)&&l.errorfunc.call(m,b,c,d,null),!0===l.restoreAfterError&&a(m).jqGrid("restoreRow",b,l.afterrestorefunc)}},error:function(c,d,e){a("#lui_"+a.jgrid.jqID(m.p.id)).hide();a(m).triggerHandler("jqGridInlineErrorSaveRow",[b,c,d,e,l]);if(a.isFunction(l.errorfunc))l.errorfunc.call(m,b,c,d,e);else{c=c.responseText||c.statusText;try{a.jgrid.info_dialog(a.jgrid.errors.errcap,
+'<div class="ui-state-error">'+c+"</div>",a.jgrid.edit.bClose,{buttonalign:"right"})}catch(f){alert(c)}}!0===l.restoreAfterError&&a(m).jqGrid("restoreRow",b,l.afterrestorefunc)}},a.jgrid.ajaxOptions,m.p.ajaxRowOptions||{}))}return p}},restoreRow:function(b,e){var c=a.makeArray(arguments).slice(1),f={};"object"===a.type(c[0])?f=c[0]:a.isFunction(e)&&(f.afterrestorefunc=e);f=a.extend(!0,{},a.jgrid.inlineEdit,f);return this.each(function(){var c=this,d=-1,e,k={},l;if(c.grid&&(e=a(c).jqGrid("getInd",
+b,!0),!1!==e&&(l=a.isFunction(f.beforeCancelRow)?f.beforeCancelRow.call(c,f,b):void 0,void 0===l&&(l=!0),l))){for(l=0;l<c.p.savedRow.length;l++)if(String(c.p.savedRow[l].id)===String(b)){d=l;break}if(0<=d){if(a.isFunction(a.fn.datepicker))try{a("input.hasDatepicker","#"+a.jgrid.jqID(e.id)).datepicker("hide")}catch(p){}a.each(c.p.colModel,function(){!0===this.editable&&c.p.savedRow[d].hasOwnProperty(this.name)&&(k[this.name]=c.p.savedRow[d][this.name])});a(c).jqGrid("setRowData",b,k);a(e).attr("editable",
+"0").unbind("keydown");c.p.savedRow.splice(d,1);a("#"+a.jgrid.jqID(b),"#"+a.jgrid.jqID(c.p.id)).hasClass("jqgrid-new-row")&&setTimeout(function(){a(c).jqGrid("delRowData",b);a(c).jqGrid("showAddEditButtons")},0)}a(c).triggerHandler("jqGridInlineAfterRestoreRow",[b]);a.isFunction(f.afterrestorefunc)&&f.afterrestorefunc.call(c,b)}})},addRow:function(b){b=a.extend(!0,{rowID:null,initdata:{},position:"first",useDefValues:!0,useFormatter:!1,addRowParams:{extraparam:{}}},b||{});return this.each(function(){if(this.grid){var e=
+this,c=a.isFunction(b.beforeAddRow)?b.beforeAddRow.call(e,b.addRowParams):void 0;void 0===c&&(c=!0);c&&(b.rowID=a.isFunction(b.rowID)?b.rowID.call(e,b):null!=b.rowID?b.rowID:a.jgrid.randId(),!0===b.useDefValues&&a(e.p.colModel).each(function(){if(this.editoptions&&this.editoptions.defaultValue){var c=this.editoptions.defaultValue,c=a.isFunction(c)?c.call(e):c;b.initdata[this.name]=c}}),a(e).jqGrid("addRowData",b.rowID,b.initdata,b.position),b.rowID=e.p.idPrefix+b.rowID,a("#"+a.jgrid.jqID(b.rowID),
+"#"+a.jgrid.jqID(e.p.id)).addClass("jqgrid-new-row"),b.useFormatter?a("#"+a.jgrid.jqID(b.rowID)+" .ui-inline-edit","#"+a.jgrid.jqID(e.p.id)).click():(c=e.p.prmNames,b.addRowParams.extraparam[c.oper]=c.addoper,a(e).jqGrid("editRow",b.rowID,b.addRowParams),a(e).jqGrid("setSelection",b.rowID)))}})},inlineNav:function(b,e){e=a.extend(!0,{edit:!0,editicon:"ui-icon-pencil",add:!0,addicon:"ui-icon-plus",save:!0,saveicon:"ui-icon-disk",cancel:!0,cancelicon:"ui-icon-cancel",addParams:{addRowParams:{extraparam:{}}},
+editParams:{},restoreAfterSelect:!0},a.jgrid.nav,e||{});return this.each(function(){if(this.grid){var c=this,f,g=a.jgrid.jqID(c.p.id);c.p._inlinenav=!0;if(!0===e.addParams.useFormatter){var d=c.p.colModel,h;for(h=0;h<d.length;h++)if(d[h].formatter&&"actions"===d[h].formatter){d[h].formatoptions&&(d=a.extend({keys:!1,onEdit:null,onSuccess:null,afterSave:null,onError:null,afterRestore:null,extraparam:{},url:null},d[h].formatoptions),e.addParams.addRowParams={keys:d.keys,oneditfunc:d.onEdit,successfunc:d.onSuccess,
+url:d.url,extraparam:d.extraparam,aftersavefunc:d.afterSave,errorfunc:d.onError,afterrestorefunc:d.afterRestore});break}}e.add&&a(c).jqGrid("navButtonAdd",b,{caption:e.addtext,title:e.addtitle,buttonicon:e.addicon,id:c.p.id+"_iladd",onClickButton:function(){a(c).jqGrid("addRow",e.addParams);e.addParams.useFormatter||(a("#"+g+"_ilsave").removeClass("ui-state-disabled"),a("#"+g+"_ilcancel").removeClass("ui-state-disabled"),a("#"+g+"_iladd").addClass("ui-state-disabled"),a("#"+g+"_iledit").addClass("ui-state-disabled"))}});
+e.edit&&a(c).jqGrid("navButtonAdd",b,{caption:e.edittext,title:e.edittitle,buttonicon:e.editicon,id:c.p.id+"_iledit",onClickButton:function(){var b=a(c).jqGrid("getGridParam","selrow");b?(a(c).jqGrid("editRow",b,e.editParams),a("#"+g+"_ilsave").removeClass("ui-state-disabled"),a("#"+g+"_ilcancel").removeClass("ui-state-disabled"),a("#"+g+"_iladd").addClass("ui-state-disabled"),a("#"+g+"_iledit").addClass("ui-state-disabled")):(a.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+g,jqm:!0}),a("#jqg_alrt").focus())}});
+e.save&&(a(c).jqGrid("navButtonAdd",b,{caption:e.savetext||"",title:e.savetitle||"Save row",buttonicon:e.saveicon,id:c.p.id+"_ilsave",onClickButton:function(){var b=c.p.savedRow[0].id;if(b){var d=c.p.prmNames,f=d.oper,h=e.editParams;a("#"+a.jgrid.jqID(b),"#"+g).hasClass("jqgrid-new-row")?(e.addParams.addRowParams.extraparam[f]=d.addoper,h=e.addParams.addRowParams):(e.editParams.extraparam||(e.editParams.extraparam={}),e.editParams.extraparam[f]=d.editoper);a(c).jqGrid("saveRow",b,h)&&a(c).jqGrid("showAddEditButtons")}else a.jgrid.viewModal("#alertmod",
+{gbox:"#gbox_"+g,jqm:!0}),a("#jqg_alrt").focus()}}),a("#"+g+"_ilsave").addClass("ui-state-disabled"));e.cancel&&(a(c).jqGrid("navButtonAdd",b,{caption:e.canceltext||"",title:e.canceltitle||"Cancel row editing",buttonicon:e.cancelicon,id:c.p.id+"_ilcancel",onClickButton:function(){var b=c.p.savedRow[0].id,d=e.editParams;b?(a("#"+a.jgrid.jqID(b),"#"+g).hasClass("jqgrid-new-row")&&(d=e.addParams.addRowParams),a(c).jqGrid("restoreRow",b,d),a(c).jqGrid("showAddEditButtons")):(a.jgrid.viewModal("#alertmod",
+{gbox:"#gbox_"+g,jqm:!0}),a("#jqg_alrt").focus())}}),a("#"+g+"_ilcancel").addClass("ui-state-disabled"));!0===e.restoreAfterSelect&&(f=a.isFunction(c.p.beforeSelectRow)?c.p.beforeSelectRow:!1,c.p.beforeSelectRow=function(b,d){var g=!0;0<c.p.savedRow.length&&!0===c.p._inlinenav&&b!==c.p.selrow&&null!==c.p.selrow&&(c.p.selrow===e.addParams.rowID?a(c).jqGrid("delRowData",c.p.selrow):a(c).jqGrid("restoreRow",c.p.selrow,e.editParams),a(c).jqGrid("showAddEditButtons"));f&&(g=f.call(c,b,d));return g})}})},
+showAddEditButtons:function(){return this.each(function(){if(this.grid){var b=a.jgrid.jqID(this.p.id);a("#"+b+"_ilsave").addClass("ui-state-disabled");a("#"+b+"_ilcancel").addClass("ui-state-disabled");a("#"+b+"_iladd").removeClass("ui-state-disabled");a("#"+b+"_iledit").removeClass("ui-state-disabled")}})}})})(jQuery);
+(function(a){a.jgrid.msie&&8===a.jgrid.msiever()&&(a.expr[":"].hidden=function(a){return 0===a.offsetWidth||0===a.offsetHeight||"none"===a.style.display});a.jgrid._multiselect=!1;if(a.ui&&a.ui.multiselect){if(a.ui.multiselect.prototype._setSelected){var b=a.ui.multiselect.prototype._setSelected;a.ui.multiselect.prototype._setSelected=function(e,c){var f=b.call(this,e,c);if(c&&this.selectedList){var g=this.element;this.selectedList.find("li").each(function(){a(this).data("optionLink")&&a(this).data("optionLink").remove().appendTo(g)})}return f}}a.ui.multiselect.prototype.destroy&&
+(a.ui.multiselect.prototype.destroy=function(){this.element.show();this.container.remove();void 0===a.Widget?a.widget.prototype.destroy.apply(this,arguments):a.Widget.prototype.destroy.apply(this,arguments)});a.jgrid._multiselect=!0}a.jgrid.extend({sortableColumns:function(b){return this.each(function(){function c(){f.p.disableClick=!0}var f=this,g=a.jgrid.jqID(f.p.id),g={tolerance:"pointer",axis:"x",scrollSensitivity:"1",items:">th:not(:has(#jqgh_"+g+"_cb,#jqgh_"+g+"_rn,#jqgh_"+g+"_subgrid),:hidden)",
+placeholder:{element:function(b){return a(document.createElement(b[0].nodeName)).addClass(b[0].className+" ui-sortable-placeholder ui-state-highlight").removeClass("ui-sortable-helper")[0]},update:function(a,b){b.height(a.currentItem.innerHeight()-parseInt(a.currentItem.css("paddingTop")||0,10)-parseInt(a.currentItem.css("paddingBottom")||0,10));b.width(a.currentItem.innerWidth()-parseInt(a.currentItem.css("paddingLeft")||0,10)-parseInt(a.currentItem.css("paddingRight")||0,10))}},update:function(b,
+c){var d=a(c.item).parent(),d=a(">th",d),e={},g=f.p.id+"_";a.each(f.p.colModel,function(a){e[this.name]=a});var r=[];d.each(function(){var b=a(">div",this).get(0).id.replace(/^jqgh_/,"").replace(g,"");e.hasOwnProperty(b)&&r.push(e[b])});a(f).jqGrid("remapColumns",r,!0,!0);a.isFunction(f.p.sortable.update)&&f.p.sortable.update(r);setTimeout(function(){f.p.disableClick=!1},50)}};f.p.sortable.options?a.extend(g,f.p.sortable.options):a.isFunction(f.p.sortable)&&(f.p.sortable={update:f.p.sortable});if(g.start){var d=
+g.start;g.start=function(a,b){c();d.call(this,a,b)}}else g.start=c;f.p.sortable.exclude&&(g.items+=":not("+f.p.sortable.exclude+")");g=b.sortable(g);g=g.data("sortable")||g.data("uiSortable");null!=g&&(g.data("sortable").floating=!0)})},columnChooser:function(b){function c(b,c){b&&("string"===typeof b?a.fn[b]&&a.fn[b].apply(c,a.makeArray(arguments).slice(2)):a.isFunction(b)&&b.apply(c,a.makeArray(arguments).slice(2)))}var f=this,g,d,h={},k=[],l,p,m=f.jqGrid("getGridParam","colModel"),r=f.jqGrid("getGridParam",
+"colNames"),q=function(b){return a.ui.multiselect.prototype&&b.data(a.ui.multiselect.prototype.widgetFullName||a.ui.multiselect.prototype.widgetName)||b.data("ui-multiselect")||b.data("multiselect")};if(!a("#colchooser_"+a.jgrid.jqID(f[0].p.id)).length){g=a('<div id="colchooser_'+f[0].p.id+'" style="position:relative;overflow:hidden"><div><select multiple="multiple"></select></div></div>');d=a("select",g);b=a.extend({width:400,height:240,classname:null,done:function(a){a&&f.jqGrid("remapColumns",
+a,!0)},msel:"multiselect",dlog:"dialog",dialog_opts:{minWidth:470,dialogClass:"ui-jqdialog"},dlog_opts:function(b){var c={};c[b.bSubmit]=function(){b.apply_perm();b.cleanup(!1)};c[b.bCancel]=function(){b.cleanup(!0)};return a.extend(!0,{buttons:c,close:function(){b.cleanup(!0)},modal:b.modal||!1,resizable:b.resizable||!0,width:b.width+70,resize:function(){var a=q(d),b=a.container.closest(".ui-dialog-content");0<b.length&&"object"===typeof b[0].style?b[0].style.width="":b.css("width","");a.selectedList.height(Math.max(a.selectedContainer.height()-
+a.selectedActions.outerHeight()-1,1));a.availableList.height(Math.max(a.availableContainer.height()-a.availableActions.outerHeight()-1,1))}},b.dialog_opts||{})},apply_perm:function(){var c=[];a("option",d).each(function(){a(this).is("[selected]")?f.jqGrid("showCol",m[this.value].name):f.jqGrid("hideCol",m[this.value].name)});a("option[selected]",d).each(function(){c.push(parseInt(this.value,10))});a.each(c,function(){delete h[m[parseInt(this,10)].name]});a.each(h,function(){var a=parseInt(this,10);
+var b=c,d=a,e,f;0<=d?(e=b.slice(),f=e.splice(d,Math.max(b.length-d,d)),d>b.length&&(d=b.length),e[d]=a,c=e.concat(f)):c=b});b.done&&b.done.call(f,c);f.jqGrid("setGridWidth",f[0].p.tblwidth,f[0].p.shrinkToFit)},cleanup:function(a){c(b.dlog,g,"destroy");c(b.msel,d,"destroy");g.remove();a&&b.done&&b.done.call(f)},msel_opts:{}},a.jgrid.col,b||{});if(a.ui&&a.ui.multiselect&&a.ui.multiselect.defaults){if(!a.jgrid._multiselect){alert("Multiselect plugin loaded after jqGrid. Please load the plugin before the jqGrid!");
+return}b.msel_opts=a.extend(a.ui.multiselect.defaults,b.msel_opts)}b.caption&&g.attr("title",b.caption);b.classname&&(g.addClass(b.classname),d.addClass(b.classname));b.width&&(a(">div",g).css({width:b.width,margin:"0 auto"}),d.css("width",b.width));b.height&&(a(">div",g).css("height",b.height),d.css("height",b.height-10));d.empty();a.each(m,function(b){h[this.name]=b;this.hidedlg?this.hidden||k.push(b):d.append("<option value='"+b+"' "+(this.hidden?"":"selected='selected'")+">"+a.jgrid.stripHtml(r[b])+
+"</option>")});l=a.isFunction(b.dlog_opts)?b.dlog_opts.call(f,b):b.dlog_opts;c(b.dlog,g,l);l=a.isFunction(b.msel_opts)?b.msel_opts.call(f,b):b.msel_opts;c(b.msel,d,l);l=a("#colchooser_"+a.jgrid.jqID(f[0].p.id));l.css({margin:"auto"});l.find(">div").css({width:"100%",height:"100%",margin:"auto"});l=q(d);l.container.css({width:"100%",height:"100%",margin:"auto"});l.selectedContainer.css({width:100*l.options.dividerLocation+"%",height:"100%",margin:"auto",boxSizing:"border-box"});l.availableContainer.css({width:100-
+100*l.options.dividerLocation+"%",height:"100%",margin:"auto",boxSizing:"border-box"});l.selectedList.css("height","auto");l.availableList.css("height","auto");p=Math.max(l.selectedList.height(),l.availableList.height());p=Math.min(p,a(window).height());l.selectedList.css("height",p);l.availableList.css("height",p)}},sortableRows:function(b){return this.each(function(){var c=this;c.grid&&!c.p.treeGrid&&a.fn.sortable&&(b=a.extend({cursor:"move",axis:"y",items:".jqgrow"},b||{}),b.start&&a.isFunction(b.start)?
+(b._start_=b.start,delete b.start):b._start_=!1,b.update&&a.isFunction(b.update)?(b._update_=b.update,delete b.update):b._update_=!1,b.start=function(f,g){a(g.item).css("border-width","0");a("td",g.item).each(function(a){this.style.width=c.grid.cols[a].style.width});if(c.p.subGrid){var d=a(g.item).attr("id");try{a(c).jqGrid("collapseSubGridRow",d)}catch(h){}}b._start_&&b._start_.apply(this,[f,g])},b.update=function(f,g){a(g.item).css("border-width","");!0===c.p.rownumbers&&a("td.jqgrid-rownum",c.rows).each(function(b){a(this).html(b+
+1+(parseInt(c.p.page,10)-1)*parseInt(c.p.rowNum,10))});b._update_&&b._update_.apply(this,[f,g])},a("tbody:first",c).sortable(b),a("tbody:first",c).disableSelection())})},gridDnD:function(b){return this.each(function(){function c(){var b=a.data(f,"dnd");a("tr.jqgrow:not(.ui-draggable)",f).draggable(a.isFunction(b.drag)?b.drag.call(a(f),b):b.drag)}var f=this,g,d;if(f.grid&&!f.p.treeGrid&&a.fn.draggable&&a.fn.droppable)if(void 0===a("#jqgrid_dnd")[0]&&a("body").append("<table id='jqgrid_dnd' class='ui-jqgrid-dnd'></table>"),
+"string"===typeof b&&"updateDnD"===b&&!0===f.p.jqgdnd)c();else if(b=a.extend({drag:function(b){return a.extend({start:function(c,d){var e;if(f.p.subGrid){e=a(d.helper).attr("id");try{a(f).jqGrid("collapseSubGridRow",e)}catch(g){}}for(e=0;e<a.data(f,"dnd").connectWith.length;e++)0===a(a.data(f,"dnd").connectWith[e]).jqGrid("getGridParam","reccount")&&a(a.data(f,"dnd").connectWith[e]).jqGrid("addRowData","jqg_empty_row",{});d.helper.addClass("ui-state-highlight");a("td",d.helper).each(function(a){this.style.width=
+f.grid.headers[a].width+"px"});b.onstart&&a.isFunction(b.onstart)&&b.onstart.call(a(f),c,d)},stop:function(c,d){var e;d.helper.dropped&&!b.dragcopy&&(e=a(d.helper).attr("id"),void 0===e&&(e=a(this).attr("id")),a(f).jqGrid("delRowData",e));for(e=0;e<a.data(f,"dnd").connectWith.length;e++)a(a.data(f,"dnd").connectWith[e]).jqGrid("delRowData","jqg_empty_row");b.onstop&&a.isFunction(b.onstop)&&b.onstop.call(a(f),c,d)}},b.drag_opts||{})},drop:function(b){return a.extend({accept:function(b){if(!a(b).hasClass("jqgrow"))return b;
+b=a(b).closest("table.ui-jqgrid-btable");return 0<b.length&&void 0!==a.data(b[0],"dnd")?(b=a.data(b[0],"dnd").connectWith,-1!==a.inArray("#"+a.jgrid.jqID(this.id),b)?!0:!1):!1},drop:function(c,d){if(a(d.draggable).hasClass("jqgrow")){var e=a(d.draggable).attr("id"),e=d.draggable.parent().parent().jqGrid("getRowData",e);if(!b.dropbyname){var g=0,r={},q,n,t=a("#"+a.jgrid.jqID(this.id)).jqGrid("getGridParam","colModel");try{for(n in e)e.hasOwnProperty(n)&&(q=t[g].name,"cb"!==q&&"rn"!==q&&"subgrid"!==
+q&&e.hasOwnProperty(n)&&t[g]&&(r[q]=e[n]),g++);e=r}catch(u){}}d.helper.dropped=!0;b.beforedrop&&a.isFunction(b.beforedrop)&&(q=b.beforedrop.call(this,c,d,e,a("#"+a.jgrid.jqID(f.p.id)),a(this)),void 0!==q&&null!==q&&"object"===typeof q&&(e=q));if(d.helper.dropped){var w;b.autoid&&(a.isFunction(b.autoid)?w=b.autoid.call(this,e):(w=Math.ceil(1E3*Math.random()),w=b.autoidprefix+w));a("#"+a.jgrid.jqID(this.id)).jqGrid("addRowData",w,e,b.droppos)}b.ondrop&&a.isFunction(b.ondrop)&&b.ondrop.call(this,c,d,
+e)}}},b.drop_opts||{})},onstart:null,onstop:null,beforedrop:null,ondrop:null,drop_opts:{activeClass:"ui-state-active",hoverClass:"ui-state-hover"},drag_opts:{revert:"invalid",helper:"clone",cursor:"move",appendTo:"#jqgrid_dnd",zIndex:5E3},dragcopy:!1,dropbyname:!1,droppos:"first",autoid:!0,autoidprefix:"dnd_"},b||{}),b.connectWith)for(b.connectWith=b.connectWith.split(","),b.connectWith=a.map(b.connectWith,function(b){return a.trim(b)}),a.data(f,"dnd",b),0===f.p.reccount||f.p.jqgdnd||c(),f.p.jqgdnd=
+!0,g=0;g<b.connectWith.length;g++)d=b.connectWith[g],a(d).droppable(a.isFunction(b.drop)?b.drop.call(a(f),b):b.drop)})},gridResize:function(b){return this.each(function(){var c=this,f=a.jgrid.jqID(c.p.id);c.grid&&a.fn.resizable&&(b=a.extend({},b||{}),b.alsoResize?(b._alsoResize_=b.alsoResize,delete b.alsoResize):b._alsoResize_=!1,b.stop&&a.isFunction(b.stop)?(b._stop_=b.stop,delete b.stop):b._stop_=!1,b.stop=function(g,d){a(c).jqGrid("setGridParam",{height:a("#gview_"+f+" .ui-jqgrid-bdiv").height()});
+a(c).jqGrid("setGridWidth",d.size.width,b.shrinkToFit);b._stop_&&b._stop_.call(c,g,d)},b.alsoResize=b._alsoResize_?eval("("+("{'#gview_"+f+" .ui-jqgrid-bdiv':true,'"+b._alsoResize_+"':true}")+")"):a(".ui-jqgrid-bdiv","#gview_"+f),delete b._alsoResize_,a("#gbox_"+f).resizable(b))})}})})(jQuery);
+(function(a){function b(a,b){var f,g,d=[],h;if(!this||"function"!==typeof a||a instanceof RegExp)throw new TypeError;h=this.length;for(f=0;f<h;f++)if(this.hasOwnProperty(f)&&(g=this[f],a.call(b,g,f,this))){d.push(g);break}return d}a.assocArraySize=function(a){var b=0,f;for(f in a)a.hasOwnProperty(f)&&b++;return b};a.jgrid.extend({pivotSetup:function(e,c){var f=[],g=[],d=[],h=[],k=[],l={grouping:!0,groupingView:{groupField:[],groupSummary:[],groupSummaryPos:[]}},p=[],m=a.extend({rowTotals:!1,rowTotalsText:"Total",
+colTotals:!1,groupSummary:!0,groupSummaryPos:"header",frozenStaticCols:!1},c||{});this.each(function(){function c(a,d,e){a=b.call(a,d,e);return 0<a.length?a[0]:null}function q(a,b){var c=0,d=!0,e;for(e in a){if(a[e]!=this[c]){d=!1;break}c++;if(c>=this.length)break}d&&(w=b);return d}function n(b,c,d,e){var f=c.length,g,l,m,n,p="",q=[];a.isArray(d)?(n=d.length,q=d):(n=1,q[0]=d);h=[];k=[];for(m=h.root=0;m<n;m++){var r=[],s;for(g=0;g<f;g++){if(null==d)s=l=a.trim(c[g].member)+"_"+c[g].aggregator,q[0]=
+s;else{s=d[m].replace(/\s+/g,"");try{l=1===f?p+s:p+s+"_"+c[g].aggregator+"_"+String(g)}catch(t){}}var u=l=isNaN(parseInt(l,10))?l:l+" ",v=r,x=l,w=e[l],y=c[g].member,A=b,z=void 0;switch(c[g].aggregator){case "sum":z=parseFloat(w||0)+parseFloat(A[y]||0);break;case "count":if(""===w||null==w)w=0;z=A.hasOwnProperty(y)?w+1:0;break;case "min":z=""===w||null==w?parseFloat(A[y]||0):Math.min(parseFloat(w),parseFloat(A[y]||0));break;case "max":z=""===w||null==w?parseFloat(A[y]||0):Math.max(parseFloat(w),parseFloat(A[y]||
+0))}e[u]=v[x]=z;1>=m&&"_r_Totals"!==s&&""===p&&(p=s)}h[l]=r;k[l]=q[m]}return e}function t(a){var b,c,d,e,g;for(d in a)if(a.hasOwnProperty(d)){if("object"!==typeof a[d]){if("level"===d){void 0===Q[a.level]&&(Q[a.level]="",0<a.level&&"_r_Totals"!==a.text&&(p[a.level-1]={useColSpanStyle:!1,groupHeaders:[]}));if(Q[a.level]!==a.text&&a.children.length&&"_r_Totals"!==a.text&&0<a.level){p[a.level-1].groupHeaders.push({titleText:a.label,numberOfColumns:0});c=p[a.level-1].groupHeaders.length-1;g=0===c?X:V+
+H;if(a.level-1===(m.rowTotals?1:0)&&0<c){var h=p[a.level-1].groupHeaders[c-1].numberOfColumns;h&&(g=h+1+m.aggregates.length)}p[a.level-1].groupHeaders[c].startColumnName=f[g].name;p[a.level-1].groupHeaders[c].numberOfColumns=f.length-g;V=f.length}Q[a.level]=a.text}if(a.level===v&&"level"===d&&0<v)if(1<H){c=1;for(b in a.fields)1===c&&p[v-1].groupHeaders.push({startColumnName:b,numberOfColumns:1,titleText:a.text}),c++;p[v-1].groupHeaders[p[v-1].groupHeaders.length-1].numberOfColumns=c-1}else p.splice(v-
+1,1)}null!=a[d]&&"object"===typeof a[d]&&t(a[d]);if("level"===d&&0<a.level)for(b in c=0,a.fields)if(a.fields.hasOwnProperty(b)){g={};for(e in m.aggregates[c])if(m.aggregates[c].hasOwnProperty(e))switch(e){case "member":case "label":case "aggregator":break;default:g[e]=m.aggregates[c][e]}1<H?(g.name=b,g.label=m.aggregates[c].label||a.label):(g.name=a.text,g.label="_r_Totals"===a.text?m.rowTotalsText:a.label);f.push(g);c++}}}var u,w,s,x=e.length,A,v,H,B,D=0;m.rowTotals&&0<m.yDimension.length&&(m.yDimension.splice(0,
+0,{dataName:m.yDimension[0].dataName}),m.yDimension[0].converter=function(){return"_r_Totals"});A=a.isArray(m.xDimension)?m.xDimension.length:0;v=m.yDimension.length;H=a.isArray(m.aggregates)?m.aggregates.length:0;if(0===A||0===H)throw"xDimension or aggregates optiona are not set!";var C;for(s=0;s<A;s++)C={name:m.xDimension[s].dataName,frozen:m.frozenStaticCols},null==m.xDimension[s].isGroupField&&(m.xDimension[s].isGroupField=!0),C=a.extend(!0,C,m.xDimension[s]),f.push(C);C=A-1;for(var F={};D<x;){u=
+e[D];var y=[],O=[];B={};s=0;do y[s]=a.trim(u[m.xDimension[s].dataName]),B[m.xDimension[s].dataName]=y[s],s++;while(s<A);var z=0;w=-1;s=c(g,q,y);if(!s){z=0;if(1<=v){for(z=0;z<v;z++)O[z]=a.trim(u[m.yDimension[z].dataName]),m.yDimension[z].converter&&a.isFunction(m.yDimension[z].converter)&&(O[z]=m.yDimension[z].converter.call(this,O[z],y,O));B=n(u,m.aggregates,O,B)}else 0===v&&(B=n(u,m.aggregates,null,B));g.push(B)}else if(0<=w){z=0;if(1<=v){for(z=0;z<v;z++)O[z]=a.trim(u[m.yDimension[z].dataName]),
+m.yDimension[z].converter&&a.isFunction(m.yDimension[z].converter)&&(O[z]=m.yDimension[z].converter.call(this,O[z],y,O));s=n(u,m.aggregates,O,s)}else 0===v&&(s=n(u,m.aggregates,null,s));g[w]=s}u=0;var y=B=null,L;for(L in h)if(h.hasOwnProperty(L)){if(0===u)F.children&&void 0!==F.children||(F={text:L,level:0,children:[],label:L}),B=F.children;else{y=null;for(s=0;s<B.length;s++)if(B[s].text===L){y=B[s];break}y?B=y.children:(B.push({children:[],text:L,level:u,fields:h[L],label:k[L]}),B=B[B.length-1].children)}u++}D++}var Q=
+[],V=f.length,X=V;0<v&&(p[v-1]={useColSpanStyle:!1,groupHeaders:[]});t(F);if(m.colTotals)for(D=g.length;D--;)for(s=A;s<f.length;s++)x=f[s].name,d[x]=d[x]?d[x]+parseFloat(g[D][x]||0):parseFloat(g[D][x]||0);if(0<C)for(s=0;s<C;s++)f[s].isGroupField&&(l.groupingView.groupField.push(f[s].name),l.groupingView.groupSummary.push(m.groupSummary),l.groupingView.groupSummaryPos.push(m.groupSummaryPos));else l.grouping=!1;l.sortname=f[C].name;l.groupingView.hideFirstGroupCol=!0});return{colModel:f,rows:g,groupOptions:l,
+groupHeaders:p,summary:d}},jqPivot:function(b,c,f,g){return this.each(function(){function d(b){var d=jQuery(h).jqGrid("pivotSetup",b,c),e=0<a.assocArraySize(d.summary)?!0:!1,g=a.jgrid.from(d.rows);for(b=0;b<d.groupOptions.groupingView.groupField.length;b++)g.orderBy(d.groupOptions.groupingView.groupField[b],"a","text","");jQuery(h).jqGrid(a.extend(!0,{datastr:a.extend(g.select(),e?{userdata:d.summary}:{}),datatype:"jsonstring",footerrow:e,userDataOnFooter:e,colModel:d.colModel,viewrecords:!0,sortname:c.xDimension[0].dataName},
+d.groupOptions,f||{}));d=d.groupHeaders;if(d.length)for(b=0;b<d.length;b++)d[b]&&d[b].groupHeaders.length&&jQuery(h).jqGrid("setGroupHeaders",d[b]);c.frozenStaticCols&&jQuery(h).jqGrid("setFrozenColumns")}var h=this;"string"===typeof b?a.ajax(a.extend({url:b,dataType:"json",success:function(b){d(a.jgrid.getAccessor(b,g&&g.reader?g.reader:"rows"))}},g||{})):d(b)})}})})(jQuery);
+(function(a){a.jgrid.extend({setSubGrid:function(){return this.each(function(){var b,e;this.p.subGridOptions=a.extend({plusicon:"ui-icon-plus",minusicon:"ui-icon-minus",openicon:"ui-icon-carat-1-sw",expandOnLoad:!1,delayOnLoad:50,selectOnExpand:!1,selectOnCollapse:!1,reloadOnExpand:!0},this.p.subGridOptions||{});this.p.colNames.unshift("");this.p.colModel.unshift({name:"subgrid",width:a.jgrid.cell_width?this.p.subGridWidth+this.p.cellLayout:this.p.subGridWidth,sortable:!1,resizable:!1,hidedlg:!0,
+search:!1,fixed:!0});b=this.p.subGridModel;if(b[0])for(b[0].align=a.extend([],b[0].align||[]),e=0;e<b[0].name.length;e++)b[0].align[e]=b[0].align[e]||"left"})},addSubGridCell:function(a,e){var c="",f,g;this.each(function(){c=this.formatCol(a,e);g=this.p.id;f=this.p.subGridOptions.plusicon});return'<td role="gridcell" aria-describedby="'+g+'_subgrid" class="ui-sgcollapsed sgcollapsed" '+c+"><a style='cursor:pointer;'><span class='ui-icon "+f+"'></span></a></td>"},addSubGrid:function(b,e){return this.each(function(){var c=
+this;if(c.grid){var f=function(b,d,e){d=a("<td align='"+c.p.subGridModel[0].align[e]+"'></td>").html(d);a(b).append(d)},g=function(b,d){var e,g,h,k=a("<table cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>"),l=a("<tr></tr>");for(g=0;g<c.p.subGridModel[0].name.length;g++)e=a("<th class='ui-state-default ui-th-subgrid ui-th-column ui-th-"+c.p.direction+"'></th>"),a(e).html(c.p.subGridModel[0].name[g]),a(e).width(c.p.subGridModel[0].width[g]),a(l).append(e);a(k).append(l);b&&(h=c.p.xmlReader.subgrid,
+a(h.root+" "+h.row,b).each(function(){l=a("<tr class='ui-widget-content ui-subtblcell'></tr>");if(!0===h.repeatitems)a(h.cell,this).each(function(b){f(l,a(this).text()||"&#160;",b)});else{var b=c.p.subGridModel[0].mapping||c.p.subGridModel[0].name;if(b)for(g=0;g<b.length;g++)f(l,a(b[g],this).text()||"&#160;",g)}a(k).append(l)}));e=a("table:first",c.grid.bDiv).attr("id")+"_";a("#"+a.jgrid.jqID(e+d)).append(k);c.grid.hDiv.loading=!1;a("#load_"+a.jgrid.jqID(c.p.id)).hide();return!1},d=function(b,d){var e,
+g,h,k,l,m=a("<table cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>"),n=a("<tr></tr>");for(g=0;g<c.p.subGridModel[0].name.length;g++)e=a("<th class='ui-state-default ui-th-subgrid ui-th-column ui-th-"+c.p.direction+"'></th>"),a(e).html(c.p.subGridModel[0].name[g]),a(e).width(c.p.subGridModel[0].width[g]),a(n).append(e);a(m).append(n);if(b&&(k=c.p.jsonReader.subgrid,e=a.jgrid.getAccessor(b,k.root),void 0!==e))for(g=0;g<e.length;g++){h=e[g];n=a("<tr class='ui-widget-content ui-subtblcell'></tr>");
+if(!0===k.repeatitems)for(k.cell&&(h=h[k.cell]),l=0;l<h.length;l++)f(n,h[l]||"&#160;",l);else{var p=c.p.subGridModel[0].mapping||c.p.subGridModel[0].name;if(p.length)for(l=0;l<p.length;l++)f(n,h[p[l]]||"&#160;",l)}a(m).append(n)}g=a("table:first",c.grid.bDiv).attr("id")+"_";a("#"+a.jgrid.jqID(g+d)).append(m);c.grid.hDiv.loading=!1;a("#load_"+a.jgrid.jqID(c.p.id)).hide();return!1},h=function(b){var e,f,h,k;e=a(b).attr("id");f={nd_:(new Date).getTime()};f[c.p.prmNames.subgridid]=e;if(!c.p.subGridModel[0])return!1;
+if(c.p.subGridModel[0].params)for(k=0;k<c.p.subGridModel[0].params.length;k++)for(h=0;h<c.p.colModel.length;h++)c.p.colModel[h].name===c.p.subGridModel[0].params[k]&&(f[c.p.colModel[h].name]=a("td:eq("+h+")",b).text().replace(/\&#160\;/ig,""));if(!c.grid.hDiv.loading)switch(c.grid.hDiv.loading=!0,a("#load_"+a.jgrid.jqID(c.p.id)).show(),c.p.subgridtype||(c.p.subgridtype=c.p.datatype),a.isFunction(c.p.subgridtype)?c.p.subgridtype.call(c,f):c.p.subgridtype=c.p.subgridtype.toLowerCase(),c.p.subgridtype){case "xml":case "json":a.ajax(a.extend({type:c.p.mtype,
+url:a.isFunction(c.p.subGridUrl)?c.p.subGridUrl.call(c,f):c.p.subGridUrl,dataType:c.p.subgridtype,data:a.isFunction(c.p.serializeSubGridData)?c.p.serializeSubGridData.call(c,f):f,complete:function(b){"xml"===c.p.subgridtype?g(b.responseXML,e):d(a.jgrid.parse(b.responseText),e)}},a.jgrid.ajaxOptions,c.p.ajaxSubgridOptions||{}))}return!1},k,l,p,m=0,r,q;a.each(c.p.colModel,function(){!0!==this.hidden&&"rn"!==this.name&&"cb"!==this.name||m++});var n=c.rows.length,t=1;void 0!==e&&0<e&&(t=e,n=e+1);for(;t<
+n;)a(c.rows[t]).hasClass("jqgrow")&&(c.p.scroll&&a(c.rows[t].cells[b]).unbind("click"),a(c.rows[t].cells[b]).bind("click",function(){var d=a(this).parent("tr")[0];q=d.nextSibling;if(a(this).hasClass("sgcollapsed")){l=c.p.id;k=d.id;if(!0===c.p.subGridOptions.reloadOnExpand||!1===c.p.subGridOptions.reloadOnExpand&&!a(q).hasClass("ui-subgrid")){p=1<=b?"<td colspan='"+b+"'>&#160;</td>":"";r=a(c).triggerHandler("jqGridSubGridBeforeExpand",[l+"_"+k,k]);(r=!1===r||"stop"===r?!1:!0)&&a.isFunction(c.p.subGridBeforeExpand)&&
+(r=c.p.subGridBeforeExpand.call(c,l+"_"+k,k));if(!1===r)return!1;a(d).after("<tr role='row' class='ui-subgrid'>"+p+"<td class='ui-widget-content subgrid-cell'><span class='ui-icon "+c.p.subGridOptions.openicon+"'></span></td><td colspan='"+parseInt(c.p.colNames.length-1-m,10)+"' class='ui-widget-content subgrid-data'><div id="+l+"_"+k+" class='tablediv'></div></td></tr>");a(c).triggerHandler("jqGridSubGridRowExpanded",[l+"_"+k,k]);a.isFunction(c.p.subGridRowExpanded)?c.p.subGridRowExpanded.call(c,
+l+"_"+k,k):h(d)}else a(q).show();a(this).html("<a style='cursor:pointer;'><span class='ui-icon "+c.p.subGridOptions.minusicon+"'></span></a>").removeClass("sgcollapsed").addClass("sgexpanded");c.p.subGridOptions.selectOnExpand&&a(c).jqGrid("setSelection",k)}else if(a(this).hasClass("sgexpanded")){r=a(c).triggerHandler("jqGridSubGridRowColapsed",[l+"_"+k,k]);r=!1===r||"stop"===r?!1:!0;k=d.id;r&&a.isFunction(c.p.subGridRowColapsed)&&(r=c.p.subGridRowColapsed.call(c,l+"_"+k,k));if(!1===r)return!1;!0===
+c.p.subGridOptions.reloadOnExpand?a(q).remove(".ui-subgrid"):a(q).hasClass("ui-subgrid")&&a(q).hide();a(this).html("<a style='cursor:pointer;'><span class='ui-icon "+c.p.subGridOptions.plusicon+"'></span></a>").removeClass("sgexpanded").addClass("sgcollapsed");c.p.subGridOptions.selectOnCollapse&&a(c).jqGrid("setSelection",k)}return!1})),t++;!0===c.p.subGridOptions.expandOnLoad&&a(c.rows).filter(".jqgrow").each(function(b,c){a(c.cells[0]).click()});c.subGridXml=function(a,b){g(a,b)};c.subGridJson=
+function(a,b){d(a,b)}}})},expandSubGridRow:function(b){return this.each(function(){if((this.grid||b)&&!0===this.p.subGrid){var e=a(this).jqGrid("getInd",b,!0);e&&(e=a("td.sgcollapsed",e)[0])&&a(e).trigger("click")}})},collapseSubGridRow:function(b){return this.each(function(){if((this.grid||b)&&!0===this.p.subGrid){var e=a(this).jqGrid("getInd",b,!0);e&&(e=a("td.sgexpanded",e)[0])&&a(e).trigger("click")}})},toggleSubGridRow:function(b){return this.each(function(){if((this.grid||b)&&!0===this.p.subGrid){var e=
+a(this).jqGrid("getInd",b,!0);if(e){var c=a("td.sgcollapsed",e)[0];c?a(c).trigger("click"):(c=a("td.sgexpanded",e)[0])&&a(c).trigger("click")}}})}})})(jQuery);
+function tableToGrid(a,b){jQuery(a).each(function(){if(!this.grid){jQuery(this).width("99%");var a=jQuery(this).width(),c=jQuery("tr td:first-child input[type=checkbox]:first",jQuery(this)),f=jQuery("tr td:first-child input[type=radio]:first",jQuery(this)),c=0<c.length,f=!c&&0<f.length,g=c||f,d=[],h=[];jQuery("th",jQuery(this)).each(function(){0===d.length&&g?(d.push({name:"__selection__",index:"__selection__",width:0,hidden:!0}),h.push("__selection__")):(d.push({name:jQuery(this).attr("id")||jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(" ").join("_"),
+index:jQuery(this).attr("id")||jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(" ").join("_"),width:jQuery(this).width()||150}),h.push(jQuery(this).html()))});var k=[],l=[],p=[];jQuery("tbody > tr",jQuery(this)).each(function(){var a={},b=0;jQuery("td",jQuery(this)).each(function(){if(0===b&&g){var c=jQuery("input",jQuery(this)),e=c.attr("value");l.push(e||k.length);c.is(":checked")&&p.push(e);a[d[b].name]=c.attr("value")}else a[d[b].name]=jQuery(this).html();b++});0<b&&k.push(a)});
+jQuery(this).empty();jQuery(this).addClass("scroll");jQuery(this).jqGrid(jQuery.extend({datatype:"local",width:a,colNames:h,colModel:d,multiselect:c},b||{}));for(a=0;a<k.length;a++)f=null,0<l.length&&(f=l[a])&&f.replace&&(f=encodeURIComponent(f).replace(/[.\-%]/g,"_")),null===f&&(f=a+1),jQuery(this).jqGrid("addRowData",f,k[a]);for(a=0;a<p.length;a++)jQuery(this).jqGrid("setSelection",p[a])}})}
+(function(a){a.jgrid.extend({setTreeNode:function(b,e){return this.each(function(){var c=this;if(c.grid&&c.p.treeGrid)for(var f=c.p.expColInd,g=c.p.treeReader.expanded_field,d=c.p.treeReader.leaf_field,h=c.p.treeReader.level_field,k=c.p.treeReader.icon_field,l=c.p.treeReader.loaded,p,m,r,q;b<e;)q=a.jgrid.stripPref(c.p.idPrefix,c.rows[b].id),q=c.p.data[c.p._index[q]],"nested"!==c.p.treeGridModel||q[d]||(p=parseInt(q[c.p.treeReader.left_field],10),m=parseInt(q[c.p.treeReader.right_field],10),q[d]=m===
+p+1?"true":"false",c.rows[b].cells[c.p._treeleafpos].innerHTML=q[d]),p=parseInt(q[h],10),0===c.p.tree_root_level?(r=p+1,m=p):(r=p,m=p-1),r="<div class='tree-wrap tree-wrap-"+c.p.direction+"' style='width:"+18*r+"px;'>",r+="<div style='"+("rtl"===c.p.direction?"right:":"left:")+18*m+"px;' class='ui-icon ",void 0!==q[l]&&(q[l]="true"===q[l]||!0===q[l]?!0:!1),"true"===q[d]||!0===q[d]?(r+=(void 0!==q[k]&&""!==q[k]?q[k]:c.p.treeIcons.leaf)+" tree-leaf treeclick",q[d]=!0,m="leaf"):(q[d]=!1,m=""),q[g]=("true"===
+q[g]||!0===q[g]?!0:!1)&&(q[l]||void 0===q[l]),r=!1===q[g]?r+(!0===q[d]?"'":c.p.treeIcons.plus+" tree-plus treeclick'"):r+(!0===q[d]?"'":c.p.treeIcons.minus+" tree-minus treeclick'"),r+="></div></div>",a(c.rows[b].cells[f]).wrapInner("<span class='cell-wrapper"+m+"'></span>").prepend(r),p!==parseInt(c.p.tree_root_level,10)&&((q=(q=a(c).jqGrid("getNodeParent",q))&&q.hasOwnProperty(g)?q[g]:!0)||a(c.rows[b]).css("display","none")),a(c.rows[b].cells[f]).find("div.treeclick").bind("click",function(b){b=
+a.jgrid.stripPref(c.p.idPrefix,a(b.target||b.srcElement,c.rows).closest("tr.jqgrow")[0].id);b=c.p._index[b];c.p.data[b][d]||(c.p.data[b][g]?(a(c).jqGrid("collapseRow",c.p.data[b]),a(c).jqGrid("collapseNode",c.p.data[b])):(a(c).jqGrid("expandRow",c.p.data[b]),a(c).jqGrid("expandNode",c.p.data[b])));return!1}),!0===c.p.ExpandColClick&&a(c.rows[b].cells[f]).find("span.cell-wrapper").css("cursor","pointer").bind("click",function(b){b=a.jgrid.stripPref(c.p.idPrefix,a(b.target||b.srcElement,c.rows).closest("tr.jqgrow")[0].id);
+var e=c.p._index[b];c.p.data[e][d]||(c.p.data[e][g]?(a(c).jqGrid("collapseRow",c.p.data[e]),a(c).jqGrid("collapseNode",c.p.data[e])):(a(c).jqGrid("expandRow",c.p.data[e]),a(c).jqGrid("expandNode",c.p.data[e])));a(c).jqGrid("setSelection",b);return!1}),b++})},setTreeGrid:function(){return this.each(function(){var b=this,e=0,c,f=!1,g,d,h=[];if(b.p.treeGrid){b.p.treedatatype||a.extend(b.p,{treedatatype:b.p.datatype});b.p.subGrid=!1;b.p.altRows=!1;b.p.pgbuttons=!1;b.p.pginput=!1;b.p.gridview=!0;null===
+b.p.rowTotal&&(b.p.rowNum=1E4);b.p.multiselect=!1;b.p.rowList=[];b.p.expColInd=0;c="ui-icon-triangle-1-"+("rtl"===b.p.direction?"w":"e");b.p.treeIcons=a.extend({plus:c,minus:"ui-icon-triangle-1-s",leaf:"ui-icon-radio-off"},b.p.treeIcons||{});"nested"===b.p.treeGridModel?b.p.treeReader=a.extend({level_field:"level",left_field:"lft",right_field:"rgt",leaf_field:"isLeaf",expanded_field:"expanded",loaded:"loaded",icon_field:"icon"},b.p.treeReader):"adjacency"===b.p.treeGridModel&&(b.p.treeReader=a.extend({level_field:"level",
+parent_id_field:"parent",leaf_field:"isLeaf",expanded_field:"expanded",loaded:"loaded",icon_field:"icon"},b.p.treeReader));for(g in b.p.colModel)if(b.p.colModel.hasOwnProperty(g))for(d in c=b.p.colModel[g].name,c!==b.p.ExpandColumn||f||(f=!0,b.p.expColInd=e),e++,b.p.treeReader)b.p.treeReader.hasOwnProperty(d)&&b.p.treeReader[d]===c&&h.push(c);a.each(b.p.treeReader,function(c,d){d&&-1===a.inArray(d,h)&&("leaf_field"===c&&(b.p._treeleafpos=e),e++,b.p.colNames.push(d),b.p.colModel.push({name:d,width:1,
+hidden:!0,sortable:!1,resizable:!1,hidedlg:!0,editable:!0,search:!1}))})}})},expandRow:function(b){this.each(function(){var e=this;if(e.grid&&e.p.treeGrid){var c=a(e).jqGrid("getNodeChildren",b),f=e.p.treeReader.expanded_field;a(c).each(function(){var b=e.p.idPrefix+a.jgrid.getAccessor(this,e.p.localReader.id);a(a(e).jqGrid("getGridRowById",b)).css("display","");this[f]&&a(e).jqGrid("expandRow",this)})}})},collapseRow:function(b){this.each(function(){var e=this;if(e.grid&&e.p.treeGrid){var c=a(e).jqGrid("getNodeChildren",
+b),f=e.p.treeReader.expanded_field;a(c).each(function(){var b=e.p.idPrefix+a.jgrid.getAccessor(this,e.p.localReader.id);a(a(e).jqGrid("getGridRowById",b)).css("display","none");this[f]&&a(e).jqGrid("collapseRow",this)})}})},getRootNodes:function(){var b=[];this.each(function(){var e=this;if(e.grid&&e.p.treeGrid)switch(e.p.treeGridModel){case "nested":var c=e.p.treeReader.level_field;a(e.p.data).each(function(){parseInt(this[c],10)===parseInt(e.p.tree_root_level,10)&&b.push(this)});break;case "adjacency":var f=
+e.p.treeReader.parent_id_field;a(e.p.data).each(function(){null!==this[f]&&"null"!==String(this[f]).toLowerCase()||b.push(this)})}});return b},getNodeDepth:function(b){var e=null;this.each(function(){if(this.grid&&this.p.treeGrid)switch(this.p.treeGridModel){case "nested":e=parseInt(b[this.p.treeReader.level_field],10)-parseInt(this.p.tree_root_level,10);break;case "adjacency":e=a(this).jqGrid("getNodeAncestors",b).length}});return e},getNodeParent:function(b){var e=null;this.each(function(){if(this.grid&&
+this.p.treeGrid)switch(this.p.treeGridModel){case "nested":var c=this.p.treeReader.left_field,f=this.p.treeReader.right_field,g=this.p.treeReader.level_field,d=parseInt(b[c],10),h=parseInt(b[f],10),k=parseInt(b[g],10);a(this.p.data).each(function(){if(parseInt(this[g],10)===k-1&&parseInt(this[c],10)<d&&parseInt(this[f],10)>h)return e=this,!1});break;case "adjacency":for(var l=this.p.treeReader.parent_id_field,p=this.p.localReader.id,m=this.p._index[b[p]];m--;)if(this.p.data[m][p]===a.jgrid.stripPref(this.p.idPrefix,
+b[l])){e=this.p.data[m];break}}});return e},getNodeChildren:function(b){var e=[];this.each(function(){var c=this;if(c.grid&&c.p.treeGrid)switch(c.p.treeGridModel){case "nested":var f=c.p.treeReader.left_field,g=c.p.treeReader.right_field,d=c.p.treeReader.level_field,h=parseInt(b[f],10),k=parseInt(b[g],10),l=parseInt(b[d],10);a(this.p.data).each(function(){parseInt(this[d],10)===l+1&&parseInt(this[f],10)>h&&parseInt(this[g],10)<k&&e.push(this)});break;case "adjacency":var p=c.p.treeReader.parent_id_field,
+m=c.p.localReader.id;a(this.p.data).each(function(){this[p]==a.jgrid.stripPref(c.p.idPrefix,b[m])&&e.push(this)})}});return e},getFullTreeNode:function(b){var e=[];this.each(function(){var c=this,f;if(c.grid&&c.p.treeGrid)switch(c.p.treeGridModel){case "nested":var g=c.p.treeReader.left_field,d=c.p.treeReader.right_field,h=c.p.treeReader.level_field,k=parseInt(b[g],10),l=parseInt(b[d],10),p=parseInt(b[h],10);a(this.p.data).each(function(){parseInt(this[h],10)>=p&&parseInt(this[g],10)>=k&&parseInt(this[g],
+10)<=l&&e.push(this)});break;case "adjacency":if(b){e.push(b);var m=c.p.treeReader.parent_id_field,r=c.p.localReader.id;a(this.p.data).each(function(b){f=e.length;for(b=0;b<f;b++)if(a.jgrid.stripPref(c.p.idPrefix,e[b][r])===this[m]){e.push(this);break}})}}});return e},getNodeAncestors:function(b){var e=[];this.each(function(){if(this.grid&&this.p.treeGrid)for(var c=a(this).jqGrid("getNodeParent",b);c;)e.push(c),c=a(this).jqGrid("getNodeParent",c)});return e},isVisibleNode:function(b){var e=!0;this.each(function(){if(this.grid&&
+this.p.treeGrid){var c=a(this).jqGrid("getNodeAncestors",b),f=this.p.treeReader.expanded_field;a(c).each(function(){e=e&&this[f];if(!e)return!1})}});return e},isNodeLoaded:function(b){var e;this.each(function(){if(this.grid&&this.p.treeGrid){var c=this.p.treeReader.leaf_field,f=this.p.treeReader.loaded;e=void 0!==b?void 0!==b[f]?b[f]:b[c]||0<a(this).jqGrid("getNodeChildren",b).length?!0:!1:!1}});return e},expandNode:function(b){return this.each(function(){if(this.grid&&this.p.treeGrid){var e=this.p.treeReader.expanded_field,
+c=this.p.treeReader.parent_id_field,f=this.p.treeReader.loaded,g=this.p.treeReader.level_field,d=this.p.treeReader.left_field,h=this.p.treeReader.right_field;if(!b[e]){var k=a.jgrid.getAccessor(b,this.p.localReader.id),l=a("#"+this.p.idPrefix+a.jgrid.jqID(k),this.grid.bDiv)[0],p=this.p._index[k];a(this).jqGrid("isNodeLoaded",this.p.data[p])?(b[e]=!0,a("div.treeclick",l).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus")):this.grid.hDiv.loading||(b[e]=!0,
+a("div.treeclick",l).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus"),this.p.treeANode=l.rowIndex,this.p.datatype=this.p.treedatatype,"nested"===this.p.treeGridModel?a(this).jqGrid("setGridParam",{postData:{nodeid:k,n_left:b[d],n_right:b[h],n_level:b[g]}}):a(this).jqGrid("setGridParam",{postData:{nodeid:k,parentid:b[c],n_level:b[g]}}),a(this).trigger("reloadGrid"),b[f]=!0,"nested"===this.p.treeGridModel?a(this).jqGrid("setGridParam",{postData:{nodeid:"",
+n_left:"",n_right:"",n_level:""}}):a(this).jqGrid("setGridParam",{postData:{nodeid:"",parentid:"",n_level:""}}))}}})},collapseNode:function(b){return this.each(function(){if(this.grid&&this.p.treeGrid){var e=this.p.treeReader.expanded_field;b[e]&&(b[e]=!1,e=a.jgrid.getAccessor(b,this.p.localReader.id),e=a("#"+this.p.idPrefix+a.jgrid.jqID(e),this.grid.bDiv)[0],a("div.treeclick",e).removeClass(this.p.treeIcons.minus+" tree-minus").addClass(this.p.treeIcons.plus+" tree-plus"))}})},SortTree:function(b,
+e,c,f){return this.each(function(){if(this.grid&&this.p.treeGrid){var g,d,h,k=[],l=this,p;g=a(this).jqGrid("getRootNodes");g=a.jgrid.from(g);g.orderBy(b,e,c,f);p=g.select();g=0;for(d=p.length;g<d;g++)h=p[g],k.push(h),a(this).jqGrid("collectChildrenSortTree",k,h,b,e,c,f);a.each(k,function(b){var c=a.jgrid.getAccessor(this,l.p.localReader.id);a("#"+a.jgrid.jqID(l.p.id)+" tbody tr:eq("+b+")").after(a("tr#"+a.jgrid.jqID(c),l.grid.bDiv))});k=p=g=null}})},collectChildrenSortTree:function(b,e,c,f,g,d){return this.each(function(){if(this.grid&&
+this.p.treeGrid){var h,k,l,p;h=a(this).jqGrid("getNodeChildren",e);h=a.jgrid.from(h);h.orderBy(c,f,g,d);p=h.select();h=0;for(k=p.length;h<k;h++)l=p[h],b.push(l),a(this).jqGrid("collectChildrenSortTree",b,l,c,f,g,d)}})},setTreeRow:function(b,e){var c=!1;this.each(function(){this.grid&&this.p.treeGrid&&(c=a(this).jqGrid("setRowData",b,e))});return c},delTreeNode:function(b){return this.each(function(){var e=this.p.localReader.id,c,f=this.p.treeReader.left_field,g=this.p.treeReader.right_field,d,h,k;
+if(this.grid&&this.p.treeGrid&&(c=this.p._index[b],void 0!==c)){d=parseInt(this.p.data[c][g],10);h=d-parseInt(this.p.data[c][f],10)+1;var l=a(this).jqGrid("getFullTreeNode",this.p.data[c]);if(0<l.length)for(c=0;c<l.length;c++)a(this).jqGrid("delRowData",l[c][e]);if("nested"===this.p.treeGridModel){e=a.jgrid.from(this.p.data).greater(f,d,{stype:"integer"}).select();if(e.length)for(k in e)e.hasOwnProperty(k)&&(e[k][f]=parseInt(e[k][f],10)-h);e=a.jgrid.from(this.p.data).greater(g,d,{stype:"integer"}).select();
+if(e.length)for(k in e)e.hasOwnProperty(k)&&(e[k][g]=parseInt(e[k][g],10)-h)}}})},addChildNode:function(b,e,c,f){var g=this[0];if(c){var d=g.p.treeReader.expanded_field,h=g.p.treeReader.leaf_field,k=g.p.treeReader.level_field,l=g.p.treeReader.parent_id_field,p=g.p.treeReader.left_field,m=g.p.treeReader.right_field,r=g.p.treeReader.loaded,q,n,t,u,w;q=0;var s=e,x;void 0===f&&(f=!1);if(void 0===b||null===b){w=g.p.data.length-1;if(0<=w)for(;0<=w;)q=Math.max(q,parseInt(g.p.data[w][g.p.localReader.id],
+10)),w--;b=q+1}var A=a(g).jqGrid("getInd",e);x=!1;void 0===e||null===e||""===e?(s=e=null,q="last",u=g.p.tree_root_level,w=g.p.data.length+1):(q="after",n=g.p._index[e],t=g.p.data[n],e=t[g.p.localReader.id],u=parseInt(t[k],10)+1,w=a(g).jqGrid("getFullTreeNode",t),w.length?(s=w=w[w.length-1][g.p.localReader.id],w=a(g).jqGrid("getInd",s)+1):w=a(g).jqGrid("getInd",e)+1,t[h]&&(x=!0,t[d]=!0,a(g.rows[A]).find("span.cell-wrapperleaf").removeClass("cell-wrapperleaf").addClass("cell-wrapper").end().find("div.tree-leaf").removeClass(g.p.treeIcons.leaf+
+" tree-leaf").addClass(g.p.treeIcons.minus+" tree-minus"),g.p.data[n][h]=!1,t[r]=!0));n=w+1;void 0===c[d]&&(c[d]=!1);void 0===c[r]&&(c[r]=!1);c[k]=u;void 0===c[h]&&(c[h]=!0);"adjacency"===g.p.treeGridModel&&(c[l]=e);if("nested"===g.p.treeGridModel){var v;if(null!==e){h=parseInt(t[m],10);k=a.jgrid.from(g.p.data);k=k.greaterOrEquals(m,h,{stype:"integer"});k=k.select();if(k.length)for(v in k)k.hasOwnProperty(v)&&(k[v][p]=k[v][p]>h?parseInt(k[v][p],10)+2:k[v][p],k[v][m]=k[v][m]>=h?parseInt(k[v][m],10)+
+2:k[v][m]);c[p]=h;c[m]=h+1}else{h=parseInt(a(g).jqGrid("getCol",m,!1,"max"),10);k=a.jgrid.from(g.p.data).greater(p,h,{stype:"integer"}).select();if(k.length)for(v in k)k.hasOwnProperty(v)&&(k[v][p]=parseInt(k[v][p],10)+2);k=a.jgrid.from(g.p.data).greater(m,h,{stype:"integer"}).select();if(k.length)for(v in k)k.hasOwnProperty(v)&&(k[v][m]=parseInt(k[v][m],10)+2);c[p]=h+1;c[m]=h+2}}if(null===e||a(g).jqGrid("isNodeLoaded",t)||x)a(g).jqGrid("addRowData",b,c,q,s),a(g).jqGrid("setTreeNode",w,n);t&&!t[d]&&
+f&&a(g.rows[A]).find("div.treeclick").click()}}})})(jQuery);
+(function(a){a.fn.jqDrag=function(a){return d(this,a,"d")};a.fn.jqResize=function(a,b){return d(this,a,"r",b)};a.jqDnR={dnr:{},e:0,drag:function(a){"d"==e.k?c.css({left:e.X+a.pageX-e.pX,top:e.Y+a.pageY-e.pY}):(c.css({width:Math.max(a.pageX-e.pX+e.W,0),height:Math.max(a.pageY-e.pY+e.H,0)}),g&&f.css({width:Math.max(a.pageX-g.pX+g.W,0),height:Math.max(a.pageY-g.pY+g.H,0)}));return!1},stop:function(){a(document).unbind("mousemove",b.drag).unbind("mouseup",b.stop)}};var b=a.jqDnR,e=b.dnr,c=b.e,f,g,d=function(b,
+d,m,r){return b.each(function(){d=d?a(d,b):b;d.bind("mousedown",{e:b,k:m},function(b){var d=b.data,l={};c=d.e;f=r?a(r):!1;if("relative"!=c.css("position"))try{c.position(l)}catch(m){}e={X:l.left||h("left")||0,Y:l.top||h("top")||0,W:h("width")||c[0].scrollWidth||0,H:h("height")||c[0].scrollHeight||0,pX:b.pageX,pY:b.pageY,k:d.k};g=f&&"d"!=d.k?{X:l.left||k("left")||0,Y:l.top||k("top")||0,W:f[0].offsetWidth||k("width")||0,H:f[0].offsetHeight||k("height")||0,pX:b.pageX,pY:b.pageY,k:d.k}:!1;if(a("input.hasDatepicker",
+c[0])[0])try{a("input.hasDatepicker",c[0]).datepicker("hide")}catch(p){}a(document).mousemove(a.jqDnR.drag).mouseup(a.jqDnR.stop);return!1})})},h=function(a){return parseInt(c.css(a),10)||!1},k=function(a){return parseInt(f.css(a),10)||!1}})(jQuery);
+(function(a){a.fn.jqm=function(c){var d={overlay:50,closeoverlay:!0,overlayClass:"jqmOverlay",closeClass:"jqmClose",trigger:".jqModal",ajax:f,ajaxText:"",target:f,modal:f,toTop:f,onShow:f,onHide:f,onLoad:f};return this.each(function(){if(this._jqm)return e[this._jqm].c=a.extend({},e[this._jqm].c,c);b++;this._jqm=b;e[b]={c:a.extend(d,a.jqm.params,c),a:f,w:a(this).addClass("jqmID"+b),s:b};d.trigger&&a(this).jqmAddTrigger(d.trigger)})};a.fn.jqmAddClose=function(a){return k(this,a,"jqmHide")};a.fn.jqmAddTrigger=
+function(a){return k(this,a,"jqmShow")};a.fn.jqmShow=function(b){return this.each(function(){a.jqm.open(this._jqm,b)})};a.fn.jqmHide=function(b){return this.each(function(){a.jqm.close(this._jqm,b)})};a.jqm={hash:{},open:function(b,h){var k=e[b],r=k.c,q="."+r.closeClass,n=parseInt(k.w.css("z-index")),n=0<n?n:3E3,t=a("<div></div>").css({height:"100%",width:"100%",position:"fixed",left:0,top:0,"z-index":n-1,opacity:r.overlay/100});if(k.a)return f;k.t=h;k.a=!0;k.w.css("z-index",n);r.modal?(c[0]||setTimeout(function(){d("bind")},
+1),c.push(b)):0<r.overlay?r.closeoverlay&&k.w.jqmAddClose(t):t=f;k.o=t?t.addClass(r.overlayClass).prependTo("body"):f;r.ajax?(n=r.target||k.w,t=r.ajax,n="string"==typeof n?a(n,k.w):a(n),t="@"==t.substr(0,1)?a(h).attr(t.substring(1)):t,n.html(r.ajaxText).load(t,function(){r.onLoad&&r.onLoad.call(this,k);q&&k.w.jqmAddClose(a(q,k.w));g(k)})):q&&k.w.jqmAddClose(a(q,k.w));r.toTop&&k.o&&k.w.before('<span id="jqmP'+k.w[0]._jqm+'"></span>').insertAfter(k.o);r.onShow?r.onShow(k):k.w.show();g(k);return f},
+close:function(b){b=e[b];if(!b.a)return f;b.a=f;c[0]&&(c.pop(),c[0]||d("unbind"));b.c.toTop&&b.o&&a("#jqmP"+b.w[0]._jqm).after(b.w).remove();if(b.c.onHide)b.c.onHide(b);else b.w.hide(),b.o&&b.o.remove();return f},params:{}};var b=0,e=a.jqm.hash,c=[],f=!1,g=function(b){try{a(":input:visible",b.w)[0].focus()}catch(c){}},d=function(b){a(document)[b]("keypress",h)[b]("keydown",h)[b]("mousedown",h)},h=function(b){var d=e[c[c.length-1]],f=!a(b.target).parents(".jqmID"+d.s)[0];f&&(a(".jqmID"+d.s).each(function(){var c=
+a(this),d=c.offset();if(d.top<=b.pageY&&b.pageY<=d.top+c.height()&&d.left<=b.pageX&&b.pageX<=d.left+c.width())return f=!1}),g(d));return!f},k=function(b,c,d){return b.each(function(){var b=this._jqm;a(c).each(function(){this[d]||(this[d]=[],a(this).click(function(){for(var a in{jqmShow:1,jqmHide:1})for(var b in this[a])if(e[this[a][b]])e[this[a][b]].w[a](this);return f}));this[d].push(b)})})}})(jQuery);
+(function(a){a.fmatter={};a.extend(a.fmatter,{isBoolean:function(a){return"boolean"===typeof a},isObject:function(b){return b&&("object"===typeof b||a.isFunction(b))||!1},isString:function(a){return"string"===typeof a},isNumber:function(a){return"number"===typeof a&&isFinite(a)},isValue:function(a){return this.isObject(a)||this.isString(a)||this.isNumber(a)||this.isBoolean(a)},isEmpty:function(b){if(!this.isString(b)&&this.isValue(b))return!1;if(!this.isValue(b))return!0;b=a.trim(b).replace(/\&nbsp\;/ig,
+"").replace(/\&#160\;/ig,"");return""===b}});a.fn.fmatter=function(b,e,c,f,g){var d=e;c=a.extend({},a.jgrid.formatter,c);try{d=a.fn.fmatter[b].call(this,e,c,f,g)}catch(h){}return d};a.fmatter.util={NumberFormat:function(b,e){a.fmatter.isNumber(b)||(b*=1);if(a.fmatter.isNumber(b)){var c=0>b,f=String(b),g=e.decimalSeparator||".",d;if(a.fmatter.isNumber(e.decimalPlaces)){var h=e.decimalPlaces,f=Math.pow(10,h),f=String(Math.round(b*f)/f);d=f.lastIndexOf(".");if(0<h)for(0>d?(f+=g,d=f.length-1):"."!==g&&
+(f=f.replace(".",g));f.length-1-d<h;)f+="0"}if(e.thousandsSeparator){h=e.thousandsSeparator;d=f.lastIndexOf(g);d=-1<d?d:f.length;var g=f.substring(d),k=-1,l;for(l=d;0<l;l--)k++,0===k%3&&l!==d&&(!c||1<l)&&(g=h+g),g=f.charAt(l-1)+g;f=g}f=e.prefix?e.prefix+f:f;return f=e.suffix?f+e.suffix:f}return b}};a.fn.fmatter.defaultFormat=function(b,e){return a.fmatter.isValue(b)&&""!==b?b:e.defaultValue||"&#160;"};a.fn.fmatter.email=function(b,e){return a.fmatter.isEmpty(b)?a.fn.fmatter.defaultFormat(b,e):'<a href="mailto:'+
+b+'">'+b+"</a>"};a.fn.fmatter.checkbox=function(b,e){var c=a.extend({},e.checkbox),f;void 0!==e.colModel&&void 0!==e.colModel.formatoptions&&(c=a.extend({},c,e.colModel.formatoptions));f=!0===c.disabled?'disabled="disabled"':"";if(a.fmatter.isEmpty(b)||void 0===b)b=a.fn.fmatter.defaultFormat(b,c);b=String(b);b=(b+"").toLowerCase();return'<input type="checkbox" '+(0>b.search(/(false|f|0|no|n|off|undefined)/i)?" checked='checked' ":"")+' value="'+b+'" offval="no" '+f+"/>"};a.fn.fmatter.link=function(b,
+e){var c={target:e.target},f="";void 0!==e.colModel&&void 0!==e.colModel.formatoptions&&(c=a.extend({},c,e.colModel.formatoptions));c.target&&(f="target="+c.target);return a.fmatter.isEmpty(b)?a.fn.fmatter.defaultFormat(b,e):"<a "+f+' href="'+b+'">'+b+"</a>"};a.fn.fmatter.showlink=function(b,e){var c={baseLinkUrl:e.baseLinkUrl,showAction:e.showAction,addParam:e.addParam||"",target:e.target,idName:e.idName},f="";void 0!==e.colModel&&void 0!==e.colModel.formatoptions&&(c=a.extend({},c,e.colModel.formatoptions));
+c.target&&(f="target="+c.target);c=c.baseLinkUrl+c.showAction+"?"+c.idName+"="+e.rowId+c.addParam;return a.fmatter.isString(b)||a.fmatter.isNumber(b)?"<a "+f+' href="'+c+'">'+b+"</a>":a.fn.fmatter.defaultFormat(b,e)};a.fn.fmatter.integer=function(b,e){var c=a.extend({},e.integer);void 0!==e.colModel&&void 0!==e.colModel.formatoptions&&(c=a.extend({},c,e.colModel.formatoptions));return a.fmatter.isEmpty(b)?c.defaultValue:a.fmatter.util.NumberFormat(b,c)};a.fn.fmatter.number=function(b,e){var c=a.extend({},
+e.number);void 0!==e.colModel&&void 0!==e.colModel.formatoptions&&(c=a.extend({},c,e.colModel.formatoptions));return a.fmatter.isEmpty(b)?c.defaultValue:a.fmatter.util.NumberFormat(b,c)};a.fn.fmatter.currency=function(b,e){var c=a.extend({},e.currency);void 0!==e.colModel&&void 0!==e.colModel.formatoptions&&(c=a.extend({},c,e.colModel.formatoptions));return a.fmatter.isEmpty(b)?c.defaultValue:a.fmatter.util.NumberFormat(b,c)};a.fn.fmatter.date=function(b,e,c,f){c=a.extend({},e.date);void 0!==e.colModel&&
+void 0!==e.colModel.formatoptions&&(c=a.extend({},c,e.colModel.formatoptions));return c.reformatAfterEdit||"edit"!==f?a.fmatter.isEmpty(b)?a.fn.fmatter.defaultFormat(b,e):a.jgrid.parseDate(c.srcformat,b,c.newformat,c):a.fn.fmatter.defaultFormat(b,e)};a.fn.fmatter.select=function(b,e){b=String(b);var c=!1,f=[],g,d;void 0!==e.colModel.formatoptions?(c=e.colModel.formatoptions.value,g=void 0===e.colModel.formatoptions.separator?":":e.colModel.formatoptions.separator,d=void 0===e.colModel.formatoptions.delimiter?
+";":e.colModel.formatoptions.delimiter):void 0!==e.colModel.editoptions&&(c=e.colModel.editoptions.value,g=void 0===e.colModel.editoptions.separator?":":e.colModel.editoptions.separator,d=void 0===e.colModel.editoptions.delimiter?";":e.colModel.editoptions.delimiter);if(c){var h=!0===(null!=e.colModel.editoptions&&!0===e.colModel.editoptions.multiple)?!0:!1,k=[];h&&(k=b.split(","),k=a.map(k,function(b){return a.trim(b)}));if(a.fmatter.isString(c)){var l=c.split(d),p=0,m;for(m=0;m<l.length;m++)if(d=
+l[m].split(g),2<d.length&&(d[1]=a.map(d,function(a,b){if(0<b)return a}).join(g)),h)-1<a.inArray(d[0],k)&&(f[p]=d[1],p++);else if(a.trim(d[0])===a.trim(b)){f[0]=d[1];break}}else a.fmatter.isObject(c)&&(h?f=a.map(k,function(a){return c[a]}):f[0]=c[b]||"")}b=f.join(", ");return""===b?a.fn.fmatter.defaultFormat(b,e):b};a.fn.fmatter.rowactions=function(b){var e=a(this).closest("tr.jqgrow"),c=e.attr("id"),f=a(this).closest("table.ui-jqgrid-btable").attr("id").replace(/_frozen([^_]*)$/,"$1"),f=a("#"+f),
+g=f[0],d=g.p,h=d.colModel[a.jgrid.getCellIndex(this)],k=h.frozen?a("tr#"+c+" td:eq("+a.jgrid.getCellIndex(this)+") > div",f):a(this).parent(),l={extraparam:{}},p=function(b){a.isFunction(l.afterRestore)&&l.afterRestore.call(g,b);k.find("div.ui-inline-edit,div.ui-inline-del").show();k.find("div.ui-inline-save,div.ui-inline-cancel").hide()};void 0!==h.formatoptions&&(l=a.extend(l,h.formatoptions));void 0!==d.editOptions&&(l.editOptions=d.editOptions);void 0!==d.delOptions&&(l.delOptions=d.delOptions);
+e.hasClass("jqgrid-new-row")&&(l.extraparam[d.prmNames.oper]=d.prmNames.addoper);e={keys:l.keys,oneditfunc:l.onEdit,successfunc:l.onSuccess,url:l.url,extraparam:l.extraparam,aftersavefunc:function(b,c){a.isFunction(l.afterSave)&&l.afterSave.call(g,b,c);k.find("div.ui-inline-edit,div.ui-inline-del").show();k.find("div.ui-inline-save,div.ui-inline-cancel").hide()},errorfunc:l.onError,afterrestorefunc:p,restoreAfterError:l.restoreAfterError,mtype:l.mtype};switch(b){case "edit":f.jqGrid("editRow",c,e);
+k.find("div.ui-inline-edit,div.ui-inline-del").hide();k.find("div.ui-inline-save,div.ui-inline-cancel").show();f.triggerHandler("jqGridAfterGridComplete");break;case "save":f.jqGrid("saveRow",c,e)&&(k.find("div.ui-inline-edit,div.ui-inline-del").show(),k.find("div.ui-inline-save,div.ui-inline-cancel").hide(),f.triggerHandler("jqGridAfterGridComplete"));break;case "cancel":f.jqGrid("restoreRow",c,p);k.find("div.ui-inline-edit,div.ui-inline-del").show();k.find("div.ui-inline-save,div.ui-inline-cancel").hide();
+f.triggerHandler("jqGridAfterGridComplete");break;case "del":f.jqGrid("delGridRow",c,l.delOptions);break;case "formedit":f.jqGrid("setSelection",c),f.jqGrid("editGridRow",c,l.editOptions)}};a.fn.fmatter.actions=function(b,e){var c={keys:!1,editbutton:!0,delbutton:!0,editformbutton:!1},f=e.rowId,g="";void 0!==e.colModel.formatoptions&&(c=a.extend(c,e.colModel.formatoptions));if(void 0===f||a.fmatter.isEmpty(f))return"";c.editformbutton?g+="<div title='"+a.jgrid.nav.edittitle+"' style='float:left;cursor:pointer;' class='ui-pg-div ui-inline-edit' "+
+("id='jEditButton_"+f+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'formedit'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ")+"><span class='ui-icon ui-icon-pencil'></span></div>":c.editbutton&&(g+="<div title='"+a.jgrid.nav.edittitle+"' style='float:left;cursor:pointer;' class='ui-pg-div ui-inline-edit' "+("id='jEditButton_"+f+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'edit'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover') ")+
+"><span class='ui-icon ui-icon-pencil'></span></div>");c.delbutton&&(g+="<div title='"+a.jgrid.nav.deltitle+"' style='float:left;margin-left:5px;' class='ui-pg-div ui-inline-del' "+("id='jDeleteButton_"+f+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'del'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ")+"><span class='ui-icon ui-icon-trash'></span></div>");g+="<div title='"+a.jgrid.edit.bSubmit+"' style='float:left;display:none' class='ui-pg-div ui-inline-save' "+
+("id='jSaveButton_"+f+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'save'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ")+"><span class='ui-icon ui-icon-disk'></span></div>";g+="<div title='"+a.jgrid.edit.bCancel+"' style='float:left;display:none;margin-left:5px;' class='ui-pg-div ui-inline-cancel' "+("id='jCancelButton_"+f+"' onclick=jQuery.fn.fmatter.rowactions.call(this,'cancel'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ")+
+"><span class='ui-icon ui-icon-cancel'></span></div>";return"<div style='margin-left:8px;'>"+g+"</div>"};a.unformat=function(b,e,c,f){var g,d=e.colModel.formatter,h=e.colModel.formatoptions||{},k=/([\.\*\_\'\(\)\{\}\+\?\\])/g,l=e.colModel.unformat||a.fn.fmatter[d]&&a.fn.fmatter[d].unformat;if(void 0!==l&&a.isFunction(l))g=l.call(this,a(b).text(),e,b);else if(void 0!==d&&a.fmatter.isString(d))switch(g=a.jgrid.formatter||{},d){case "integer":h=a.extend({},g.integer,h);e=h.thousandsSeparator.replace(k,
+"\\$1");e=new RegExp(e,"g");g=a(b).text().replace(e,"");break;case "number":h=a.extend({},g.number,h);e=h.thousandsSeparator.replace(k,"\\$1");e=new RegExp(e,"g");g=a(b).text().replace(e,"").replace(h.decimalSeparator,".");break;case "currency":h=a.extend({},g.currency,h);e=h.thousandsSeparator.replace(k,"\\$1");e=new RegExp(e,"g");g=a(b).text();h.prefix&&h.prefix.length&&(g=g.substr(h.prefix.length));h.suffix&&h.suffix.length&&(g=g.substr(0,g.length-h.suffix.length));g=g.replace(e,"").replace(h.decimalSeparator,
+".");break;case "checkbox":h=e.colModel.editoptions?e.colModel.editoptions.value.split(":"):["Yes","No"];g=a("input",b).is(":checked")?h[0]:h[1];break;case "select":g=a.unformat.select(b,e,c,f);break;case "actions":return"";default:g=a(b).text()}return void 0!==g?g:!0===f?a(b).text():a.jgrid.htmlDecode(a(b).html())};a.unformat.select=function(b,e,c,f){c=[];b=a(b).text();if(!0===f)return b;f=a.extend({},void 0!==e.colModel.formatoptions?e.colModel.formatoptions:e.colModel.editoptions);e=void 0===f.separator?
+":":f.separator;var g=void 0===f.delimiter?";":f.delimiter;if(f.value){var d=f.value;f=!0===f.multiple?!0:!1;var h=[];f&&(h=b.split(","),h=a.map(h,function(b){return a.trim(b)}));if(a.fmatter.isString(d)){var k=d.split(g),l=0,p;for(p=0;p<k.length;p++)if(g=k[p].split(e),2<g.length&&(g[1]=a.map(g,function(a,b){if(0<b)return a}).join(e)),f)-1<a.inArray(g[1],h)&&(c[l]=g[0],l++);else if(a.trim(g[1])===a.trim(b)){c[0]=g[0];break}}else if(a.fmatter.isObject(d)||a.isArray(d))f||(h[0]=b),c=a.map(h,function(b){var c;
+a.each(d,function(a,d){if(d===b)return c=a,!1});if(void 0!==c)return c});return c.join(", ")}return b||""};a.unformat.date=function(b,e){var c=a.jgrid.formatter.date||{};void 0!==e.formatoptions&&(c=a.extend({},c,e.formatoptions));return a.fmatter.isEmpty(b)?a.fn.fmatter.defaultFormat(b,e):a.jgrid.parseDate(c.newformat,b,c.srcformat,c)}})(jQuery);
+var xmlJsonClass={xml2json:function(a,b){9===a.nodeType&&(a=a.documentElement);var e=this.removeWhite(a),e=this.toObj(e),e=this.toJson(e,a.nodeName,"\t");return"{\n"+b+(b?e.replace(/\t/g,b):e.replace(/\t|\n/g,""))+"\n}"},json2xml:function(a,b){var e=function(a,b,c){var f="",l,p;if(a instanceof Array)if(0===a.length)f+=c+"<"+b+">__EMPTY_ARRAY_</"+b+">\n";else for(l=0,p=a.length;l<p;l+=1)var m=c+e(a[l],b,c+"\t")+"\n",f=f+m;else if("object"===typeof a){l=!1;f+=c+"<"+b;for(p in a)a.hasOwnProperty(p)&&
+("@"===p.charAt(0)?f+=" "+p.substr(1)+'="'+a[p].toString()+'"':l=!0);f+=l?">":"/>";if(l){for(p in a)a.hasOwnProperty(p)&&("#text"===p?f+=a[p]:"#cdata"===p?f+="<![CDATA["+a[p]+"]]\x3e":"@"!==p.charAt(0)&&(f+=e(a[p],p,c+"\t")));f+=("\n"===f.charAt(f.length-1)?c:"")+"</"+b+">"}}else"function"===typeof a?f+=c+"<"+b+"><![CDATA["+a+"]]\x3e</"+b+">":(void 0===a&&(a=""),f='""'===a.toString()||0===a.toString().length?f+(c+"<"+b+">__EMPTY_STRING_</"+b+">"):f+(c+"<"+b+">"+a.toString()+"</"+b+">"));return f},
+c="",f;for(f in a)a.hasOwnProperty(f)&&(c+=e(a[f],f,""));return b?c.replace(/\t/g,b):c.replace(/\t|\n/g,"")},toObj:function(a){var b={},e=/function/i;if(1===a.nodeType){if(a.attributes.length){var c;for(c=0;c<a.attributes.length;c+=1)b["@"+a.attributes[c].nodeName]=(a.attributes[c].nodeValue||"").toString()}if(a.firstChild){var f=c=0,g=!1,d;for(d=a.firstChild;d;d=d.nextSibling)1===d.nodeType?g=!0:3===d.nodeType&&d.nodeValue.match(/[^ \f\n\r\t\v]/)?c+=1:4===d.nodeType&&(f+=1);if(g)if(2>c&&2>f)for(this.removeWhite(a),
+d=a.firstChild;d;d=d.nextSibling)3===d.nodeType?b["#text"]=this.escape(d.nodeValue):4===d.nodeType?e.test(d.nodeValue)?b[d.nodeName]=[b[d.nodeName],d.nodeValue]:b["#cdata"]=this.escape(d.nodeValue):b[d.nodeName]?b[d.nodeName]instanceof Array?b[d.nodeName][b[d.nodeName].length]=this.toObj(d):b[d.nodeName]=[b[d.nodeName],this.toObj(d)]:b[d.nodeName]=this.toObj(d);else a.attributes.length?b["#text"]=this.escape(this.innerXml(a)):b=this.escape(this.innerXml(a));else if(c)a.attributes.length?b["#text"]=
+this.escape(this.innerXml(a)):(b=this.escape(this.innerXml(a)),"__EMPTY_ARRAY_"===b?b="[]":"__EMPTY_STRING_"===b&&(b=""));else if(f)if(1<f)b=this.escape(this.innerXml(a));else for(d=a.firstChild;d;d=d.nextSibling)if(e.test(a.firstChild.nodeValue)){b=a.firstChild.nodeValue;break}else b["#cdata"]=this.escape(d.nodeValue)}a.attributes.length||a.firstChild||(b=null)}else 9===a.nodeType?b=this.toObj(a.documentElement):alert("unhandled node type: "+a.nodeType);return b},toJson:function(a,b,e,c){void 0===
+c&&(c=!0);var f=b?'"'+b+'"':"",g="\t",d="\n";c||(d=g="");if("[]"===a)f+=b?":[]":"[]";else if(a instanceof Array){var h,k,l=[];k=0;for(h=a.length;k<h;k+=1)l[k]=this.toJson(a[k],"",e+g,c);f+=(b?":[":"[")+(1<l.length?d+e+g+l.join(","+d+e+g)+d+e:l.join(""))+"]"}else if(null===a)f+=(b&&":")+"null";else if("object"===typeof a){h=[];for(k in a)a.hasOwnProperty(k)&&(h[h.length]=this.toJson(a[k],k,e+g,c));f+=(b?":{":"{")+(1<h.length?d+e+g+h.join(","+d+e+g)+d+e:h.join(""))+"}"}else f="string"===typeof a?f+
+((b&&":")+'"'+a.replace(/\\/g,"\\\\").replace(/\"/g,'\\"')+'"'):f+((b&&":")+a.toString());return f},innerXml:function(a){var b="";if("innerHTML"in a)b=a.innerHTML;else{var e=function(a){var b="",g;if(1===a.nodeType){b+="<"+a.nodeName;for(g=0;g<a.attributes.length;g+=1)b+=" "+a.attributes[g].nodeName+'="'+(a.attributes[g].nodeValue||"").toString()+'"';if(a.firstChild){b+=">";for(g=a.firstChild;g;g=g.nextSibling)b+=e(g);b+="</"+a.nodeName+">"}else b+="/>"}else 3===a.nodeType?b+=a.nodeValue:4===a.nodeType&&
+(b+="<![CDATA["+a.nodeValue+"]]\x3e");return b};for(a=a.firstChild;a;a=a.nextSibling)b+=e(a)}return b},escape:function(a){return a.replace(/[\\]/g,"\\\\").replace(/[\"]/g,'\\"').replace(/[\n]/g,"\\n").replace(/[\r]/g,"\\r")},removeWhite:function(a){a.normalize();var b;for(b=a.firstChild;b;)if(3===b.nodeType)if(b.nodeValue.match(/[^ \f\n\r\t\v]/))b=b.nextSibling;else{var e=b.nextSibling;a.removeChild(b);b=e}else 1===b.nodeType&&this.removeWhite(b),b=b.nextSibling;return a}};
+//@ sourceMappingURL=jquery.jqGrid.map.js

+ 5 - 5
main/inc/lib/javascript/jqgrid/plugins/grid.addons.js → app/Resources/public/assets/jqgrid/plugins/grid.addons.js

@@ -171,7 +171,7 @@ $.jgrid.extend({
 			}
 			if($.fn.searchFilter) {
 				if(p.recreateFilter===true) {$("#"+fid).remove();}
-				if( $("#"+fid).html() !== null ) {
+				if( $("#"+fid).html() != null ) {
 					if ( $.isFunction(p.beforeShowSearch) ) {
 						showFrm = p.beforeShowSearch($("#"+fid));
 						if(typeof(showFrm) == "undefined") {
@@ -191,13 +191,13 @@ $.jgrid.extend({
 						k=0;
 						for(j=0;j<p.sopt.length;j++) {
 							if( (pos= $.inArray(p.sopt[j],stempl)) != -1 ){
-								oprtr[k] = {op:p.sopt[j],text: p.odata[pos]};
+								oprtr[k] = {op:p.sopt[j],text: p.odata[pos].text};
 								k++;
 							}
 						}
 					} else {
 						for(j=0;j<stempl.length;j++) {
-							oprtr[j] = {op:stempl[j],text: p.odata[j]};
+							oprtr[j] = {op:stempl[j],text: p.odata[j].text};
 						}
 					}
 				    $.each(colModel, function(i, v) {
@@ -211,7 +211,7 @@ $.jgrid.extend({
 							if(soptions.sopt.length>0) {
 								for(j=0;j<soptions.sopt.length;j++) {
 									if( (pos= $.inArray(soptions.sopt[j],stempl)) != -1 ){
-										soptions.ops[k] = {op:soptions.sopt[j],text: p.odata[pos]};
+										soptions.ops[k] = {op:soptions.sopt[j],text: p.odata[pos].text};
 										k++;
 									}
 								}
@@ -691,7 +691,7 @@ $.jgrid.extend({
 				}
 			};
 			var frm = $("<form name='SearchForm' style=display:inline;' class='"+this.p.formclass+"'></form>");
-			tbl =$("<table class='"+this.p.tableclass+"' cellspacing='0' cellpading='0' border='0'><tbody></tbody></table>");
+			tbl =$("<table class='"+this.p.tableclass+"' cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>");
 			$(frm).append(tbl);
 			formFill();
 			$(this).append(frm);

+ 0 - 0
main/inc/lib/javascript/jqgrid/plugins/grid.postext.js → app/Resources/public/assets/jqgrid/plugins/grid.postext.js


+ 0 - 0
main/inc/lib/javascript/jqgrid/plugins/grid.setcolumns.js → app/Resources/public/assets/jqgrid/plugins/grid.setcolumns.js


+ 0 - 0
main/inc/lib/javascript/jqgrid/plugins/jquery.contextmenu.js → app/Resources/public/assets/jqgrid/plugins/jquery.contextmenu.js


Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff