jqgrid-jquery-rails 4.3.1.0 → 4.3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/jqgrid-jquery-rails/version.rb +1 -1
  4. data/vendor/assets/javascripts/i18n/grid.locale-ar.js +127 -126
  5. data/vendor/assets/javascripts/i18n/grid.locale-bg.js +3 -2
  6. data/vendor/assets/javascripts/i18n/grid.locale-bg1251.js +63 -62
  7. data/vendor/assets/javascripts/i18n/grid.locale-cat.js +3 -2
  8. data/vendor/assets/javascripts/i18n/grid.locale-cn.js +3 -2
  9. data/vendor/assets/javascripts/i18n/grid.locale-cs.js +3 -2
  10. data/vendor/assets/javascripts/i18n/grid.locale-da.js +3 -2
  11. data/vendor/assets/javascripts/i18n/grid.locale-de.js +3 -2
  12. data/vendor/assets/javascripts/i18n/grid.locale-el.js +3 -2
  13. data/vendor/assets/javascripts/i18n/grid.locale-en.js +3 -2
  14. data/vendor/assets/javascripts/i18n/grid.locale-es.js +3 -2
  15. data/vendor/assets/javascripts/i18n/grid.locale-fa.js +145 -144
  16. data/vendor/assets/javascripts/i18n/grid.locale-fi.js +130 -129
  17. data/vendor/assets/javascripts/i18n/grid.locale-fr.js +127 -126
  18. data/vendor/assets/javascripts/i18n/grid.locale-gl.js +3 -2
  19. data/vendor/assets/javascripts/i18n/grid.locale-he.js +3 -2
  20. data/vendor/assets/javascripts/i18n/grid.locale-hr.js +129 -128
  21. data/vendor/assets/javascripts/i18n/grid.locale-hr1250.js +129 -128
  22. data/vendor/assets/javascripts/i18n/grid.locale-hu.js +3 -2
  23. data/vendor/assets/javascripts/i18n/grid.locale-is.js +127 -126
  24. data/vendor/assets/javascripts/i18n/grid.locale-it.js +1 -1
  25. data/vendor/assets/javascripts/i18n/grid.locale-ja.js +4 -3
  26. data/vendor/assets/javascripts/i18n/grid.locale-lt.js +3 -2
  27. data/vendor/assets/javascripts/i18n/grid.locale-mne.js +129 -128
  28. data/vendor/assets/javascripts/i18n/grid.locale-nl.js +3 -3
  29. data/vendor/assets/javascripts/i18n/grid.locale-no.js +1 -1
  30. data/vendor/assets/javascripts/i18n/grid.locale-pl.js +18 -16
  31. data/vendor/assets/javascripts/i18n/grid.locale-pt-br.js +3 -2
  32. data/vendor/assets/javascripts/i18n/grid.locale-pt.js +11 -10
  33. data/vendor/assets/javascripts/i18n/grid.locale-ro.js +3 -2
  34. data/vendor/assets/javascripts/i18n/grid.locale-ru.js +3 -2
  35. data/vendor/assets/javascripts/i18n/grid.locale-sk.js +3 -2
  36. data/vendor/assets/javascripts/i18n/grid.locale-sr-latin.js +129 -0
  37. data/vendor/assets/javascripts/i18n/grid.locale-sr.js +129 -128
  38. data/vendor/assets/javascripts/i18n/grid.locale-sv.js +3 -2
  39. data/vendor/assets/javascripts/i18n/grid.locale-th.js +129 -128
  40. data/vendor/assets/javascripts/i18n/grid.locale-tr.js +3 -2
  41. data/vendor/assets/javascripts/i18n/grid.locale-ua.js +3 -2
  42. data/vendor/assets/javascripts/jquery.jqGrid.js +969 -782
  43. data/vendor/assets/stylesheets/ui.jqgrid.css +7 -2
  44. metadata +2 -1
@@ -1,128 +1,129 @@
1
- ;(function($){
2
- /**
3
- * jqGrid Thai Translation
4
- * Kittituch Manakul m.kittituch@Gmail.com
5
- * http://trirand.com/blog/
6
- * Dual licensed under the MIT and GPL licenses:
7
- * http://www.opensource.org/licenses/mit-license.php
8
- * http://www.gnu.org/licenses/gpl.html
9
- **/
10
- $.jgrid = {
11
- defaults : {
12
- recordtext: "แสดง {0} - {1} จาก {2}",
13
- emptyrecords: "ไม่พบข้อมูล",
14
- loadtext: "กำลังร้องขอข้อมูล...",
15
- pgtext : "หน้า {0} จาก {1}"
16
- },
17
- search : {
18
- caption: "กำลังค้นหา...",
19
- Find: "ค้นหา",
20
- Reset: "คืนค่ากลับ",
21
- odata : ['เท่ากับ', 'ไม่เท่ากับ', 'น้อยกว่า', 'ไม่มากกว่า','มากกกว่า','ไม่น้อยกว่า', 'ขึ้นต้นด้วย','ไม่ขึ้นต้นด้วย','มีคำใดคำหนึ่งใน','ไม่มีคำใดคำหนึ่งใน','ลงท้ายด้วย','ไม่ลงท้ายด้วย','มีคำว่า','ไม่มีคำว่า'],
22
- groupOps: [ { op: "และ", text: "ทั้งหมด" }, { op: "หรือ", text: "ใดๆ" } ],
23
- matchText: " ตรงกันกับ",
24
- rulesText: " ตามกฏ"
25
- },
26
- edit : {
27
- addCaption: "เพิ่มข้อมูล",
28
- editCaption: "แก้ไขข้อมูล",
29
- bSubmit: "บันทึก",
30
- bCancel: "ยกเลิก",
31
- bClose: "ปิด",
32
- saveData: "คุณต้องการบันทึการแก้ไข ใช่หรือไม่?",
33
- bYes : "บันทึก",
34
- bNo : "ละทิ้งการแก้ไข",
35
- bExit : "ยกเลิก",
36
- msg: {
37
- required:"ข้อมูลนี้จำเป็น",
38
- number:"กรุณากรอกหมายเลขให้ถูกต้อง",
39
- minValue:"ค่าของข้อมูลนี้ต้องไม่น้อยกว่า",
40
- maxValue:"ค่าของข้อมูลนี้ต้องไม่มากกว่า",
41
- email: "อีเมลล์นี้ไม่ถูกต้อง",
42
- integer: "กรุณากรอกเป็นจำนวนเต็ม",
43
- date: "กรุณากรอกวันที่ให้ถูกต้อง",
44
- url: "URL ไม่ถูกต้อง URL จำเป็นต้องขึ้นต้นด้วย 'http://' หรือ 'https://'",
45
- nodefined : "ไม่ได้ถูกกำหนดค่า!",
46
- novalue : "ต้องการการคืนค่า!",
47
- customarray : "ฟังก์ชันที่สร้างขึ้นต้องส่งค่ากลับเป็นแบบแอเรย์",
48
- customfcheck : "ระบบต้องการฟังก์ชันที่สร้างขึ้นสำหรับการตรวจสอบ!"
49
-
50
- }
51
- },
52
- view : {
53
- caption: "เรียกดูข้อมูล",
54
- bClose: "ปิด"
55
- },
56
- del : {
57
- caption: "ลบข้อมูล",
58
- msg: "คุณต้องการลบข้อมูลที่ถูกเลือก ใช่หรือไม่?",
59
- bSubmit: "ต้องการลบ",
60
- bCancel: "ยกเลิก"
61
- },
62
- nav : {
63
- edittext: "",
64
- edittitle: "แก้ไขข้อมูล",
65
- addtext:"",
66
- addtitle: "เพิ่มข้อมูล",
67
- deltext: "",
68
- deltitle: "ลบข้อมูล",
69
- searchtext: "",
70
- searchtitle: "ค้นหาข้อมูล",
71
- refreshtext: "",
72
- refreshtitle: "รีเฟรช",
73
- alertcap: "คำเตือน",
74
- alerttext: "กรุณาเลือกข้อมูล",
75
- viewtext: "",
76
- viewtitle: "ดูรายละเอียดข้อมูล"
77
- },
78
- col : {
79
- caption: "กรุณาเลือกคอลัมน์",
80
- bSubmit: "ตกลง",
81
- bCancel: "ยกเลิก"
82
- },
83
- errors : {
84
- errcap : "เกิดความผิดพลาด",
85
- nourl : "ไม่ได้กำหนด URL",
86
- norecords: "ไม่มีข้อมูลให้ดำเนินการ",
87
- model : "จำนวนคอลัมน์ไม่เท่ากับจำนวนคอลัมน์โมเดล!"
88
- },
89
- formatter : {
90
- integer : {thousandsSeparator: " ", defaultValue: '0'},
91
- number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'},
92
- currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'},
93
- date : {
94
- dayNames: [
95
- "อา", "จ", "อ", "พ", "พฤ", "ศ", "ส",
96
- "อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัสบดี", "ศูกร์", "เสาร์"
97
- ],
98
- monthNames: [
99
- "ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค.",
100
- "มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฏาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"
101
- ],
102
- AmPm : ["am","pm","AM","PM"],
103
- S: function (j) {return ''},
104
- srcformat: 'Y-m-d',
105
- newformat: 'd/m/Y',
106
- masks : {
107
- ISO8601Long:"Y-m-d H:i:s",
108
- ISO8601Short:"Y-m-d",
109
- ShortDate: "n/j/Y",
110
- LongDate: "l, F d, Y",
111
- FullDateTime: "l, F d, Y g:i:s A",
112
- MonthDay: "F d",
113
- ShortTime: "g:i A",
114
- LongTime: "g:i:s A",
115
- SortableDateTime: "Y-m-d\\TH:i:s",
116
- UniversalSortableDateTime: "Y-m-d H:i:sO",
117
- YearMonth: "F, Y"
118
- },
119
- reformatAfterEdit : false
120
- },
121
- baseLinkUrl: '',
122
- showAction: '',
123
- target: '',
124
- checkbox : {disabled:true},
125
- idName : 'id'
126
- }
127
- };
128
- })(jQuery);
1
+ ;(function($){
2
+ /**
3
+ * jqGrid Thai Translation
4
+ * Kittituch Manakul m.kittituch@Gmail.com
5
+ * http://trirand.com/blog/
6
+ * Dual licensed under the MIT and GPL licenses:
7
+ * http://www.opensource.org/licenses/mit-license.php
8
+ * http://www.gnu.org/licenses/gpl.html
9
+ **/
10
+ $.jgrid = $.jgrid || {};
11
+ $.extend($.jgrid,{
12
+ defaults : {
13
+ recordtext: "แสดง {0} - {1} จาก {2}",
14
+ emptyrecords: "ไม่พบข้อมูล",
15
+ loadtext: "กำลังร้องขอข้อมูล...",
16
+ pgtext : "หน้า {0} จาก {1}"
17
+ },
18
+ search : {
19
+ caption: "กำลังค้นหา...",
20
+ Find: "ค้นหา",
21
+ Reset: "คืนค่ากลับ",
22
+ odata : ['เท่ากับ', 'ไม่เท่ากับ', 'น้อยกว่า', 'ไม่มากกว่า','มากกกว่า','ไม่น้อยกว่า', 'ขึ้นต้นด้วย','ไม่ขึ้นต้นด้วย','มีคำใดคำหนึ่งใน','ไม่มีคำใดคำหนึ่งใน','ลงท้ายด้วย','ไม่ลงท้ายด้วย','มีคำว่า','ไม่มีคำว่า'],
23
+ groupOps: [ { op: "และ", text: "ทั้งหมด" }, { op: "หรือ", text: "ใดๆ" } ],
24
+ matchText: " ตรงกันกับ",
25
+ rulesText: " ตามกฏ"
26
+ },
27
+ edit : {
28
+ addCaption: "เพิ่มข้อมูล",
29
+ editCaption: "แก้ไขข้อมูล",
30
+ bSubmit: "บันทึก",
31
+ bCancel: "ยกเลิก",
32
+ bClose: "ปิด",
33
+ saveData: "คุณต้องการบันทึการแก้ไข ใช่หรือไม่?",
34
+ bYes : "บันทึก",
35
+ bNo : "ละทิ้งการแก้ไข",
36
+ bExit : "ยกเลิก",
37
+ msg: {
38
+ required:"ข้อมูลนี้จำเป็น",
39
+ number:"กรุณากรอกหมายเลขให้ถูกต้อง",
40
+ minValue:"ค่าของข้อมูลนี้ต้องไม่น้อยกว่า",
41
+ maxValue:"ค่าของข้อมูลนี้ต้องไม่มากกว่า",
42
+ email: "อีเมลล์นี้ไม่ถูกต้อง",
43
+ integer: "กรุณากรอกเป็นจำนวนเต็ม",
44
+ date: "กรุณากรอกวันที่ให้ถูกต้อง",
45
+ url: "URL ไม่ถูกต้อง URL จำเป็นต้องขึ้นต้นด้วย 'http://' หรือ 'https://'",
46
+ nodefined : "ไม่ได้ถูกกำหนดค่า!",
47
+ novalue : "ต้องการการคืนค่า!",
48
+ customarray : "ฟังก์ชันที่สร้างขึ้นต้องส่งค่ากลับเป็นแบบแอเรย์",
49
+ customfcheck : "ระบบต้องการฟังก์ชันที่สร้างขึ้นสำหรับการตรวจสอบ!"
50
+
51
+ }
52
+ },
53
+ view : {
54
+ caption: "เรียกดูข้อมูล",
55
+ bClose: "ปิด"
56
+ },
57
+ del : {
58
+ caption: "ลบข้อมูล",
59
+ msg: "คุณต้องการลบข้อมูลที่ถูกเลือก ใช่หรือไม่?",
60
+ bSubmit: "ต้องการลบ",
61
+ bCancel: "ยกเลิก"
62
+ },
63
+ nav : {
64
+ edittext: "",
65
+ edittitle: "แก้ไขข้อมูล",
66
+ addtext:"",
67
+ addtitle: "เพิ่มข้อมูล",
68
+ deltext: "",
69
+ deltitle: "ลบข้อมูล",
70
+ searchtext: "",
71
+ searchtitle: "ค้นหาข้อมูล",
72
+ refreshtext: "",
73
+ refreshtitle: "รีเฟรช",
74
+ alertcap: "คำเตือน",
75
+ alerttext: "กรุณาเลือกข้อมูล",
76
+ viewtext: "",
77
+ viewtitle: "ดูรายละเอียดข้อมูล"
78
+ },
79
+ col : {
80
+ caption: "กรุณาเลือกคอลัมน์",
81
+ bSubmit: "ตกลง",
82
+ bCancel: "ยกเลิก"
83
+ },
84
+ errors : {
85
+ errcap : "เกิดความผิดพลาด",
86
+ nourl : "ไม่ได้กำหนด URL",
87
+ norecords: "ไม่มีข้อมูลให้ดำเนินการ",
88
+ model : "จำนวนคอลัมน์ไม่เท่ากับจำนวนคอลัมน์โมเดล!"
89
+ },
90
+ formatter : {
91
+ integer : {thousandsSeparator: " ", defaultValue: '0'},
92
+ number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'},
93
+ currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'},
94
+ date : {
95
+ dayNames: [
96
+ "อา", "", "", "", "พฤ", "", "",
97
+ "อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัสบดี", "ศูกร์", "เสาร์"
98
+ ],
99
+ monthNames: [
100
+ "ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค.",
101
+ "มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฏาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"
102
+ ],
103
+ AmPm : ["am","pm","AM","PM"],
104
+ S: function (j) {return ''},
105
+ srcformat: 'Y-m-d',
106
+ newformat: 'd/m/Y',
107
+ masks : {
108
+ ISO8601Long:"Y-m-d H:i:s",
109
+ ISO8601Short:"Y-m-d",
110
+ ShortDate: "n/j/Y",
111
+ LongDate: "l, F d, Y",
112
+ FullDateTime: "l, F d, Y g:i:s A",
113
+ MonthDay: "F d",
114
+ ShortTime: "g:i A",
115
+ LongTime: "g:i:s A",
116
+ SortableDateTime: "Y-m-d\\TH:i:s",
117
+ UniversalSortableDateTime: "Y-m-d H:i:sO",
118
+ YearMonth: "F, Y"
119
+ },
120
+ reformatAfterEdit : false
121
+ },
122
+ baseLinkUrl: '',
123
+ showAction: '',
124
+ target: '',
125
+ checkbox : {disabled:true},
126
+ idName : 'id'
127
+ }
128
+ });
129
+ })(jQuery);
@@ -7,7 +7,8 @@
7
7
  * http://www.opensource.org/licenses/mit-license.php
8
8
  * http://www.gnu.org/licenses/gpl.html
9
9
  **/
10
- $.jgrid = {
10
+ $.jgrid = $.jgrid || {};
11
+ $.extend($.jgrid,{
11
12
  defaults : {
12
13
  recordtext: "{0}-{1} listeleniyor. Toplam:{2}",
13
14
  emptyrecords: "Kayıt bulunamadı",
@@ -122,5 +123,5 @@ $.jgrid = {
122
123
  checkbox : {disabled:true},
123
124
  idName : 'id'
124
125
  }
125
- };
126
+ });
126
127
  })(jQuery);
@@ -7,7 +7,8 @@
7
7
  * http://www.opensource.org/licenses/mit-license.php
8
8
  * http://www.gnu.org/licenses/gpl.html
9
9
  **/
10
- $.jgrid = {
10
+ $.jgrid = $.jgrid || {};
11
+ $.extend($.jgrid,{
11
12
  defaults : {
12
13
  recordtext: "Перегляд {0} - {1} з {2}",
13
14
  emptyrecords: "Немає записів для перегляду",
@@ -123,5 +124,5 @@ $.jgrid = {
123
124
  checkbox : {disabled:true},
124
125
  idName : 'id'
125
126
  }
126
- };
127
+ });
127
128
  })(jQuery);
@@ -2,12 +2,12 @@
2
2
  // @compilation_level SIMPLE_OPTIMIZATIONS
3
3
 
4
4
  /**
5
- * @license jqGrid 4.3.1 - jQuery Grid
5
+ * @license jqGrid 4.3.2 - jQuery Grid
6
6
  * Copyright (c) 2008, Tony Tomov, tony@trirand.com
7
7
  * Dual licensed under the MIT and GPL licenses
8
8
  * http://www.opensource.org/licenses/mit-license.php
9
9
  * http://www.gnu.org/licenses/gpl-2.0.html
10
- * Date: 2011-12-20
10
+ * Date: 2011-04-10
11
11
  */
12
12
  //jsHint options
13
13
  /*global document, window, jQuery, DOMParser, ActiveXObject, $, alert */
@@ -16,6 +16,7 @@
16
16
  "use strict";
17
17
  $.jgrid = $.jgrid || {};
18
18
  $.extend($.jgrid,{
19
+ version : "4.3.3",
19
20
  htmlDecode : function(value){
20
21
  if(value && (value==' ' || value==' ' || (value.length===1 && value.charCodeAt(0)===160))) { return "";}
21
22
  return !value ? value : String(value).replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&quot;/g, '"').replace(/&amp;/g, "&");
@@ -47,12 +48,9 @@ $.extend($.jgrid,{
47
48
  return v;
48
49
  }
49
50
  },
50
- realType : function (arg) {
51
- return Object.prototype.toString.call(arg).slice(8, -1);
52
- },
53
51
  stripPref : function (pref, id) {
54
- var obj = this.realType( pref );
55
- if( obj == "String" || obj =="Number") {
52
+ var obj = $.type( pref );
53
+ if( obj == "string" || obj =="number") {
56
54
  pref = String(pref);
57
55
  id = pref !== "" ? String(id).replace(String(pref), "") : id;
58
56
  }
@@ -78,30 +76,39 @@ $.extend($.jgrid,{
78
76
  if (js.substr(0,2) == "/*") { js = js.substr(2,js.length-4); }
79
77
  if(!js) { js = "{}"; }
80
78
  return ($.jgrid.useJSON===true && typeof (JSON) === 'object' && typeof (JSON.parse) === 'function') ?
81
- JSON.parse(js) :
82
- eval('(' + js + ')');
79
+ JSON.parse(js) :
80
+ eval('(' + js + ')');
83
81
  },
84
82
  parseDate : function(format, date) {
85
83
  var tsp = {m : 1, d : 1, y : 1970, h : 0, i : 0, s : 0, u:0},k,hl,dM, regdate = /[\\\/:_;.,\t\T\s-]/;
86
84
  if(date && date !== null && date !== undefined){
87
85
  date = $.trim(date);
88
86
  date = date.split(regdate);
87
+ if ($.jgrid.formatter.date.masks[format] !== undefined) {
88
+ format = $.jgrid.formatter.date.masks[format];
89
+ }
89
90
  format = format.split(regdate);
90
91
  var dfmt = $.jgrid.formatter.date.monthNames;
91
92
  var afmt = $.jgrid.formatter.date.AmPm;
92
93
  var h12to24 = function(ampm, h){
93
94
  if (ampm === 0){ if (h === 12) { h = 0;} }
94
- else { if (h !== 12) { h += 12; } }
95
+ else { if (h !== 12) { h += 12; } }
95
96
  return h;
96
97
  };
97
98
  for(k=0,hl=format.length;k<hl;k++){
98
99
  if(format[k] == 'M') {
99
100
  dM = $.inArray(date[k],dfmt);
100
- if(dM !== -1 && dM < 12){date[k] = dM+1;}
101
+ if(dM !== -1 && dM < 12){
102
+ date[k] = dM+1;
103
+ tsp.m = date[k];
104
+ }
101
105
  }
102
106
  if(format[k] == 'F') {
103
107
  dM = $.inArray(date[k],dfmt);
104
- if(dM !== -1 && dM > 11){date[k] = dM+1-12;}
108
+ if(dM !== -1 && dM > 11){
109
+ date[k] = dM+1-12;
110
+ tsp.m = date[k];
111
+ }
105
112
  }
106
113
  if(format[k] == 'a') {
107
114
  dM = $.inArray(date[k],afmt);
@@ -125,6 +132,8 @@ $.extend($.jgrid,{
125
132
  var ty = tsp.y;
126
133
  if (ty >= 70 && ty <= 99) {tsp.y = 1900+tsp.y;}
127
134
  else if (ty >=0 && ty <=69) {tsp.y= 2000+tsp.y;}
135
+ if(tsp.j !== undefined) { tsp.d = tsp.j; }
136
+ if(tsp.n !== undefined) { tsp.m = parseInt(tsp.n,10)-1; }
128
137
  }
129
138
  return new Date(tsp.y, tsp.m, tsp.d, tsp.h, tsp.i, tsp.s, tsp.u);
130
139
  },
@@ -148,7 +157,7 @@ $.extend($.jgrid,{
148
157
  i = prm.length;
149
158
  if( i ) {
150
159
  ret = obj;
151
- while (ret && i--) {
160
+ while (ret && i--) {
152
161
  p = prm.shift();
153
162
  ret = ret[p];
154
163
  }
@@ -173,10 +182,10 @@ $.extend($.jgrid,{
173
182
  }
174
183
  },
175
184
  ajaxOptions: {},
176
- from : function(source,initalQuery){
185
+ from : function(source){
177
186
  // Original Author Hugo Bonacci
178
187
  // License MIT http://jlinq.codeplex.com/license
179
- var queryObject=function(d,q){
188
+ var QueryObject=function(d,q){
180
189
  if(typeof(d)=="string"){
181
190
  d=$.data(d);
182
191
  }
@@ -292,6 +301,7 @@ $.extend($.jgrid,{
292
301
  return(self._compare(a,b,1)===0);
293
302
  };
294
303
  this._compare=function(a,b,d){
304
+ var toString = Object.prototype.toString;
295
305
  if( d === undefined) { d = 1; }
296
306
  if(a===undefined) { a = null; }
297
307
  if(b===undefined) { b = null; }
@@ -304,6 +314,11 @@ $.extend($.jgrid,{
304
314
  if(a!==null&&b===null){
305
315
  return -1;
306
316
  }
317
+ if (toString.call(a) === '[object Date]' && toString.call(b) === '[object Date]') {
318
+ if (a < b) { return -d; }
319
+ if (a > b) { return d; }
320
+ return 0;
321
+ }
307
322
  if(!_usecase && typeof(a) !== "number" && typeof(b) !== "number" ) {
308
323
  a=String(a).toLowerCase();
309
324
  b=String(b).toLowerCase();
@@ -341,22 +356,22 @@ $.extend($.jgrid,{
341
356
 
342
357
  if(type === undefined ) { type = "text"; }
343
358
  if (type == 'float' || type== 'number' || type== 'currency' || type== 'numeric') {
344
- findSortKey = function($cell, a) {
359
+ findSortKey = function($cell) {
345
360
  var key = parseFloat( String($cell).replace(_stripNum, ''));
346
361
  return isNaN(key) ? 0.00 : key;
347
362
  };
348
363
  } else if (type=='int' || type=='integer') {
349
- findSortKey = function($cell, a) {
364
+ findSortKey = function($cell) {
350
365
  return $cell ? parseFloat(String($cell).replace(_stripNum, '')) : 0;
351
366
  };
352
367
  } else if(type == 'date' || type == 'datetime') {
353
- findSortKey = function($cell, a) {
368
+ findSortKey = function($cell) {
354
369
  return $.jgrid.parseDate(dfmt,$cell).getTime();
355
370
  };
356
371
  } else if($.isFunction(type)) {
357
372
  findSortKey = type;
358
373
  } else {
359
- findSortKey = function($cell, a) {
374
+ findSortKey = function($cell) {
360
375
  if(!$cell) {$cell ="";}
361
376
  return $.trim(String($cell).toUpperCase());
362
377
  };
@@ -447,7 +462,7 @@ $.extend($.jgrid,{
447
462
  }
448
463
  return _data;
449
464
  };
450
- this.hasMatch=function(f){
465
+ this.hasMatch=function(){
451
466
  if(!self._hasData()) { return false; }
452
467
  self.execute();
453
468
  return _data.length>0;
@@ -608,7 +623,7 @@ $.extend($.jgrid,{
608
623
  };
609
624
  return self;
610
625
  };
611
- return new queryObject(source,null);
626
+ return new QueryObject(source,null);
612
627
  },
613
628
  extend : function(methods) {
614
629
  $.extend($.fn.jqGrid,methods);
@@ -735,7 +750,7 @@ $.fn.jqGrid = function( pin ) {
735
750
  cmTemplate : {},
736
751
  idPrefix : ""
737
752
  }, $.jgrid.defaults, pin || {});
738
- var grid={
753
+ var ts= this, grid={
739
754
  headers:[],
740
755
  cols:[],
741
756
  footers: [],
@@ -744,6 +759,7 @@ $.fn.jqGrid = function( pin ) {
744
759
  this.hDiv.style.cursor = "col-resize";
745
760
  this.curGbox = $("#rs_m"+$.jgrid.jqID(p.id),"#gbox_"+$.jgrid.jqID(p.id));
746
761
  this.curGbox.css({display:"block",left:y[0],top:y[1],height:y[2]});
762
+ $(ts).triggerHandler("jqGridResizeStart", [x, i]);
747
763
  if($.isFunction(p.resizeStart)) { p.resizeStart.call(this,x,i); }
748
764
  document.onselectstart=function(){return false;};
749
765
  },
@@ -798,6 +814,7 @@ $.fn.jqGrid = function( pin ) {
798
814
  this.sDiv.scrollLeft = this.bDiv.scrollLeft;
799
815
  }
800
816
  }
817
+ $(ts).triggerHandler("jqGridResizeStop", [nw, idx]);
801
818
  if($.isFunction(p.resizeStop)) { p.resizeStop.call(this,nw,idx); }
802
819
  }
803
820
  this.curGbox = null;
@@ -826,7 +843,7 @@ $.fn.jqGrid = function( pin ) {
826
843
  var tbot = ttop + table.height();
827
844
  var div = rh * rn;
828
845
  var page, npage, empty;
829
- if ( tbot < dh && ttop <= 0 &&
846
+ if ( tbot < dh && ttop <= 0 &&
830
847
  (p.lastpage===undefined||parseInt((tbot + scrollTop + div - 1) / div,10) <= p.lastpage))
831
848
  {
832
849
  npage = parseInt((dh - tbot + div - 1) / div,10);
@@ -875,29 +892,27 @@ $.fn.jqGrid = function( pin ) {
875
892
  if( e ) { e.stopPropagation(); }
876
893
  },
877
894
  selectionPreserver : function(ts) {
878
- var p = ts.p;
879
- var sr = p.selrow, sra = p.selarrrow ? $.makeArray(p.selarrrow) : null;
880
- var left = ts.grid.bDiv.scrollLeft;
881
- var complete = p.gridComplete;
882
- p.gridComplete = function() {
895
+ var p = ts.p,
896
+ sr = p.selrow, sra = p.selarrrow ? $.makeArray(p.selarrrow) : null,
897
+ left = ts.grid.bDiv.scrollLeft,
898
+ restoreSelection = function() {
899
+ var i;
883
900
  p.selrow = null;
884
901
  p.selarrrow = [];
885
902
  if(p.multiselect && sra && sra.length>0) {
886
- for(var i=0;i<sra.length;i++){
903
+ for(i=0;i<sra.length;i++){
887
904
  if (sra[i] != sr) {
888
- $(ts).jqGrid("setSelection",sra[i],false);
905
+ $(ts).jqGrid("setSelection",sra[i],false, null);
889
906
  }
890
907
  }
891
908
  }
892
909
  if (sr) {
893
- $(ts).jqGrid("setSelection",sr,false);
910
+ $(ts).jqGrid("setSelection",sr,false,null);
894
911
  }
895
912
  ts.grid.bDiv.scrollLeft = left;
896
- p.gridComplete = complete;
897
- if (p.gridComplete) {
898
- complete();
899
- }
913
+ $(ts).unbind('.selectionPreserver', restoreSelection);
900
914
  };
915
+ $(ts).bind('jqGridGridComplete.selectionPreserver', restoreSelection);
901
916
  }
902
917
  };
903
918
  if(this.tagName.toUpperCase()!='TABLE') {
@@ -907,7 +922,7 @@ $.fn.jqGrid = function( pin ) {
907
922
  $(this).empty().attr("tabindex","1");
908
923
  this.p = p ;
909
924
  this.p.useProp = !!$.fn.prop;
910
- var i, dir,ts;
925
+ var i, dir;
911
926
  if(this.p.colNames.length === 0) {
912
927
  for (i=0;i<this.p.colModel.length;i++){
913
928
  this.p.colNames[i] = this.p.colModel[i].label || this.p.colModel[i].name;
@@ -920,7 +935,6 @@ $.fn.jqGrid = function( pin ) {
920
935
  var gv = $("<div class='ui-jqgrid-view'></div>"), ii,
921
936
  isMSIE = $.browser.msie ? true:false,
922
937
  isSafari = $.browser.webkit || $.browser.safari ? true : false;
923
- ts = this;
924
938
  ts.p.direction = $.trim(ts.p.direction.toLowerCase());
925
939
  if($.inArray(ts.p.direction,["ltr","rtl"]) == -1) { ts.p.direction = "ltr"; }
926
940
  dir = ts.p.direction;
@@ -983,7 +997,7 @@ $.fn.jqGrid = function( pin ) {
983
997
  if($.isFunction( cm.formatter ) ) {
984
998
  v = cm.formatter.call(ts,cellval,opts,rwdat,_act);
985
999
  } else if($.fmatter){
986
- v = $.fn.fmatter(cm.formatter, cellval,opts, rwdat, _act);
1000
+ v = $.fn.fmatter.call(ts,cm.formatter,cellval,opts,rwdat,_act);
987
1001
  } else {
988
1002
  v = cellVal(cellval);
989
1003
  }
@@ -1063,6 +1077,38 @@ $.fn.jqGrid = function( pin ) {
1063
1077
  ts.p._index[val] = i;
1064
1078
  }
1065
1079
  },
1080
+ constructTr = function(id, hide, altClass, rd, cur) {
1081
+ var tabindex = '-1', restAttr = '', attrName, style = hide ? 'display:none;' : '',
1082
+ classes = 'ui-widget-content jqgrow ui-row-' + ts.p.direction + altClass,
1083
+ rowAttrObj = $.isFunction(ts.p.rowattr) ? ts.p.rowattr.call(ts, rd, cur) : {};
1084
+ if(!$.isEmptyObject( rowAttrObj )) {
1085
+ if (rowAttrObj.hasOwnProperty("id")) {
1086
+ id = rowAttrObj.id;
1087
+ delete rowAttrObj.id;
1088
+ }
1089
+ if (rowAttrObj.hasOwnProperty("tabindex")) {
1090
+ tabindex = rowAttrObj.tabindex;
1091
+ delete rowAttrObj.tabindex;
1092
+ }
1093
+ if (rowAttrObj.hasOwnProperty("style")) {
1094
+ style += rowAttrObj.style;
1095
+ delete rowAttrObj.style;
1096
+ }
1097
+ if (rowAttrObj.hasOwnProperty("class")) {
1098
+ classes += ' ' + rowAttrObj['class'];
1099
+ delete rowAttrObj['class'];
1100
+ }
1101
+ // dot't allow to change role attribute
1102
+ try { delete rowAttrObj.role; } catch(ra){}
1103
+ for (attrName in rowAttrObj) {
1104
+ if (rowAttrObj.hasOwnProperty(attrName)) {
1105
+ restAttr += ' ' + attrName + '=' + rowAttrObj[attrName];
1106
+ }
1107
+ }
1108
+ }
1109
+ return '<tr role="row" id="' + id + '" tabindex="' + tabindex + '" class="' + classes + '"' +
1110
+ (style === '' ? '' : ' style="' + style + '"') + restAttr + '>';
1111
+ },
1066
1112
  addXmlData = function (xml,t, rcnt, more, adjust) {
1067
1113
  var startReq = new Date(),
1068
1114
  locdata = (ts.p.datatype != "local" && ts.p.loadonce) || ts.p.datatype == "xmlstring",
@@ -1080,10 +1126,10 @@ $.fn.jqGrid = function( pin ) {
1080
1126
  rcnt=1;
1081
1127
  } else { rcnt = rcnt > 1 ? rcnt :1; }
1082
1128
  } else { return; }
1083
- var i,fpos,ir=0,v,row,gi=0,si=0,ni=0,idn, getId,f=[],F,rd ={}, xmlr,rid, rowData=[], cn=(ts.p.altRows === true) ? " "+ts.p.altclass:"",cn1;
1129
+ var i,fpos,ir=0,v,gi=ts.p.multiselect===true?1:0,si=ts.p.subGrid===true?1:0,ni=ts.p.rownumbers===true?1:0,idn, getId,f=[],F,rd ={}, xmlr,rid, rowData=[], cn=(ts.p.altRows === true) ? " "+ts.p.altclass:"",cn1;
1084
1130
  if(!xmlRd.repeatitems) {f = reader(frd);}
1085
1131
  if( ts.p.keyIndex===false) {
1086
- idn = xmlRd.id;
1132
+ idn = $.isFunction( xmlRd.id ) ? xmlRd.id.call(ts, xml) : xmlRd.id;
1087
1133
  } else {
1088
1134
  idn = ts.p.keyIndex;
1089
1135
  }
@@ -1121,28 +1167,22 @@ $.fn.jqGrid = function( pin ) {
1121
1167
  if(gxml && gl){
1122
1168
  var br=ts.p.scroll?$.jgrid.randId():1,altr;
1123
1169
  if (adjust) { rn *= adjust+1; }
1124
- var afterInsRow = $.isFunction(ts.p.afterInsertRow), hiderow="";
1125
- if(ts.p.grouping && ts.p.groupingView.groupCollapse === true) {
1126
- hiderow = " style=\"display:none;\"";
1127
- }
1170
+ var afterInsRow = $.isFunction(ts.p.afterInsertRow), hiderow=ts.p.grouping && ts.p.groupingView.groupCollapse === true;
1128
1171
  while (j<gl) {
1129
1172
  xmlr = gxml[j];
1130
1173
  rid = getId(xmlr,br+j);
1131
1174
  rid = ts.p.idPrefix + rid;
1132
1175
  altr = rcnt === 0 ? 0 : rcnt+1;
1133
1176
  cn1 = (altr+j)%2 == 1 ? cn : '';
1134
- rowData.push( "<tr"+hiderow+" id=\""+rid+"\" tabindex=\"-1\" role=\"row\" class =\"ui-widget-content jqgrow ui-row-"+ts.p.direction+""+cn1+"\">" );
1135
- if(ts.p.rownumbers===true) {
1136
- rowData.push( addRowNum(0,j,ts.p.page,ts.p.rowNum) );
1137
- ni=1;
1177
+ var cs = [];
1178
+ if( ni ) {
1179
+ cs[cs.length] = addRowNum(0,j,ts.p.page,ts.p.rowNum);
1138
1180
  }
1139
- if(ts.p.multiselect===true) {
1140
- rowData.push( addMulti(rid,ni,j) );
1141
- gi=1;
1181
+ if( gi ) {
1182
+ cs[cs.length] = addMulti(rid,ni,j);
1142
1183
  }
1143
- if (ts.p.subGrid===true) {
1144
- rowData.push( $(ts).jqGrid("addSubGridCell",gi+ni,j+rcnt) );
1145
- si= 1;
1184
+ if( si ) {
1185
+ cs[cs.length] = $(ts).jqGrid("addSubGridCell",gi+ni,j+rcnt);
1146
1186
  }
1147
1187
  if(xmlRd.repeatitems){
1148
1188
  if (!F) { F=orderedCols(gi+si+ni); }
@@ -1152,15 +1192,17 @@ $.fn.jqGrid = function( pin ) {
1152
1192
  if (!cell) { return false; }
1153
1193
  v = cell.textContent || cell.text;
1154
1194
  rd[ts.p.colModel[k+gi+si+ni].name] = v;
1155
- rowData.push( addCell(rid,v,k+gi+si+ni,j+rcnt,xmlr) );
1195
+ cs[cs.length] = addCell(rid,v,k+gi+si+ni,j+rcnt,xmlr);
1156
1196
  });
1157
1197
  } else {
1158
1198
  for(i = 0; i < f.length;i++) {
1159
1199
  v = $.jgrid.getXmlData( xmlr, f[i]);
1160
1200
  rd[ts.p.colModel[i+gi+si+ni].name] = v;
1161
- rowData.push( addCell(rid, v, i+gi+si+ni, j+rcnt, xmlr) );
1201
+ cs[cs.length] = addCell(rid, v, i+gi+si+ni, j+rcnt, xmlr);
1162
1202
  }
1163
1203
  }
1204
+ rowData.push(constructTr(rid, hiderow, cn1, rd, xmlr));
1205
+ rowData.push( cs.join(''));
1164
1206
  rowData.push("</tr>");
1165
1207
  if(ts.p.grouping) {
1166
1208
  var grlen = ts.p.groupingView.groupField.length, grpitem = [];
@@ -1177,6 +1219,7 @@ $.fn.jqGrid = function( pin ) {
1177
1219
  }
1178
1220
  if(ts.p.gridview === false ) {
1179
1221
  $("tbody:first",t).append(rowData.join(''));
1222
+ $(ts).triggerHandler("jqGridAfterInsertRow", [rid, rd, xmlr]);
1180
1223
  if(afterInsRow) {ts.p.afterInsertRow.call(ts,rid,rd,xmlr);}
1181
1224
  rowData=[];
1182
1225
  }
@@ -1263,7 +1306,7 @@ $.fn.jqGrid = function( pin ) {
1263
1306
  dReader = ts.p.jsonReader;
1264
1307
  frd='json';
1265
1308
  }
1266
- var ir=0,v,i,j,f=[],F,cur,gi=0,si=0,ni=0,len,drows,idn,rd={}, fpos, idr,rowData=[],cn=(ts.p.altRows === true) ? " "+ts.p.altclass:"",cn1,lp;
1309
+ var ir=0,v,i,j,f=[],F,cur,gi=ts.p.multiselect?1:0,si=ts.p.subGrid?1:0,ni=ts.p.rownumbers===true?1:0,len,drows,idn,rd={}, fpos, idr,rowData=[],cn=(ts.p.altRows === true) ? " "+ts.p.altclass:"",cn1,lp;
1267
1310
  ts.p.page = $.jgrid.getAccessor(data,dReader.page) || 0;
1268
1311
  lp = $.jgrid.getAccessor(data,dReader.total);
1269
1312
  ts.p.lastpage = lp === undefined ? 1 : lp;
@@ -1273,7 +1316,7 @@ $.fn.jqGrid = function( pin ) {
1273
1316
  F = f = reader(frd);
1274
1317
  }
1275
1318
  if( ts.p.keyIndex===false ) {
1276
- idn = dReader.id;
1319
+ idn = $.isFunction(dReader.id) ? dReader.id.call(ts, data) : dReader.id;
1277
1320
  } else {
1278
1321
  idn = ts.p.keyIndex;
1279
1322
  }
@@ -1289,10 +1332,7 @@ $.fn.jqGrid = function( pin ) {
1289
1332
  if (len > 0 && ts.p.page <= 0) { ts.p.page = 1; }
1290
1333
  var rn = parseInt(ts.p.rowNum,10),br=ts.p.scroll?$.jgrid.randId():1, altr;
1291
1334
  if (adjust) { rn *= adjust+1; }
1292
- var afterInsRow = $.isFunction(ts.p.afterInsertRow), grpdata={}, hiderow="";
1293
- if(ts.p.grouping && ts.p.groupingView.groupCollapse === true) {
1294
- hiderow = " style=\"display:none;\"";
1295
- }
1335
+ var afterInsRow = $.isFunction(ts.p.afterInsertRow), grpdata={}, hiderow=ts.p.grouping && ts.p.groupingView.groupCollapse === true;
1296
1336
  while (i<len) {
1297
1337
  cur = drows[i];
1298
1338
  idr = $.jgrid.getAccessor(cur,idn);
@@ -1309,18 +1349,15 @@ $.fn.jqGrid = function( pin ) {
1309
1349
  idr = ts.p.idPrefix + idr;
1310
1350
  altr = rcnt === 1 ? 0 : rcnt;
1311
1351
  cn1 = (altr+i)%2 == 1 ? cn : '';
1312
- rowData.push("<tr"+hiderow+" id=\""+ idr +"\" tabindex=\"-1\" role=\"row\" class= \"ui-widget-content jqgrow ui-row-"+ts.p.direction+""+cn1+"\">");
1313
- if(ts.p.rownumbers===true) {
1314
- rowData.push( addRowNum(0,i,ts.p.page,ts.p.rowNum) );
1315
- ni=1;
1352
+ var cs = [];
1353
+ if( ni ) {
1354
+ cs[cs.length] = addRowNum(0,i,ts.p.page,ts.p.rowNum);
1316
1355
  }
1317
- if(ts.p.multiselect){
1318
- rowData.push( addMulti(idr,ni,i) );
1319
- gi = 1;
1356
+ if( gi ){
1357
+ cs[cs.length] = addMulti(idr,ni,i);
1320
1358
  }
1321
- if (ts.p.subGrid) {
1322
- rowData.push( $(ts).jqGrid("addSubGridCell",gi+ni,i+rcnt) );
1323
- si= 1;
1359
+ if( si ) {
1360
+ cs[cs.length] += $(ts).jqGrid("addSubGridCell",gi+ni,i+rcnt);
1324
1361
  }
1325
1362
  if (dReader.repeatitems) {
1326
1363
  if(dReader.cell) {cur = $.jgrid.getAccessor(cur,dReader.cell);}
@@ -1328,9 +1365,11 @@ $.fn.jqGrid = function( pin ) {
1328
1365
  }
1329
1366
  for (j=0;j<F.length;j++) {
1330
1367
  v = $.jgrid.getAccessor(cur,F[j]);
1331
- rowData.push( addCell(idr,v,j+gi+si+ni,i+rcnt,cur) );
1368
+ cs[cs.length] = addCell(idr,v,j+gi+si+ni,i+rcnt,cur);
1332
1369
  rd[ts.p.colModel[j+gi+si+ni].name] = v;
1333
1370
  }
1371
+ rowData.push(constructTr(idr, hiderow, cn1, rd, cur));
1372
+ rowData.push( cs.join('') );
1334
1373
  rowData.push( "</tr>" );
1335
1374
  if(ts.p.grouping) {
1336
1375
  var grlen = ts.p.groupingView.groupField.length, grpitem = [];
@@ -1347,6 +1386,7 @@ $.fn.jqGrid = function( pin ) {
1347
1386
  }
1348
1387
  if(ts.p.gridview === false ) {
1349
1388
  $("#"+$.jgrid.jqID(ts.p.id)+" tbody:first").append(rowData.join(''));
1389
+ $(ts).triggerHandler("jqGridAfterInsertRow", [idr, rd, cur]);
1350
1390
  if(afterInsRow) {ts.p.afterInsertRow.call(ts,idr,rd,cur);}
1351
1391
  rowData=[];//ari=0;
1352
1392
  }
@@ -1426,7 +1466,7 @@ $.fn.jqGrid = function( pin ) {
1426
1466
  return;
1427
1467
  }
1428
1468
  var grpview = ts.p.grouping ? ts.p.groupingView : false;
1429
- $.each(ts.p.colModel,function(i,v){
1469
+ $.each(ts.p.colModel,function(){
1430
1470
  sorttype = this.sorttype || "text";
1431
1471
  if(sorttype == "date" || sorttype == "datetime") {
1432
1472
  if(this.formatter && typeof(this.formatter) === 'string' && this.formatter == 'date') {
@@ -1465,21 +1505,21 @@ $.fn.jqGrid = function( pin ) {
1465
1505
  return;
1466
1506
  }
1467
1507
  var compareFnMap = {
1468
- 'eq':function(queryObj, op) {return queryObj.equals;},
1469
- 'ne':function(queryObj,op) {return queryObj.notEquals;},
1470
- 'lt':function(queryObj,op) {return queryObj.less;},
1471
- 'le':function(queryObj,op) {return queryObj.lessOrEquals;},
1472
- 'gt':function(queryObj,op) {return queryObj.greater;},
1473
- 'ge':function(queryObj,op) {return queryObj.greaterOrEquals;},
1474
- 'cn':function(queryObj,op) {return queryObj.contains;},
1508
+ 'eq':function(queryObj) {return queryObj.equals;},
1509
+ 'ne':function(queryObj) {return queryObj.notEquals;},
1510
+ 'lt':function(queryObj) {return queryObj.less;},
1511
+ 'le':function(queryObj) {return queryObj.lessOrEquals;},
1512
+ 'gt':function(queryObj) {return queryObj.greater;},
1513
+ 'ge':function(queryObj) {return queryObj.greaterOrEquals;},
1514
+ 'cn':function(queryObj) {return queryObj.contains;},
1475
1515
  'nc':function(queryObj,op) {return op === "OR" ? queryObj.orNot().contains : queryObj.andNot().contains;},
1476
- 'bw':function(queryObj,op) {return queryObj.startsWith;},
1516
+ 'bw':function(queryObj) {return queryObj.startsWith;},
1477
1517
  'bn':function(queryObj,op) {return op === "OR" ? queryObj.orNot().startsWith : queryObj.andNot().startsWith;},
1478
1518
  'en':function(queryObj,op) {return op === "OR" ? queryObj.orNot().endsWith : queryObj.andNot().endsWith;},
1479
- 'ew':function(queryObj,op) {return queryObj.endsWith;},
1519
+ 'ew':function(queryObj) {return queryObj.endsWith;},
1480
1520
  'ni':function(queryObj,op) {return op === "OR" ? queryObj.orNot().equals : queryObj.andNot().equals;},
1481
- 'in':function(queryObj,op) {return queryObj.equals;},
1482
- 'nu':function(queryObj,op) {return queryObj.isNull;},
1521
+ 'in':function(queryObj) {return queryObj.equals;},
1522
+ 'nu':function(queryObj) {return queryObj.isNull;},
1483
1523
  'nn':function(queryObj,op) {return op === "OR" ? queryObj.orNot().isNull : queryObj.andNot().isNull;}
1484
1524
 
1485
1525
  },
@@ -1589,7 +1629,7 @@ $.fn.jqGrid = function( pin ) {
1589
1629
  if (rh) {
1590
1630
  var top = base * rh;
1591
1631
  var height = parseInt(ts.p.records,10) * rh;
1592
- $(">div:first",ts.grid.bDiv).css({height : height}).children("div:first").css({height:top,display:top?"":"none"});
1632
+ $(">div:first",ts.grid.bDiv).css({height : height}).children("div:first").css({height:top,display:top?"":"none"});
1593
1633
  }
1594
1634
  ts.grid.bDiv.scrollLeft = ts.grid.hDiv.scrollLeft;
1595
1635
  }
@@ -1644,8 +1684,9 @@ $.fn.jqGrid = function( pin ) {
1644
1684
  });
1645
1685
  }
1646
1686
  if(dnd && ts.p.jqgdnd) { $(ts).jqGrid('gridDnD','updateDnD');}
1687
+ $(ts).triggerHandler("jqGridGridComplete");
1647
1688
  if($.isFunction(ts.p.gridComplete)) {ts.p.gridComplete.call(ts);}
1648
- if($.isFunction(ts.p._complete)) {ts.p._complete.call(ts);}
1689
+ $(ts).triggerHandler("jqGridAfterGridComplete");
1649
1690
  },
1650
1691
  beginReq = function() {
1651
1692
  ts.grid.hDiv.loading = true;
@@ -1678,16 +1719,14 @@ $.fn.jqGrid = function( pin ) {
1678
1719
  },
1679
1720
  populate = function (npage) {
1680
1721
  if(!ts.grid.hDiv.loading) {
1681
- var pvis = ts.p.scroll && npage === false;
1682
- var prm = {}, dt, dstr, pN=ts.p.prmNames;
1722
+ var pvis = ts.p.scroll && npage === false,
1723
+ prm = {}, dt, dstr, pN=ts.p.prmNames;
1683
1724
  if(ts.p.page <=0) { ts.p.page = 1; }
1684
1725
  if(pN.search !== null) {prm[pN.search] = ts.p.search;} if(pN.nd !== null) {prm[pN.nd] = new Date().getTime();}
1685
1726
  if(pN.rows !== null) {prm[pN.rows]= ts.p.rowNum;} if(pN.page !== null) {prm[pN.page]= ts.p.page;}
1686
1727
  if(pN.sort !== null) {prm[pN.sort]= ts.p.sortname;} if(pN.order !== null) {prm[pN.order]= ts.p.sortorder;}
1687
1728
  if(ts.p.rowTotal !== null && pN.totalrows !== null) { prm[pN.totalrows]= ts.p.rowTotal; }
1688
- var lc = ts.p.loadComplete;
1689
- var lcf = $.isFunction(lc);
1690
- if (!lcf) { lc = null; }
1729
+ var lcf = $.isFunction(ts.p.loadComplete), lc = lcf ? ts.p.loadComplete : null;
1691
1730
  var adjust = 0;
1692
1731
  npage = npage || 1;
1693
1732
  if (npage > 1) {
@@ -1716,9 +1755,11 @@ $.fn.jqGrid = function( pin ) {
1716
1755
  }
1717
1756
  $.extend(ts.p.postData,prm);
1718
1757
  var rcnt = !ts.p.scroll ? 1 : ts.rows.length-1;
1758
+ var bfr = $(ts).triggerHandler("jqGridBeforeRequest");
1759
+ if (bfr === false || bfr === 'stop') { return; }
1719
1760
  if ($.isFunction(ts.p.datatype)) { ts.p.datatype.call(ts,ts.p.postData,"load_"+ts.p.id); return;}
1720
1761
  else if($.isFunction(ts.p.beforeRequest)) {
1721
- var bfr = ts.p.beforeRequest.call(ts);
1762
+ bfr = ts.p.beforeRequest.call(ts);
1722
1763
  if(bfr === undefined) { bfr = true; }
1723
1764
  if ( bfr === false ) { return; }
1724
1765
  }
@@ -1740,7 +1781,9 @@ $.fn.jqGrid = function( pin ) {
1740
1781
  }
1741
1782
  if(dt === "xml") { addXmlData(data,ts.grid.bDiv,rcnt,npage>1,adjust); }
1742
1783
  else { addJSONData(data,ts.grid.bDiv,rcnt,npage>1,adjust); }
1784
+ $(ts).triggerHandler("jqGridLoadComplete", [data]);
1743
1785
  if(lc) { lc.call(ts,data); }
1786
+ $(ts).triggerHandler("jqGridAfterLoadComplete", [data]);
1744
1787
  if (pvis) { ts.grid.populateVisible(); }
1745
1788
  if( ts.p.loadonce || ts.p.treeGrid) {ts.p.datatype = "local";}
1746
1789
  data=null;
@@ -1769,7 +1812,9 @@ $.fn.jqGrid = function( pin ) {
1769
1812
  beginReq();
1770
1813
  dstr = $.jgrid.stringToDoc(ts.p.datastr);
1771
1814
  addXmlData(dstr,ts.grid.bDiv);
1815
+ $(ts).triggerHandler("jqGridLoadComplete", [dstr]);
1772
1816
  if(lcf) {ts.p.loadComplete.call(ts,dstr);}
1817
+ $(ts).triggerHandler("jqGridAfterLoadComplete", [dstr]);
1773
1818
  ts.p.datatype = "local";
1774
1819
  ts.p.datastr = null;
1775
1820
  endReq();
@@ -1779,7 +1824,9 @@ $.fn.jqGrid = function( pin ) {
1779
1824
  if(typeof ts.p.datastr == 'string') { dstr = $.jgrid.parse(ts.p.datastr); }
1780
1825
  else { dstr = ts.p.datastr; }
1781
1826
  addJSONData(dstr,ts.grid.bDiv);
1827
+ $(ts).triggerHandler("jqGridLoadComplete", [dstr]);
1782
1828
  if(lcf) {ts.p.loadComplete.call(ts,dstr);}
1829
+ $(ts).triggerHandler("jqGridAfterLoadComplete", [dstr]);
1783
1830
  ts.p.datatype = "local";
1784
1831
  ts.p.datastr = null;
1785
1832
  endReq();
@@ -1790,7 +1837,9 @@ $.fn.jqGrid = function( pin ) {
1790
1837
  ts.p.datatype = "local";
1791
1838
  var req = addLocalData();
1792
1839
  addJSONData(req,ts.grid.bDiv,rcnt,npage>1,adjust);
1840
+ $(ts).triggerHandler("jqGridLoadComplete", [req]);
1793
1841
  if(lc) { lc.call(ts,req); }
1842
+ $(ts).triggerHandler("jqGridAfterLoadComplete", [req]);
1794
1843
  if (pvis) { ts.grid.populateVisible(); }
1795
1844
  endReq();
1796
1845
  break;
@@ -1863,27 +1912,27 @@ $.fn.jqGrid = function( pin ) {
1863
1912
  $('.ui-pg-selbox',"#"+pgcnt).bind('change',function() {
1864
1913
  ts.p.page = Math.round(ts.p.rowNum*(ts.p.page-1)/this.value-0.5)+1;
1865
1914
  ts.p.rowNum = this.value;
1866
- if(tp) { $('.ui-pg-selbox',ts.p.pager).val(this.value); }
1867
- else if(ts.p.toppager) { $('.ui-pg-selbox',ts.p.toppager).val(this.value); }
1915
+ if(ts.p.pager) { $('.ui-pg-selbox',ts.p.pager).val(this.value); }
1916
+ if(ts.p.toppager) { $('.ui-pg-selbox',ts.p.toppager).val(this.value); }
1868
1917
  if(!clearVals('records')) { return false; }
1869
1918
  populate();
1870
1919
  return false;
1871
1920
  });
1872
1921
  if(ts.p.pgbuttons===true) {
1873
- $(".ui-pg-button","#"+pgcnt).hover(function(e){
1922
+ $(".ui-pg-button","#"+pgcnt).hover(function(){
1874
1923
  if($(this).hasClass('ui-state-disabled')) {
1875
1924
  this.style.cursor='default';
1876
1925
  } else {
1877
1926
  $(this).addClass('ui-state-hover');
1878
1927
  this.style.cursor='pointer';
1879
1928
  }
1880
- },function(e) {
1929
+ },function() {
1881
1930
  if(!$(this).hasClass('ui-state-disabled')) {
1882
1931
  $(this).removeClass('ui-state-hover');
1883
1932
  this.style.cursor= "default";
1884
1933
  }
1885
1934
  });
1886
- $("#first"+$.jgrid.jqID(tp)+", #prev"+$.jgrid.jqID(tp)+", #next"+$.jgrid.jqID(tp)+", #last"+$.jgrid.jqID(tp)).click( function(e) {
1935
+ $("#first"+$.jgrid.jqID(tp)+", #prev"+$.jgrid.jqID(tp)+", #next"+$.jgrid.jqID(tp)+", #last"+$.jgrid.jqID(tp)).click( function() {
1887
1936
  var cp = intNum(ts.p.page,1),
1888
1937
  last = intNum(ts.p.lastpage,1), selclick = false,
1889
1938
  fp=true, pp=true, np=true,lp=true;
@@ -1948,6 +1997,10 @@ $.fn.jqGrid = function( pin ) {
1948
1997
  index = index.substring(5 + ts.p.id.length + 1); // bad to be changed!?!
1949
1998
  ts.p.sortname = ts.p.colModel[idxcol].index || index;
1950
1999
  so = ts.p.sortorder;
2000
+ if ($(ts).triggerHandler("jqGridSortCol", [index, idxcol, so]) === 'stop') {
2001
+ ts.p.lastsort = idxcol;
2002
+ return;
2003
+ }
1951
2004
  if($.isFunction(ts.p.onSortCol)) {if (ts.p.onSortCol.call(ts,index,idxcol,so)=='stop') {ts.p.lastsort = idxcol; return;}}
1952
2005
  if(ts.p.datatype == "local") {
1953
2006
  if(ts.p.deselectAfterSort) {$(ts).jqGrid("resetSelection");}
@@ -1972,9 +2025,9 @@ $.fn.jqGrid = function( pin ) {
1972
2025
  if(ts.p.sortname != index && idxcol) {ts.p.lastsort = idxcol;}
1973
2026
  },
1974
2027
  setColWidth = function () {
1975
- var initwidth = 0, brd=isSafari? 0: ts.p.cellLayout, vc=0, lvc, scw=ts.p.scrollOffset,cw,hs=false,aw,gw=0,
2028
+ var initwidth = 0, brd=isSafari? 0: intNum(ts.p.cellLayout,0), vc=0, lvc, scw=intNum(ts.p.scrollOffset,0),cw,hs=false,aw,gw=0,
1976
2029
  cl = 0, cr;
1977
- $.each(ts.p.colModel, function(i) {
2030
+ $.each(ts.p.colModel, function() {
1978
2031
  if(typeof this.hidden === 'undefined') {this.hidden=false;}
1979
2032
  this.widthOrg = cw = intNum(this.width,0);
1980
2033
  if(this.hidden===false){
@@ -2168,15 +2221,15 @@ $.fn.jqGrid = function( pin ) {
2168
2221
  $(ts.rows).each(function(i) {
2169
2222
  if (i>0) {
2170
2223
  if(!$(this).hasClass("ui-subgrid") && !$(this).hasClass("jqgroup") && !$(this).hasClass('ui-state-disabled')){
2171
- $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id) )[ts.p.useProp ? 'prop': 'attr']("checked",true);
2172
- $(this).addClass("ui-state-highlight").attr("aria-selected","true");
2173
- ts.p.selarrrow.push(this.id);
2224
+ $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id) )[ts.p.useProp ? 'prop': 'attr']("checked",true);
2225
+ $(this).addClass("ui-state-highlight").attr("aria-selected","true");
2226
+ ts.p.selarrrow.push(this.id);
2174
2227
  ts.p.selrow = this.id;
2175
2228
  if(froz) {
2176
2229
  $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id), ts.grid.fbDiv )[ts.p.useProp ? 'prop': 'attr']("checked",true);
2177
2230
  $("#"+$.jgrid.jqID(this.id), ts.grid.fbDiv).addClass("ui-state-highlight");
2178
2231
  }
2179
- }
2232
+ }
2180
2233
  }
2181
2234
  });
2182
2235
  chk=true;
@@ -2199,6 +2252,7 @@ $.fn.jqGrid = function( pin ) {
2199
2252
  ts.p.selrow = null;
2200
2253
  chk=false;
2201
2254
  }
2255
+ $(ts).triggerHandler("jqGridSelectAll", [chk ? ts.p.selarrrow : emp, chk]);
2202
2256
  if($.isFunction(ts.p.onSelectAll)) {ts.p.onSelectAll.call(ts, chk ? ts.p.selarrrow : emp,chk);}
2203
2257
  });
2204
2258
  }
@@ -2291,8 +2345,8 @@ $.fn.jqGrid = function( pin ) {
2291
2345
  $(hb).append(hTable);
2292
2346
  hTable = null;
2293
2347
  if(hg) { $(grid.hDiv).hide(); }
2294
- if(ts.p.pager){
2295
- // TBD -- escape ts.p.pager here?
2348
+ if(ts.p.pager){
2349
+ // TBD -- escape ts.p.pager here?
2296
2350
  if(typeof ts.p.pager == "string") {if(ts.p.pager.substr(0,1) !="#") { ts.p.pager = "#"+ts.p.pager;} }
2297
2351
  else { ts.p.pager = "#"+ $(ts.p.pager).attr("id");}
2298
2352
  $(ts.p.pager).css({width: grid.width+"px"}).appendTo(eg).addClass('ui-state-default ui-jqgrid-pager ui-corner-bottom');
@@ -2310,29 +2364,36 @@ $.fn.jqGrid = function( pin ) {
2310
2364
  $(ptr).removeClass("ui-state-hover");
2311
2365
  });
2312
2366
  }
2313
- var ri,ci;
2367
+ var ri,ci, tdHtml;
2314
2368
  $(ts).before(grid.hDiv).click(function(e) {
2315
2369
  td = e.target;
2316
2370
  ptr = $(td,ts.rows).closest("tr.jqgrow");
2317
- if($(ptr).length === 0 || ptr[0].className.indexOf( 'ui-state-disabled' ) > -1 || $(td,ts).closest("table.ui-jqgrid-btable")[0].id.replace("_frozen","") !== ts.id ) {
2371
+ 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 ) {
2318
2372
  return this;
2319
2373
  }
2320
2374
  var scb = $(td).hasClass("cbox"),
2321
- cSel = true;
2322
- if($.isFunction(ts.p.beforeSelectRow)) { cSel = ts.p.beforeSelectRow.call(ts,ptr[0].id, e); }
2323
- if (td.tagName == 'A' || ((td.tagName == 'INPUT' || td.tagName == 'TEXTAREA' || td.tagName == 'OPTION' || td.tagName == 'SELECT' ) && !scb) ) { return this; }
2375
+ cSel = $(ts).triggerHandler("jqGridBeforeSelectRow", [ptr[0].id, e]);
2376
+ cSel = (cSel === false || cSel === 'stop') ? false : true;
2377
+ if(cSel && $.isFunction(ts.p.beforeSelectRow)) { cSel = ts.p.beforeSelectRow.call(ts,ptr[0].id, e); }
2378
+ if (td.tagName == 'A' || ((td.tagName == 'INPUT' || td.tagName == 'TEXTAREA' || td.tagName == 'OPTION' || td.tagName == 'SELECT' ) && !scb) ) { return; }
2324
2379
  if(cSel === true) {
2380
+ ri = ptr[0].id;
2381
+ ci = $.jgrid.getCellIndex(td);
2382
+ tdHtml = $(td).closest("td,th").html();
2383
+ $(ts).triggerHandler("jqGridCellSelect", [ri,ci,tdHtml,e]);
2384
+ if($.isFunction(ts.p.onCellSelect)) {
2385
+ ts.p.onCellSelect.call(ts,ri,ci,tdHtml,e);
2386
+ }
2325
2387
  if(ts.p.cellEdit === true) {
2326
2388
  if(ts.p.multiselect && scb){
2327
- $(ts).jqGrid("setSelection",ptr[0].id,true);
2389
+ $(ts).jqGrid("setSelection", ri ,true,e);
2328
2390
  } else {
2329
2391
  ri = ptr[0].rowIndex;
2330
- ci = $.jgrid.getCellIndex(td);
2331
2392
  try {$(ts).jqGrid("editCell",ri,ci,true);} catch (_) {}
2332
2393
  }
2333
2394
  } else if ( !ts.p.multikey ) {
2334
2395
  if(ts.p.multiselect && ts.p.multiboxonly) {
2335
- if(scb){$(ts).jqGrid("setSelection",ptr[0].id,true);}
2396
+ if(scb){$(ts).jqGrid("setSelection",ri,true,e);}
2336
2397
  else {
2337
2398
  var frz = ts.p.frozenColumns ? ts.p.id+"_frozen" : "";
2338
2399
  $(ts.p.selarrrow).each(function(i,n){
@@ -2345,29 +2406,20 @@ $.fn.jqGrid = function( pin ) {
2345
2406
  }
2346
2407
  });
2347
2408
  ts.p.selarrrow = [];
2348
- $(ts).jqGrid("setSelection",ptr[0].id,true);
2409
+ $(ts).jqGrid("setSelection",ri,true,e);
2349
2410
  }
2350
2411
  } else {
2351
- $(ts).jqGrid("setSelection",ptr[0].id,true);
2412
+ $(ts).jqGrid("setSelection",ri,true,e);
2352
2413
  }
2353
2414
  } else {
2354
2415
  if(e[ts.p.multikey]) {
2355
- $(ts).jqGrid("setSelection",ptr[0].id,true);
2416
+ $(ts).jqGrid("setSelection",ri,true,e);
2356
2417
  } else if(ts.p.multiselect && scb) {
2357
- scb = $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+ptr[0].id).is(":checked");
2358
- $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+ptr[0].id)[ts.p.useProp ? 'prop' : 'attr']("checked", scb);
2418
+ scb = $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+ri).is(":checked");
2419
+ $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+ri)[ts.p.useProp ? 'prop' : 'attr']("checked", scb);
2359
2420
  }
2360
2421
  }
2361
- if($.isFunction(ts.p.onCellSelect)) {
2362
- ri = ptr[0].id;
2363
- ci = $.jgrid.getCellIndex(td);
2364
- ts.p.onCellSelect.call(ts,ri,ci,$(td).html(),e);
2365
- }
2366
- //e.stopPropagation();
2367
2422
  }
2368
- //else {
2369
- return this;
2370
- //}
2371
2423
  }).bind('reloadGrid', function(e,opts) {
2372
2424
  if(ts.p.treeGrid ===true) { ts.p.datatype = ts.p.treedatatype;}
2373
2425
  if (opts && opts.current) {
@@ -2392,36 +2444,32 @@ $.fn.jqGrid = function( pin ) {
2392
2444
  }
2393
2445
  }
2394
2446
  if (ts.grid.prevRowHeight && ts.p.scroll) {
2395
- delete ts.p.lastpage;
2447
+ delete ts.p.lastpage;
2396
2448
  ts.grid.populateVisible();
2397
2449
  } else {
2398
2450
  ts.grid.populate();
2399
2451
  }
2400
2452
  return false;
2453
+ })
2454
+ .dblclick(function(e) {
2455
+ td = e.target;
2456
+ ptr = $(td,ts.rows).closest("tr.jqgrow");
2457
+ if($(ptr).length === 0 ){return;}
2458
+ ri = ptr[0].rowIndex;
2459
+ ci = $.jgrid.getCellIndex(td);
2460
+ $(ts).triggerHandler("jqGridDblClickRow", [$(ptr).attr("id"),ri,ci,e]);
2461
+ if ($.isFunction(this.p.ondblClickRow)) { ts.p.ondblClickRow.call(ts,$(ptr).attr("id"),ri,ci, e); }
2462
+ })
2463
+ .bind('contextmenu', function(e) {
2464
+ td = e.target;
2465
+ ptr = $(td,ts.rows).closest("tr.jqgrow");
2466
+ if($(ptr).length === 0 ){return;}
2467
+ if(!ts.p.multiselect) { $(ts).jqGrid("setSelection",ptr[0].id,true,e); }
2468
+ ri = ptr[0].rowIndex;
2469
+ ci = $.jgrid.getCellIndex(td);
2470
+ $(ts).triggerHandler("jqGridRightClickRow", [$(ptr).attr("id"),ri,ci,e]);
2471
+ if ($.isFunction(this.p.onRightClickRow)) { ts.p.onRightClickRow.call(ts,$(ptr).attr("id"),ri,ci, e); }
2401
2472
  });
2402
- if( $.isFunction(this.p.ondblClickRow) ) {
2403
- $(this).dblclick(function(e) {
2404
- td = e.target;
2405
- ptr = $(td,ts.rows).closest("tr.jqgrow");
2406
- if($(ptr).length === 0 ){return false;}
2407
- ri = ptr[0].rowIndex;
2408
- ci = $.jgrid.getCellIndex(td);
2409
- ts.p.ondblClickRow.call(ts,$(ptr).attr("id"),ri,ci, e);
2410
- return false;
2411
- });
2412
- }
2413
- if ($.isFunction(this.p.onRightClickRow)) {
2414
- $(this).bind('contextmenu', function(e) {
2415
- td = e.target;
2416
- ptr = $(td,ts.rows).closest("tr.jqgrow");
2417
- if($(ptr).length === 0 ){return false;}
2418
- if(!ts.p.multiselect) { $(ts).jqGrid("setSelection",ptr[0].id,true); }
2419
- ri = ptr[0].rowIndex;
2420
- ci = $.jgrid.getCellIndex(td);
2421
- ts.p.onRightClickRow.call(ts,$(ptr).attr("id"),ri,ci, e);
2422
- return false;
2423
- });
2424
- }
2425
2473
  grid.bDiv = document.createElement("div");
2426
2474
  if(isMSIE) { if(String(ts.p.height).toLowerCase() === "auto") { ts.p.height = "100%"; } }
2427
2475
  $(grid.bDiv)
@@ -2498,6 +2546,7 @@ $.fn.jqGrid = function( pin ) {
2498
2546
  $("span",self).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s");
2499
2547
  ts.p.gridstate = 'hidden';
2500
2548
  if($("#gbox_"+$.jgrid.jqID(ts.p.id)).hasClass("ui-resizable")) { $(".ui-resizable-handle","#gbox_"+$.jgrid.jqID(ts.p.id)).hide(); }
2549
+ $(ts).triggerHandler("jqGridHeaderClick", [ts.p.gridstate,e]);
2501
2550
  if(onHdCl) {if(!hg) {ts.p.onHeaderClick.call(ts,ts.p.gridstate,e);}}
2502
2551
  }
2503
2552
  });
@@ -2509,6 +2558,7 @@ $.fn.jqGrid = function( pin ) {
2509
2558
  if(hg) {ts.p.datatype = tdt;populate();hg=false;}
2510
2559
  ts.p.gridstate = 'visible';
2511
2560
  if($("#gbox_"+$.jgrid.jqID(ts.p.id)).hasClass("ui-resizable")) { $(".ui-resizable-handle","#gbox_"+$.jgrid.jqID(ts.p.id)).show(); }
2561
+ $(ts).triggerHandler("jqGridHeaderClick", [ts.p.gridstate,e]);
2512
2562
  if(onHdCl) {if(!hg) {ts.p.onHeaderClick.call(ts,ts.p.gridstate,e);}}
2513
2563
  }
2514
2564
  });
@@ -2523,7 +2573,7 @@ $.fn.jqGrid = function( pin ) {
2523
2573
  if(grid.resizing){grid.dragMove(e);return false;}
2524
2574
  });
2525
2575
  $(".ui-jqgrid-labels",grid.hDiv).bind("selectstart", function () { return false; });
2526
- $(document).mouseup(function (e) {
2576
+ $(document).mouseup(function () {
2527
2577
  if(grid.resizing) { grid.dragEnd(); return false;}
2528
2578
  return true;
2529
2579
  });
@@ -2573,7 +2623,7 @@ $.jgrid.extend({
2573
2623
  });
2574
2624
  return ids;
2575
2625
  },
2576
- setSelection : function(selection,onsr) {
2626
+ setSelection : function(selection,onsr, e) {
2577
2627
  return this.each(function(){
2578
2628
  var $t = this, stat,pt, ner, ia, tpsr, fid;
2579
2629
  if(selection === undefined) { return; }
@@ -2615,7 +2665,8 @@ $.jgrid.extend({
2615
2665
  stat = false;
2616
2666
  }
2617
2667
  $t.p.selrow = pt.id;
2618
- if( $t.p.onSelectRow && onsr) { $t.p.onSelectRow.call($t, pt.id, stat); }
2668
+ $($t).triggerHandler("jqGridSelectRow", [pt.id, stat, e]);
2669
+ if( $t.p.onSelectRow && onsr) { $t.p.onSelectRow.call($t, pt.id, stat, e); }
2619
2670
  }
2620
2671
  } else {
2621
2672
  //unselect selectall checkbox when deselecting a specific row
@@ -2625,16 +2676,15 @@ $.jgrid.extend({
2625
2676
  if ( ia === -1 ){
2626
2677
  if(pt.className !== "ui-subgrid") { $(pt).addClass("ui-state-highlight").attr("aria-selected","true");}
2627
2678
  stat = true;
2628
- $("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID($t.p.selrow))[$t.p.useProp ? 'prop': 'attr']("checked",stat);
2629
2679
  $t.p.selarrrow.push($t.p.selrow);
2630
2680
  } else {
2631
2681
  if(pt.className !== "ui-subgrid") { $(pt).removeClass("ui-state-highlight").attr("aria-selected","false");}
2632
2682
  stat = false;
2633
- $("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID($t.p.selrow))[$t.p.useProp ? 'prop': 'attr']("checked",stat);
2634
2683
  $t.p.selarrrow.splice(ia,1);
2635
2684
  tpsr = $t.p.selarrrow[0];
2636
2685
  $t.p.selrow = (tpsr === undefined) ? null : tpsr;
2637
2686
  }
2687
+ $("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID(pt.id))[$t.p.useProp ? 'prop': 'attr']("checked",stat);
2638
2688
  if(fid) {
2639
2689
  if(ia === -1) {
2640
2690
  $("#"+$.jgrid.jqID(selection), "#"+$.jgrid.jqID(fid)).addClass("ui-state-highlight");
@@ -2643,24 +2693,31 @@ $.jgrid.extend({
2643
2693
  }
2644
2694
  $("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID(selection), "#"+$.jgrid.jqID(fid))[$t.p.useProp ? 'prop': 'attr']("checked",stat);
2645
2695
  }
2646
- if( $t.p.onSelectRow && onsr) { $t.p.onSelectRow.call($t, pt.id , stat); }
2696
+ $($t).triggerHandler("jqGridSelectRow", [pt.id, stat, e]);
2697
+ if( $t.p.onSelectRow && onsr) { $t.p.onSelectRow.call($t, pt.id , stat, e); }
2647
2698
  }
2648
2699
  });
2649
2700
  },
2650
2701
  resetSelection : function( rowid ){
2651
2702
  return this.each(function(){
2652
- var t = this, ind, sr;
2703
+ var t = this, ind, sr, fid;
2704
+ if( t.p.frozenColumns === true ) {
2705
+ fid = t.p.id+"_frozen";
2706
+ }
2653
2707
  if(typeof(rowid) !== "undefined" ) {
2654
2708
  sr = rowid === t.p.selrow ? t.p.selrow : rowid;
2655
2709
  $("#"+$.jgrid.jqID(t.p.id)+" tbody:first tr#"+$.jgrid.jqID(sr)).removeClass("ui-state-highlight").attr("aria-selected","false");
2710
+ if (fid) { $("#"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(fid)).removeClass("ui-state-highlight"); }
2656
2711
  if(t.p.multiselect) {
2657
- $("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(sr))[t.p.useProp ? 'prop': 'attr']("checked",false);
2712
+ $("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(t.p.id))[t.p.useProp ? 'prop': 'attr']("checked",false);
2713
+ if(fid) { $("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(fid))[t.p.useProp ? 'prop': 'attr']("checked",false); }
2658
2714
  t.setHeadCheckBox( false);
2659
2715
  }
2660
2716
  sr = null;
2661
2717
  } else if(!t.p.multiselect) {
2662
2718
  if(t.p.selrow) {
2663
2719
  $("#"+$.jgrid.jqID(t.p.id)+" tbody:first tr#"+$.jgrid.jqID(t.p.selrow)).removeClass("ui-state-highlight").attr("aria-selected","false");
2720
+ if(fid) { $("#"+$.jgrid.jqID(t.p.selrow), "#"+$.jgrid.jqID(fid)).removeClass("ui-state-highlight"); }
2664
2721
  t.p.selrow = null;
2665
2722
  }
2666
2723
  } else {
@@ -2668,6 +2725,10 @@ $.jgrid.extend({
2668
2725
  ind = t.rows.namedItem(n);
2669
2726
  $(ind).removeClass("ui-state-highlight").attr("aria-selected","false");
2670
2727
  $("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(n))[t.p.useProp ? 'prop': 'attr']("checked",false);
2728
+ if(fid) {
2729
+ $("#"+$.jgrid.jqID(n), "#"+$.jgrid.jqID(fid)).removeClass("ui-state-highlight");
2730
+ $("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(n), "#"+$.jgrid.jqID(fid))[t.p.useProp ? 'prop': 'attr']("checked",false);
2731
+ }
2671
2732
  });
2672
2733
  t.setHeadCheckBox( false );
2673
2734
  t.p.selarrrow = [];
@@ -2704,7 +2765,7 @@ $.jgrid.extend({
2704
2765
  res[nm] = $.jgrid.htmlDecode($("span:first",this).html());
2705
2766
  } else {
2706
2767
  try {
2707
- res[nm] = $.unformat(this,{rowId:ind.id, colModel:$t.p.colModel[i]},i);
2768
+ res[nm] = $.unformat.call($t,this,{rowId:ind.id, colModel:$t.p.colModel[i]},i);
2708
2769
  } catch (e){
2709
2770
  res[nm] = $.jgrid.htmlDecode($(this).html());
2710
2771
  }
@@ -2738,7 +2799,8 @@ $.jgrid.extend({
2738
2799
  if(rowid == $t.p.selrow) {$t.p.selrow=null;}
2739
2800
  }
2740
2801
  if($t.p.datatype == 'local') {
2741
- var pos = $t.p._index[rowid];
2802
+ var id = $.jgrid.stripPref($t.p.idPrefix, rowid),
2803
+ pos = $t.p._index[id];
2742
2804
  if(typeof(pos) != 'undefined') {
2743
2805
  $t.p.data.splice(pos,1);
2744
2806
  $t.refreshIndex();
@@ -2766,7 +2828,7 @@ $.jgrid.extend({
2766
2828
  $(this.p.colModel).each(function(i){
2767
2829
  nm = this.name;
2768
2830
  if( data[nm] !== undefined) {
2769
- lcdata[nm] = this.formatter && typeof(this.formatter) === 'string' && this.formatter == 'date' ? $.unformat.date(data[nm],this) : data[nm];
2831
+ lcdata[nm] = this.formatter && typeof(this.formatter) === 'string' && this.formatter == 'date' ? $.unformat.date.call(t,data[nm],this) : data[nm];
2770
2832
  vl = t.formatter( rowid, data[nm], i, data, 'edit');
2771
2833
  title = this.title ? {"title":$.jgrid.stripHtml(vl)} : {};
2772
2834
  if(t.p.treeGrid===true && nm == t.p.ExpandColumn) {
@@ -2777,7 +2839,8 @@ $.jgrid.extend({
2777
2839
  }
2778
2840
  });
2779
2841
  if(t.p.datatype == 'local') {
2780
- var pos = t.p._index[rowid];
2842
+ var id = $.jgrid.stripPref(t.p.idPrefix, rowid),
2843
+ pos = t.p._index[id];
2781
2844
  if(t.p.treeGrid) {
2782
2845
  for(var key in t.p.treeReader ){
2783
2846
  if(lcdata.hasOwnProperty(t.p.treeReader[key])) {
@@ -2796,14 +2859,14 @@ $.jgrid.extend({
2796
2859
  }
2797
2860
  if(success) {
2798
2861
  if(cp === 'string') {$(ind).addClass(cssp);} else if(cp === 'object') {$(ind).css(cssp);}
2799
- if($.isFunction(t.p._complete)) {t.p._complete.call(t);}
2862
+ $(t).triggerHandler("jqGridAfterGridComplete");
2800
2863
  }
2801
2864
  });
2802
2865
  return success;
2803
2866
  },
2804
2867
  addRowData : function(rowid,rdata,pos,src) {
2805
2868
  if(!pos) {pos = "last";}
2806
- var success = false, nm, row, gi, si, ni,sind, i, v, prp="", aradd, cnm, cn, data, cm;
2869
+ var success = false, nm, row, gi, si, ni,sind, i, v, prp="", aradd, cnm, cn, data, cm, id;
2807
2870
  if(rdata) {
2808
2871
  if($.isArray(rdata)) {
2809
2872
  aradd=true;
@@ -2839,6 +2902,7 @@ $.jgrid.extend({
2839
2902
  catch (e) {rowid = $.jgrid.randId();}
2840
2903
  cna = t.p.altRows === true ? (t.rows.length-1)%2 === 0 ? cn : "" : "";
2841
2904
  }
2905
+ id = rowid;
2842
2906
  rowid = t.p.idPrefix + rowid;
2843
2907
  if(ni){
2844
2908
  prp = t.formatCol(0,1,'',null,rowid, true);
@@ -2855,7 +2919,7 @@ $.jgrid.extend({
2855
2919
  for(i = gi+si+ni; i < t.p.colModel.length;i++){
2856
2920
  cm = t.p.colModel[i];
2857
2921
  nm = cm.name;
2858
- lcdata[nm] = cm.formatter && typeof(cm.formatter) === 'string' && cm.formatter == 'date' ? $.unformat.date(data[nm],cm) : data[nm];
2922
+ lcdata[nm] = cm.formatter && typeof(cm.formatter) === 'string' && cm.formatter == 'date' ? $.unformat.date.call(t,data[nm],cm) : data[nm];
2859
2923
  v = t.formatter( rowid, $.jgrid.getAccessor(data,nm), i, data, 'edit');
2860
2924
  prp = t.formatCol(i,1,v, data, rowid, true);
2861
2925
  row += "<td role=\"gridcell\" aria-describedby=\""+t.p.id+"_"+nm+"\" "+prp+">"+v+"</td>";
@@ -2893,11 +2957,12 @@ $.jgrid.extend({
2893
2957
  }
2894
2958
  t.p.records++;
2895
2959
  t.p.reccount++;
2960
+ $(t).triggerHandler("jqGridAfterInsertRow", [rowid,data,data]);
2896
2961
  if(air) { t.p.afterInsertRow.call(t,rowid,data,data); }
2897
2962
  k++;
2898
2963
  if(t.p.datatype == 'local') {
2899
- lcdata[t.p.localReader.id] = rowid;
2900
- t.p._index[rowid] = t.p.data.length;
2964
+ lcdata[t.p.localReader.id] = id;
2965
+ t.p._index[id] = t.p.data.length;
2901
2966
  t.p.data.push(lcdata);
2902
2967
  lcdata = {};
2903
2968
  }
@@ -2967,14 +3032,17 @@ $.jgrid.extend({
2967
3032
  $("tr",$t.grid.hDiv).each(function(){
2968
3033
  $(this.cells[i]).css("display", show);
2969
3034
  });
2970
- $($t.rows).each(function(j){
2971
- $(this.cells[i]).css("display", show);
3035
+ $($t.rows).each(function(){
3036
+ if (!$(this).hasClass("jqgroup")) {
3037
+ $(this.cells[i]).css("display", show);
3038
+ }
2972
3039
  });
2973
3040
  if($t.p.footerrow) { $("tr.footrow td:eq("+i+")", $t.grid.sDiv).css("display", show); }
2974
3041
  cw = this.widthOrg? this.widthOrg: parseInt(this.width,10);
2975
3042
  if(show === "none") {$t.p.tblwidth -= cw+brd;} else {$t.p.tblwidth += cw+brd;}
2976
3043
  this.hidden = !sw;
2977
3044
  fndh=true;
3045
+ $($t).triggerHandler("jqGridShowHideCol", [sw,this.name,i]);
2978
3046
  }
2979
3047
  });
2980
3048
  if(fndh===true) {
@@ -3036,6 +3104,7 @@ $.jgrid.extend({
3036
3104
  }
3037
3105
  ts.p.lastsort = $.inArray(ts.p.lastsort, permutation);
3038
3106
  if(ts.p.treeGrid) { ts.p.expColInd = $.inArray(ts.p.expColInd, permutation); }
3107
+ $(ts).triggerHandler("jqGridRemapColumns", [permutation, updateCells, keepHeader]);
3039
3108
  },
3040
3109
  setGridWidth : function(nwidth, shrink) {
3041
3110
  return this.each(function(){
@@ -3061,7 +3130,7 @@ $.jgrid.extend({
3061
3130
  if($t.p.footerrow) { $($t.grid.sDiv).css("width",nwidth+"px"); }
3062
3131
  if(shrink ===false && $t.p.forceFit === true) {$t.p.forceFit=false;}
3063
3132
  if(shrink===true) {
3064
- $.each($t.p.colModel, function(i) {
3133
+ $.each($t.p.colModel, function() {
3065
3134
  if(this.hidden===false){
3066
3135
  cw = this.widthOrg? this.widthOrg: parseInt(this.width,10);
3067
3136
  initwidth += cw+brd;
@@ -3100,7 +3169,7 @@ $.jgrid.extend({
3100
3169
  });
3101
3170
 
3102
3171
  if (!lvc) { return; }
3103
-
3172
+
3104
3173
  cr =0;
3105
3174
  if (hs) {
3106
3175
  if(nwidth-gw-(initwidth+brd*vc) !== scw){
@@ -3143,7 +3212,7 @@ $.jgrid.extend({
3143
3212
  bDiv.css({height: nh+(isNaN(nh)?"":"px")});
3144
3213
  if($t.p.frozenColumns === true){
3145
3214
  //follow the original set height to use 16, better scrollbar width detection
3146
- $('#'+$t.p.id+"_frozen").parent().height(bDiv.height() - 16);
3215
+ $('#'+$.jgrid.jqID($t.p.id)+"_frozen").parent().height(bDiv.height() - 16);
3147
3216
  }
3148
3217
  $t.p.height = nh;
3149
3218
  if ($t.p.scroll) { $t.grid.populateVisible(); }
@@ -3206,7 +3275,7 @@ $.jgrid.extend({
3206
3275
  }
3207
3276
  if($t.p.datatype == "local") {
3208
3277
  var cm = $t.p.colModel[pos], index;
3209
- nData = cm.formatter && typeof(cm.formatter) === 'string' && cm.formatter == 'date' ? $.unformat.date(nData,cm) : nData;
3278
+ nData = cm.formatter && typeof(cm.formatter) === 'string' && cm.formatter == 'date' ? $.unformat.date.call($t,nData,cm) : nData;
3210
3279
  index = $t.p._index[rowid];
3211
3280
  if(typeof index != "undefined") {
3212
3281
  $t.p.data[index][cm.name] = nData;
@@ -3239,7 +3308,7 @@ $.jgrid.extend({
3239
3308
  var ind = $t.rows.namedItem(rowid);
3240
3309
  if(ind) {
3241
3310
  try {
3242
- ret = $.unformat($("td:eq("+pos+")",ind),{rowId:ind.id, colModel:$t.p.colModel[pos]},pos);
3311
+ ret = $.unformat.call($t,$("td:eq("+pos+")",ind),{rowId:ind.id, colModel:$t.p.colModel[pos]},pos);
3243
3312
  } catch (e){
3244
3313
  ret = $.jgrid.htmlDecode($("td:eq("+pos+")",ind).html());
3245
3314
  }
@@ -3268,7 +3337,7 @@ $.jgrid.extend({
3268
3337
  while(i<ln){
3269
3338
  if($($t.rows[i]).hasClass('jqgrow')) {
3270
3339
  try {
3271
- val = $.unformat($($t.rows[i].cells[pos]),{rowId:$t.rows[i].id, colModel:$t.p.colModel[pos]},pos);
3340
+ val = $.unformat.call($t,$($t.rows[i].cells[pos]),{rowId:$t.rows[i].id, colModel:$t.p.colModel[pos]},pos);
3272
3341
  } catch (e) {
3273
3342
  val = $.jgrid.htmlDecode($t.rows[i].cells[pos].innerHTML);
3274
3343
  }
@@ -3362,7 +3431,7 @@ $.jgrid.extend({
3362
3431
  id = r.id;
3363
3432
  }
3364
3433
  }
3365
- $($t).jqGrid('setSelection', id);
3434
+ $($t).jqGrid('setSelection', id, true, event);
3366
3435
  }
3367
3436
  //if key is down arrow
3368
3437
  if(event.keyCode === 40){
@@ -3378,48 +3447,48 @@ $.jgrid.extend({
3378
3447
  id = r.id;
3379
3448
  }
3380
3449
  }
3381
- $($t).jqGrid('setSelection', id);
3450
+ $($t).jqGrid('setSelection', id, true, event);
3382
3451
  }
3383
3452
  // left
3384
3453
  if(event.keyCode === 37 ){
3385
3454
  if($t.p.treeGrid && $t.p.data[mind][expanded]) {
3386
3455
  $(target).find("div.treeclick").trigger('click');
3387
3456
  }
3457
+ $($t).triggerHandler("jqGridKeyLeft", [$t.p.selrow]);
3388
3458
  if($.isFunction(o.onLeftKey)) {
3389
3459
  o.onLeftKey.call($t, $t.p.selrow);
3390
- }
3460
+ }
3391
3461
  }
3392
3462
  // right
3393
3463
  if(event.keyCode === 39 ){
3394
3464
  if($t.p.treeGrid && !$t.p.data[mind][expanded]) {
3395
3465
  $(target).find("div.treeclick").trigger('click');
3396
3466
  }
3467
+ $($t).triggerHandler("jqGridKeyRight", [$t.p.selrow]);
3397
3468
  if($.isFunction(o.onRightKey)) {
3398
3469
  o.onRightKey.call($t, $t.p.selrow);
3470
+ }
3399
3471
  }
3400
- }
3401
- //return false;
3402
3472
  }
3403
3473
  //check if enter was pressed on a grid or treegrid node
3404
3474
  else if( event.keyCode === 13 ){
3475
+ $($t).triggerHandler("jqGridKeyEnter", [$t.p.selrow]);
3405
3476
  if($.isFunction(o.onEnter)) {
3406
3477
  o.onEnter.call($t, $t.p.selrow);
3407
3478
  }
3408
- //return false;
3409
3479
  } else if(event.keyCode === 32) {
3480
+ $($t).triggerHandler("jqGridKeySpace", [$t.p.selrow]);
3410
3481
  if($.isFunction(o.onSpace)) {
3411
3482
  o.onSpace.call($t, $t.p.selrow);
3412
- }
3413
- //return false;
3414
- }
3483
+ }
3484
+ }
3415
3485
  }
3416
3486
  });
3417
3487
  });
3418
3488
  },
3419
3489
  unbindKeys : function(){
3420
3490
  return this.each(function(){
3421
- var $t = this;
3422
- $($t).unbind('keydown');
3491
+ $(this).unbind('keydown');
3423
3492
  });
3424
3493
  },
3425
3494
  getLocalRow : function (rowid) {
@@ -3465,6 +3534,7 @@ $.jgrid.extend({
3465
3534
  * cellurl
3466
3535
  * ajaxCellOptions
3467
3536
  * */
3537
+ "use strict";
3468
3538
  $.jgrid.extend({
3469
3539
  editCell : function (iRow,iCol, ed){
3470
3540
  return this.each(function (){
@@ -3485,7 +3555,7 @@ $.jgrid.extend({
3485
3555
  // save the cell
3486
3556
  $($t).jqGrid("saveCell",$t.p.savedRow[0].id,$t.p.savedRow[0].ic);
3487
3557
  } else {
3488
- window.setTimeout(function () { $("#"+$t.p.knv).attr("tabindex","-1").focus();},0);
3558
+ window.setTimeout(function () { $("#"+$.jgrid.jqID($t.p.knv)).attr("tabindex","-1").focus();},0);
3489
3559
  }
3490
3560
  cm = $t.p.colModel[iCol];
3491
3561
  nm = cm.name;
@@ -3499,26 +3569,27 @@ $.jgrid.extend({
3499
3569
  $(cc).addClass("edit-cell ui-state-highlight");
3500
3570
  $($t.rows[iRow]).addClass("selected-row ui-state-hover");
3501
3571
  try {
3502
- tmp = $.unformat(cc,{rowId: $t.rows[iRow].id, colModel:cm},iCol);
3572
+ tmp = $.unformat.call($t,cc,{rowId: $t.rows[iRow].id, colModel:cm},iCol);
3503
3573
  } catch (_) {
3504
3574
  tmp = ( cm.edittype && cm.edittype == 'textarea' ) ? $(cc).text() : $(cc).html();
3505
3575
  }
3506
3576
  if($t.p.autoencode) { tmp = $.jgrid.htmlDecode(tmp); }
3507
3577
  if (!cm.edittype) {cm.edittype = "text";}
3508
3578
  $t.p.savedRow.push({id:iRow,ic:iCol,name:nm,v:tmp});
3509
- if(tmp == "&nbsp;" || tmp == "&#160;" || (tmp.length==1 && tmp.charCodeAt(0)==160) ) {tmp='';}
3579
+ if(tmp === "&nbsp;" || tmp === "&#160;" || (tmp.length===1 && tmp.charCodeAt(0)===160) ) {tmp='';}
3510
3580
  if($.isFunction($t.p.formatCell)) {
3511
3581
  var tmp2 = $t.p.formatCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol);
3512
3582
  if(tmp2 !== undefined ) {tmp = tmp2;}
3513
3583
  }
3514
3584
  var opt = $.extend({}, cm.editoptions || {} ,{id:iRow+"_"+nm,name:nm});
3515
3585
  var elc = $.jgrid.createEl(cm.edittype,opt,tmp,true,$.extend({},$.jgrid.ajaxOptions,$t.p.ajaxSelectOptions || {}));
3586
+ $($t).triggerHandler("jqGridBeforeEditCell", [$t.rows[iRow].id, nm, tmp, iRow, iCol]);
3516
3587
  if ($.isFunction($t.p.beforeEditCell)) {
3517
3588
  $t.p.beforeEditCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol);
3518
3589
  }
3519
3590
  $(cc).html("").append(elc).attr("tabindex","0");
3520
3591
  window.setTimeout(function () { $(elc).focus();},0);
3521
- $("input, select, textarea",cc).bind("keydown",function(e) {
3592
+ $("input, select, textarea",cc).bind("keydown",function(e) {
3522
3593
  if (e.keyCode === 27) {
3523
3594
  if($("input.hasDatepicker",cc).length >0) {
3524
3595
  if( $(".ui-datepicker").is(":hidden") ) { $($t).jqGrid("restoreCell",iRow,iCol); }
@@ -3527,8 +3598,12 @@ $.jgrid.extend({
3527
3598
  $($t).jqGrid("restoreCell",iRow,iCol);
3528
3599
  }
3529
3600
  } //ESC
3530
- if (e.keyCode === 13) {$($t).jqGrid("saveCell",iRow,iCol);}//Enter
3531
- if (e.keyCode == 9) {
3601
+ if (e.keyCode === 13) {
3602
+ $($t).jqGrid("saveCell",iRow,iCol);
3603
+ // Prevent default action
3604
+ return false;
3605
+ } //Enter
3606
+ if (e.keyCode === 9) {
3532
3607
  if(!$t.grid.hDiv.loading ) {
3533
3608
  if (e.shiftKey) {$($t).jqGrid("prevCell",iRow,iCol);} //Shift TAb
3534
3609
  else {$($t).jqGrid("nextCell",iRow,iCol);} //Tab
@@ -3538,6 +3613,7 @@ $.jgrid.extend({
3538
3613
  }
3539
3614
  e.stopPropagation();
3540
3615
  });
3616
+ $($t).triggerHandler("jqGridAfterEditCell", [$t.rows[iRow].id, nm, tmp, iRow, iCol]);
3541
3617
  if ($.isFunction($t.p.afterEditCell)) {
3542
3618
  $t.p.afterEditCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol);
3543
3619
  }
@@ -3547,9 +3623,10 @@ $.jgrid.extend({
3547
3623
  $($t.rows[$t.p.iRow]).removeClass("selected-row ui-state-hover");
3548
3624
  }
3549
3625
  cc.addClass("edit-cell ui-state-highlight");
3550
- $($t.rows[iRow]).addClass("selected-row ui-state-hover");
3626
+ $($t.rows[iRow]).addClass("selected-row ui-state-hover");
3627
+ tmp = cc.html().replace(/\&#160\;/ig,'');
3628
+ $($t).triggerHandler("jqGridSelectCell", [$t.rows[iRow].id, nm, tmp, iRow, iCol]);
3551
3629
  if ($.isFunction($t.p.onSelectCell)) {
3552
- tmp = cc.html().replace(/\&#160\;/ig,'');
3553
3630
  $t.p.onSelectCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol);
3554
3631
  }
3555
3632
  }
@@ -3567,8 +3644,8 @@ $.jgrid.extend({
3567
3644
  switch (cm.edittype) {
3568
3645
  case "select":
3569
3646
  if(!cm.editoptions.multiple) {
3570
- v = $("#"+iRow+"_"+nmjq+">option:selected",$t.rows[iRow]).val();
3571
- v2 = $("#"+iRow+"_"+nmjq+">option:selected",$t.rows[iRow]).text();
3647
+ v = $("#"+iRow+"_"+nmjq+" option:selected",$t.rows[iRow]).val();
3648
+ v2 = $("#"+iRow+"_"+nmjq+" option:selected",$t.rows[iRow]).text();
3572
3649
  } else {
3573
3650
  var sel = $("#"+iRow+"_"+nmjq,$t.rows[iRow]), selectedText = [];
3574
3651
  v = $(sel).val();
@@ -3612,13 +3689,15 @@ $.jgrid.extend({
3612
3689
  }
3613
3690
  // The common approach is if nothing changed do not do anything
3614
3691
  if (v2 !== $t.p.savedRow[fr].v){
3692
+ var vvv = $($t).triggerHandler("jqGridBeforeSaveCell", [$t.rows[iRow].id, nm, v, iRow, iCol]);
3693
+ if (vvv) {v = vvv; v2=vvv;}
3615
3694
  if ($.isFunction($t.p.beforeSaveCell)) {
3616
3695
  var vv = $t.p.beforeSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);
3617
3696
  if (vv) {v = vv; v2=vv;}
3618
3697
  }
3619
3698
  var cv = $.jgrid.checkValues(v,iCol,$t);
3620
3699
  if(cv[0] === true) {
3621
- var addpost = {};
3700
+ var addpost = $($t).triggerHandler("jqGridBeforeSubmitCell", [$t.rows[iRow].id, nm, v, iRow, iCol]) || {};
3622
3701
  if ($.isFunction($t.p.beforeSubmitCell)) {
3623
3702
  addpost = $t.p.beforeSubmitCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);
3624
3703
  if (!addpost) {addpost={};}
@@ -3636,7 +3715,7 @@ $.jgrid.extend({
3636
3715
  postdata[idname] = $.jgrid.stripPref($t.p.idPrefix, $t.rows[iRow].id);
3637
3716
  postdata[oper] = opers.editoper;
3638
3717
  postdata = $.extend(addpost,postdata);
3639
- $("#lui_"+$t.p.id).show();
3718
+ $("#lui_"+$.jgrid.jqID($t.p.id)).show();
3640
3719
  $t.grid.hDiv.loading = true;
3641
3720
  $.ajax( $.extend( {
3642
3721
  url: $t.p.cellurl,
@@ -3646,38 +3725,32 @@ $.jgrid.extend({
3646
3725
  $("#lui_"+$t.p.id).hide();
3647
3726
  $t.grid.hDiv.loading = false;
3648
3727
  if (stat == 'success') {
3649
- if ($.isFunction($t.p.afterSubmitCell)) {
3650
- var ret = $t.p.afterSubmitCell.call($t, result,postdata.id,nm,v,iRow,iCol);
3651
- if(ret[0] === true) {
3652
- $(cc).empty();
3653
- $($t).jqGrid("setCell",$t.rows[iRow].id, iCol, v2, false, false, true);
3654
- $(cc).addClass("dirty-cell");
3655
- $($t.rows[iRow]).addClass("edited");
3656
- if ($.isFunction($t.p.afterSaveCell)) {
3657
- $t.p.afterSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);
3658
- }
3659
- $t.p.savedRow.splice(0,1);
3660
- } else {
3661
- $.jgrid.info_dialog($.jgrid.errors.errcap,ret[1],$.jgrid.edit.bClose);
3662
- $($t).jqGrid("restoreCell",iRow,iCol);
3663
- }
3664
- } else {
3728
+ var ret = $($t).triggerHandler("jqGridAfterSubmitCell", [$t, result, postdata.id, nm, v, iRow, iCol]) || [true, ''];
3729
+ if (ret[0] === true && $.isFunction($t.p.afterSubmitCell)) {
3730
+ ret = $t.p.afterSubmitCell.call($t, result,postdata.id,nm,v,iRow,iCol);
3731
+ }
3732
+ if(ret[0] === true){
3665
3733
  $(cc).empty();
3666
3734
  $($t).jqGrid("setCell",$t.rows[iRow].id, iCol, v2, false, false, true);
3667
3735
  $(cc).addClass("dirty-cell");
3668
3736
  $($t.rows[iRow]).addClass("edited");
3737
+ $($t).triggerHandler("jqGridAfterSaveCell", [$t.rows[iRow].id, nm, v, iRow, iCol]);
3669
3738
  if ($.isFunction($t.p.afterSaveCell)) {
3670
3739
  $t.p.afterSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);
3671
3740
  }
3672
3741
  $t.p.savedRow.splice(0,1);
3742
+ } else {
3743
+ $.jgrid.info_dialog($.jgrid.errors.errcap,ret[1],$.jgrid.edit.bClose);
3744
+ $($t).jqGrid("restoreCell",iRow,iCol);
3673
3745
  }
3674
3746
  }
3675
3747
  },
3676
- error:function(res,stat) {
3677
- $("#lui_"+$t.p.id).hide();
3748
+ error:function(res,stat,err) {
3749
+ $("#lui_"+$.jgrid.jqID($t.p.id)).hide();
3678
3750
  $t.grid.hDiv.loading = false;
3751
+ $($t).triggerHandler("jqGridErrorCell", [res, stat, err]);
3679
3752
  if ($.isFunction($t.p.errorCell)) {
3680
- $t.p.errorCell.call($t, res,stat);
3753
+ $t.p.errorCell.call($t, res,stat,err);
3681
3754
  $($t).jqGrid("restoreCell",iRow,iCol);
3682
3755
  } else {
3683
3756
  $.jgrid.info_dialog($.jgrid.errors.errcap,res.status+" : "+res.statusText+"<br/>"+stat,$.jgrid.edit.bClose);
@@ -3697,6 +3770,7 @@ $.jgrid.extend({
3697
3770
  $($t).jqGrid("setCell",$t.rows[iRow].id,iCol, v2, false, false, true);
3698
3771
  $(cc).addClass("dirty-cell");
3699
3772
  $($t.rows[iRow]).addClass("edited");
3773
+ $($t).triggerHandler("jqGridAfterSaveCell", [$t.rows[iRow].id, nm, v, iRow, iCol]);
3700
3774
  if ($.isFunction($t.p.afterSaveCell)) {
3701
3775
  $t.p.afterSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);
3702
3776
  }
@@ -3713,9 +3787,9 @@ $.jgrid.extend({
3713
3787
  }
3714
3788
  }
3715
3789
  if ($.browser.opera) {
3716
- $("#"+$t.p.knv).attr("tabindex","-1").focus();
3790
+ $("#"+$.jgrid.jqID($t.p.knv)).attr("tabindex","-1").focus();
3717
3791
  } else {
3718
- window.setTimeout(function () { $("#"+$t.p.knv).attr("tabindex","-1").focus();},0);
3792
+ window.setTimeout(function () { $("#"+$.jgrid.jqID($t.p.knv)).attr("tabindex","-1").focus();},0);
3719
3793
  }
3720
3794
  });
3721
3795
  },
@@ -3734,6 +3808,7 @@ $.jgrid.extend({
3734
3808
  }
3735
3809
  $(cc).empty().attr("tabindex","-1");
3736
3810
  $($t).jqGrid("setCell",$t.rows[iRow].id, iCol, $t.p.savedRow[fr].v, false, false, true);
3811
+ $($t).triggerHandler("jqGridAfterRestoreCell", [$t.rows[iRow].id, $t.p.savedRow[fr].v, iRow, iCol]);
3737
3812
  if ($.isFunction($t.p.afterRestoreCell)) {
3738
3813
  $t.p.afterRestoreCell.call($t, $t.rows[iRow].id, $t.p.savedRow[fr].v, iRow, iCol);
3739
3814
  }
@@ -3788,52 +3863,6 @@ $.jgrid.extend({
3788
3863
  $t.p.knv = $t.p.id + "_kn";
3789
3864
  var selection = $("<span style='width:0px;height:0px;background-color:black;' tabindex='0'><span tabindex='-1' style='width:0px;height:0px;background-color:grey' id='"+$t.p.knv+"'></span></span>"),
3790
3865
  i, kdir;
3791
- $(selection).insertBefore($t.grid.cDiv);
3792
- $("#"+$t.p.knv)
3793
- .focus()
3794
- .keydown(function (e){
3795
- kdir = e.keyCode;
3796
- if($t.p.direction == "rtl") {
3797
- if(kdir==37) { kdir = 39;}
3798
- else if (kdir==39) { kdir = 37; }
3799
- }
3800
- switch (kdir) {
3801
- case 38:
3802
- if ($t.p.iRow-1 >0 ) {
3803
- scrollGrid($t.p.iRow-1,$t.p.iCol,'vu');
3804
- $($t).jqGrid("editCell",$t.p.iRow-1,$t.p.iCol,false);
3805
- }
3806
- break;
3807
- case 40 :
3808
- if ($t.p.iRow+1 <= $t.rows.length-1) {
3809
- scrollGrid($t.p.iRow+1,$t.p.iCol,'vd');
3810
- $($t).jqGrid("editCell",$t.p.iRow+1,$t.p.iCol,false);
3811
- }
3812
- break;
3813
- case 37 :
3814
- if ($t.p.iCol -1 >= 0) {
3815
- i = findNextVisible($t.p.iCol-1,'lft');
3816
- scrollGrid($t.p.iRow, i,'h');
3817
- $($t).jqGrid("editCell",$t.p.iRow, i,false);
3818
- }
3819
- break;
3820
- case 39 :
3821
- if ($t.p.iCol +1 <= $t.p.colModel.length-1) {
3822
- i = findNextVisible($t.p.iCol+1,'rgt');
3823
- scrollGrid($t.p.iRow,i,'h');
3824
- $($t).jqGrid("editCell",$t.p.iRow,i,false);
3825
- }
3826
- break;
3827
- case 13:
3828
- if (parseInt($t.p.iCol,10)>=0 && parseInt($t.p.iRow,10)>=0) {
3829
- $($t).jqGrid("editCell",$t.p.iRow,$t.p.iCol,true);
3830
- }
3831
- break;
3832
- default :
3833
- return true;
3834
- }
3835
- return false;
3836
- });
3837
3866
  function scrollGrid(iR, iC, tp){
3838
3867
  if (tp.substr(0,1)=='v') {
3839
3868
  var ch = $($t.grid.bDiv)[0].clientHeight,
@@ -3885,6 +3914,53 @@ $.jgrid.extend({
3885
3914
  }
3886
3915
  return ind;
3887
3916
  }
3917
+
3918
+ $(selection).insertBefore($t.grid.cDiv);
3919
+ $("#"+$t.p.knv)
3920
+ .focus()
3921
+ .keydown(function (e){
3922
+ kdir = e.keyCode;
3923
+ if($t.p.direction == "rtl") {
3924
+ if(kdir===37) { kdir = 39;}
3925
+ else if (kdir===39) { kdir = 37; }
3926
+ }
3927
+ switch (kdir) {
3928
+ case 38:
3929
+ if ($t.p.iRow-1 >0 ) {
3930
+ scrollGrid($t.p.iRow-1,$t.p.iCol,'vu');
3931
+ $($t).jqGrid("editCell",$t.p.iRow-1,$t.p.iCol,false);
3932
+ }
3933
+ break;
3934
+ case 40 :
3935
+ if ($t.p.iRow+1 <= $t.rows.length-1) {
3936
+ scrollGrid($t.p.iRow+1,$t.p.iCol,'vd');
3937
+ $($t).jqGrid("editCell",$t.p.iRow+1,$t.p.iCol,false);
3938
+ }
3939
+ break;
3940
+ case 37 :
3941
+ if ($t.p.iCol -1 >= 0) {
3942
+ i = findNextVisible($t.p.iCol-1,'lft');
3943
+ scrollGrid($t.p.iRow, i,'h');
3944
+ $($t).jqGrid("editCell",$t.p.iRow, i,false);
3945
+ }
3946
+ break;
3947
+ case 39 :
3948
+ if ($t.p.iCol +1 <= $t.p.colModel.length-1) {
3949
+ i = findNextVisible($t.p.iCol+1,'rgt');
3950
+ scrollGrid($t.p.iRow,i,'h');
3951
+ $($t).jqGrid("editCell",$t.p.iRow,i,false);
3952
+ }
3953
+ break;
3954
+ case 13:
3955
+ if (parseInt($t.p.iCol,10)>=0 && parseInt($t.p.iRow,10)>=0) {
3956
+ $($t).jqGrid("editCell",$t.p.iRow,$t.p.iCol,true);
3957
+ }
3958
+ break;
3959
+ default :
3960
+ return true;
3961
+ }
3962
+ return false;
3963
+ });
3888
3964
  });
3889
3965
  },
3890
3966
  getChangedCells : function (mthd) {
@@ -3902,14 +3978,14 @@ $.jgrid.extend({
3902
3978
  if (mthd=='dirty') {
3903
3979
  if ($(this).hasClass('dirty-cell')) {
3904
3980
  try {
3905
- res[nm] = $.unformat(this,{rowId:$t.rows[j].id, colModel:$t.p.colModel[i]},i);
3981
+ res[nm] = $.unformat.call($t,this,{rowId:$t.rows[j].id, colModel:$t.p.colModel[i]},i);
3906
3982
  } catch (e){
3907
3983
  res[nm] = $.jgrid.htmlDecode($(this).html());
3908
3984
  }
3909
3985
  }
3910
3986
  } else {
3911
3987
  try {
3912
- res[nm] = $.unformat(this,{rowId:$t.rows[j].id,colModel:$t.p.colModel[i]},i);
3988
+ res[nm] = $.unformat.call($t,this,{rowId:$t.rows[j].id,colModel:$t.p.colModel[i]},i);
3913
3989
  } catch (e) {
3914
3990
  res[nm] = $.jgrid.htmlDecode($(this).html());
3915
3991
  }
@@ -4022,10 +4098,10 @@ $.extend($.jgrid,{
4022
4098
  coord.left = p.left;
4023
4099
  coord.top = p.top+"px";
4024
4100
  }
4025
- $("a.ui-jqdialog-titlebar-close",mh).click(function(e){
4026
- var oncm = $("#"+aIDs.themodal).data("onClose") || p.onClose;
4027
- var gboxclose = $("#"+aIDs.themodal).data("gbox") || p.gbox;
4028
- self.hideModal("#"+aIDs.themodal,{gb:gboxclose,jqm:p.jqModal,onClose:oncm});
4101
+ $("a.ui-jqdialog-titlebar-close",mh).click(function(){
4102
+ var oncm = $("#"+$.jgrid.jqID(aIDs.themodal)).data("onClose") || p.onClose;
4103
+ var gboxclose = $("#"+$.jgrid.jqID(aIDs.themodal)).data("gbox") || p.gbox;
4104
+ self.hideModal("#"+$.jgrid.jqID(aIDs.themodal),{gb:gboxclose,jqm:p.jqModal,onClose:oncm});
4029
4105
  return false;
4030
4106
  });
4031
4107
  if (p.width === 0 || !p.width) {p.width = 300;}
@@ -4060,24 +4136,24 @@ $.extend($.jgrid,{
4060
4136
  $(mw).jqDrag(mh);
4061
4137
  } else {
4062
4138
  try {
4063
- $(mw).draggable({handle: $("#"+mh.id)});
4139
+ $(mw).draggable({handle: $("#"+$.jgrid.jqID(mh.id))});
4064
4140
  } catch (e) {}
4065
4141
  }
4066
4142
  }
4067
4143
  if(p.resize) {
4068
4144
  if($.fn.jqResize) {
4069
4145
  $(mw).append("<div class='jqResize ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se ui-icon-grip-diagonal-se'></div>");
4070
- $("#"+aIDs.themodal).jqResize(".jqResize",aIDs.scrollelm ? "#"+aIDs.scrollelm : false);
4146
+ $("#"+$.jgrid.jqID(aIDs.themodal)).jqResize(".jqResize",aIDs.scrollelm ? "#"+$.jgrid.jqID(aIDs.scrollelm) : false);
4071
4147
  } else {
4072
4148
  try {
4073
- $(mw).resizable({handles: 'se, sw',alsoResize: aIDs.scrollelm ? "#"+aIDs.scrollelm : false});
4149
+ $(mw).resizable({handles: 'se, sw',alsoResize: aIDs.scrollelm ? "#"+$.jgrid.jqID(aIDs.scrollelm) : false});
4074
4150
  } catch (r) {}
4075
4151
  }
4076
4152
  }
4077
4153
  if(p.closeOnEscape === true){
4078
4154
  $(mw).keydown( function( e ) {
4079
4155
  if( e.which == 27 ) {
4080
- var cone = $("#"+aIDs.themodal).data("onClose") || p.onClose;
4156
+ var cone = $("#"+$.jgrid.jqID(aIDs.themodal)).data("onClose") || p.onClose;
4081
4157
  self.hideModal(this,{gb:p.gbox,jqm:p.jqModal,onClose: cone});
4082
4158
  }
4083
4159
  });
@@ -4165,10 +4241,10 @@ $.extend($.jgrid,{
4165
4241
  // attach onclick after inserting into the dom
4166
4242
  if(buttstr) {
4167
4243
  $.each(mopt.buttons,function(i){
4168
- $("#"+this.id,"#info_id").bind('click',function(){mopt.buttons[i].onClick.call($("#info_dialog")); return false;});
4244
+ $("#"+$.jgrid.jqID(this.id),"#info_id").bind('click',function(){mopt.buttons[i].onClick.call($("#info_dialog")); return false;});
4169
4245
  });
4170
4246
  }
4171
- $("#closedialog", "#info_id").click(function(e){
4247
+ $("#closedialog", "#info_id").click(function(){
4172
4248
  self.hideModal("#info_dialog",{jqm:jm});
4173
4249
  return false;
4174
4250
  });
@@ -4209,7 +4285,7 @@ $.extend($.jgrid,{
4209
4285
  function setAttributes(elm, atr, exl ) {
4210
4286
  var exclude = ['dataInit','dataEvents','dataUrl', 'buildSelect','sopt', 'searchhidden', 'defaultValue', 'attr'];
4211
4287
  if(typeof(exl) != "undefined" && $.isArray(exl)) {
4212
- exclude = $.extend(exclude, exl);
4288
+ $.merge(exclude, exl);
4213
4289
  }
4214
4290
  $.each(atr, function(key, value){
4215
4291
  if($.inArray(key, exclude) === -1) {
@@ -4275,7 +4351,7 @@ $.extend($.jgrid,{
4275
4351
  type : "GET",
4276
4352
  dataType: "html",
4277
4353
  context: {elem:elem, options:options, vl:vl},
4278
- success: function(data,status){
4354
+ success: function(data){
4279
4355
  var a, ovm = [], elem = this.elem, vl = this.vl,
4280
4356
  options = $.extend({},this.options),
4281
4357
  msl = options.multiple===true;
@@ -4300,6 +4376,8 @@ $.extend($.jgrid,{
4300
4376
  setTimeout(function(){
4301
4377
  $("option",elem).each(function(i){
4302
4378
  //if(i===0) { this.selected = ""; }
4379
+ // fix IE8/IE7 problem with selecting of the first item on multiple=true
4380
+ if (i === 0 && elem.multiple) { this.selected = false; }
4303
4381
  $(this).attr("role","option");
4304
4382
  if($.inArray($.trim($(this).text()),ovm) > -1 || $.inArray($.trim($(this).val()),ovm) > -1 ) {
4305
4383
  this.selected= "selected";
@@ -4320,13 +4398,14 @@ $.extend($.jgrid,{
4320
4398
  }
4321
4399
  if(typeof options.value === 'function') { options.value = options.value(); }
4322
4400
  var so,sv, ov,
4323
- sep = options.separator === undefined ? ":" : options.separator;
4401
+ sep = options.separator === undefined ? ":" : options.separator,
4402
+ delim = options.delimiter === undefined ? ";" : options.delimiter;
4324
4403
  if(typeof options.value === 'string') {
4325
- so = options.value.split(";");
4404
+ so = options.value.split(delim);
4326
4405
  for(i=0; i<so.length;i++){
4327
4406
  sv = so[i].split(sep);
4328
4407
  if(sv.length > 2 ) {
4329
- sv[1] = $.map(sv,function(n,ii){if(ii>0) { return n;} }).join(":");
4408
+ sv[1] = $.map(sv,function(n,ii){if(ii>0) { return n;} }).join(sep);
4330
4409
  }
4331
4410
  ov = document.createElement("option");
4332
4411
  ov.setAttribute("role","option");
@@ -4608,7 +4687,7 @@ $.extend($.jgrid,{
4608
4687
  * http://www.gnu.org/licenses/gpl-2.0.html
4609
4688
  **/
4610
4689
  /*global jQuery, $ */
4611
-
4690
+ "use strict";
4612
4691
  $.jgrid.extend({
4613
4692
  getColProp : function(colname){
4614
4693
  var ret ={}, $t = this[0];
@@ -4663,9 +4742,8 @@ $.jgrid.extend({
4663
4742
  if ( this.p.pager ) { // if not part of grid
4664
4743
  $(this.p.pager).remove();
4665
4744
  }
4666
- var gid = this.id;
4667
4745
  try {
4668
- $("#gbox_"+gid).remove();
4746
+ $("#gbox_"+$.jgrid.jqID(this.id)).remove();
4669
4747
  } catch (_) {}
4670
4748
  }
4671
4749
  });
@@ -4680,7 +4758,7 @@ $.jgrid.extend({
4680
4758
  var newtable = document.createElement('table');
4681
4759
  $(newtable).attr({id:defgrid.id});
4682
4760
  newtable.className = defgrid.cl;
4683
- var gid = this.id;
4761
+ var gid = $.jgrid.jqID(this.id);
4684
4762
  $(newtable).removeClass("ui-jqgrid-btable");
4685
4763
  if( $(this.p.pager).parents("#gbox_"+gid).length === 1 ) {
4686
4764
  $(newtable).insertBefore("#gbox_"+gid).show();
@@ -4694,9 +4772,9 @@ $.jgrid.extend({
4694
4772
  setGridState : function(state) {
4695
4773
  return this.each(function(){
4696
4774
  if ( !this.grid ) {return;}
4697
- var $t = this;
4698
- if(state == 'hidden'){
4699
- $(".ui-jqgrid-bdiv, .ui-jqgrid-hdiv","#gview_"+$t.p.id).slideUp("fast");
4775
+ var $t = this;
4776
+ if(state == 'hidden'){
4777
+ $(".ui-jqgrid-bdiv, .ui-jqgrid-hdiv","#gview_"+$.jgrid.jqID($t.p.id)).slideUp("fast");
4700
4778
  if($t.p.pager) {$($t.p.pager).slideUp("fast");}
4701
4779
  if($t.p.toppager) {$($t.p.toppager).slideUp("fast");}
4702
4780
  if($t.p.toolbar[0]===true) {
@@ -4705,11 +4783,11 @@ $.jgrid.extend({
4705
4783
  }
4706
4784
  $($t.grid.uDiv).slideUp("fast");
4707
4785
  }
4708
- if($t.p.footerrow) { $(".ui-jqgrid-sdiv","#gbox_"+$t.p.id).slideUp("fast"); }
4786
+ if($t.p.footerrow) { $(".ui-jqgrid-sdiv","#gbox_"+$.jgrid.jqID($t.p.id)).slideUp("fast"); }
4709
4787
  $(".ui-jqgrid-titlebar-close span",$t.grid.cDiv).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s");
4710
4788
  $t.p.gridstate = 'hidden';
4711
- } else if(state=='visible') {
4712
- $(".ui-jqgrid-hdiv, .ui-jqgrid-bdiv","#gview_"+$t.p.id).slideDown("fast");
4789
+ } else if(state=='visible') {
4790
+ $(".ui-jqgrid-hdiv, .ui-jqgrid-bdiv","#gview_"+$.jgrid.jqID($t.p.id)).slideDown("fast");
4713
4791
  if($t.p.pager) {$($t.p.pager).slideDown("fast");}
4714
4792
  if($t.p.toppager) {$($t.p.toppager).slideDown("fast");}
4715
4793
  if($t.p.toolbar[0]===true) {
@@ -4718,7 +4796,7 @@ $.jgrid.extend({
4718
4796
  }
4719
4797
  $($t.grid.uDiv).slideDown("fast");
4720
4798
  }
4721
- if($t.p.footerrow) { $(".ui-jqgrid-sdiv","#gbox_"+$t.p.id).slideDown("fast"); }
4799
+ if($t.p.footerrow) { $(".ui-jqgrid-sdiv","#gbox_"+$.jgrid.jqID($t.p.id)).slideDown("fast"); }
4722
4800
  $(".ui-jqgrid-titlebar-close span",$t.grid.cDiv).removeClass("ui-icon-circle-triangle-s").addClass("ui-icon-circle-triangle-n");
4723
4801
  $t.p.gridstate = 'visible';
4724
4802
  }
@@ -4743,7 +4821,7 @@ $.jgrid.extend({
4743
4821
  if(this.ftoolbar) { return; }
4744
4822
  var triggerToolbar = function() {
4745
4823
  var sdata={}, j=0, v, nm, sopt={},so;
4746
- $.each($t.p.colModel,function(i,n){
4824
+ $.each($t.p.colModel,function(){
4747
4825
  nm = this.index || this.name;
4748
4826
  so = (this.searchoptions && this.searchoptions.sopt) ? this.searchoptions.sopt[0] : this.stype=='select'? 'eq' : p.defaultSearch;
4749
4827
  v = $("#gs_"+$.jgrid.jqID(this.name), (this.frozen===true && $t.p.frozenColumns === true) ? $t.grid.fhDiv : $t.grid.hDiv).val();
@@ -4782,32 +4860,32 @@ $.jgrid.extend({
4782
4860
  saveurl = $t.p.url;
4783
4861
  $($t).jqGrid("setGridParam",{url:$t.p.searchurl});
4784
4862
  }
4785
- var bsr = false;
4786
- if($.isFunction(p.beforeSearch)){bsr = p.beforeSearch.call($t);}
4863
+ var bsr = $($t).triggerHandler("jqGridToolbarBeforeSearch") === 'stop' ? true : false;
4864
+ if(!bsr && $.isFunction(p.beforeSearch)){bsr = p.beforeSearch.call($t);}
4787
4865
  if(!bsr) { $($t).jqGrid("setGridParam",{search:sd}).trigger("reloadGrid",[{page:1}]); }
4788
4866
  if(saveurl) {$($t).jqGrid("setGridParam",{url:saveurl});}
4867
+ $($t).triggerHandler("jqGridToolbarAfterSearch");
4789
4868
  if($.isFunction(p.afterSearch)){p.afterSearch();}
4790
4869
  };
4791
4870
  var clearToolbar = function(trigger){
4792
- var sdata={}, v, j=0, nm;
4871
+ var sdata={}, j=0, nm;
4793
4872
  trigger = (typeof trigger != 'boolean') ? true : trigger;
4794
- $.each($t.p.colModel,function(i,n){
4795
- v = (this.searchoptions && this.searchoptions.defaultValue) ? this.searchoptions.defaultValue : "";
4873
+ $.each($t.p.colModel,function(){
4874
+ var v;
4875
+ if(this.searchoptions && this.searchoptions.defaultValue !== undefined) { v = this.searchoptions.defaultValue; }
4796
4876
  nm = this.index || this.name;
4797
4877
  switch (this.stype) {
4798
4878
  case 'select' :
4799
- var v1;
4800
4879
  $("#gs_"+$.jgrid.jqID(this.name)+" option",(this.frozen===true && $t.p.frozenColumns === true) ? $t.grid.fhDiv : $t.grid.hDiv).each(function (i){
4801
4880
  if(i===0) { this.selected = true; }
4802
- if ($(this).text() == v) {
4881
+ if ($(this).val() == v) {
4803
4882
  this.selected = true;
4804
- v1 = $(this).val();
4805
4883
  return false;
4806
4884
  }
4807
4885
  });
4808
- if (v1) {
4886
+ if ( v !== undefined ) {
4809
4887
  // post the key and not the text
4810
- sdata[nm] = v1;
4888
+ sdata[nm] = v;
4811
4889
  j++;
4812
4890
  } else {
4813
4891
  try {
@@ -4817,7 +4895,7 @@ $.jgrid.extend({
4817
4895
  break;
4818
4896
  case 'text':
4819
4897
  $("#gs_"+$.jgrid.jqID(this.name),(this.frozen===true && $t.p.frozenColumns === true) ? $t.grid.fhDiv : $t.grid.hDiv).val(v);
4820
- if(v) {
4898
+ if(v !== undefined) {
4821
4899
  sdata[nm] = v;
4822
4900
  j++;
4823
4901
  } else {
@@ -4853,19 +4931,20 @@ $.jgrid.extend({
4853
4931
  saveurl = $t.p.url;
4854
4932
  $($t).jqGrid("setGridParam",{url:$t.p.searchurl});
4855
4933
  }
4856
- var bcv = false;
4857
- if($.isFunction(p.beforeClear)){bcv = p.beforeClear.call($t);}
4934
+ var bcv = $($t).triggerHandler("jqGridToolbarBeforeClear") === 'stop' ? true : false;
4935
+ if(!bcv && $.isFunction(p.beforeClear)){bcv = p.beforeClear.call($t);}
4858
4936
  if(!bcv) {
4859
4937
  if(trigger) {
4860
4938
  $($t).jqGrid("setGridParam",{search:sd}).trigger("reloadGrid",[{page:1}]);
4861
4939
  }
4862
4940
  }
4863
4941
  if(saveurl) {$($t).jqGrid("setGridParam",{url:saveurl});}
4942
+ $($t).triggerHandler("jqGridToolbarAfterClear");
4864
4943
  if($.isFunction(p.afterClear)){p.afterClear();}
4865
4944
  };
4866
4945
  var toggleToolbar = function(){
4867
4946
  var trow = $("tr.ui-search-toolbar",$t.grid.hDiv),
4868
- trow2 = $t.p.frozenColumns === true ? $("tr.ui-search-toolbar",$t.grid.hDiv) : false;
4947
+ trow2 = $t.p.frozenColumns === true ? $("tr.ui-search-toolbar",$t.grid.fhDiv) : false;
4869
4948
  if(trow.css("display")=='none') {
4870
4949
  trow.show();
4871
4950
  if(trow2) {
@@ -4882,18 +4961,18 @@ $.jgrid.extend({
4882
4961
  function bindEvents(selector, events) {
4883
4962
  var jElem = $(selector);
4884
4963
  if (jElem[0]) {
4885
- jQuery.each(events, function() {
4886
- if (this.data !== undefined) {
4887
- jElem.bind(this.type, this.data, this.fn);
4888
- } else {
4889
- jElem.bind(this.type, this.fn);
4890
- }
4891
- });
4964
+ jQuery.each(events, function() {
4965
+ if (this.data !== undefined) {
4966
+ jElem.bind(this.type, this.data, this.fn);
4967
+ } else {
4968
+ jElem.bind(this.type, this.fn);
4969
+ }
4970
+ });
4892
4971
  }
4893
4972
  }
4894
4973
  var tr = $("<tr class='ui-search-toolbar' role='rowheader'></tr>");
4895
4974
  var timeoutHnd;
4896
- $.each($t.p.colModel,function(i,n){
4975
+ $.each($t.p.colModel,function(){
4897
4976
  var cm=this, thd , th, soptions,surl,self;
4898
4977
  th = $("<th role='columnheader' class='ui-state-default ui-th-column ui-th-"+$t.p.direction+"'></th>");
4899
4978
  thd = $("<div style='width:100%;position:relative;height:100%;padding-right:0.3em;'></div>");
@@ -4913,14 +4992,14 @@ $.jgrid.extend({
4913
4992
  $.ajax($.extend({
4914
4993
  url: surl,
4915
4994
  dataType: "html",
4916
- success: function(res,status) {
4995
+ success: function(res) {
4917
4996
  if(soptions.buildSelect !== undefined) {
4918
4997
  var d = soptions.buildSelect(res);
4919
4998
  if (d) { $(self).append(d); }
4920
4999
  } else {
4921
5000
  $(self).append(res);
4922
5001
  }
4923
- if(soptions.defaultValue) { $("select",self).val(soptions.defaultValue); }
5002
+ if(soptions.defaultValue !== undefined) { $("select",self).val(soptions.defaultValue); }
4924
5003
  $("select",self).attr({name:cm.index || cm.name, id: "gs_"+cm.name});
4925
5004
  if(soptions.attr) {$("select",self).attr(soptions.attr);}
4926
5005
  $("select",self).css({width: "100%"});
@@ -4928,7 +5007,7 @@ $.jgrid.extend({
4928
5007
  if(soptions.dataInit !== undefined) { soptions.dataInit($("select",self)[0]); }
4929
5008
  if(soptions.dataEvents !== undefined) { bindEvents($("select",self)[0],soptions.dataEvents); }
4930
5009
  if(p.autosearch===true){
4931
- $("select",self).change(function(e){
5010
+ $("select",self).change(function(){
4932
5011
  triggerToolbar();
4933
5012
  return false;
4934
5013
  });
@@ -4937,11 +5016,15 @@ $.jgrid.extend({
4937
5016
  }
4938
5017
  }, $.jgrid.ajaxOptions, $t.p.ajaxSelectOptions || {} ));
4939
5018
  } else {
4940
- var oSv;
4941
- if(cm.searchoptions && cm.searchoptions.value) {
4942
- oSv = cm.searchoptions.value;
4943
- } else if(cm.editoptions && cm.editoptions.value) {
4944
- oSv = cm.editoptions.value;
5019
+ var oSv, sep, delim;
5020
+ if(cm.searchoptions) {
5021
+ oSv = cm.searchoptions.value === undefined ? "" : cm.searchoptions.value;
5022
+ sep = cm.searchoptions.separator === undefined ? ":" : cm.searchoptions.separator;
5023
+ delim = cm.searchoptions.delimiter === undefined ? ";" : cm.searchoptions.delimiter;
5024
+ } else if(cm.editoptions) {
5025
+ oSv = cm.editoptions.value === undefined ? "" : cm.editoptions.value;
5026
+ sep = cm.editoptions.separator === undefined ? ":" : cm.editoptions.separator;
5027
+ delim = cm.editoptions.delimiter === undefined ? ";" : cm.editoptions.delimiter;
4945
5028
  }
4946
5029
  if (oSv) {
4947
5030
  var elem = document.createElement("select");
@@ -4949,9 +5032,9 @@ $.jgrid.extend({
4949
5032
  $(elem).attr({name:cm.index || cm.name, id: "gs_"+cm.name});
4950
5033
  var so, sv, ov;
4951
5034
  if(typeof oSv === "string") {
4952
- so = oSv.split(";");
5035
+ so = oSv.split(delim);
4953
5036
  for(var k=0; k<so.length;k++){
4954
- sv = so[k].split(":");
5037
+ sv = so[k].split(sep);
4955
5038
  ov = document.createElement("option");
4956
5039
  ov.value = sv[0]; ov.innerHTML = sv[1];
4957
5040
  elem.appendChild(ov);
@@ -4965,13 +5048,13 @@ $.jgrid.extend({
4965
5048
  }
4966
5049
  }
4967
5050
  }
4968
- if(soptions.defaultValue) { $(elem).val(soptions.defaultValue); }
5051
+ if(soptions.defaultValue !== undefined) { $(elem).val(soptions.defaultValue); }
4969
5052
  if(soptions.attr) {$(elem).attr(soptions.attr);}
4970
5053
  if(soptions.dataInit !== undefined) { soptions.dataInit(elem); }
4971
5054
  if(soptions.dataEvents !== undefined) { bindEvents(elem, soptions.dataEvents); }
4972
5055
  $(thd).append(elem);
4973
5056
  if(p.autosearch===true){
4974
- $(elem).change(function(e){
5057
+ $(elem).change(function(){
4975
5058
  triggerToolbar();
4976
5059
  return false;
4977
5060
  });
@@ -4980,7 +5063,7 @@ $.jgrid.extend({
4980
5063
  }
4981
5064
  break;
4982
5065
  case 'text':
4983
- var df = soptions.defaultValue ? soptions.defaultValue: "";
5066
+ var df = soptions.defaultValue !== undefined ? soptions.defaultValue: "";
4984
5067
  $(thd).append("<input type='text' style='width:95%;padding:0px;' name='"+(cm.index || cm.name)+"' id='gs_"+cm.name+"' value='"+df+"'/>");
4985
5068
  if(soptions.attr) {$("input",thd).attr(soptions.attr);}
4986
5069
  if(soptions.dataInit !== undefined) { soptions.dataInit($("input",thd)[0]); }
@@ -5039,8 +5122,9 @@ $.jgrid.extend({
5039
5122
  {
5040
5123
  var $t = this, $tr, i, l, headers, $th, $resizing, grid = $t.grid,
5041
5124
  thead = $("table.ui-jqgrid-htable thead", grid.hDiv), cm = $t.p.colModel, hc;
5042
- if(!grid) return;
5125
+ if(!grid) { return; }
5043
5126
 
5127
+ $(this).unbind('.setGroupHeaders');
5044
5128
  $tr = $("<tr>", {role: "rowheader"}).addClass("ui-jqgrid-labels");
5045
5129
  headers = grid.headers;
5046
5130
  for (i = 0, l = headers.length; i < l; i++) {
@@ -5092,7 +5176,6 @@ $.jgrid.extend({
5092
5176
  $trLabels = $htable.children("thead").children("tr.ui-jqgrid-labels:last").addClass("jqg-second-row-header"),
5093
5177
  $thead = $htable.children("thead"),
5094
5178
  $theadInTable,
5095
- originalResizeStop,
5096
5179
  $firstHeaderRow = $htable.find(".jqg-first-row-header");
5097
5180
  if($firstHeaderRow.html() === null) {
5098
5181
  $firstHeaderRow = $('<tr>', {role: "row", "aria-hidden": "true"}).addClass("jqg-first-row-header").css("height", "auto");
@@ -5202,17 +5285,10 @@ $.jgrid.extend({
5202
5285
  });
5203
5286
  }
5204
5287
 
5205
- // Preserve original resizeStop event if any defined
5206
- if ($.isFunction(ts.p.resizeStop)) {
5207
- originalResizeStop = ts.p.resizeStop;
5208
- }
5209
5288
  $firstRow = $theadInTable.find("tr.jqg-first-row-header");
5210
- ts.p.resizeStop = function (nw, idx) {
5289
+ $(ts).bind('jqGridResizeStop.setGroupHeaders', function (e, nw, idx) {
5211
5290
  $firstRow.find('th').eq(idx).width(nw);
5212
- if ($.isFunction(originalResizeStop)) {
5213
- originalResizeStop.call(ts, nw, idx);
5214
- }
5215
- };
5291
+ });
5216
5292
  });
5217
5293
  },
5218
5294
  setFrozenColumns : function () {
@@ -5220,7 +5296,7 @@ $.jgrid.extend({
5220
5296
  if ( !this.grid ) {return;}
5221
5297
  var $t = this, cm = $t.p.colModel,i=0, len = cm.length, maxfrozen = -1, frozen= false;
5222
5298
  // TODO treeGrid and grouping Support
5223
- if($t.p.subGrid == true || $t.p.treeGrid === true || $t.p.cellEdit == true || $t.p.sortable || $t.p.scroll || $t.p.grouping )
5299
+ if($t.p.subGrid === true || $t.p.treeGrid === true || $t.p.cellEdit === true || $t.p.sortable || $t.p.scroll || $t.p.grouping )
5224
5300
  {
5225
5301
  return;
5226
5302
  }
@@ -5243,12 +5319,11 @@ $.jgrid.extend({
5243
5319
  if( maxfrozen>=0 && frozen) {
5244
5320
  var top = $t.p.caption ? $($t.grid.cDiv).outerHeight() : 0,
5245
5321
  hth = $(".ui-jqgrid-htable","#gview_"+$.jgrid.jqID($t.p.id)).height();
5246
- $t.p.orgEvents = {};
5247
5322
  //headers
5248
5323
  if($t.p.toppager) {
5249
5324
  top = top + $($t.grid.topDiv).outerHeight();
5250
5325
  }
5251
- if($t.p.toolbar[0] == true) {
5326
+ if($t.p.toolbar[0] === true) {
5252
5327
  if($t.p.toolbar[1] != "bottom") {
5253
5328
  top = top + $($t.grid.uDiv).outerHeight();
5254
5329
  }
@@ -5263,7 +5338,7 @@ $.jgrid.extend({
5263
5338
  $("th:gt("+maxfrozen+")",this).remove();
5264
5339
  });
5265
5340
  var swapfroz = -1, fdel = -1;
5266
- $("tr.jqg-second-row-header th", htbl).each(function( i ){
5341
+ $("tr.jqg-second-row-header th", htbl).each(function(){
5267
5342
  var cs= parseInt($(this).attr("colspan"),10);
5268
5343
  if(cs) {
5269
5344
  swapfroz = swapfroz+cs;
@@ -5276,7 +5351,7 @@ $.jgrid.extend({
5276
5351
  if(swapfroz !== maxfrozen) {
5277
5352
  fdel = maxfrozen;
5278
5353
  }
5279
- $("tr.jqg-second-row-header", htbl).each(function( i ){
5354
+ $("tr.jqg-second-row-header", htbl).each(function(){
5280
5355
  $("th:gt("+fdel+")",this).remove();
5281
5356
  });
5282
5357
  } else {
@@ -5290,29 +5365,14 @@ $.jgrid.extend({
5290
5365
  .mousemove(function (e) {
5291
5366
  if($t.grid.resizing){ $t.grid.dragMove(e);return false; }
5292
5367
  });
5293
- if ($.isFunction($t.p.resizeStop)) {
5294
- $t.p.orgEvents.resizeStop = $t.p.resizeStop;
5295
- }
5296
- $t.p.resizeStop = function(w, index)
5297
- {
5368
+ $($t).bind('jqGridResizeStop.setFrozenColumns', function (e, w, index) {
5298
5369
  var rhth = $(".ui-jqgrid-htable",$t.grid.fhDiv);
5299
5370
  $("th:eq("+index+")",rhth).width( w );
5300
5371
  var btd = $(".ui-jqgrid-btable",$t.grid.fbDiv);
5301
5372
  $("tr:first td:eq("+index+")",btd).width( w );
5302
-
5303
- if ($.isFunction($t.p.orgEvents.resizeStop)) {
5304
- $t.p.orgEvents.resizeStop.call($t, w, index);
5305
- } else {
5306
- $t.p.orgEvents.resizeStop = null;
5307
- }
5308
- };
5373
+ });
5309
5374
  // sorting stuff
5310
- if($.isFunction( $t.p.onSortCol)) {
5311
- $t.p.orgEvents.onSortCol = $t.p.onSortCol;
5312
- } else {
5313
- $t.p.orgEvents.onSortCol = null;
5314
- }
5315
- $t.p.onSortCol = function( index,idxcol,so ){
5375
+ $($t).bind('jqGridOnSortCol.setFrozenColumns', function (index, idxcol) {
5316
5376
 
5317
5377
  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);
5318
5378
 
@@ -5326,10 +5386,7 @@ $.jgrid.extend({
5326
5386
  $("span.s-ico",newSelectedTh).show();
5327
5387
  }
5328
5388
  }
5329
- if( $.isFunction($t.p.orgEvents.onSortCol) ) {
5330
- $t.p.orgEvents.onSortCol.call($t,index,idxcol,so);
5331
- }
5332
- };
5389
+ });
5333
5390
 
5334
5391
  // data stuff
5335
5392
  //TODO support for setRowData
@@ -5337,15 +5394,10 @@ $.jgrid.extend({
5337
5394
  jQuery($t.grid.bDiv).scroll(function () {
5338
5395
  jQuery($t.grid.fbDiv).scrollTop(jQuery(this).scrollTop());
5339
5396
  });
5340
- if ($.isFunction($t.p._complete)) {
5341
- $t.p.orgEvents.complete = $t.p._complete;
5342
- } else {
5343
- $t.p.orgEvents.complete = null;
5344
- }
5345
5397
  if($t.p.hoverrows === true) {
5346
5398
  $("#"+$.jgrid.jqID($t.p.id)).unbind('mouseover').unbind('mouseout');
5347
5399
  }
5348
- $t.p._complete = function() {
5400
+ $($t).bind('jqGridAfterGridComplete.setFrozenColumns', function () {
5349
5401
  $("#"+$.jgrid.jqID($t.p.id)+"_frozen").remove();
5350
5402
  jQuery($t.grid.fbDiv).height( jQuery($t.grid.bDiv).height()-16);
5351
5403
  var btbl = $("#"+$.jgrid.jqID($t.p.id)).clone(true);
@@ -5353,12 +5405,12 @@ $.jgrid.extend({
5353
5405
  $("td:gt("+maxfrozen+")",this).remove();
5354
5406
  });
5355
5407
 
5356
- $(btbl).width(1).attr("id",$.jgrid.jqID($t.p.id)+"_frozen");
5408
+ $(btbl).width(1).attr("id",$t.p.id+"_frozen");
5357
5409
  $($t.grid.fbDiv).append(btbl);
5358
5410
  if($t.p.hoverrows === true) {
5359
5411
  $("tr.jqgrow", btbl).hover(
5360
- function(){ $(this).addClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)).addClass("ui-state-hover") },
5361
- function(){ $(this).removeClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)).removeClass("ui-state-hover") }
5412
+ function(){ $(this).addClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)).addClass("ui-state-hover"); },
5413
+ function(){ $(this).removeClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)).removeClass("ui-state-hover"); }
5362
5414
  );
5363
5415
  $("tr.jqgrow", "#"+$.jgrid.jqID($t.p.id)).hover(
5364
5416
  function(){ $(this).addClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)+"_frozen").addClass("ui-state-hover");},
@@ -5366,10 +5418,7 @@ $.jgrid.extend({
5366
5418
  );
5367
5419
  }
5368
5420
  btbl=null;
5369
- if($.isFunction($t.p.orgEvents.complete)) {
5370
- $t.p.orgEvents.complete.call($t);
5371
- }
5372
- };
5421
+ });
5373
5422
  $t.p.frozenColumns = true;
5374
5423
  }
5375
5424
  });
@@ -5382,11 +5431,8 @@ $.jgrid.extend({
5382
5431
  $($t.grid.fhDiv).remove();
5383
5432
  $($t.grid.fbDiv).remove();
5384
5433
  $t.grid.fhDiv = null; $t.grid.fbDiv=null;
5385
- $t.p._complete = $t.p.orgEvents.complete;
5386
- $t.p.resizeStop = $t.p.orgEvents.resizeStop;
5387
- $t.p.onSortCol = $t.p.orgEvents.onSortCol;
5388
- $t.p.orgEvents = null;
5389
- if($t.p.hoverrows == true) {
5434
+ $(this).unbind('.setFrozenColumns');
5435
+ if($t.p.hoverrows === true) {
5390
5436
  var ptr;
5391
5437
  $("#"+$.jgrid.jqID($t.p.id)).bind('mouseover',function(e) {
5392
5438
  ptr = $(e.target).closest("tr.jqgrow");
@@ -5811,9 +5857,12 @@ $.fn.jqFilter = function( arg ) {
5811
5857
  }
5812
5858
  // data
5813
5859
  $(".data",trpar).empty().append( elm );
5814
- $(".input-elm",trpar).bind('change',function() {
5815
- rule.data = $(this).val();
5816
- that.onchange(); // signals that the filter has changed
5860
+ $(".input-elm",trpar).bind('change',function( e ) {
5861
+ var tmo = $(this).hasClass("ui-autocomplete-input") ? 200 :0;
5862
+ setTimeout(function(){
5863
+ rule.data = e.target.value;
5864
+ that.onchange(); // signals that the filter has changed
5865
+ }, tmo);
5817
5866
  });
5818
5867
  setTimeout(function(){ //IE, Opera, Chrome
5819
5868
  rule.data = $(elm).val();
@@ -6148,7 +6197,7 @@ $.jgrid.extend({
6148
6197
  sValue:'searchString',
6149
6198
  sOper: 'searchOper',
6150
6199
  sFilter: 'filters',
6151
- loadDefaults: true, // this options activates loading of default filters from grid's postData for Multipe Search only.
6200
+ loadDefaults: true, // this options activates loading of default filters from grid's postData for Multipe Search only.
6152
6201
  beforeShowSearch: null,
6153
6202
  afterShowSearch : null,
6154
6203
  onInitializeSearch: null,
@@ -6184,8 +6233,8 @@ $.jgrid.extend({
6184
6233
  tmplFilters : null,
6185
6234
  // translations - later in lang file
6186
6235
  tmplLabel : ' Template: ',
6187
- showOnLoad: false,
6188
- layer: null
6236
+ showOnLoad: false,
6237
+ layer: null
6189
6238
  }, $.jgrid.search, p || {});
6190
6239
  return this.each(function() {
6191
6240
  var $t = this;
@@ -6193,31 +6242,34 @@ $.jgrid.extend({
6193
6242
  var fid = "fbox_"+$t.p.id,
6194
6243
  showFrm = true,
6195
6244
  IDs = {themodal:'searchmod'+fid,modalhead:'searchhd'+fid,modalcontent:'searchcnt'+fid, scrollelm : fid},
6196
- defaultFilters = $t.p.postData[p.sFilter];
6245
+ defaultFilters = $t.p.postData[p.sFilter],
6246
+ _filter = $("#"+$.jgrid.jqID(fid));
6197
6247
  if(typeof(defaultFilters) === "string") {
6198
6248
  defaultFilters = $.jgrid.parse( defaultFilters );
6199
6249
  }
6200
6250
  if(p.recreateFilter === true) {
6201
- $("#"+IDs.themodal).remove();
6251
+ $("#"+$.jgrid.jqID(IDs.themodal)).remove();
6202
6252
  }
6203
6253
  function showFilter() {
6204
- if($.isFunction(p.beforeShowSearch)) {
6205
- showFrm = p.beforeShowSearch($("#"+fid));
6206
- if(typeof(showFrm) === "undefined") {
6207
- showFrm = true;
6208
- }
6254
+ showFrm = $($t).triggerHandler("jqGridFilterBeforeShow", [_filter]);
6255
+ if(typeof(showFrm) === "undefined") {
6256
+ showFrm = true;
6257
+ }
6258
+ if(showFrm && $.isFunction(p.beforeShowSearch)) {
6259
+ showFrm = p.beforeShowSearch.call($t,_filter);
6209
6260
  }
6210
6261
  if(showFrm) {
6211
- $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+fid,jqm:p.jqModal, modal:p.modal, overlay: p.overlay, toTop: p.toTop});
6262
+ $.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(fid),jqm:p.jqModal, modal:p.modal, overlay: p.overlay, toTop: p.toTop});
6263
+ $($t).triggerHandler("jqGridFilterAfterShow", [_filter]);
6212
6264
  if($.isFunction(p.afterShowSearch)) {
6213
- p.afterShowSearch($("#"+fid));
6265
+ p.afterShowSearch.call($t, _filter);
6214
6266
  }
6215
6267
  }
6216
6268
  }
6217
- if ( $("#"+IDs.themodal).html() !== null ) {
6269
+ if ( $("#"+$.jgrid.jqID(IDs.themodal)).html() !== null ) {
6218
6270
  showFilter();
6219
6271
  } else {
6220
- var fil = $("<div><div id='"+fid+"' class='searchFilter' style='overflow:auto'></div></div>").insertBefore("#gview_"+$t.p.id),
6272
+ var fil = $("<div><div id='"+fid+"' class='searchFilter' style='overflow:auto'></div></div>").insertBefore("#gview_"+$.jgrid.jqID($t.p.id)),
6221
6273
  align = "left", butleft ="";
6222
6274
  if($t.p.direction == "rtl") {
6223
6275
  align = "right";
@@ -6274,7 +6326,7 @@ $.jgrid.extend({
6274
6326
  }
6275
6327
 
6276
6328
  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>";
6277
-
6329
+ fid = $.jgrid.jqID( fid);
6278
6330
  $("#"+fid).jqFilter({
6279
6331
  columns : columns,
6280
6332
  filter: p.loadDefaults ? defaultFilters : null,
@@ -6286,7 +6338,8 @@ $.jgrid.extend({
6286
6338
  afterRedraw : p.afterRedraw,
6287
6339
  _gridsopt : $.jgrid.search.odata,
6288
6340
  ajaxSelectOptions: $t.p.ajaxSelectOptions,
6289
- onChange : function( sp ) {
6341
+ groupOps: p.groupOps,
6342
+ onChange : function() {
6290
6343
  if(this.p.showQuery) {
6291
6344
  $('.query',this).html(this.toUserFriendlyString());
6292
6345
  }
@@ -6295,7 +6348,7 @@ $.jgrid.extend({
6295
6348
  });
6296
6349
  fil.append( bt );
6297
6350
  if(found && p.tmplFilters && p.tmplFilters.length) {
6298
- $(".ui-template", fil).bind('change', function(e){
6351
+ $(".ui-template", fil).bind('change', function(){
6299
6352
  var curtempl = $(this).val();
6300
6353
  if(curtempl=="default") {
6301
6354
  $("#"+fid).jqFilter('addFilter', defaultFilters);
@@ -6306,17 +6359,18 @@ $.jgrid.extend({
6306
6359
  });
6307
6360
  }
6308
6361
  if(p.multipleGroup === true) {p.multipleSearch = true;}
6362
+ $($t).triggerHandler("jqGridFilterInitialize", [$("#"+fid)]);
6309
6363
  if($.isFunction(p.onInitializeSearch) ) {
6310
- p.onInitializeSearch($("#"+fid));
6364
+ p.onInitializeSearch.call($t, $("#"+fid));
6311
6365
  }
6312
6366
  p.gbox = "#gbox_"+fid;
6313
6367
  if (p.layer) {
6314
- $.jgrid.createModal(IDs ,fil,p,"#gview_"+$t.p.id,$("#gbox_"+$t.p.id)[0], "#"+p.layer, {position: "relative"});
6368
+ $.jgrid.createModal(IDs ,fil,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0], "#"+$.jgrid.jqID(p.layer), {position: "relative"});
6315
6369
  } else {
6316
- $.jgrid.createModal(IDs ,fil,p,"#gview_"+$t.p.id,$("#gbox_"+$t.p.id)[0]);
6370
+ $.jgrid.createModal(IDs ,fil,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0]);
6317
6371
  }
6318
6372
  if(bQ) {
6319
- $("#"+fid+"_query").bind('click', function(e){
6373
+ $("#"+fid+"_query").bind('click', function(){
6320
6374
  $(".queryresult", fil).toggle();
6321
6375
  return false;
6322
6376
  });
@@ -6364,12 +6418,13 @@ $.jgrid.extend({
6364
6418
  }
6365
6419
  $t.p.search = true;
6366
6420
  $.extend($t.p.postData,sdata);
6421
+ $($t).triggerHandler("jqGridFilterSearch");
6367
6422
  if($.isFunction(p.onSearch) ) {
6368
- p.onSearch();
6423
+ p.onSearch.call($t);
6369
6424
  }
6370
6425
  $($t).trigger("reloadGrid",[{page:1}]);
6371
6426
  if(p.closeAfterSearch) {
6372
- $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+$t.p.id,jqm:p.jqModal,onClose: p.onClose});
6427
+ $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:p.jqModal,onClose: p.onClose});
6373
6428
  }
6374
6429
  return false;
6375
6430
  });
@@ -6387,16 +6442,17 @@ $.jgrid.extend({
6387
6442
  $(".ui-template", fil).val("default");
6388
6443
  }
6389
6444
  $.extend($t.p.postData,sdata);
6445
+ $($t).triggerHandler("jqGridFilterReset");
6390
6446
  if($.isFunction(p.onReset) ) {
6391
- p.onReset();
6447
+ p.onReset.call($t);
6392
6448
  }
6393
6449
  $($t).trigger("reloadGrid",[{page:1}]);
6394
6450
  return false;
6395
6451
  });
6396
6452
  showFilter();
6397
6453
  $(".fm-button:not(.ui-state-disabled)",fil).hover(
6398
- function(){$(this).addClass('ui-state-hover');},
6399
- function(){$(this).removeClass('ui-state-hover');}
6454
+ function(){$(this).addClass('ui-state-hover');},
6455
+ function(){$(this).removeClass('ui-state-hover');}
6400
6456
  );
6401
6457
  }
6402
6458
  });
@@ -6452,37 +6508,39 @@ $.jgrid.extend({
6452
6508
  var $t = this;
6453
6509
  if (!$t.grid || !rowid) {return;}
6454
6510
  var gID = $t.p.id,
6455
- frmgr = "FrmGrid_"+gID,frmtb = "TblGrid_"+gID,
6511
+ frmgr = "FrmGrid_"+gID, frmtborg = "TblGrid_"+gID, frmtb = "#"+$.jgrid.jqID(frmtborg),
6456
6512
  IDs = {themodal:'editmod'+gID,modalhead:'edithd'+gID,modalcontent:'editcnt'+gID, scrollelm : frmgr},
6457
6513
  onBeforeShow = $.isFunction(rp_ge[$t.p.id].beforeShowForm) ? rp_ge[$t.p.id].beforeShowForm : false,
6458
6514
  onAfterShow = $.isFunction(rp_ge[$t.p.id].afterShowForm) ? rp_ge[$t.p.id].afterShowForm : false,
6459
6515
  onBeforeInit = $.isFunction(rp_ge[$t.p.id].beforeInitData) ? rp_ge[$t.p.id].beforeInitData : false,
6460
6516
  onInitializeForm = $.isFunction(rp_ge[$t.p.id].onInitializeForm) ? rp_ge[$t.p.id].onInitializeForm : false,
6461
- copydata = null,
6462
6517
  showFrm = true,
6463
- maxCols = 1, maxRows=0, postdata, extpost, newData, diff;
6518
+ maxCols = 1, maxRows=0, postdata, extpost, newData, diff, frmoper;
6519
+ frmgr = $.jgrid.jqID(frmgr);
6464
6520
  if (rowid === "new") {
6465
6521
  rowid = "_empty";
6522
+ frmoper = "add";
6466
6523
  p.caption=rp_ge[$t.p.id].addCaption;
6467
6524
  } else {
6468
6525
  p.caption=rp_ge[$t.p.id].editCaption;
6526
+ frmoper = "edit";
6469
6527
  }
6470
- if(p.recreateForm===true && $("#"+IDs.themodal).html() !== null) {
6471
- $("#"+IDs.themodal).remove();
6528
+ if(p.recreateForm===true && $("#"+$.jgrid.jqID(IDs.themodal)).html() !== null) {
6529
+ $("#"+$.jgrid.jqID(IDs.themodal)).remove();
6472
6530
  }
6473
6531
  var closeovrl = true;
6474
6532
  if(p.checkOnUpdate && p.jqModal && !p.modal) {
6475
6533
  closeovrl = false;
6476
6534
  }
6477
6535
  function getFormData(){
6478
- $("#"+frmtb+" > tbody > tr > td > .FormElement").each(function(i) {
6536
+ $(frmtb+" > tbody > tr > td > .FormElement").each(function() {
6479
6537
  var celm = $(".customelement", this);
6480
6538
  if (celm.length) {
6481
6539
  var elem = celm[0], nm = $(elem).attr('name');
6482
- $.each($t.p.colModel, function(i,n){
6540
+ $.each($t.p.colModel, function(){
6483
6541
  if(this.name === nm && this.editoptions && $.isFunction(this.editoptions.custom_value)) {
6484
6542
  try {
6485
- postdata[nm] = this.editoptions.custom_value($("#"+$.jgrid.jqID(nm),"#"+frmtb),'get');
6543
+ postdata[nm] = this.editoptions.custom_value.call($t, $("#"+$.jgrid.jqID(nm),frmtb),'get');
6486
6544
  if (postdata[nm] === undefined) {throw "e1";}
6487
6545
  } catch (e) {
6488
6546
  if (e==="e1") {$.jgrid.info_dialog(jQuery.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.novalue,jQuery.jgrid.edit.bClose);}
@@ -6556,7 +6614,7 @@ $.jgrid.extend({
6556
6614
  tmp = $("td:eq("+i+")",obj.rows[ind]).text();
6557
6615
  } else {
6558
6616
  try {
6559
- tmp = $.unformat($("td:eq("+i+")",obj.rows[ind]),{rowId:rowid, colModel:this},i);
6617
+ tmp = $.unformat.call(obj, $("td:eq("+i+")",obj.rows[ind]),{rowId:rowid, colModel:this},i);
6560
6618
  } catch (_) {
6561
6619
  tmp = (this.edittype && this.edittype == "textarea") ? $("td:eq("+i+")",obj.rows[ind]).text() : $("td:eq("+i+")",obj.rows[ind]).html();
6562
6620
  }
@@ -6611,7 +6669,7 @@ $.jgrid.extend({
6611
6669
  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;}
6612
6670
  var cm = obj.p.colModel;
6613
6671
  if(rowid == '_empty') {
6614
- $(cm).each(function(i){
6672
+ $(cm).each(function(){
6615
6673
  nm = this.name;
6616
6674
  opt = $.extend({}, this.editoptions || {} );
6617
6675
  fld = $("#"+$.jgrid.jqID(nm),"#"+fmid);
@@ -6657,7 +6715,7 @@ $.jgrid.extend({
6657
6715
  tmp = $(this).text();
6658
6716
  } else {
6659
6717
  try {
6660
- tmp = $.unformat($(this),{rowId:rowid, colModel:cm[i]},i);
6718
+ tmp = $.unformat.call(obj, $(this),{rowId:rowid, colModel:cm[i]},i);
6661
6719
  } catch (_) {
6662
6720
  tmp = cm[i].edittype=="textarea" ? $(this).text() : $(this).html();
6663
6721
  }
@@ -6677,7 +6735,7 @@ $.jgrid.extend({
6677
6735
  case "select":
6678
6736
  var opv = tmp.split(",");
6679
6737
  opv = $.map(opv,function(n){return $.trim(n);});
6680
- $("#"+nm+" option","#"+fmid).each(function(j){
6738
+ $("#"+nm+" option","#"+fmid).each(function(){
6681
6739
  if (!cm[i].editoptions.multiple && ($.trim(tmp) == $.trim($(this).text()) || opv[0] == $.trim($(this).text()) || opv[0] == $.trim($(this).val())) ){
6682
6740
  this.selected= true;
6683
6741
  } else if (cm[i].editoptions.multiple){
@@ -6716,7 +6774,7 @@ $.jgrid.extend({
6716
6774
  case 'custom' :
6717
6775
  try {
6718
6776
  if(cm[i].editoptions && $.isFunction(cm[i].editoptions.custom_value)) {
6719
- cm[i].editoptions.custom_value($("#"+nm,"#"+fmid),'set',tmp);
6777
+ cm[i].editoptions.custom_value.call($t, $("#"+nm,"#"+fmid),'set',tmp);
6720
6778
  } else {throw "e1";}
6721
6779
  } catch (e) {
6722
6780
  if (e=="e1") {$.jgrid.info_dialog(jQuery.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.nodefined,jQuery.jgrid.edit.bClose);}
@@ -6727,7 +6785,7 @@ $.jgrid.extend({
6727
6785
  cnt++;
6728
6786
  }
6729
6787
  });
6730
- if(cnt>0) {$("#id_g","#"+frmtb).val(rowid);}
6788
+ if(cnt>0) {$("#id_g",frmtb).val(rowid);}
6731
6789
  }
6732
6790
  function setNulls() {
6733
6791
  $.each($t.p.colModel, function(i,n){
@@ -6740,8 +6798,12 @@ $.jgrid.extend({
6740
6798
  }
6741
6799
  function postIt() {
6742
6800
  var copydata, ret=[true,"",""], onCS = {}, opers = $t.p.prmNames, idname, oper, key, selr, i;
6801
+
6802
+ var retvals = $($t).triggerHandler("jqGridAddEditBeforeCheckValues", [$("#"+frmgr), frmoper]);
6803
+ if(retvals && typeof(retvals) === 'object') {postdata = retvals;}
6804
+
6743
6805
  if($.isFunction(rp_ge[$t.p.id].beforeCheckValues)) {
6744
- var retvals = rp_ge[$t.p.id].beforeCheckValues(postdata,$("#"+frmgr),postdata[$t.p.id+"_id"] == "_empty" ? opers.addoper : opers.editoper);
6806
+ retvals = rp_ge[$t.p.id].beforeCheckValues.call($t, postdata,$("#"+frmgr),postdata[$t.p.id+"_id"] == "_empty" ? opers.addoper : opers.editoper);
6745
6807
  if(retvals && typeof(retvals) === 'object') {postdata = retvals;}
6746
6808
  }
6747
6809
  for( key in postdata ){
@@ -6752,15 +6814,22 @@ $.jgrid.extend({
6752
6814
  }
6753
6815
  setNulls();
6754
6816
  if(ret[0]) {
6755
- if( $.isFunction( rp_ge[$t.p.id].onclickSubmit)) {
6756
- onCS = rp_ge[$t.p.id].onclickSubmit(rp_ge[$t.p.id],postdata) || {};
6757
- }
6758
- if( $.isFunction(rp_ge[$t.p.id].beforeSubmit)) {ret = rp_ge[$t.p.id].beforeSubmit(postdata,$("#"+frmgr));}
6817
+ onCS = $($t).triggerHandler("jqGridAddEditClickSubmit", [rp_ge[$t.p.id], postdata, frmoper]);
6818
+ if( onCS === undefined && $.isFunction( rp_ge[$t.p.id].onclickSubmit)) {
6819
+ onCS = rp_ge[$t.p.id].onclickSubmit.call($t, rp_ge[$t.p.id], postdata) || {};
6820
+ }
6821
+ ret = $($t).triggerHandler("jqGridAddEditBeforeSubmit", [postdata, $("#"+frmgr), frmoper]);
6822
+ if(ret === undefined) {
6823
+ ret = [true,"",""];
6824
+ }
6825
+ if( ret[0] && $.isFunction(rp_ge[$t.p.id].beforeSubmit)) {
6826
+ ret = rp_ge[$t.p.id].beforeSubmit(postdata,$("#"+frmgr));
6827
+ }
6759
6828
  }
6760
6829
 
6761
6830
  if(ret[0] && !rp_ge[$t.p.id].processing) {
6762
6831
  rp_ge[$t.p.id].processing = true;
6763
- $("#sData", "#"+frmtb+"_2").addClass('ui-state-active');
6832
+ $("#sData", frmtb+"_2").addClass('ui-state-active');
6764
6833
  oper = opers.oper;
6765
6834
  idname = opers.id;
6766
6835
  // we add to pos data array the action - the name is oper
@@ -6781,11 +6850,11 @@ $.jgrid.extend({
6781
6850
  }
6782
6851
  for(i in $t.p.treeReader){
6783
6852
  if($t.p.treeReader.hasOwnProperty(i)) {
6784
- var itm = $t.p.treeReader[i];
6785
- if(postdata.hasOwnProperty(itm)) {
6786
- if(postdata[oper] == opers.addoper && i === 'parent_id_field') {continue;}
6787
- delete postdata[itm];
6788
- }
6853
+ var itm = $t.p.treeReader[i];
6854
+ if(postdata.hasOwnProperty(itm)) {
6855
+ if(postdata[oper] == opers.addoper && i === 'parent_id_field') {continue;}
6856
+ delete postdata[itm];
6857
+ }
6789
6858
  }
6790
6859
  }
6791
6860
  }
@@ -6798,25 +6867,30 @@ $.jgrid.extend({
6798
6867
  complete:function(data,Status){
6799
6868
  postdata[idname] = $t.p.idPrefix + postdata[idname];
6800
6869
  if(Status != "success") {
6801
- ret[0] = false;
6802
- if ($.isFunction(rp_ge[$t.p.id].errorTextFormat)) {
6803
- ret[1] = rp_ge[$t.p.id].errorTextFormat(data);
6804
- } else {
6805
- ret[1] = Status + " Status: '" + data.statusText + "'. Error code: " + data.status;
6870
+ ret[0] = false;
6871
+ ret[1] = $($t).triggerHandler("jqGridAddEditErrorTextFormat", [data, frmoper]);
6872
+ if ($.isFunction(rp_ge[$t.p.id].errorTextFormat)) {
6873
+ ret[1] = rp_ge[$t.p.id].errorTextFormat.call($t, data);
6874
+ } else {
6875
+ ret[1] = Status + " Status: '" + data.statusText + "'. Error code: " + data.status;
6806
6876
  }
6807
6877
  } else {
6808
6878
  // data is posted successful
6809
6879
  // execute aftersubmit with the returned data from server
6810
- if( $.isFunction(rp_ge[$t.p.id].afterSubmit) ) {
6811
- ret = rp_ge[$t.p.id].afterSubmit(data,postdata);
6880
+ ret = $($t).triggerHandler("jqGridAddEditAfterSubmit", [data, postdata, frmoper]);
6881
+ if(ret === undefined) {
6882
+ ret = [true,"",""];
6883
+ }
6884
+ if( ret[0] && $.isFunction(rp_ge[$t.p.id].afterSubmit) ) {
6885
+ ret = rp_ge[$t.p.id].afterSubmit.call($t, data,postdata);
6812
6886
  }
6813
6887
  }
6814
6888
  if(ret[0] === false) {
6815
- $("#FormError>td","#"+frmtb).html(ret[1]);
6816
- $("#FormError","#"+frmtb).show();
6889
+ $("#FormError>td",frmtb).html(ret[1]);
6890
+ $("#FormError",frmtb).show();
6817
6891
  } else {
6818
6892
  // remove some values if formattaer select or checkbox
6819
- $.each($t.p.colModel, function(i,n){
6893
+ $.each($t.p.colModel, function(){
6820
6894
  if(extpost[this.name] && this.formatter && this.formatter=='select') {
6821
6895
  try {delete extpost[this.name];} catch (e) {}
6822
6896
  }
@@ -6844,7 +6918,7 @@ $.jgrid.extend({
6844
6918
  $($t).jqGrid("setSelection",ret[2]);
6845
6919
  }
6846
6920
  }
6847
- $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});
6921
+ $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});
6848
6922
  } else if (rp_ge[$t.p.id].clearAfterAdd) {
6849
6923
  if(rp_ge[$t.p.id].reloadAfterSubmit) {$($t).trigger("reloadGrid");}
6850
6924
  else {
@@ -6877,11 +6951,15 @@ $.jgrid.extend({
6877
6951
  $($t).jqGrid("setRowData", postdata[idname],postdata);
6878
6952
  }
6879
6953
  }
6880
- if(rp_ge[$t.p.id].closeAfterEdit) {$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});}
6954
+ 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});}
6881
6955
  }
6882
6956
  if($.isFunction(rp_ge[$t.p.id].afterComplete)) {
6883
6957
  copydata = data;
6884
- setTimeout(function(){rp_ge[$t.p.id].afterComplete(copydata,postdata,$("#"+frmgr));copydata=null;},500);
6958
+ setTimeout(function(){
6959
+ $($t).triggerHandler("jqGridAddEditAfterComplete", [copydata, postdata, $("#"+frmgr), frmoper]);
6960
+ rp_ge[$t.p.id].afterComplete.call($t, copydata, postdata, $("#"+frmgr));
6961
+ copydata=null;
6962
+ },500);
6885
6963
  }
6886
6964
  if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {
6887
6965
  $("#"+frmgr).data("disabled",false);
@@ -6895,7 +6973,7 @@ $.jgrid.extend({
6895
6973
  }
6896
6974
  }
6897
6975
  rp_ge[$t.p.id].processing=false;
6898
- $("#sData", "#"+frmtb+"_2").removeClass('ui-state-active');
6976
+ $("#sData", frmtb+"_2").removeClass('ui-state-active');
6899
6977
  try{$(':input:visible',"#"+frmgr)[0].focus();} catch (e){}
6900
6978
  }
6901
6979
  }, $.jgrid.ajaxOptions, rp_ge[$t.p.id].ajaxEditOptions );
@@ -6918,10 +6996,10 @@ $.jgrid.extend({
6918
6996
  ret[1] = dpret[1] || "Error deleting the selected row!" ;
6919
6997
  } else {
6920
6998
  if(ajaxOptions.data.oper == opers.addoper && rp_ge[$t.p.id].closeAfterAdd ) {
6921
- $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
6999
+ $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
6922
7000
  }
6923
7001
  if(ajaxOptions.data.oper == opers.editoper && rp_ge[$t.p.id].closeAfterEdit ) {
6924
- $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
7002
+ $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
6925
7003
  }
6926
7004
  }
6927
7005
  } else {
@@ -6930,8 +7008,8 @@ $.jgrid.extend({
6930
7008
  }
6931
7009
  }
6932
7010
  if(ret[0] === false) {
6933
- $("#FormError>td","#"+frmtb).html(ret[1]);
6934
- $("#FormError","#"+frmtb).show();
7011
+ $("#FormError>td",frmtb).html(ret[1]);
7012
+ $("#FormError",frmtb).show();
6935
7013
  // return;
6936
7014
  }
6937
7015
  }
@@ -6947,7 +7025,7 @@ $.jgrid.extend({
6947
7025
  }
6948
7026
  function checkUpdates () {
6949
7027
  var stat = true;
6950
- $("#FormError","#"+frmtb).hide();
7028
+ $("#FormError",frmtb).hide();
6951
7029
  if(rp_ge[$t.p.id].checkOnUpdate) {
6952
7030
  postdata = {};extpost={};
6953
7031
  getFormData();
@@ -6973,79 +7051,83 @@ $.jgrid.extend({
6973
7051
  }
6974
7052
  }
6975
7053
  function updateNav(cr,totr){
6976
- if (cr===0) {$("#pData","#"+frmtb+"_2").addClass('ui-state-disabled');} else {$("#pData","#"+frmtb+"_2").removeClass('ui-state-disabled');}
6977
- if (cr==totr) {$("#nData","#"+frmtb+"_2").addClass('ui-state-disabled');} else {$("#nData","#"+frmtb+"_2").removeClass('ui-state-disabled');}
7054
+ if (cr===0) {$("#pData",frmtb+"_2").addClass('ui-state-disabled');} else {$("#pData",frmtb+"_2").removeClass('ui-state-disabled');}
7055
+ if (cr==totr) {$("#nData",frmtb+"_2").addClass('ui-state-disabled');} else {$("#nData",frmtb+"_2").removeClass('ui-state-disabled');}
6978
7056
  }
6979
7057
  function getCurrPos() {
6980
7058
  var rowsInGrid = $($t).jqGrid("getDataIDs"),
6981
- selrow = $("#id_g","#"+frmtb).val(),
7059
+ selrow = $("#id_g",frmtb).val(),
6982
7060
  pos = $.inArray(selrow,rowsInGrid);
6983
7061
  return [pos,rowsInGrid];
6984
7062
  }
6985
7063
 
6986
- if ( $("#"+IDs.themodal).html() !== null ) {
6987
- if(onBeforeInit) {
6988
- showFrm = onBeforeInit($("#"+frmgr));
6989
- if(typeof(showFrm) == "undefined") {
6990
- showFrm = true;
6991
- }
7064
+ if ( $("#"+$.jgrid.jqID(IDs.themodal)).html() !== null ) {
7065
+ showFrm = $($t).triggerHandler("jqGridAddEditBeforeInitData", [$("#"+$.jgrid.jqID(frmgr))]);
7066
+ if(typeof(showFrm) == "undefined") {
7067
+ showFrm = true;
7068
+ }
7069
+ if(showFrm && onBeforeInit) {
7070
+ showFrm = onBeforeInit.call($t, $("#"+frmgr));
6992
7071
  }
6993
7072
  if(showFrm === false) {return;}
6994
7073
  restoreInline();
6995
- $(".ui-jqdialog-title","#"+IDs.modalhead).html(p.caption);
6996
- $("#FormError","#"+frmtb).hide();
7074
+ $(".ui-jqdialog-title","#"+$.jgrid.jqID(IDs.modalhead)).html(p.caption);
7075
+ $("#FormError",frmtb).hide();
6997
7076
  if(rp_ge[$t.p.id].topinfo) {
6998
- $(".topinfo","#"+frmtb).html(rp_ge[$t.p.id].topinfo);
6999
- $(".tinfo","#"+frmtb).show();
7077
+ $(".topinfo",frmtb).html(rp_ge[$t.p.id].topinfo);
7078
+ $(".tinfo",frmtb).show();
7000
7079
  } else {
7001
- $(".tinfo","#"+frmtb).hide();
7080
+ $(".tinfo",frmtb).hide();
7002
7081
  }
7003
7082
  if(rp_ge[$t.p.id].bottominfo) {
7004
- $(".bottominfo","#"+frmtb+"_2").html(rp_ge[$t.p.id].bottominfo);
7005
- $(".binfo","#"+frmtb+"_2").show();
7083
+ $(".bottominfo",frmtb+"_2").html(rp_ge[$t.p.id].bottominfo);
7084
+ $(".binfo",frmtb+"_2").show();
7006
7085
  } else {
7007
- $(".binfo","#"+frmtb+"_2").hide();
7086
+ $(".binfo",frmtb+"_2").hide();
7008
7087
  }
7009
7088
  // filldata
7010
7089
  fillData(rowid,$t,frmgr);
7011
7090
  ///
7012
7091
  if(rowid=="_empty" || !rp_ge[$t.p.id].viewPagerButtons) {
7013
- $("#pData, #nData","#"+frmtb+"_2").hide();
7092
+ $("#pData, #nData",frmtb+"_2").hide();
7014
7093
  } else {
7015
- $("#pData, #nData","#"+frmtb+"_2").show();
7094
+ $("#pData, #nData",frmtb+"_2").show();
7016
7095
  }
7017
7096
  if(rp_ge[$t.p.id].processing===true) {
7018
7097
  rp_ge[$t.p.id].processing=false;
7019
- $("#sData", "#"+frmtb+"_2").removeClass('ui-state-active');
7098
+ $("#sData", frmtb+"_2").removeClass('ui-state-active');
7020
7099
  }
7021
7100
  if($("#"+frmgr).data("disabled")===true) {
7022
- $(".confirm","#"+IDs.themodal).hide();
7101
+ $(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
7023
7102
  $("#"+frmgr).data("disabled",false);
7024
7103
  }
7025
- if(onBeforeShow) {onBeforeShow($("#"+frmgr));}
7026
- $("#"+IDs.themodal).data("onClose",rp_ge[$t.p.id].onClose);
7027
- $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, jqM: false, overlay: p.overlay, modal:p.modal});
7104
+ $($t).triggerHandler("jqGridAddEditBeforeShowForm", [$("#"+frmgr), frmoper]);
7105
+ if(onBeforeShow) { onBeforeShow.call($t, $("#"+frmgr)); }
7106
+ $("#"+$.jgrid.jqID(IDs.themodal)).data("onClose",rp_ge[$t.p.id].onClose);
7107
+ $.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, jqM: false, overlay: p.overlay, modal:p.modal});
7028
7108
  if(!closeovrl) {
7029
7109
  $(".jqmOverlay").click(function(){
7030
7110
  if(!checkUpdates()) {return false;}
7031
- $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
7111
+ $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
7032
7112
  return false;
7033
7113
  });
7034
7114
  }
7035
- if(onAfterShow) {onAfterShow($("#"+frmgr));}
7115
+ $($t).triggerHandler("jqGridAddEditAfterShowForm", [$("#"+frmgr), frmoper]);
7116
+ if(onAfterShow) { onAfterShow.call($t, $("#"+frmgr)); }
7036
7117
  } else {
7037
7118
  var dh = isNaN(p.dataheight) ? p.dataheight : p.dataheight+"px",
7038
7119
  frm = $("<form name='FormPost' id='"+frmgr+"' class='FormGrid' onSubmit='return false;' style='width:100%;overflow:auto;position:relative;height:"+dh+";'></form>").data("disabled",false),
7039
- tbl = $("<table id='"+frmtb+"' class='EditTable' cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>");
7040
- if(onBeforeInit) {
7041
- showFrm = onBeforeInit($("#"+frmgr));
7042
- if(typeof(showFrm) == "undefined") {
7043
- showFrm = true;
7044
- }
7120
+ tbl = $("<table id='"+frmtborg+"' class='EditTable' cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>");
7121
+ showFrm = $($t).triggerHandler("jqGridAddEditBeforeInitData", [$("#"+frmgr), frmoper]);
7122
+ if(typeof(showFrm) == "undefined") {
7123
+ showFrm = true;
7124
+ }
7125
+ if(showFrm && onBeforeInit) {
7126
+ showFrm = onBeforeInit.call($t, $("#"+frmgr));
7045
7127
  }
7046
7128
  if(showFrm === false) {return;}
7047
7129
  restoreInline();
7048
- $($t.p.colModel).each( function(i) {
7130
+ $($t.p.colModel).each( function() {
7049
7131
  var fmto = this.formoptions;
7050
7132
  maxCols = Math.max(maxCols, fmto ? fmto.colpos || 0 : 0 );
7051
7133
  maxRows = Math.max(maxRows, fmto ? fmto.rowpos || 0 : 0 );
@@ -7070,7 +7152,7 @@ $.jgrid.extend({
7070
7152
  bN = "<a href='javascript:void(0)' id='"+bn+"' class='fm-button ui-state-default ui-corner-right'><span class='ui-icon ui-icon-triangle-1-e'></span></a>",
7071
7153
  bS ="<a href='javascript:void(0)' id='sData' class='fm-button ui-state-default ui-corner-all'>"+p.bSubmit+"</a>",
7072
7154
  bC ="<a href='javascript:void(0)' id='cData' class='fm-button ui-state-default ui-corner-all'>"+p.bCancel+"</a>";
7073
- var bt = "<table border='0' cellspacing='0' cellpadding='0' class='EditTable' id='"+frmtb+"_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>";
7155
+ 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>";
7074
7156
  bt += "<tr style='display:none' class='binfo'><td class='bottominfo' colspan='2'>"+rp_ge[$t.p.id].bottominfo+"</td></tr>";
7075
7157
  bt += "</tbody></table>";
7076
7158
  if(maxRows > 0) {
@@ -7087,27 +7169,27 @@ $.jgrid.extend({
7087
7169
  $('tbody',tbl).append(row);
7088
7170
  });
7089
7171
  }
7090
- p.gbox = "#gbox_"+gID;
7172
+ p.gbox = "#gbox_"+$.jgrid.jqID(gID);
7091
7173
  var cle = false;
7092
7174
  if(p.closeOnEscape===true){
7093
7175
  p.closeOnEscape = false;
7094
7176
  cle = true;
7095
7177
  }
7096
7178
  var tms = $("<span></span>").append(frm).append(bt);
7097
- $.jgrid.createModal(IDs,tms,p,"#gview_"+$t.p.id,$("#gbox_"+$t.p.id)[0]);
7179
+ $.jgrid.createModal(IDs,tms,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0]);
7098
7180
  if(rtlb) {
7099
- $("#pData, #nData","#"+frmtb+"_2").css("float","right");
7100
- $(".EditButton","#"+frmtb+"_2").css("text-align","left");
7181
+ $("#pData, #nData",frmtb+"_2").css("float","right");
7182
+ $(".EditButton",frmtb+"_2").css("text-align","left");
7101
7183
  }
7102
- if(rp_ge[$t.p.id].topinfo) {$(".tinfo","#"+frmtb).show();}
7103
- if(rp_ge[$t.p.id].bottominfo) {$(".binfo","#"+frmtb+"_2").show();}
7184
+ if(rp_ge[$t.p.id].topinfo) {$(".tinfo",frmtb).show();}
7185
+ if(rp_ge[$t.p.id].bottominfo) {$(".binfo",frmtb+"_2").show();}
7104
7186
  tms = null;bt=null;
7105
- $("#"+IDs.themodal).keydown( function( e ) {
7187
+ $("#"+$.jgrid.jqID(IDs.themodal)).keydown( function( e ) {
7106
7188
  var wkey = e.target;
7107
7189
  if ($("#"+frmgr).data("disabled")===true ) {return false;}//??
7108
7190
  if(rp_ge[$t.p.id].savekey[0] === true && e.which == rp_ge[$t.p.id].savekey[1]) { // save
7109
7191
  if(wkey.tagName != "TEXTAREA") {
7110
- $("#sData", "#"+frmtb+"_2").trigger("click");
7192
+ $("#sData", frmtb+"_2").trigger("click");
7111
7193
  return false;
7112
7194
  }
7113
7195
  }
@@ -7117,23 +7199,23 @@ $.jgrid.extend({
7117
7199
  return false;
7118
7200
  }
7119
7201
  if(rp_ge[$t.p.id].navkeys[0]===true) {
7120
- if($("#id_g","#"+frmtb).val() == "_empty") {return true;}
7202
+ if($("#id_g",frmtb).val() == "_empty") {return true;}
7121
7203
  if(e.which == rp_ge[$t.p.id].navkeys[1]){ //up
7122
- $("#pData", "#"+frmtb+"_2").trigger("click");
7204
+ $("#pData", frmtb+"_2").trigger("click");
7123
7205
  return false;
7124
7206
  }
7125
7207
  if(e.which == rp_ge[$t.p.id].navkeys[2]){ //down
7126
- $("#nData", "#"+frmtb+"_2").trigger("click");
7208
+ $("#nData", frmtb+"_2").trigger("click");
7127
7209
  return false;
7128
7210
  }
7129
7211
  }
7130
7212
  });
7131
7213
  if(p.checkOnUpdate) {
7132
- $("a.ui-jqdialog-titlebar-close span","#"+IDs.themodal).removeClass("jqmClose");
7133
- $("a.ui-jqdialog-titlebar-close","#"+IDs.themodal).unbind("click")
7214
+ $("a.ui-jqdialog-titlebar-close span","#"+$.jgrid.jqID(IDs.themodal)).removeClass("jqmClose");
7215
+ $("a.ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.themodal)).unbind("click")
7134
7216
  .click(function(){
7135
7217
  if(!checkUpdates()) {return false;}
7136
- $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});
7218
+ $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});
7137
7219
  return false;
7138
7220
  });
7139
7221
  }
@@ -7141,11 +7223,11 @@ $.jgrid.extend({
7141
7223
  p.closeicon = $.extend([true,"left","ui-icon-close"],p.closeicon);
7142
7224
  // beforeinitdata after creation of the form
7143
7225
  if(p.saveicon[0]===true) {
7144
- $("#sData","#"+frmtb+"_2").addClass(p.saveicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
7226
+ $("#sData",frmtb+"_2").addClass(p.saveicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
7145
7227
  .append("<span class='ui-icon "+p.saveicon[2]+"'></span>");
7146
7228
  }
7147
7229
  if(p.closeicon[0]===true) {
7148
- $("#cData","#"+frmtb+"_2").addClass(p.closeicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
7230
+ $("#cData",frmtb+"_2").addClass(p.closeicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
7149
7231
  .append("<span class='ui-icon "+p.closeicon[2]+"'></span>");
7150
7232
  }
7151
7233
  if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {
@@ -7157,46 +7239,49 @@ $.jgrid.extend({
7157
7239
  ii = '<iframe style="display:block;position:absolute;z-index:-1;filter:Alpha(Opacity=\'0\');" src="javascript:false;"></iframe>';
7158
7240
  } else {ii="";}
7159
7241
  $("<div class='ui-widget-overlay jqgrid-overlay confirm' style='z-index:"+zI+";display:none;'>&#160;"+ii+"</div><div class='confirm ui-widget-content ui-jqconfirm' style='z-index:"+(zI+1)+"'>"+p.saveData+"<br/><br/>"+bS+bN+bC+"</div>").insertAfter("#"+frmgr);
7160
- $("#sNew","#"+IDs.themodal).click(function(){
7242
+ $("#sNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){
7161
7243
  postIt();
7162
7244
  $("#"+frmgr).data("disabled",false);
7163
- $(".confirm","#"+IDs.themodal).hide();
7245
+ $(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
7164
7246
  return false;
7165
7247
  });
7166
- $("#nNew","#"+IDs.themodal).click(function(){
7167
- $(".confirm","#"+IDs.themodal).hide();
7248
+ $("#nNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){
7249
+ $(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
7168
7250
  $("#"+frmgr).data("disabled",false);
7169
7251
  setTimeout(function(){$(":input","#"+frmgr)[0].focus();},0);
7170
7252
  return false;
7171
7253
  });
7172
- $("#cNew","#"+IDs.themodal).click(function(){
7173
- $(".confirm","#"+IDs.themodal).hide();
7254
+ $("#cNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){
7255
+ $(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
7174
7256
  $("#"+frmgr).data("disabled",false);
7175
- $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});
7257
+ $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});
7176
7258
  return false;
7177
7259
  });
7178
7260
  }
7179
7261
  // here initform - only once
7262
+ $($t).triggerHandler("jqGridAddEditInitializeForm", [$("#"+frmgr), frmoper]);
7180
7263
  if(onInitializeForm) {onInitializeForm($("#"+frmgr));}
7181
- if(rowid=="_empty" || !rp_ge[$t.p.id].viewPagerButtons) {$("#pData,#nData","#"+frmtb+"_2").hide();} else {$("#pData,#nData","#"+frmtb+"_2").show();}
7182
- if(onBeforeShow) {onBeforeShow($("#"+frmgr));}
7183
- $("#"+IDs.themodal).data("onClose",rp_ge[$t.p.id].onClose);
7184
- $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, overlay: p.overlay,modal:p.modal});
7264
+ if(rowid=="_empty" || !rp_ge[$t.p.id].viewPagerButtons) {$("#pData,#nData",frmtb+"_2").hide();} else {$("#pData,#nData",frmtb+"_2").show();}
7265
+ $($t).triggerHandler("jqGridAddEditBeforeShowForm", [$("#"+frmgr), frmoper]);
7266
+ if(onBeforeShow) { onBeforeShow.call($t, $("#"+frmgr));}
7267
+ $("#"+$.jgrid.jqID(IDs.themodal)).data("onClose",rp_ge[$t.p.id].onClose);
7268
+ $.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, overlay: p.overlay,modal:p.modal});
7185
7269
  if(!closeovrl) {
7186
7270
  $(".jqmOverlay").click(function(){
7187
7271
  if(!checkUpdates()) {return false;}
7188
- $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
7272
+ $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
7189
7273
  return false;
7190
7274
  });
7191
7275
  }
7192
- if(onAfterShow) {onAfterShow($("#"+frmgr));}
7193
- $(".fm-button","#"+IDs.themodal).hover(
7194
- function(){$(this).addClass('ui-state-hover');},
7195
- function(){$(this).removeClass('ui-state-hover');}
7276
+ $($t).triggerHandler("jqGridAddEditAfterShowForm", [$("#"+frmgr), frmoper]);
7277
+ if(onAfterShow) { onAfterShow.call($t, $("#"+frmgr)); }
7278
+ $(".fm-button","#"+$.jgrid.jqID(IDs.themodal)).hover(
7279
+ function(){$(this).addClass('ui-state-hover');},
7280
+ function(){$(this).removeClass('ui-state-hover');}
7196
7281
  );
7197
- $("#sData", "#"+frmtb+"_2").click(function(e){
7282
+ $("#sData", frmtb+"_2").click(function(){
7198
7283
  postdata = {};extpost={};
7199
- $("#FormError","#"+frmtb).hide();
7284
+ $("#FormError",frmtb).hide();
7200
7285
  // all depend on ret array
7201
7286
  //ret[0] - succes
7202
7287
  //ret[1] - msg if not succes
@@ -7208,7 +7293,7 @@ $.jgrid.extend({
7208
7293
  diff = compareData(newData,rp_ge[$t.p.id]._savedData);
7209
7294
  if(diff) {
7210
7295
  $("#"+frmgr).data("disabled",true);
7211
- $(".confirm","#"+IDs.themodal).show();
7296
+ $(".confirm","#"+$.jgrid.jqID(IDs.themodal)).show();
7212
7297
  } else {
7213
7298
  postIt();
7214
7299
  }
@@ -7217,41 +7302,45 @@ $.jgrid.extend({
7217
7302
  }
7218
7303
  return false;
7219
7304
  });
7220
- $("#cData", "#"+frmtb+"_2").click(function(e){
7305
+ $("#cData", frmtb+"_2").click(function(){
7221
7306
  if(!checkUpdates()) {return false;}
7222
- $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});
7307
+ $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});
7223
7308
  return false;
7224
7309
  });
7225
- $("#nData", "#"+frmtb+"_2").click(function(e){
7310
+ $("#nData", frmtb+"_2").click(function(){
7226
7311
  if(!checkUpdates()) {return false;}
7227
- $("#FormError","#"+frmtb).hide();
7312
+ $("#FormError",frmtb).hide();
7228
7313
  var npos = getCurrPos();
7229
7314
  npos[0] = parseInt(npos[0],10);
7230
7315
  if(npos[0] != -1 && npos[1][npos[0]+1]) {
7316
+ $($t).triggerHandler("jqGridAddEditClickPgButtons", ['next',$("#"+frmgr),npos[1][npos[0]]]);
7231
7317
  if($.isFunction(p.onclickPgButtons)) {
7232
- p.onclickPgButtons('next',$("#"+frmgr),npos[1][npos[0]]);
7318
+ p.onclickPgButtons.call($t, 'next',$("#"+frmgr),npos[1][npos[0]]);
7233
7319
  }
7234
7320
  fillData(npos[1][npos[0]+1],$t,frmgr);
7235
7321
  $($t).jqGrid("setSelection",npos[1][npos[0]+1]);
7322
+ $($t).triggerHandler("jqGridAddEditAfterClickPgButtons", ['next',$("#"+frmgr),npos[1][npos[0]]]);
7236
7323
  if($.isFunction(p.afterclickPgButtons)) {
7237
- p.afterclickPgButtons('next',$("#"+frmgr),npos[1][npos[0]+1]);
7324
+ p.afterclickPgButtons.call($t, 'next',$("#"+frmgr),npos[1][npos[0]+1]);
7238
7325
  }
7239
7326
  updateNav(npos[0]+1,npos[1].length-1);
7240
7327
  }
7241
7328
  return false;
7242
7329
  });
7243
- $("#pData", "#"+frmtb+"_2").click(function(e){
7330
+ $("#pData", frmtb+"_2").click(function(){
7244
7331
  if(!checkUpdates()) {return false;}
7245
- $("#FormError","#"+frmtb).hide();
7332
+ $("#FormError",frmtb).hide();
7246
7333
  var ppos = getCurrPos();
7247
7334
  if(ppos[0] != -1 && ppos[1][ppos[0]-1]) {
7335
+ $($t).triggerHandler("jqGridAddEditClickPgButtons", ['prev',$("#"+frmgr),ppos[1][ppos[0]]]);
7248
7336
  if($.isFunction(p.onclickPgButtons)) {
7249
- p.onclickPgButtons('prev',$("#"+frmgr),ppos[1][ppos[0]]);
7337
+ p.onclickPgButtons.call($t, 'prev',$("#"+frmgr),ppos[1][ppos[0]]);
7250
7338
  }
7251
7339
  fillData(ppos[1][ppos[0]-1],$t,frmgr);
7252
7340
  $($t).jqGrid("setSelection",ppos[1][ppos[0]-1]);
7341
+ $($t).triggerHandler("jqGridAddEditAfterClickPgButtons", ['prev',$("#"+frmgr),ppos[1][ppos[0]]]);
7253
7342
  if($.isFunction(p.afterclickPgButtons)) {
7254
- p.afterclickPgButtons('prev',$("#"+frmgr),ppos[1][ppos[0]-1]);
7343
+ p.afterclickPgButtons.call($t, 'prev',$("#"+frmgr),ppos[1][ppos[0]-1]);
7255
7344
  }
7256
7345
  updateNav(ppos[0]-1,ppos[1].length-1);
7257
7346
  }
@@ -7288,14 +7377,15 @@ $.jgrid.extend({
7288
7377
  var $t = this;
7289
7378
  if (!$t.grid || !rowid) {return;}
7290
7379
  var gID = $t.p.id,
7291
- frmgr = "ViewGrid_"+gID , frmtb = "ViewTbl_"+gID,
7380
+ frmgr = "ViewGrid_"+$.jgrid.jqID( gID ), frmtb = "ViewTbl_" + $.jgrid.jqID( gID ),
7381
+ frmgr_id = "ViewGrid_"+gID, frmtb_id = "ViewTbl_"+gID,
7292
7382
  IDs = {themodal:'viewmod'+gID,modalhead:'viewhd'+gID,modalcontent:'viewcnt'+gID, scrollelm : frmgr},
7293
7383
  onBeforeInit = $.isFunction(p.beforeInitData) ? p.beforeInitData : false,
7294
7384
  showFrm = true,
7295
7385
  maxCols = 1, maxRows=0;
7296
7386
  function focusaref(){ //Sfari 3 issues
7297
7387
  if(p.closeOnEscape===true || p.navkeys[0]===true) {
7298
- setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+IDs.modalhead).focus();},0);
7388
+ setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.modalhead)).focus();},0);
7299
7389
  }
7300
7390
  }
7301
7391
  function createData(rowid,obj,tb,maxcols){
@@ -7307,7 +7397,7 @@ $.jgrid.extend({
7307
7397
  tmpl += i == 1 ? tdtmpl : tdtmpl2;
7308
7398
  }
7309
7399
  // find max number align rigth with property formatter
7310
- $(obj.p.colModel).each( function(i) {
7400
+ $(obj.p.colModel).each( function() {
7311
7401
  if(this.editrules && this.editrules.edithidden === true) {
7312
7402
  hc = false;
7313
7403
  } else {
@@ -7415,7 +7505,7 @@ $.jgrid.extend({
7415
7505
  return [pos,rowsInGrid];
7416
7506
  }
7417
7507
 
7418
- if ( $("#"+IDs.themodal).html() !== null ) {
7508
+ if ( $("#"+$.jgrid.jqID(IDs.themodal)).html() !== null ) {
7419
7509
  if(onBeforeInit) {
7420
7510
  showFrm = onBeforeInit($("#"+frmgr));
7421
7511
  if(typeof(showFrm) == "undefined") {
@@ -7423,16 +7513,16 @@ $.jgrid.extend({
7423
7513
  }
7424
7514
  }
7425
7515
  if(showFrm === false) {return;}
7426
- $(".ui-jqdialog-title","#"+IDs.modalhead).html(p.caption);
7516
+ $(".ui-jqdialog-title","#"+$.jgrid.jqID(IDs.modalhead)).html(p.caption);
7427
7517
  $("#FormError","#"+frmtb).hide();
7428
7518
  fillData(rowid,$t);
7429
7519
  if($.isFunction(p.beforeShowForm)) {p.beforeShowForm($("#"+frmgr));}
7430
- $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, jqM: false, overlay: p.overlay, modal:p.modal});
7520
+ $.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, jqM: false, overlay: p.overlay, modal:p.modal});
7431
7521
  focusaref();
7432
7522
  } else {
7433
7523
  var dh = isNaN(p.dataheight) ? p.dataheight : p.dataheight+"px";
7434
- var frm = $("<form name='FormPost' id='"+frmgr+"' class='FormGrid' style='width:100%;overflow:auto;position:relative;height:"+dh+";'></form>"),
7435
- tbl =$("<table id='"+frmtb+"' class='EditTable' cellspacing='1' cellpadding='2' border='0' style='table-layout:fixed'><tbody></tbody></table>");
7524
+ var frm = $("<form name='FormPost' id='"+frmgr_id+"' class='FormGrid' style='width:100%;overflow:auto;position:relative;height:"+dh+";'></form>"),
7525
+ tbl =$("<table id='"+frmtb_id+"' class='EditTable' cellspacing='1' cellpadding='2' border='0' style='table-layout:fixed'><tbody></tbody></table>");
7436
7526
  if(onBeforeInit) {
7437
7527
  showFrm = onBeforeInit($("#"+frmgr));
7438
7528
  if(typeof(showFrm) == "undefined") {
@@ -7440,7 +7530,7 @@ $.jgrid.extend({
7440
7530
  }
7441
7531
  }
7442
7532
  if(showFrm === false) {return;}
7443
- $($t.p.colModel).each( function(i) {
7533
+ $($t.p.colModel).each( function() {
7444
7534
  var fmto = this.formoptions;
7445
7535
  maxCols = Math.max(maxCols, fmto ? fmto.colpos || 0 : 0 );
7446
7536
  maxRows = Math.max(maxRows, fmto ? fmto.rowpos || 0 : 0 );
@@ -7470,14 +7560,14 @@ $.jgrid.extend({
7470
7560
  $('tbody',tbl).append(row);
7471
7561
  });
7472
7562
  }
7473
- p.gbox = "#gbox_"+gID;
7563
+ p.gbox = "#gbox_"+$.jgrid.jqID(gID);
7474
7564
  var cle = false;
7475
7565
  if(p.closeOnEscape===true){
7476
7566
  p.closeOnEscape = false;
7477
7567
  cle = true;
7478
7568
  }
7479
7569
  var bt = $("<span></span>").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>");
7480
- $.jgrid.createModal(IDs,bt,p,"#gview_"+$t.p.id,$("#gview_"+$t.p.id)[0]);
7570
+ $.jgrid.createModal(IDs,bt,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gview_"+$.jgrid.jqID($t.p.id))[0]);
7481
7571
  if(rtlb) {
7482
7572
  $("#pData, #nData","#"+frmtb+"_2").css("float","right");
7483
7573
  $(".EditButton","#"+frmtb+"_2").css("text-align","left");
@@ -7506,17 +7596,17 @@ $.jgrid.extend({
7506
7596
  .append("<span class='ui-icon "+p.closeicon[2]+"'></span>");
7507
7597
  }
7508
7598
  if($.isFunction(p.beforeShowForm)) {p.beforeShowForm($("#"+frmgr));}
7509
- $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, modal:p.modal});
7599
+ $.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, modal:p.modal});
7510
7600
  $(".fm-button:not(.ui-state-disabled)","#"+frmtb+"_2").hover(
7511
- function(){$(this).addClass('ui-state-hover');},
7512
- function(){$(this).removeClass('ui-state-hover');}
7601
+ function(){$(this).addClass('ui-state-hover');},
7602
+ function(){$(this).removeClass('ui-state-hover');}
7513
7603
  );
7514
7604
  focusaref();
7515
- $("#cData", "#"+frmtb+"_2").click(function(e){
7516
- $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: p.onClose});
7605
+ $("#cData", "#"+frmtb+"_2").click(function(){
7606
+ $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: p.onClose});
7517
7607
  return false;
7518
7608
  });
7519
- $("#nData", "#"+frmtb+"_2").click(function(e){
7609
+ $("#nData", "#"+frmtb+"_2").click(function(){
7520
7610
  $("#FormError","#"+frmtb).hide();
7521
7611
  var npos = getCurrPos();
7522
7612
  npos[0] = parseInt(npos[0],10);
@@ -7534,7 +7624,7 @@ $.jgrid.extend({
7534
7624
  focusaref();
7535
7625
  return false;
7536
7626
  });
7537
- $("#pData", "#"+frmtb+"_2").click(function(e){
7627
+ $("#pData", "#"+frmtb+"_2").click(function(){
7538
7628
  $("#FormError","#"+frmtb).hide();
7539
7629
  var ppos = getCurrPos();
7540
7630
  if(ppos[0] != -1 && ppos[1][ppos[0]-1]) {
@@ -7597,10 +7687,11 @@ $.jgrid.extend({
7597
7687
  onBeforeInit = $.isFunction(rp_ge[$t.p.id].beforeInitData) ? rp_ge[$t.p.id].beforeInitData : false,
7598
7688
  gID = $t.p.id, onCS = {},
7599
7689
  showFrm = true,
7600
- dtbl = "DelTbl_"+gID,postd, idname, opers, oper,
7690
+ dtbl = "DelTbl_"+$.jgrid.jqID(gID),postd, idname, opers, oper,
7691
+ dtbl_id = "DelTbl_" + gID,
7601
7692
  IDs = {themodal:'delmod'+gID,modalhead:'delhd'+gID,modalcontent:'delcnt'+gID, scrollelm: dtbl};
7602
7693
  if (jQuery.isArray(rowids)) {rowids = rowids.join();}
7603
- if ( $("#"+IDs.themodal).html() !== null ) {
7694
+ if ( $("#"+$.jgrid.jqID(IDs.themodal)).html() !== null ) {
7604
7695
  if(onBeforeInit) {
7605
7696
  showFrm = onBeforeInit( $("#"+dtbl));
7606
7697
  if(typeof(showFrm) == "undefined") {
@@ -7615,11 +7706,11 @@ $.jgrid.extend({
7615
7706
  $("#dData", "#"+dtbl).removeClass('ui-state-active');
7616
7707
  }
7617
7708
  if(onBeforeShow) {rp_ge[$t.p.id].beforeShowForm($("#"+dtbl));}
7618
- $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:rp_ge[$t.p.id].jqModal,jqM: false, overlay: rp_ge[$t.p.id].overlay, modal:rp_ge[$t.p.id].modal});
7709
+ $.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});
7619
7710
  if(onAfterShow) {rp_ge[$t.p.id].afterShowForm($("#"+dtbl));}
7620
7711
  } else {
7621
7712
  var dh = isNaN(rp_ge[$t.p.id].dataheight) ? rp_ge[$t.p.id].dataheight : rp_ge[$t.p.id].dataheight+"px";
7622
- var tbl = "<div id='"+dtbl+"' class='formdata' style='width:100%;overflow:auto;position:relative;height:"+dh+";'>";
7713
+ var tbl = "<div id='"+dtbl_id+"' class='formdata' style='width:100%;overflow:auto;position:relative;height:"+dh+";'>";
7623
7714
  tbl += "<table class='DelTable'><tbody>";
7624
7715
  // error data
7625
7716
  tbl += "<tr id='DelError' style='display:none'><td class='ui-state-error'></td></tr>";
@@ -7630,8 +7721,8 @@ $.jgrid.extend({
7630
7721
  var bS = "<a href='javascript:void(0)' id='dData' class='fm-button ui-state-default ui-corner-all'>"+p.bSubmit+"</a>",
7631
7722
  bC = "<a href='javascript:void(0)' id='eData' class='fm-button ui-state-default ui-corner-all'>"+p.bCancel+"</a>";
7632
7723
  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>";
7633
- p.gbox = "#gbox_"+gID;
7634
- $.jgrid.createModal(IDs,tbl,p,"#gview_"+$t.p.id,$("#gview_"+$t.p.id)[0]);
7724
+ p.gbox = "#gbox_"+$.jgrid.jqID(gID);
7725
+ $.jgrid.createModal(IDs,tbl,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gview_"+$.jgrid.jqID($t.p.id))[0]);
7635
7726
 
7636
7727
  if(onBeforeInit) {
7637
7728
  showFrm = onBeforeInit( $("#"+dtbl) );
@@ -7642,8 +7733,8 @@ $.jgrid.extend({
7642
7733
  if(showFrm === false) {return;}
7643
7734
 
7644
7735
  $(".fm-button","#"+dtbl+"_2").hover(
7645
- function(){$(this).addClass('ui-state-hover');},
7646
- function(){$(this).removeClass('ui-state-hover');}
7736
+ function(){$(this).addClass('ui-state-hover');},
7737
+ function(){$(this).removeClass('ui-state-hover');}
7647
7738
  );
7648
7739
  p.delicon = $.extend([true,"left","ui-icon-scissors"],rp_ge[$t.p.id].delicon);
7649
7740
  p.cancelicon = $.extend([true,"left","ui-icon-cancel"],rp_ge[$t.p.id].cancelicon);
@@ -7655,27 +7746,27 @@ $.jgrid.extend({
7655
7746
  $("#eData","#"+dtbl+"_2").addClass(p.cancelicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
7656
7747
  .append("<span class='ui-icon "+p.cancelicon[2]+"'></span>");
7657
7748
  }
7658
- $("#dData","#"+dtbl+"_2").click(function(e){
7749
+ $("#dData","#"+dtbl+"_2").click(function(){
7659
7750
  var ret=[true,""];onCS = {};
7660
7751
  var postdata = $("#DelData>td","#"+dtbl).text(); //the pair is name=val1,val2,...
7661
7752
  if( $.isFunction( rp_ge[$t.p.id].onclickSubmit ) ) {onCS = rp_ge[$t.p.id].onclickSubmit(rp_ge[$t.p.id], postdata) || {};}
7662
7753
  if( $.isFunction( rp_ge[$t.p.id].beforeSubmit ) ) {ret = rp_ge[$t.p.id].beforeSubmit(postdata);}
7663
7754
  if(ret[0] && !rp_ge[$t.p.id].processing) {
7664
7755
  rp_ge[$t.p.id].processing = true;
7665
- $(this).addClass('ui-state-active');
7666
7756
  opers = $t.p.prmNames;
7667
7757
  postd = $.extend({},rp_ge[$t.p.id].delData, onCS);
7668
7758
  oper = opers.oper;
7669
7759
  postd[oper] = opers.deloper;
7670
7760
  idname = opers.id;
7671
- postdata = postdata.split(",");
7761
+ postdata = String(postdata).split(",");
7762
+ if(!postdata.length) { return false; }
7672
7763
  for( var pk in postdata) {
7673
7764
  if(postdata.hasOwnProperty(pk)) {
7674
7765
  postdata[pk] = $.jgrid.stripPref($t.p.idPrefix, postdata[pk]);
7675
7766
  }
7676
7767
  }
7677
7768
  postd[idname] = postdata.join();
7678
-
7769
+ $(this).addClass('ui-state-active');
7679
7770
  var ajaxOptions = $.extend({
7680
7771
  url: rp_ge[$t.p.id].url ? rp_ge[$t.p.id].url : $($t).jqGrid('getGridParam','editurl'),
7681
7772
  type: rp_ge[$t.p.id].mtype,
@@ -7702,13 +7793,11 @@ $.jgrid.extend({
7702
7793
  if(rp_ge[$t.p.id].reloadAfterSubmit && $t.p.datatype != "local") {
7703
7794
  $($t).trigger("reloadGrid");
7704
7795
  } else {
7705
- var toarr = [];
7706
- toarr = postdata.split(",");
7707
7796
  if($t.p.treeGrid===true){
7708
- try {$($t).jqGrid("delTreeNode",$t.p.idPrefix+toarr[0]);} catch(e){}
7797
+ try {$($t).jqGrid("delTreeNode",$t.p.idPrefix+postdata[0]);} catch(e){}
7709
7798
  } else {
7710
- for(var i=0;i<toarr.length;i++) {
7711
- $($t).jqGrid("delRowData",$t.p.idPrefix+ toarr[i]);
7799
+ for(var i=0;i<postdata.length;i++) {
7800
+ $($t).jqGrid("delRowData",$t.p.idPrefix+ postdata[i]);
7712
7801
  }
7713
7802
  }
7714
7803
  $t.p.selrow = null;
@@ -7720,7 +7809,7 @@ $.jgrid.extend({
7720
7809
  }
7721
7810
  rp_ge[$t.p.id].processing=false;
7722
7811
  $("#dData", "#"+dtbl+"_2").removeClass('ui-state-active');
7723
- if(ret[0]) {$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});}
7812
+ if(ret[0]) {$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});}
7724
7813
  }
7725
7814
  }, $.jgrid.ajaxOptions, rp_ge[$t.p.id].ajaxDelOptions);
7726
7815
 
@@ -7742,7 +7831,7 @@ $.jgrid.extend({
7742
7831
  ret[0] = false;
7743
7832
  ret[1] = dpret[1] || "Error deleting the selected row!" ;
7744
7833
  } else {
7745
- $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
7834
+ $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
7746
7835
  }
7747
7836
  }
7748
7837
  else {$.ajax(ajaxOptions);}
@@ -7755,16 +7844,16 @@ $.jgrid.extend({
7755
7844
  }
7756
7845
  return false;
7757
7846
  });
7758
- $("#eData", "#"+dtbl+"_2").click(function(e){
7759
- $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:rp_ge[$t.p.id].jqModal, onClose: rp_ge[$t.p.id].onClose});
7847
+ $("#eData", "#"+dtbl+"_2").click(function(){
7848
+ $.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});
7760
7849
  return false;
7761
7850
  });
7762
7851
  if(onBeforeShow) {rp_ge[$t.p.id].beforeShowForm($("#"+dtbl));}
7763
- $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:rp_ge[$t.p.id].jqModal, overlay: rp_ge[$t.p.id].overlay, modal:rp_ge[$t.p.id].modal});
7852
+ $.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});
7764
7853
  if(onAfterShow) {rp_ge[$t.p.id].afterShowForm($("#"+dtbl));}
7765
7854
  }
7766
7855
  if(rp_ge[$t.p.id].closeOnEscape===true) {
7767
- setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+IDs.modalhead).focus();},0);
7856
+ setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.modalhead)).focus();},0);
7768
7857
  }
7769
7858
  });
7770
7859
  },
@@ -7814,7 +7903,7 @@ $.jgrid.extend({
7814
7903
  o.alertleft = o.alertleft/2 - parseInt(o.alertwidth,10)/2;
7815
7904
  o.alerttop = o.alerttop/2-25;
7816
7905
  }
7817
- $.jgrid.createModal(alertIDs,"<div>"+o.alerttext+"</div><span tabindex='0'><span tabindex='-1' id='jqg_alrt'></span></span>",{gbox:"#gbox_"+$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},"","",true);
7906
+ $.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},"","",true);
7818
7907
  }
7819
7908
  var clone = 1;
7820
7909
  if(o.cloneToTop && $t.p.toppager) {clone = 2;}
@@ -7845,7 +7934,7 @@ $.jgrid.extend({
7845
7934
  .click(function(){
7846
7935
  if (!$(this).hasClass('ui-state-disabled')) {
7847
7936
  if ($.isFunction( o.addfunc )) {
7848
- o.addfunc();
7937
+ o.addfunc.call($t);
7849
7938
  } else {
7850
7939
  $($t).jqGrid("editGridRow","new",pAdd);
7851
7940
  }
@@ -7873,12 +7962,12 @@ $.jgrid.extend({
7873
7962
  var sr = $t.p.selrow;
7874
7963
  if (sr) {
7875
7964
  if($.isFunction( o.editfunc ) ) {
7876
- o.editfunc(sr);
7965
+ o.editfunc.call($t, sr);
7877
7966
  } else {
7878
7967
  $($t).jqGrid("editGridRow",sr,pEdit);
7879
7968
  }
7880
7969
  } else {
7881
- $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$t.p.id,jqm:true});
7970
+ $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});
7882
7971
  $("#jqg_alrt").focus();
7883
7972
  }
7884
7973
  }
@@ -7905,12 +7994,12 @@ $.jgrid.extend({
7905
7994
  var sr = $t.p.selrow;
7906
7995
  if (sr) {
7907
7996
  if($.isFunction( o.viewfunc ) ) {
7908
- o.viewfunc(sr);
7997
+ o.viewfunc.call($t, sr);
7909
7998
  } else {
7910
7999
  $($t).jqGrid("viewGridRow",sr,pView);
7911
8000
  }
7912
8001
  } else {
7913
- $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$t.p.id,jqm:true});
8002
+ $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});
7914
8003
  $("#jqg_alrt").focus();
7915
8004
  }
7916
8005
  }
@@ -7942,13 +8031,13 @@ $.jgrid.extend({
7942
8031
  dr = $t.p.selrow;
7943
8032
  }
7944
8033
  if(dr){
7945
- if("function" == typeof o.delfunc){
7946
- o.delfunc(dr);
8034
+ if($.isFunction( o.delfunc )){
8035
+ o.delfunc.call($t, dr);
7947
8036
  }else{
7948
8037
  $($t).jqGrid("delGridRow",dr,pDel);
7949
8038
  }
7950
8039
  } else {
7951
- $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$t.p.id,jqm:true});$("#jqg_alrt").focus();
8040
+ $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});$("#jqg_alrt").focus();
7952
8041
  }
7953
8042
  }
7954
8043
  return false;
@@ -7972,7 +8061,11 @@ $.jgrid.extend({
7972
8061
  .attr({"title":o.searchtitle || "",id:pSearch.id || "search_"+elemids})
7973
8062
  .click(function(){
7974
8063
  if (!$(this).hasClass('ui-state-disabled')) {
7975
- $($t).jqGrid("searchGrid",pSearch);
8064
+ if($.isFunction( o.searchfunc )) {
8065
+ o.searchfunc.call($t, pSearch);
8066
+ } else {
8067
+ $($t).jqGrid("searchGrid",pSearch);
8068
+ }
7976
8069
  }
7977
8070
  return false;
7978
8071
  }).hover(
@@ -8001,15 +8094,15 @@ $.jgrid.extend({
8001
8094
  try {
8002
8095
  var gID = $t.p.id;
8003
8096
  $t.p.postData.filters ="";
8004
- $("#fbox_"+gID).jqFilter('resetFilter');
8005
- if($.isFunction($t.clearToolbar)) {$t.clearToolbar(false);}
8097
+ $("#fbox_"+$.jgrid.jqID(gID)).jqFilter('resetFilter');
8098
+ if($.isFunction($t.clearToolbar)) {$t.clearToolbar(false);}
8006
8099
  } catch (e) {}
8007
8100
  switch (o.refreshstate) {
8008
8101
  case 'firstpage':
8009
- $($t).trigger("reloadGrid", [{page:1}]);
8102
+ $($t).trigger("reloadGrid", [{page:1}]);
8010
8103
  break;
8011
8104
  case 'current':
8012
- $($t).trigger("reloadGrid", [{current:true}]);
8105
+ $($t).trigger("reloadGrid", [{current:true}]);
8013
8106
  break;
8014
8107
  }
8015
8108
  if($.isFunction(o.afterRefresh)) {o.afterRefresh();}
@@ -8053,10 +8146,10 @@ $.jgrid.extend({
8053
8146
  }, p ||{});
8054
8147
  return this.each(function() {
8055
8148
  if( !this.grid) {return;}
8056
- if( elem.indexOf("#") !== 0) {elem = "#"+elem;}
8149
+ if( typeof elem === "string" && elem.indexOf("#") !== 0) {elem = "#"+$.jgrid.jqID(elem);}
8057
8150
  var findnav = $(".navtable",elem)[0], $t = this;
8058
8151
  if (findnav) {
8059
- if( p.id && $("#"+p.id, findnav).html() !== null ) {return;}
8152
+ if( p.id && $("#"+$.jgrid.jqID(p.id), findnav).html() !== null ) {return;}
8060
8153
  var tbd = $("<td></td>");
8061
8154
  if(p.buttonicon.toString().toUpperCase() == "NONE") {
8062
8155
  $(tbd).addClass('ui-pg-button ui-corner-all').append("<div class='ui-pg-div'>"+p.caption+"</div>");
@@ -8099,7 +8192,7 @@ $.jgrid.extend({
8099
8192
  }, p ||{});
8100
8193
  return this.each(function() {
8101
8194
  if( !this.grid) {return;}
8102
- if( elem.indexOf("#") !== 0) {elem = "#"+elem;}
8195
+ if( typeof elem === "string" && elem.indexOf("#") !== 0) {elem = "#"+$.jgrid.jqID(elem);}
8103
8196
  var findnav = $(".navtable",elem)[0];
8104
8197
  if(findnav) {
8105
8198
  var sep = "<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='"+p.sepclass+"'></span>"+p.sepcontent+"</td>";
@@ -8149,6 +8242,7 @@ $.jgrid.extend({
8149
8242
  })(jQuery);
8150
8243
  // Grouping module
8151
8244
  ;(function($){
8245
+ "use strict";
8152
8246
  $.jgrid.extend({
8153
8247
  groupingSetup : function () {
8154
8248
  return this.each(function (){
@@ -8178,7 +8272,7 @@ $.jgrid.extend({
8178
8272
  grp.visibiltyOnNextGrouping[i] = true;
8179
8273
  $($t).jqGrid('showCol',grp.groupField[i]);
8180
8274
  } else {
8181
- grp.visibiltyOnNextGrouping[i] = $("#"+$t.p.id+"_"+grp.groupField[i]).is(":visible");
8275
+ grp.visibiltyOnNextGrouping[i] = $("#"+$.jgrid.jqID($t.p.id+"_"+grp.groupField[i])).is(":visible");
8182
8276
  $($t).jqGrid('hideCol',grp.groupField[i]);
8183
8277
  }
8184
8278
  grp.sortitems[i] = [];
@@ -8194,11 +8288,6 @@ $.jgrid.extend({
8194
8288
  }
8195
8289
  }
8196
8290
  }
8197
- $t.p.scroll = false;
8198
- $t.p.rownumbers = false;
8199
- $t.p.subGrid = false;
8200
- $t.p.treeGrid = false;
8201
- $t.p.gridview = true;
8202
8291
  }
8203
8292
  } else {
8204
8293
  $t.p.grouping = false;
@@ -8243,9 +8332,9 @@ $.jgrid.extend({
8243
8332
  num = parseInt(hid.substring(strpos+1),10)+1,
8244
8333
  minus = grp.minusicon,
8245
8334
  plus = grp.plusicon,
8246
- tar = $("#"+hid),
8335
+ tar = $("#"+$.jgrid.jqID(hid)),
8247
8336
  r = tar.length ? tar[0].nextSibling : null,
8248
- tarspan = $("#"+hid+" span."+"tree-wrap-"+$t.p.direction),
8337
+ tarspan = $("#"+$.jgrid.jqID(hid)+" span."+"tree-wrap-"+$t.p.direction),
8249
8338
  collapsed = false;
8250
8339
  if( tarspan.hasClass(minus) ) {
8251
8340
  if(grp.showSummaryOnHide && grp.groupSummary[0]) {
@@ -8262,7 +8351,7 @@ $.jgrid.extend({
8262
8351
  if($(r).attr('id') ==uid+String(num) ) { break; }
8263
8352
  $(r).hide();
8264
8353
  r = r.nextSibling;
8265
- }
8354
+ }
8266
8355
  }
8267
8356
  }
8268
8357
  tarspan.removeClass(minus).addClass(plus);
@@ -8277,6 +8366,7 @@ $.jgrid.extend({
8277
8366
  }
8278
8367
  tarspan.removeClass(plus).addClass(minus);
8279
8368
  }
8369
+ $($t).triggerHandler("jqGridGroupingClickGroup", [hid , collapsed]);
8280
8370
  if( $.isFunction($t.p.onClickGroup)) { $t.p.onClickGroup.call($t, hid , collapsed); }
8281
8371
 
8282
8372
  });
@@ -8309,7 +8399,7 @@ $.jgrid.extend({
8309
8399
  }
8310
8400
  $.each(grp.sortitems[0],function(i,n){
8311
8401
  hid = $t.p.id+"ghead_"+i;
8312
- icon = "<span style='cursor:pointer;' class='ui-icon "+pmrtl+"' onclick=\"jQuery('#"+$t.p.id+"').jqGrid('groupingToggle','"+hid+"');return false;\"></span>";
8402
+ icon = "<span style='cursor:pointer;' class='ui-icon "+pmrtl+"' onclick=\"jQuery('#"+$.jgrid.jqID($t.p.id)+"').jqGrid('groupingToggle','"+hid+"');return false;\"></span>";
8313
8403
  try {
8314
8404
  gv = $t.formatter(hid, grp.sortnames[0][i], cp, grp.sortitems[0] );
8315
8405
  } catch (egv) {
@@ -8355,7 +8445,7 @@ $.jgrid.extend({
8355
8445
  str += "</tr>";
8356
8446
  }
8357
8447
  });
8358
- $("#"+$t.p.id+" tbody:first").append(str);
8448
+ $("#"+$.jgrid.jqID($t.p.id)+" tbody:first").append(str);
8359
8449
  // free up memory
8360
8450
  str = null;
8361
8451
  });
@@ -8382,7 +8472,7 @@ $.jgrid.extend({
8382
8472
  }
8383
8473
  // set visibility status of current group columns on next grouping
8384
8474
  for(i=0;i<name.length;i++) {
8385
- grp.visibiltyOnNextGrouping[i] = $("#"+$t.p.id+"_"+name[i]).is(":visible");
8475
+ grp.visibiltyOnNextGrouping[i] = $("#"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID(name[i])).is(":visible");
8386
8476
  }
8387
8477
  $t.p.groupingView = $.extend($t.p.groupingView, options || {});
8388
8478
  grp.groupField = name;
@@ -8397,15 +8487,15 @@ $.jgrid.extend({
8397
8487
  }
8398
8488
  $t.p.grouping = false;
8399
8489
  if(current===true) {
8400
- var grp = $t.p.groupingView;
8401
- // show previous hidden groups if they are hidden and weren't removed yet
8402
- for(var i=0;i<grp.groupField.length;i++) {
8403
- if (!grp.groupColumnShow[i] && grp.visibiltyOnNextGrouping[i]) {
8404
- $($t).jqGrid('showCol', grp.groupField);
8405
- }
8406
- }
8407
- $("tr.jqgroup, tr.jqfoot","#"+$t.p.id+" tbody:first").remove();
8408
- $("tr.jqgrow:hidden","#"+$t.p.id+" tbody:first").show();
8490
+ var grp = $t.p.groupingView;
8491
+ // show previous hidden groups if they are hidden and weren't removed yet
8492
+ for(var i=0;i<grp.groupField.length;i++) {
8493
+ if (!grp.groupColumnShow[i] && grp.visibiltyOnNextGrouping[i]) {
8494
+ $($t).jqGrid('showCol', grp.groupField);
8495
+ }
8496
+ }
8497
+ $("tr.jqgroup, tr.jqfoot","#"+$.jgrid.jqID($t.p.id)+" tbody:first").remove();
8498
+ $("tr.jqgrow:hidden","#"+$.jgrid.jqID($t.p.id)+" tbody:first").show();
8409
8499
  } else {
8410
8500
  $($t).trigger("reloadGrid");
8411
8501
  }
@@ -8451,6 +8541,10 @@ $.jgrid.extend({
8451
8541
  * http://www.opensource.org/licenses/mit-license.php
8452
8542
  * http://www.gnu.org/licenses/gpl-2.0.html
8453
8543
  **/
8544
+ //jsHint options
8545
+ /*global jQuery, $, alert, xmlJsonClass */
8546
+
8547
+ "use strict";
8454
8548
  $.jgrid.extend({
8455
8549
  jqGridImport : function(o) {
8456
8550
  o = $.extend({
@@ -8471,7 +8565,7 @@ $.jgrid.extend({
8471
8565
  }, o || {});
8472
8566
  return this.each(function(){
8473
8567
  var $t = this;
8474
- var XmlConvert = function (xml,o) {
8568
+ var xmlConvert = function (xml,o) {
8475
8569
  var cnfg = $(o.xmlGrid.config,xml)[0];
8476
8570
  var xmldata = $(o.xmlGrid.data,xml)[0], jstr, jstr1;
8477
8571
  if(xmlJsonClass.xml2json && $.jgrid.parse) {
@@ -8496,9 +8590,15 @@ $.jgrid.extend({
8496
8590
  alert("xml2json or parse are not present");
8497
8591
  }
8498
8592
  };
8499
- var JsonConvert = function (jsonstr,o){
8593
+ var jsonConvert = function (jsonstr,o){
8500
8594
  if (jsonstr && typeof jsonstr == 'string') {
8595
+ var _jsonparse = false;
8596
+ if($.jgrid.useJSON) {
8597
+ $.jgrid.useJSON = false;
8598
+ _jsonparse = true;
8599
+ }
8501
8600
  var json = $.jgrid.parse(jsonstr);
8601
+ if(_jsonparse) { $.jgrid.useJSON = true; }
8502
8602
  var gprm = json[o.jsonGrid.config];
8503
8603
  var jdata = json[o.jsonGrid.data];
8504
8604
  if(jdata) {
@@ -8520,7 +8620,8 @@ $.jgrid.extend({
8520
8620
  dataType:"xml",
8521
8621
  complete: function(xml,stat) {
8522
8622
  if(stat == 'success') {
8523
- XmlConvert(xml.responseXML,o);
8623
+ xmlConvert(xml.responseXML,o);
8624
+ $($t).triggerHandler("jqGridImportComplete", [xml, o]);
8524
8625
  if($.isFunction(o.importComplete)) {
8525
8626
  o.importComplete(xml);
8526
8627
  }
@@ -8534,7 +8635,8 @@ $.jgrid.extend({
8534
8635
  if(o.impstring && typeof o.impstring == 'string') {
8535
8636
  var xmld = $.jgrid.stringToDoc(o.impstring);
8536
8637
  if(xmld) {
8537
- XmlConvert(xmld,o);
8638
+ xmlConvert(xmld,o);
8639
+ $($t).triggerHandler("jqGridImportComplete", [xmld, o]);
8538
8640
  if($.isFunction(o.importComplete)) {
8539
8641
  o.importComplete(xmld);
8540
8642
  }
@@ -8549,20 +8651,22 @@ $.jgrid.extend({
8549
8651
  type:o.mtype,
8550
8652
  data: o.impData,
8551
8653
  dataType:"json",
8552
- complete: function(json,stat) {
8553
- if(stat == 'success') {
8554
- JsonConvert(json.responseText,o );
8654
+ complete: function(json) {
8655
+ try {
8656
+ jsonConvert(json.responseText,o );
8657
+ $($t).triggerHandler("jqGridImportComplete", [json, o]);
8555
8658
  if($.isFunction(o.importComplete)) {
8556
8659
  o.importComplete(json);
8557
8660
  }
8558
- }
8661
+ } catch (ee){}
8559
8662
  json=null;
8560
8663
  }
8561
8664
  }, o.ajaxOptions ));
8562
8665
  break;
8563
8666
  case 'jsonstring' :
8564
8667
  if(o.impstring && typeof o.impstring == 'string') {
8565
- JsonConvert(o.impstring,o );
8668
+ jsonConvert(o.impstring,o );
8669
+ $($t).triggerHandler("jqGridImportComplete", [o.impstring, o]);
8566
8670
  if($.isFunction(o.importComplete)) {
8567
8671
  o.importComplete(o.impstring);
8568
8672
  }
@@ -8581,7 +8685,7 @@ $.jgrid.extend({
8581
8685
  var ret = null;
8582
8686
  this.each(function () {
8583
8687
  if(!this.grid) { return;}
8584
- var gprm = $.extend({},$(this).jqGrid("getGridParam"));
8688
+ var gprm = $.extend(true, {},$(this).jqGrid("getGridParam"));
8585
8689
  // we need to check for:
8586
8690
  // 1.multiselect, 2.subgrid 3. treegrid and remove the unneded columns from colNames
8587
8691
  if(gprm.rownumbers) {
@@ -8661,7 +8765,7 @@ $.jgrid.extend({
8661
8765
  // Compatible mode old versions
8662
8766
  var o={}, args = $.makeArray(arguments).slice(1);
8663
8767
 
8664
- if( $.jgrid.realType(args[0]) === "Object" ) {
8768
+ if( $.type(args[0]) === "object" ) {
8665
8769
  o = args[0];
8666
8770
  } else {
8667
8771
  if (typeof keys !== "undefined") { o.keys = keys; }
@@ -8704,7 +8808,7 @@ $.jgrid.extend({
8704
8808
  if(treeg) { tmp = $("span:first",this).html();}
8705
8809
  else {
8706
8810
  try {
8707
- tmp = $.unformat(this,{rowId:rowid, colModel:cm[i]},i);
8811
+ tmp = $.unformat.call($t,this,{rowId:rowid, colModel:cm[i]},i);
8708
8812
  } catch (_) {
8709
8813
  tmp = ( cm[i].edittype && cm[i].edittype == 'textarea' ) ? $(this).text() : $(this).html();
8710
8814
  }
@@ -8738,17 +8842,29 @@ $.jgrid.extend({
8738
8842
  if(o.keys===true) {
8739
8843
  $(ind).bind("keydown",function(e) {
8740
8844
  if (e.keyCode === 27) {
8741
- $($t).jqGrid("restoreRow",rowid, afterrestorefunc);
8845
+ $($t).jqGrid("restoreRow",rowid, o.afterrestorefunc);
8846
+ if($t.p._inlinenav) {
8847
+ try {
8848
+ $($t).jqGrid('showAddEditButtons');
8849
+ } catch (eer1) {}
8850
+ }
8742
8851
  return false;
8743
8852
  }
8744
8853
  if (e.keyCode === 13) {
8745
8854
  var ta = e.target;
8746
8855
  if(ta.tagName == 'TEXTAREA') { return true; }
8747
- $($t).jqGrid("saveRow", rowid, o );
8856
+ if( $($t).jqGrid("saveRow", rowid, o ) ) {
8857
+ if($t.p._inlinenav) {
8858
+ try {
8859
+ $($t).jqGrid('showAddEditButtons');
8860
+ } catch (eer2) {}
8861
+ }
8862
+ }
8748
8863
  return false;
8749
8864
  }
8750
8865
  });
8751
8866
  }
8867
+ $($t).triggerHandler("jqGridInlineEditRow", [rowid, o]);
8752
8868
  if( $.isFunction(o.oneditfunc)) { o.oneditfunc.call($t, rowid); }
8753
8869
  }
8754
8870
  }
@@ -8758,7 +8874,7 @@ $.jgrid.extend({
8758
8874
  // Compatible mode old versions
8759
8875
  var args = $.makeArray(arguments).slice(1), o = {};
8760
8876
 
8761
- if( $.jgrid.realType(args[0]) === "Object" ) {
8877
+ if( $.type(args[0]) === "object" ) {
8762
8878
  o = args[0];
8763
8879
  } else {
8764
8880
  if ($.isFunction(successfunc)) { o.successfunc = successfunc; }
@@ -8882,11 +8998,12 @@ $.jgrid.extend({
8882
8998
  if( $t.p.savedRow[k].id == rowid) {fr = k; break;}
8883
8999
  }
8884
9000
  if(fr >= 0) { $t.p.savedRow.splice(fr,1); }
9001
+ $($t).triggerHandler("jqGridInlineAfterSaveRow", [rowid, resp, tmp, o]);
8885
9002
  if( $.isFunction(o.aftersavefunc) ) { o.aftersavefunc.call($t, rowid,resp); }
8886
9003
  success = true;
8887
9004
  $(ind).unbind("keydown");
8888
9005
  } else {
8889
- $("#lui_"+$t.p.id).show();
9006
+ $("#lui_"+$.jgrid.jqID($t.p.id)).show();
8890
9007
  tmp3 = $.extend({},tmp,tmp3);
8891
9008
  tmp3[idname] = $.jgrid.stripPref($t.p.idPrefix, tmp3[idname]);
8892
9009
  $.ajax($.extend({
@@ -8895,18 +9012,18 @@ $.jgrid.extend({
8895
9012
  type: o.mtype,
8896
9013
  async : false, //?!?
8897
9014
  complete: function(res,stat){
8898
- $("#lui_"+$t.p.id).hide();
9015
+ $("#lui_"+$.jgrid.jqID($t.p.id)).hide();
8899
9016
  if (stat === "success"){
8900
9017
  var ret = true, sucret;
8901
- if( $.isFunction(o.successfunc)) {
8902
- sucret = o.successfunc.call($t, res);
8903
- if($.isArray(sucret)) {
8904
- // expect array - status, data, rowid
8905
- ret = sucret[0];
8906
- tmp = sucret[1] ? sucret[1] : tmp;
8907
- } else {
8908
- ret = sucret;
8909
- }
9018
+ sucret = $($t).triggerHandler("jqGridInlineSuccessSaveRow", [res, rowid, o]);
9019
+ if (!$.isArray(sucret)) {sucret = [true, tmp];}
9020
+ if (sucret[0] && $.isFunction(o.successfunc)) {sucret = o.successfunc.call($t, res);}
9021
+ if($.isArray(sucret)) {
9022
+ // expect array - status, data, rowid
9023
+ ret = sucret[0];
9024
+ tmp = sucret[1] ? sucret[1] : tmp;
9025
+ } else {
9026
+ ret = sucret;
8910
9027
  }
8911
9028
  if (ret===true) {
8912
9029
  if($t.p.autoencode) {
@@ -8921,12 +9038,14 @@ $.jgrid.extend({
8921
9038
  if( $t.p.savedRow[k].id == rowid) {fr = k; break;}
8922
9039
  }
8923
9040
  if(fr >= 0) { $t.p.savedRow.splice(fr,1); }
9041
+ $($t).triggerHandler("jqGridInlineAfterSaveRow", [rowid, res, tmp, o]);
8924
9042
  if( $.isFunction(o.aftersavefunc) ) { o.aftersavefunc.call($t, rowid,res); }
8925
9043
  success = true;
8926
9044
  $(ind).unbind("keydown");
8927
9045
  } else {
9046
+ $($t).triggerHandler("jqGridInlineErrorSaveRow", [rowid, res, stat, null, o]);
8928
9047
  if($.isFunction(o.errorfunc) ) {
8929
- o.errorfunc.call($t, rowid, res, stat);
9048
+ o.errorfunc.call($t, rowid, res, stat, null);
8930
9049
  }
8931
9050
  if(o.restoreAfterError === true) {
8932
9051
  $($t).jqGrid("restoreRow",rowid, o.afterrestorefunc);
@@ -8934,10 +9053,11 @@ $.jgrid.extend({
8934
9053
  }
8935
9054
  }
8936
9055
  },
8937
- error:function(res,stat){
8938
- $("#lui_"+$t.p.id).hide();
9056
+ error:function(res,stat,err){
9057
+ $("#lui_"+$.jgrid.jqID($t.p.id)).hide();
9058
+ $($t).triggerHandler("jqGridInlineErrorSaveRow", [rowid, res, stat, err, o]);
8939
9059
  if($.isFunction(o.errorfunc) ) {
8940
- o.errorfunc.call($t, rowid, res, stat);
9060
+ o.errorfunc.call($t, rowid, res, stat, err);
8941
9061
  } else {
8942
9062
  try {
8943
9063
  $.jgrid.info_dialog($.jgrid.errors.errcap,'<div class="ui-state-error">'+ res.responseText +'</div>', $.jgrid.edit.bClose,{buttonalign:'right'});
@@ -8958,7 +9078,7 @@ $.jgrid.extend({
8958
9078
  // Compatible mode old versions
8959
9079
  var args = $.makeArray(arguments).slice(1), o={};
8960
9080
 
8961
- if( $.jgrid.realType(args[0]) === "Object" ) {
9081
+ if( $.type(args[0]) === "object" ) {
8962
9082
  o = args[0];
8963
9083
  } else {
8964
9084
  if ($.isFunction(afterrestorefunc)) { o.afterrestorefunc = afterrestorefunc; }
@@ -8981,8 +9101,8 @@ $.jgrid.extend({
8981
9101
  $("input.hasDatepicker","#"+$.jgrid.jqID(ind.id)).datepicker('hide');
8982
9102
  } catch (e) {}
8983
9103
  }
8984
- $.each($t.p.colModel, function(i,n){
8985
- if(this.editable === true && this.name in $t.p.savedRow[fr] && !$(this).hasClass('not-editable-cell')) {
9104
+ $.each($t.p.colModel, function(){
9105
+ if(this.editable === true && this.name in $t.p.savedRow[fr] ) {
8986
9106
  ares[this.name] = $t.p.savedRow[fr][this.name];
8987
9107
  }
8988
9108
  });
@@ -8993,6 +9113,7 @@ $.jgrid.extend({
8993
9113
  setTimeout(function(){$($t).jqGrid("delRowData",rowid);},0);
8994
9114
  }
8995
9115
  }
9116
+ $($t).triggerHandler("jqGridInlineAfterRestoreRow", [rowid]);
8996
9117
  if ($.isFunction(o.afterrestorefunc))
8997
9118
  {
8998
9119
  o.afterrestorefunc.call($t, rowid);
@@ -9012,7 +9133,7 @@ $.jgrid.extend({
9012
9133
  if (!this.grid ) { return; }
9013
9134
  var $t = this;
9014
9135
  if(p.useDefValues === true) {
9015
- $($t.p.colModel).each(function(i){
9136
+ $($t.p.colModel).each(function(){
9016
9137
  if( this.editoptions && this.editoptions.defaultValue ) {
9017
9138
  var opt = this.editoptions.defaultValue,
9018
9139
  tmp = $.isFunction(opt) ? opt.call($t) : opt;
@@ -9043,12 +9164,14 @@ $.jgrid.extend({
9043
9164
  saveicon:"ui-icon-disk",
9044
9165
  cancel: true,
9045
9166
  cancelicon:"ui-icon-cancel",
9046
- addParams : {useFormatter : false},
9047
- editParams : {}
9167
+ addParams : {useFormatter : false,rowID : "new_row"},
9168
+ editParams : {},
9169
+ restoreAfterSelect : true
9048
9170
  }, $.jgrid.nav, o ||{});
9049
9171
  return this.each(function(){
9050
9172
  if (!this.grid ) { return; }
9051
- var $t = this;
9173
+ var $t = this, onSelect, gID = $.jgrid.jqID($t.p.id);
9174
+ $t.p._inlinenav = true;
9052
9175
  // detect the formatactions column
9053
9176
  if(o.addParams.useFormatter === true) {
9054
9177
  var cm = $t.p.colModel,i;
@@ -9087,13 +9210,13 @@ $.jgrid.extend({
9087
9210
  title : o.addtitle,
9088
9211
  buttonicon : o.addicon,
9089
9212
  id : $t.p.id+"_iladd",
9090
- onClickButton : function ( e ) {
9213
+ onClickButton : function () {
9091
9214
  $($t).jqGrid('addRow', o.addParams);
9092
9215
  if(!o.addParams.useFormatter) {
9093
- $("#"+$t.p.id+"_ilsave").removeClass('ui-state-disabled');
9094
- $("#"+$t.p.id+"_ilcancel").removeClass('ui-state-disabled');
9095
- $("#"+$t.p.id+"_iladd").addClass('ui-state-disabled');
9096
- $("#"+$t.p.id+"_iledit").addClass('ui-state-disabled');
9216
+ $("#"+gID+"_ilsave").removeClass('ui-state-disabled');
9217
+ $("#"+gID+"_ilcancel").removeClass('ui-state-disabled');
9218
+ $("#"+gID+"_iladd").addClass('ui-state-disabled');
9219
+ $("#"+gID+"_iledit").addClass('ui-state-disabled');
9097
9220
  }
9098
9221
  }
9099
9222
  });
@@ -9104,16 +9227,16 @@ $.jgrid.extend({
9104
9227
  title : o.edittitle,
9105
9228
  buttonicon : o.editicon,
9106
9229
  id : $t.p.id+"_iledit",
9107
- onClickButton : function ( e ) {
9230
+ onClickButton : function () {
9108
9231
  var sr = $($t).jqGrid('getGridParam','selrow');
9109
9232
  if(sr) {
9110
9233
  $($t).jqGrid('editRow', sr, o.editParams);
9111
- $("#"+$t.p.id+"_ilsave").removeClass('ui-state-disabled');
9112
- $("#"+$t.p.id+"_ilcancel").removeClass('ui-state-disabled');
9113
- $("#"+$t.p.id+"_iladd").addClass('ui-state-disabled');
9114
- $("#"+$t.p.id+"_iledit").addClass('ui-state-disabled');
9234
+ $("#"+gID+"_ilsave").removeClass('ui-state-disabled');
9235
+ $("#"+gID+"_ilcancel").removeClass('ui-state-disabled');
9236
+ $("#"+gID+"_iladd").addClass('ui-state-disabled');
9237
+ $("#"+gID+"_iledit").addClass('ui-state-disabled');
9115
9238
  } else {
9116
- $.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+$t.p.id,jqm:true});$("#jqg_alrt").focus();
9239
+ $.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+gID,jqm:true});$("#jqg_alrt").focus();
9117
9240
  }
9118
9241
  }
9119
9242
  });
@@ -9124,29 +9247,28 @@ $.jgrid.extend({
9124
9247
  title : o.savetitle || 'Save row',
9125
9248
  buttonicon : o.saveicon,
9126
9249
  id : $t.p.id+"_ilsave",
9127
- onClickButton : function ( e ) {
9250
+ onClickButton : function () {
9128
9251
  var sr = $t.p.savedRow[0].id;
9129
9252
  if(sr) {
9130
- if($("#"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID($t.p.id) ).hasClass("jqgrid-new-row")) {
9131
- var opers = $t.p.prmNames,
9132
- oper = opers.oper;
9133
- if(!o.editParams.extraparam) {
9134
- o.editParams.extraparam = {};
9135
- }
9253
+ var opers = $t.p.prmNames,
9254
+ oper = opers.oper;
9255
+ if(!o.editParams.extraparam) {
9256
+ o.editParams.extraparam = {};
9257
+ }
9258
+ if($("#"+$.jgrid.jqID(sr), "#"+gID ).hasClass("jqgrid-new-row")) {
9136
9259
  o.editParams.extraparam[oper] = opers.addoper;
9260
+ } else {
9261
+ o.editParams.extraparam[oper] = opers.editoper;
9137
9262
  }
9138
9263
  if( $($t).jqGrid('saveRow', sr, o.editParams) ) {
9139
- $("#"+$t.p.id+"_ilsave").addClass('ui-state-disabled');
9140
- $("#"+$t.p.id+"_ilcancel").addClass('ui-state-disabled');
9141
- $("#"+$t.p.id+"_iladd").removeClass('ui-state-disabled');
9142
- $("#"+$t.p.id+"_iledit").removeClass('ui-state-disabled');
9264
+ $($t).jqGrid('showAddEditButtons');
9143
9265
  }
9144
9266
  } else {
9145
- $.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+$t.p.id,jqm:true});$("#jqg_alrt").focus();
9267
+ $.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+gID,jqm:true});$("#jqg_alrt").focus();
9146
9268
  }
9147
9269
  }
9148
9270
  });
9149
- $("#"+$t.p.id+"_ilsave").addClass('ui-state-disabled');
9271
+ $("#"+gID+"_ilsave").addClass('ui-state-disabled');
9150
9272
  }
9151
9273
  if(o.cancel) {
9152
9274
  $($t).jqGrid('navButtonAdd', elem,{
@@ -9154,21 +9276,51 @@ $.jgrid.extend({
9154
9276
  title : o.canceltitle || 'Cancel row editing',
9155
9277
  buttonicon : o.cancelicon,
9156
9278
  id : $t.p.id+"_ilcancel",
9157
- onClickButton : function ( e ) {
9279
+ onClickButton : function () {
9158
9280
  var sr = $t.p.savedRow[0].id;
9159
9281
  if(sr) {
9160
9282
  $($t).jqGrid('restoreRow', sr, o.editParams);
9161
- $("#"+$t.p.id+"_ilsave").addClass('ui-state-disabled');
9162
- $("#"+$t.p.id+"_ilcancel").addClass('ui-state-disabled');
9163
- $("#"+$t.p.id+"_iladd").removeClass('ui-state-disabled');
9164
- $("#"+$t.p.id+"_iledit").removeClass('ui-state-disabled');
9283
+ $($t).jqGrid('showAddEditButtons');
9165
9284
  } else {
9166
- $.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+$t.p.id,jqm:true});$("#jqg_alrt").focus();
9285
+ $.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+gID,jqm:true});$("#jqg_alrt").focus();
9167
9286
  }
9168
9287
  }
9169
9288
  });
9170
- $("#"+$t.p.id+"_ilcancel").addClass('ui-state-disabled');
9289
+ $("#"+gID+"_ilcancel").addClass('ui-state-disabled');
9171
9290
  }
9291
+ if(o.restoreAfterSelect === true) {
9292
+ if($.isFunction($t.p.beforeSelectRow)) {
9293
+ onSelect = $t.p.beforeSelectRow;
9294
+ } else {
9295
+ onSelect = false;
9296
+ }
9297
+ $t.p.beforeSelectRow = function(id, stat) {
9298
+ var ret = true;
9299
+ if($t.p.savedRow.length > 0 && $t.p._inlinenav===true && ( id !== $t.p.selrow && $t.p.selrow !==null) ) {
9300
+ if($t.p.selrow == o.addParams.rowID ) {
9301
+ $($t).jqGrid('delRowData', $t.p.selrow);
9302
+ } else {
9303
+ $($t).jqGrid('restoreRow', $t.p.selrow, o.editParams);
9304
+ }
9305
+ $($t).jqGrid('showAddEditButtons');
9306
+ }
9307
+ if(onSelect) {
9308
+ ret = onSelect.call($t, id, stat);
9309
+ }
9310
+ return ret;
9311
+ };
9312
+ }
9313
+
9314
+ });
9315
+ },
9316
+ showAddEditButtons : function() {
9317
+ return this.each(function(){
9318
+ if (!this.grid ) { return; }
9319
+ var gID = $.jgrid.jqID(this.p.id);
9320
+ $("#"+gID+"_ilsave").addClass('ui-state-disabled');
9321
+ $("#"+gID+"_ilcancel").addClass('ui-state-disabled');
9322
+ $("#"+gID+"_iladd").removeClass('ui-state-disabled');
9323
+ $("#"+gID+"_iledit").removeClass('ui-state-disabled');
9172
9324
  });
9173
9325
  }
9174
9326
  //end inline edit
@@ -9228,7 +9380,7 @@ $.jgrid.extend({
9228
9380
  sortableColumns : function (tblrow)
9229
9381
  {
9230
9382
  return this.each(function (){
9231
- var ts = this, tid= ts.p.id;
9383
+ var ts = this, tid= $.jgrid.jqID( ts.p.id );
9232
9384
  function start() {ts.p.disableClick = true;}
9233
9385
  var sortable_opts = {
9234
9386
  "tolerance" : "pointer",
@@ -9254,7 +9406,7 @@ $.jgrid.extend({
9254
9406
  cmMap = {}, tid= ts.p.id+"_";
9255
9407
  $.each(colModel, function(i) { cmMap[this.name]=i; });
9256
9408
  var permutation = [];
9257
- th.each(function(i) {
9409
+ th.each(function() {
9258
9410
  var id = $(">div", this).get(0).id.replace(/^jqgh_/, "").replace(tid,"");
9259
9411
  if (id in cmMap) {
9260
9412
  permutation.push(cmMap[id]);
@@ -9290,7 +9442,7 @@ $.jgrid.extend({
9290
9442
  },
9291
9443
  columnChooser : function(opts) {
9292
9444
  var self = this;
9293
- if($("#colchooser_"+self[0].p.id).length ) { return; }
9445
+ if($("#colchooser_"+$.jgrid.jqID(self[0].p.id)).length ) { return; }
9294
9446
  var selector = $('<div id="colchooser_'+self[0].p.id+'" style="position:relative;overflow:hidden"><div><select multiple="multiple"></select></div></div>');
9295
9447
  var select = $('select', selector);
9296
9448
 
@@ -9323,7 +9475,9 @@ $.jgrid.extend({
9323
9475
  "destroy")
9324
9476
  */
9325
9477
  "dlog" : "dialog",
9326
-
9478
+ "dialog_opts" : {
9479
+ "minWidth": 470
9480
+ },
9327
9481
  /* dlog_opts is either an option object to be passed
9328
9482
  to "dlog", or (more likely) a function that creates
9329
9483
  the options object.
@@ -9338,7 +9492,7 @@ $.jgrid.extend({
9338
9492
  buttons[opts.bCancel] = function() {
9339
9493
  opts.cleanup(true);
9340
9494
  };
9341
- return {
9495
+ return $.extend(true, {
9342
9496
  "buttons": buttons,
9343
9497
  "close": function() {
9344
9498
  opts.cleanup(true);
@@ -9346,12 +9500,12 @@ $.jgrid.extend({
9346
9500
  "modal" : opts.modal ? opts.modal : false,
9347
9501
  "resizable": opts.resizable ? opts.resizable : true,
9348
9502
  "width": opts.width+20
9349
- };
9503
+ }, opts.dialog_opts || {});
9350
9504
  },
9351
9505
  /* Function to get the permutation array, and pass it to the
9352
9506
  "done" function */
9353
9507
  "apply_perm" : function() {
9354
- $('option',select).each(function(i) {
9508
+ $('option',select).each(function() {
9355
9509
  if (this.selected) {
9356
9510
  self.jqGrid("showCol", colModel[this.value].name);
9357
9511
  } else {
@@ -9546,6 +9700,7 @@ $.jgrid.extend({
9546
9700
  stop :function(ev,ui) {
9547
9701
  if(ui.helper.dropped && !opts.dragcopy) {
9548
9702
  var ids = $(ui.helper).attr("id");
9703
+ if(ids === undefined) { ids = $(this).attr("id"); }
9549
9704
  $($t).jqGrid('delRowData',ids );
9550
9705
  }
9551
9706
  // if we have a empty row inserted from start event try to delete it
@@ -9563,7 +9718,7 @@ $.jgrid.extend({
9563
9718
  var tid = $(d).closest("table.ui-jqgrid-btable");
9564
9719
  if(tid.length > 0 && $.data(tid[0],"dnd") !== undefined) {
9565
9720
  var cn = $.data(tid[0],"dnd").connectWith;
9566
- return $.inArray('#'+this.id,cn) != -1 ? true : false;
9721
+ return $.inArray('#'+$.jgrid.jqID(this.id),cn) != -1 ? true : false;
9567
9722
  }
9568
9723
  return false;
9569
9724
  },
@@ -9572,13 +9727,15 @@ $.jgrid.extend({
9572
9727
  var accept = $(ui.draggable).attr("id");
9573
9728
  var getdata = ui.draggable.parent().parent().jqGrid('getRowData',accept);
9574
9729
  if(!opts.dropbyname) {
9575
- var j =0, tmpdata = {}, dropname;
9576
- var dropmodel = $("#"+this.id).jqGrid('getGridParam','colModel');
9730
+ var j =0, tmpdata = {}, nm;
9731
+ var dropmodel = $("#"+$.jgrid.jqID(this.id)).jqGrid('getGridParam','colModel');
9577
9732
  try {
9578
9733
  for (var key in getdata) {
9579
- if(getdata.hasOwnProperty(key) && dropmodel[j]) {
9580
- dropname = dropmodel[j].name;
9581
- tmpdata[dropname] = getdata[key];
9734
+ nm = dropmodel[j].name;
9735
+ if( !(nm == 'cb' || nm =='rn' || nm == 'subgrid' )) {
9736
+ if(getdata.hasOwnProperty(key) && dropmodel[j]) {
9737
+ tmpdata[nm] = getdata[key];
9738
+ }
9582
9739
  }
9583
9740
  j++;
9584
9741
  }
@@ -9589,7 +9746,7 @@ $.jgrid.extend({
9589
9746
  if(opts.beforedrop && $.isFunction(opts.beforedrop) ) {
9590
9747
  //parameters to this callback - event, element, data to be inserted, sender, reciever
9591
9748
  // should return object which will be inserted into the reciever
9592
- var datatoinsert = opts.beforedrop.call(this,ev,ui,getdata,$('#'+$t.id),$(this));
9749
+ var datatoinsert = opts.beforedrop.call(this,ev,ui,getdata,$('#'+$.jgrid.jqID($t.p.id)),$(this));
9593
9750
  if (typeof datatoinsert != "undefined" && datatoinsert !== null && typeof datatoinsert == "object") { getdata = datatoinsert; }
9594
9751
  }
9595
9752
  if(ui.helper.dropped) {
@@ -9603,7 +9760,7 @@ $.jgrid.extend({
9603
9760
  }
9604
9761
  }
9605
9762
  // NULL is interpreted as undefined while null as object
9606
- $("#"+this.id).jqGrid('addRowData',grid,getdata,opts.droppos);
9763
+ $("#"+$.jgrid.jqID(this.id)).jqGrid('addRowData',grid,getdata,opts.droppos);
9607
9764
  }
9608
9765
  if(opts.ondrop && $.isFunction(opts.ondrop) ) { opts.ondrop.call(this,ev,ui, getdata); }
9609
9766
  }}, opts.drop_opts || {});
@@ -9647,7 +9804,7 @@ $.jgrid.extend({
9647
9804
  },
9648
9805
  gridResize : function(opts) {
9649
9806
  return this.each(function(){
9650
- var $t = this;
9807
+ var $t = this, gID = $.jgrid.jqID($t.p.id);
9651
9808
  if(!$t.grid || !$.fn.resizable) { return; }
9652
9809
  opts = $.extend({}, opts || {});
9653
9810
  if(opts.alsoResize ) {
@@ -9663,18 +9820,18 @@ $.jgrid.extend({
9663
9820
  opts._stop_ = false;
9664
9821
  }
9665
9822
  opts.stop = function (ev, ui) {
9666
- $($t).jqGrid('setGridParam',{height:$("#gview_"+$t.p.id+" .ui-jqgrid-bdiv").height()});
9823
+ $($t).jqGrid('setGridParam',{height:$("#gview_"+gID+" .ui-jqgrid-bdiv").height()});
9667
9824
  $($t).jqGrid('setGridWidth',ui.size.width,opts.shrinkToFit);
9668
9825
  if(opts._stop_) { opts._stop_.call($t,ev,ui); }
9669
9826
  };
9670
9827
  if(opts._alsoResize_) {
9671
- var optstest = "{\'#gview_"+$t.p.id+" .ui-jqgrid-bdiv\':true,'" +opts._alsoResize_+"':true}";
9828
+ var optstest = "{\'#gview_"+gID+" .ui-jqgrid-bdiv\':true,'" +opts._alsoResize_+"':true}";
9672
9829
  opts.alsoResize = eval('('+optstest+')'); // the only way that I found to do this
9673
9830
  } else {
9674
- opts.alsoResize = $(".ui-jqgrid-bdiv","#gview_"+$t.p.id);
9831
+ opts.alsoResize = $(".ui-jqgrid-bdiv","#gview_"+gID);
9675
9832
  }
9676
9833
  delete opts._alsoResize_;
9677
- $("#gbox_"+$t.p.id).resizable(opts);
9834
+ $("#gbox_"+gID).resizable(opts);
9678
9835
  });
9679
9836
  }
9680
9837
  });
@@ -9688,6 +9845,7 @@ $.jgrid.extend({
9688
9845
  * http://www.opensource.org/licenses/mit-license.php
9689
9846
  * http://www.gnu.org/licenses/gpl-2.0.html
9690
9847
  **/
9848
+ "use strict";
9691
9849
  $.jgrid.extend({
9692
9850
  setSubGrid : function () {
9693
9851
  return this.each(function (){
@@ -9761,9 +9919,9 @@ addSubGrid : function( pos, sind ) {
9761
9919
  });
9762
9920
  }
9763
9921
  var pID = $("table:first",ts.grid.bDiv).attr("id")+"_";
9764
- $("#"+pID+sbid).append(dummy);
9922
+ $("#"+$.jgrid.jqID(pID+sbid)).append(dummy);
9765
9923
  ts.grid.hDiv.loading = false;
9766
- $("#load_"+ts.p.id).hide();
9924
+ $("#load_"+$.jgrid.jqID(ts.p.id)).hide();
9767
9925
  return false;
9768
9926
  };
9769
9927
  var subGridJson = function(sjxml, sbid){
@@ -9802,9 +9960,9 @@ addSubGrid : function( pos, sind ) {
9802
9960
  }
9803
9961
  }
9804
9962
  var pID = $("table:first",ts.grid.bDiv).attr("id")+"_";
9805
- $("#"+pID+sbid).append(dummy);
9963
+ $("#"+$.jgrid.jqID(pID+sbid)).append(dummy);
9806
9964
  ts.grid.hDiv.loading = false;
9807
- $("#load_"+ts.p.id).hide();
9965
+ $("#load_"+$.jgrid.jqID(ts.p.id)).hide();
9808
9966
  return false;
9809
9967
  };
9810
9968
  var populatesubgrid = function( rd )
@@ -9817,7 +9975,7 @@ addSubGrid : function( pos, sind ) {
9817
9975
  if(ts.p.subGridModel[0].params) {
9818
9976
  for(j=0; j < ts.p.subGridModel[0].params.length; j++) {
9819
9977
  for(i=0; i<ts.p.colModel.length; i++) {
9820
- if(ts.p.colModel[i].name == ts.p.subGridModel[0].params[j]) {
9978
+ if(ts.p.colModel[i].name === ts.p.subGridModel[0].params[j]) {
9821
9979
  dp[ts.p.colModel[i].name]= $("td:eq("+i+")",rd).text().replace(/\&#160\;/ig,'');
9822
9980
  }
9823
9981
  }
@@ -9825,7 +9983,7 @@ addSubGrid : function( pos, sind ) {
9825
9983
  }
9826
9984
  if(!ts.grid.hDiv.loading) {
9827
9985
  ts.grid.hDiv.loading = true;
9828
- $("#load_"+ts.p.id).show();
9986
+ $("#load_"+$.jgrid.jqID(ts.p.id)).show();
9829
9987
  if(!ts.p.subgridtype) { ts.p.subgridtype = ts.p.datatype; }
9830
9988
  if($.isFunction(ts.p.subgridtype)) {
9831
9989
  ts.p.subgridtype.call(ts, dp);
@@ -9841,7 +9999,7 @@ addSubGrid : function( pos, sind ) {
9841
9999
  dataType:ts.p.subgridtype,
9842
10000
  data: $.isFunction(ts.p.serializeSubGridData)? ts.p.serializeSubGridData.call(ts, dp) : dp,
9843
10001
  complete: function(sxml) {
9844
- if(ts.p.subgridtype == "xml") {
10002
+ if(ts.p.subgridtype === "xml") {
9845
10003
  subGridXml(sxml.responseXML, sid);
9846
10004
  } else {
9847
10005
  subGridJson($.jgrid.parse(sxml.responseText),sid);
@@ -9855,8 +10013,8 @@ addSubGrid : function( pos, sind ) {
9855
10013
  return false;
9856
10014
  };
9857
10015
  var _id, pID,atd, nhc=0, bfsc, r;
9858
- $.each(ts.p.colModel,function(i,v){
9859
- if(this.hidden === true || this.name == 'rn' || this.name == 'cb') {
10016
+ $.each(ts.p.colModel,function(){
10017
+ if(this.hidden === true || this.name === 'rn' || this.name === 'cb') {
9860
10018
  nhc++;
9861
10019
  }
9862
10020
  });
@@ -9867,7 +10025,7 @@ addSubGrid : function( pos, sind ) {
9867
10025
  }
9868
10026
  while(i < len) {
9869
10027
  if($(ts.rows[i]).hasClass('jqgrow')) {
9870
- $(ts.rows[i].cells[pos]).bind('click', function(e) {
10028
+ $(ts.rows[i].cells[pos]).bind('click', function() {
9871
10029
  var tr = $(this).parent("tr")[0];
9872
10030
  r = tr.nextSibling;
9873
10031
  if($(this).hasClass("sgcollapsed")) {
@@ -9875,12 +10033,14 @@ addSubGrid : function( pos, sind ) {
9875
10033
  _id = tr.id;
9876
10034
  if(ts.p.subGridOptions.reloadOnExpand === true || ( ts.p.subGridOptions.reloadOnExpand === false && !$(r).hasClass('ui-subgrid') ) ) {
9877
10035
  atd = pos >=1 ? "<td colspan='"+pos+"'>&#160;</td>":"";
9878
- bfsc =true;
9879
- if($.isFunction(ts.p.subGridBeforeExpand)) {
10036
+ bfsc = $(ts).triggerHandler("jqGridSubGridBeforeExpand", [pID + "_" + _id, _id]);
10037
+ bfsc = (bfsc === false || bfsc === 'stop') ? false : true;
10038
+ if(bfsc && $.isFunction(ts.p.subGridBeforeExpand)) {
9880
10039
  bfsc = ts.p.subGridBeforeExpand.call(ts, pID+"_"+_id,_id);
9881
10040
  }
9882
10041
  if(bfsc === false) {return false;}
9883
- $(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>" );
10042
+ $(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>" );
10043
+ $(ts).triggerHandler("jqGridSubGridRowExpanded", [pID + "_" + _id, _id]);
9884
10044
  if( $.isFunction(ts.p.subGridRowExpanded)) {
9885
10045
  ts.p.subGridRowExpanded.call(ts, pID+"_"+ _id,_id);
9886
10046
  } else {
@@ -9894,18 +10054,19 @@ addSubGrid : function( pos, sind ) {
9894
10054
  $(ts).jqGrid('setSelection',_id);
9895
10055
  }
9896
10056
  } else if($(this).hasClass("sgexpanded")) {
9897
- bfsc = true;
9898
- if( $.isFunction(ts.p.subGridRowColapsed)) {
10057
+ bfsc = $(ts).triggerHandler("jqGridSubGridRowColapsed", [pID + "_" + _id, _id]);
10058
+ bfsc = (bfsc === false || bfsc === 'stop') ? false : true;
10059
+ if( bfsc && $.isFunction(ts.p.subGridRowColapsed)) {
9899
10060
  _id = tr.id;
9900
10061
  bfsc = ts.p.subGridRowColapsed.call(ts, pID+"_"+_id,_id );
9901
10062
  }
9902
10063
  if(bfsc===false) {return false;}
9903
- if(ts.p.subGridOptions.reloadOnExpand === true) {
9904
- $(r).remove(".ui-subgrid");
9905
- } else if($(r).hasClass('ui-subgrid')) { // incase of dynamic deleting
9906
- $(r).hide();
9907
- }
9908
- $(this).html("<a href='javascript:void(0);'><span class='ui-icon "+ts.p.subGridOptions.plusicon+"'></span></a>").removeClass("sgexpanded").addClass("sgcollapsed");
10064
+ if(ts.p.subGridOptions.reloadOnExpand === true) {
10065
+ $(r).remove(".ui-subgrid");
10066
+ } else if($(r).hasClass('ui-subgrid')) { // incase of dynamic deleting
10067
+ $(r).hide();
10068
+ }
10069
+ $(this).html("<a href='javascript:void(0);'><span class='ui-icon "+ts.p.subGridOptions.plusicon+"'></span></a>").removeClass("sgexpanded").addClass("sgcollapsed");
9909
10070
  }
9910
10071
  return false;
9911
10072
  });
@@ -10088,6 +10249,7 @@ jQuery(selector).each(function() {
10088
10249
 
10089
10250
  /*global document, jQuery, $ */
10090
10251
  (function($) {
10252
+ "use strict";
10091
10253
  $.jgrid.extend({
10092
10254
  setTreeNode : function(i, len){
10093
10255
  return this.each(function(){
@@ -10246,11 +10408,11 @@ $.jgrid.extend({
10246
10408
  i++;
10247
10409
  //
10248
10410
  for(var tkey in $t.p.treeReader) {
10249
- if($t.p.treeReader[tkey] == nm)
10411
+ if($t.p.treeReader[tkey] == nm) {
10250
10412
  dupcols.push(nm);
10413
+ }
10414
+ }
10251
10415
  }
10252
-
10253
- }
10254
10416
  }
10255
10417
  $.each($t.p.treeReader,function(j,n){
10256
10418
  if(n && $.inArray(n, dupcols) === -1){
@@ -10268,10 +10430,11 @@ $.jgrid.extend({
10268
10430
  if(!$t.grid || !$t.p.treeGrid) {return;}
10269
10431
  var childern = $($t).jqGrid("getNodeChildren",record),
10270
10432
  //if ($($t).jqGrid("isVisibleNode",record)) {
10271
- expanded = $t.p.treeReader.expanded_field;
10272
- $(childern).each(function(i){
10433
+ expanded = $t.p.treeReader.expanded_field,
10434
+ rows = $t.rows;
10435
+ $(childern).each(function(){
10273
10436
  var id = $.jgrid.getAccessor(this,$t.p.localReader.id);
10274
- $("#"+id,$t.grid.bDiv).css("display","");
10437
+ $(rows.namedItem(id)).css("display","");
10275
10438
  if(this[expanded]) {
10276
10439
  $($t).jqGrid("expandRow",this);
10277
10440
  }
@@ -10284,10 +10447,11 @@ $.jgrid.extend({
10284
10447
  var $t = this;
10285
10448
  if(!$t.grid || !$t.p.treeGrid) {return;}
10286
10449
  var childern = $($t).jqGrid("getNodeChildren",record),
10287
- expanded = $t.p.treeReader.expanded_field;
10288
- $(childern).each(function(i){
10450
+ expanded = $t.p.treeReader.expanded_field,
10451
+ rows = $t.rows;
10452
+ $(childern).each(function(){
10289
10453
  var id = $.jgrid.getAccessor(this,$t.p.localReader.id);
10290
- $("#"+id,$t.grid.bDiv).css("display","none");
10454
+ $(rows.namedItem(id)).css("display","none");
10291
10455
  if(this[expanded]){
10292
10456
  $($t).jqGrid("collapseRow",this);
10293
10457
  }
@@ -10303,7 +10467,7 @@ $.jgrid.extend({
10303
10467
  switch ($t.p.treeGridModel) {
10304
10468
  case 'nested' :
10305
10469
  var level = $t.p.treeReader.level_field;
10306
- $($t.p.data).each(function(i){
10470
+ $($t.p.data).each(function(){
10307
10471
  if(parseInt(this[level],10) === parseInt($t.p.tree_root_level,10)) {
10308
10472
  result.push(this);
10309
10473
  }
@@ -10311,7 +10475,7 @@ $.jgrid.extend({
10311
10475
  break;
10312
10476
  case 'adjacency' :
10313
10477
  var parent_id = $t.p.treeReader.parent_id_field;
10314
- $($t.p.data).each(function(i){
10478
+ $($t.p.data).each(function(){
10315
10479
  if(this[parent_id] === null || String(this[parent_id]).toLowerCase() == "null") {
10316
10480
  result.push(this);
10317
10481
  }
@@ -10359,7 +10523,7 @@ $.jgrid.extend({
10359
10523
  case 'adjacency' :
10360
10524
  var parent_id = $t.p.treeReader.parent_id_field,
10361
10525
  dtid = $t.p.localReader.id;
10362
- $(this.p.data).each(function(i,val){
10526
+ $(this.p.data).each(function(){
10363
10527
  if(this[dtid] == rc[parent_id] ) {
10364
10528
  result = this;
10365
10529
  return false;
@@ -10381,7 +10545,7 @@ $.jgrid.extend({
10381
10545
  rgtc = $t.p.treeReader.right_field,
10382
10546
  levelc = $t.p.treeReader.level_field,
10383
10547
  lft = parseInt(rc[lftc],10), rgt = parseInt(rc[rgtc],10), level = parseInt(rc[levelc],10);
10384
- $(this.p.data).each(function(i){
10548
+ $(this.p.data).each(function(){
10385
10549
  if(parseInt(this[levelc],10) === level+1 && parseInt(this[lftc],10) > lft && parseInt(this[rgtc],10) < rgt) {
10386
10550
  result.push(this);
10387
10551
  }
@@ -10390,7 +10554,7 @@ $.jgrid.extend({
10390
10554
  case 'adjacency' :
10391
10555
  var parent_id = $t.p.treeReader.parent_id_field,
10392
10556
  dtid = $t.p.localReader.id;
10393
- $(this.p.data).each(function(i,val){
10557
+ $(this.p.data).each(function(){
10394
10558
  if(this[parent_id] == rc[dtid]) {
10395
10559
  result.push(this);
10396
10560
  }
@@ -10411,7 +10575,7 @@ $.jgrid.extend({
10411
10575
  rgtc = $t.p.treeReader.right_field,
10412
10576
  levelc = $t.p.treeReader.level_field,
10413
10577
  lft = parseInt(rc[lftc],10), rgt = parseInt(rc[rgtc],10), level = parseInt(rc[levelc],10);
10414
- $(this.p.data).each(function(i){
10578
+ $(this.p.data).each(function(){
10415
10579
  if(parseInt(this[levelc],10) >= level && parseInt(this[lftc],10) >= lft && parseInt(this[lftc],10) <= rgt) {
10416
10580
  result.push(this);
10417
10581
  }
@@ -10496,12 +10660,12 @@ $.jgrid.extend({
10496
10660
 
10497
10661
  if(!rc[expanded]) {
10498
10662
  var id = $.jgrid.getAccessor(rc,this.p.localReader.id);
10499
- var rc1 = $("#"+id,this.grid.bDiv)[0];
10663
+ var rc1 = $("#"+$.jgrid.jqID(id),this.grid.bDiv)[0];
10500
10664
  var position = this.p._index[id];
10501
10665
  if( $(this).jqGrid("isNodeLoaded",this.p.data[position]) ) {
10502
10666
  rc[expanded] = true;
10503
10667
  $("div.treeclick",rc1).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus");
10504
- } else {
10668
+ } else if (!this.grid.hDiv.loading) {
10505
10669
  rc[expanded] = true;
10506
10670
  $("div.treeclick",rc1).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus");
10507
10671
  this.p.treeANode = rc1.rowIndex;
@@ -10529,7 +10693,7 @@ $.jgrid.extend({
10529
10693
  if(rc[expanded]) {
10530
10694
  rc[expanded] = false;
10531
10695
  var id = $.jgrid.getAccessor(rc,this.p.localReader.id);
10532
- var rc1 = $("#"+id,this.grid.bDiv)[0];
10696
+ var rc1 = $("#"+$.jgrid.jqID(id),this.grid.bDiv)[0];
10533
10697
  $("div.treeclick",rc1).removeClass(this.p.treeIcons.minus+" tree-minus").addClass(this.p.treeIcons.plus+" tree-plus");
10534
10698
  }
10535
10699
  });
@@ -10551,9 +10715,9 @@ $.jgrid.extend({
10551
10715
  records.push(rec);
10552
10716
  $(this).jqGrid("collectChildrenSortTree",records, rec, sortname, newDir,st, datefmt);
10553
10717
  }
10554
- $.each(records, function(index, row) {
10718
+ $.each(records, function(index) {
10555
10719
  var id = $.jgrid.getAccessor(this,$t.p.localReader.id);
10556
- $('#'+$t.p.id+ ' tbody tr:eq('+index+')').after($('tr#'+id,$t.grid.bDiv));
10720
+ $('#'+$.jgrid.jqID($t.p.id)+ ' tbody tr:eq('+index+')').after($('tr#'+$.jgrid.jqID(id),$t.grid.bDiv));
10557
10721
  });
10558
10722
  query = null;roots=null;records=null;
10559
10723
  });
@@ -10608,15 +10772,19 @@ $.jgrid.extend({
10608
10772
  .select();
10609
10773
  if(res.length) {
10610
10774
  for( key in res) {
10611
- res[key][left] = parseInt(res[key][left],10) - width ;
10612
- }
10775
+ if(res.hasOwnProperty(key)) {
10776
+ res[key][left] = parseInt(res[key][left],10) - width ;
10777
+ }
10778
+ }
10613
10779
  }
10614
10780
  res = $.jgrid.from($t.p.data)
10615
10781
  .greater(right,myright,{stype:'integer'})
10616
10782
  .select();
10617
10783
  if(res.length) {
10618
10784
  for( key in res) {
10619
- res[key][right] = parseInt(res[key][right],10) - width ;
10785
+ if(res.hasOwnProperty(key)) {
10786
+ res[key][right] = parseInt(res[key][right],10) - width ;
10787
+ }
10620
10788
  }
10621
10789
  }
10622
10790
  }
@@ -10631,7 +10799,7 @@ $.jgrid.extend({
10631
10799
  var expanded = $t.p.treeReader.expanded_field,
10632
10800
  isLeaf = $t.p.treeReader.leaf_field,
10633
10801
  level = $t.p.treeReader.level_field,
10634
- icon = $t.p.treeReader.icon_field,
10802
+ //icon = $t.p.treeReader.icon_field,
10635
10803
  parent = $t.p.treeReader.parent_id_field,
10636
10804
  left = $t.p.treeReader.left_field,
10637
10805
  right = $t.p.treeReader.right_field,
@@ -10703,8 +10871,10 @@ $.jgrid.extend({
10703
10871
  res = query.select();
10704
10872
  if(res.length) {
10705
10873
  for( key in res) {
10706
- res[key][left] = res[key][left] > maxright ? parseInt(res[key][left],10) +2 : res[key][left];
10707
- res[key][right] = res[key][right] >= maxright ? parseInt(res[key][right],10) +2 : res[key][right];
10874
+ if(res.hasOwnProperty(key)) {
10875
+ res[key][left] = res[key][left] > maxright ? parseInt(res[key][left],10) +2 : res[key][left];
10876
+ res[key][right] = res[key][right] >= maxright ? parseInt(res[key][right],10) +2 : res[key][right];
10877
+ }
10708
10878
  }
10709
10879
  }
10710
10880
  data[left] = maxright;
@@ -10716,7 +10886,9 @@ $.jgrid.extend({
10716
10886
  .select();
10717
10887
  if(res.length) {
10718
10888
  for( key in res) {
10719
- res[key][left] = parseInt(res[key][left],10) +2 ;
10889
+ if(res.hasOwnProperty(key)) {
10890
+ res[key][left] = parseInt(res[key][left],10) +2 ;
10891
+ }
10720
10892
  }
10721
10893
  }
10722
10894
  res = $.jgrid.from($t.p.data)
@@ -10724,7 +10896,9 @@ $.jgrid.extend({
10724
10896
  .select();
10725
10897
  if(res.length) {
10726
10898
  for( key in res) {
10727
- res[key][right] = parseInt(res[key][right],10) +2 ;
10899
+ if(res.hasOwnProperty(key)) {
10900
+ res[key][right] = parseInt(res[key][right],10) +2 ;
10901
+ }
10728
10902
  }
10729
10903
  }
10730
10904
  data[left] = maxright+1;
@@ -10899,6 +11073,7 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
10899
11073
  **/
10900
11074
 
10901
11075
  ;(function($) {
11076
+ "use strict";
10902
11077
  $.fmatter = {};
10903
11078
  //opts can be id:row id for the row, rowdata:the data for the row, colmodel:the column model for this column
10904
11079
  //example {id:1234,}
@@ -10939,9 +11114,9 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
10939
11114
  var v=cellval;
10940
11115
  opts = $.extend({}, $.jgrid.formatter, opts);
10941
11116
 
10942
- if ($.fn.fmatter[formatType]){
10943
- v = $.fn.fmatter[formatType](cellval, opts, rwd, act);
10944
- }
11117
+ try {
11118
+ v = $.fn.fmatter[formatType].call(this, cellval, opts, rwd, act);
11119
+ } catch(fe){}
10945
11120
  return v;
10946
11121
  };
10947
11122
  $.fmatter.util = {
@@ -11028,7 +11203,7 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
11028
11203
  if( format in opts.masks ) { format = opts.masks[format]; }
11029
11204
  if( !isNaN( date - 0 ) && String(format).toLowerCase() == "u") {
11030
11205
  //Unix timestamp
11031
- timestamp = new Date( parseFloat(date)*1000 );
11206
+ timestamp = new Date( parseFloat(date)*1000 );
11032
11207
  } else if(date.constructor === Date) {
11033
11208
  timestamp = date;
11034
11209
  // Microsoft date format support
@@ -11228,16 +11403,18 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
11228
11403
  return $.fn.fmatter.defaultFormat(cellval, opts);
11229
11404
  }
11230
11405
  };
11231
- $.fn.fmatter.select = function (cellval,opts, rwd, act) {
11406
+ $.fn.fmatter.select = function (cellval,opts) {
11232
11407
  // jqGrid specific
11233
11408
  cellval = cellval + "";
11234
- var oSelect = false, ret=[], sep;
11409
+ var oSelect = false, ret=[], sep, delim;
11235
11410
  if(!$.fmatter.isUndefined(opts.colModel.formatoptions)){
11236
11411
  oSelect= opts.colModel.formatoptions.value;
11237
11412
  sep = opts.colModel.formatoptions.separator === undefined ? ":" : opts.colModel.formatoptions.separator;
11413
+ delim = opts.colModel.formatoptions.delimiter === undefined ? ";" : opts.colModel.formatoptions.delimiter;
11238
11414
  } else if(!$.fmatter.isUndefined(opts.colModel.editoptions)){
11239
11415
  oSelect= opts.colModel.editoptions.value;
11240
11416
  sep = opts.colModel.editoptions.separator === undefined ? ":" : opts.colModel.editoptions.separator;
11417
+ delim = opts.colModel.editoptions.delimiter === undefined ? ";" : opts.colModel.editoptions.delimiter;
11241
11418
  }
11242
11419
  if (oSelect) {
11243
11420
  var msl = opts.colModel.editoptions.multiple === true ? true : false,
@@ -11245,14 +11422,14 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
11245
11422
  if(msl) {scell = cellval.split(",");scell = $.map(scell,function(n){return $.trim(n);});}
11246
11423
  if ($.fmatter.isString(oSelect)) {
11247
11424
  // mybe here we can use some caching with care ????
11248
- var so = oSelect.split(";"), j=0;
11425
+ var so = oSelect.split(delim), j=0;
11249
11426
  for(var i=0; i<so.length;i++){
11250
11427
  sv = so[i].split(sep);
11251
11428
  if(sv.length > 2 ) {
11252
- sv[1] = jQuery.map(sv,function(n,i){if(i>0) {return n;}}).join(":");
11429
+ sv[1] = $.map(sv,function(n,i){if(i>0) {return n;}}).join(sep);
11253
11430
  }
11254
11431
  if(msl) {
11255
- if(jQuery.inArray(sv[0],scell)>-1) {
11432
+ if($.inArray(sv[0],scell)>-1) {
11256
11433
  ret[j] = sv[1];
11257
11434
  j++;
11258
11435
  }
@@ -11264,7 +11441,7 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
11264
11441
  } else if($.fmatter.isObject(oSelect)) {
11265
11442
  // this is quicker
11266
11443
  if(msl) {
11267
- ret = jQuery.map(scell, function(n, i){
11444
+ ret = $.map(scell, function(n){
11268
11445
  return oSelect[n];
11269
11446
  });
11270
11447
  } else {
@@ -11302,12 +11479,12 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
11302
11479
  }
11303
11480
  var $t = $("#"+gid)[0];
11304
11481
  var saverow = function( rowid, res) {
11305
- if(op.afterSave) op.afterSave.call($t, rowid, res);
11482
+ if($.isFunction(op.afterSave)) { op.afterSave.call($t, rowid, res); }
11306
11483
  $("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid + ".ui-jqgrid-btable:first").show();
11307
11484
  $("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide();
11308
11485
  },
11309
11486
  restorerow = function( rowid) {
11310
- if(op.afterRestore) op.afterRestore.call($t, rowid);
11487
+ if($.isFunction(op.afterRestore) ) { op.afterRestore.call($t, rowid); }
11311
11488
  $("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").show();
11312
11489
  $("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide();
11313
11490
  };
@@ -11322,20 +11499,20 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
11322
11499
  $('#'+gid).jqGrid('editRow',rid, op.keys, op.onEdit, op.onSuccess, op.url, op.extraparam, saverow, op.onError,restorerow);
11323
11500
  $("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").hide();
11324
11501
  $("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").show();
11325
- if($.isFunction($t.p._complete)) {$t.p._complete.call($t);}
11502
+ $($t).triggerHandler("jqGridAfterGridComplete");
11326
11503
  break;
11327
11504
  case 'save':
11328
11505
  if ( $('#'+gid).jqGrid('saveRow',rid, op.onSuccess,op.url, op.extraparam, saverow, op.onError,restorerow) ) {
11329
11506
  $("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").show();
11330
11507
  $("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide();
11331
- if($.isFunction($t.p._complete)) {$t.p._complete.call($t);}
11508
+ $($t).triggerHandler("jqGridAfterGridComplete");
11332
11509
  }
11333
11510
  break;
11334
11511
  case 'cancel' :
11335
11512
  $('#'+gid).jqGrid('restoreRow',rid, restorerow);
11336
11513
  $("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").show();
11337
11514
  $("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide();
11338
- if($.isFunction($t.p._complete)) {$t.p._complete.call($t);}
11515
+ $($t).triggerHandler("jqGridAfterGridComplete");
11339
11516
  break;
11340
11517
  case 'del':
11341
11518
  $('#'+gid).jqGrid('delGridRow',rid, op.delOptions);
@@ -11346,7 +11523,7 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
11346
11523
  break;
11347
11524
  }
11348
11525
  };
11349
- $.fn.fmatter.actions = function(cellval,opts, rwd) {
11526
+ $.fn.fmatter.actions = function(cellval,opts) {
11350
11527
  var op ={keys:false, editbutton:true, delbutton:true, editformbutton: false};
11351
11528
  if(!$.fmatter.isUndefined(opts.colModel.formatoptions)) {
11352
11529
  op = $.extend(op,opts.colModel.formatoptions);
@@ -11354,9 +11531,9 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
11354
11531
  var rowid = opts.rowId, str="",ocl;
11355
11532
  if(typeof(rowid) =='undefined' || $.fmatter.isEmpty(rowid)) {return "";}
11356
11533
  if(op.editformbutton){
11357
- ocl = "onclick=jQuery.fn.fmatter.rowactions('"+rowid+"','"+opts.gid+"','formedit',"+opts.pos+"); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); "
11534
+ ocl = "onclick=jQuery.fn.fmatter.rowactions('"+rowid+"','"+opts.gid+"','formedit',"+opts.pos+"); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ";
11358
11535
  str =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>";
11359
- } else if(op.editbutton){
11536
+ } else if(op.editbutton){
11360
11537
  ocl = "onclick=jQuery.fn.fmatter.rowactions('"+rowid+"','"+opts.gid+"','edit',"+opts.pos+"); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover') ";
11361
11538
  str =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>";
11362
11539
  }
@@ -11377,7 +11554,7 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
11377
11554
  re = /([\.\*\_\'\(\)\{\}\+\?\\])/g,
11378
11555
  unformatFunc = options.colModel.unformat||($.fn.fmatter[formatType] && $.fn.fmatter[formatType].unformat);
11379
11556
  if(typeof unformatFunc !== 'undefined' && $.isFunction(unformatFunc) ) {
11380
- ret = unformatFunc($(cellval).text(), options, cellval);
11557
+ ret = unformatFunc.call(this, $(cellval).text(), options, cellval);
11381
11558
  } else if(!$.fmatter.isUndefined(formatType) && $.fmatter.isString(formatType) ) {
11382
11559
  var opts = $.jgrid.formatter || {}, stripTag;
11383
11560
  switch(formatType) {
@@ -11397,7 +11574,14 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
11397
11574
  op = $.extend({},opts.currency,op);
11398
11575
  sep = op.thousandsSeparator.replace(re,"\\$1");
11399
11576
  stripTag = new RegExp(sep, "g");
11400
- ret = $(cellval).text().replace(stripTag,'').replace(op.decimalSeparator,'.').replace(op.prefix,'').replace(op.suffix,'');
11577
+ ret = $(cellval).text();
11578
+ if (op.prefix && op.prefix.length) {
11579
+ ret = ret.substr(op.prefix.length);
11580
+ }
11581
+ if (op.suffix && op.suffix.length) {
11582
+ ret = ret.substr(0, ret.length - op.suffix.length);
11583
+ }
11584
+ ret = ret.replace(stripTag,'').replace(op.decimalSeparator,'.');
11401
11585
  break;
11402
11586
  case 'checkbox':
11403
11587
  var cbv = (options.colModel.editoptions) ? options.colModel.editoptions.value.split(":") : ["Yes","No"];
@@ -11420,21 +11604,24 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
11420
11604
  var ret = [];
11421
11605
  var cell = $(cellval).text();
11422
11606
  if(cnt===true) {return cell;}
11423
- var op = $.extend({},options.colModel.editoptions);
11607
+ var op = $.extend({}, !$.fmatter.isUndefined(options.colModel.formatoptions) ? options.colModel.formatoptions: options.colModel.editoptions),
11608
+ sep = op.separator === undefined ? ":" : op.separator,
11609
+ delim = op.delimiter === undefined ? ";" : op.delimiter;
11610
+
11424
11611
  if(op.value){
11425
11612
  var oSelect = op.value,
11426
11613
  msl = op.multiple === true ? true : false,
11427
11614
  scell = [], sv;
11428
11615
  if(msl) {scell = cell.split(",");scell = $.map(scell,function(n){return $.trim(n);});}
11429
11616
  if ($.fmatter.isString(oSelect)) {
11430
- var so = oSelect.split(";"), j=0;
11617
+ var so = oSelect.split(delim), j=0;
11431
11618
  for(var i=0; i<so.length;i++){
11432
- sv = so[i].split(":");
11619
+ sv = so[i].split(sep);
11433
11620
  if(sv.length > 2 ) {
11434
- sv[1] = jQuery.map(sv,function(n,i){if(i>0) {return n;}}).join(":");
11621
+ sv[1] = $.map(sv,function(n,i){if(i>0) {return n;}}).join(sep);
11435
11622
  }
11436
11623
  if(msl) {
11437
- if(jQuery.inArray(sv[1],scell)>-1) {
11624
+ if($.inArray(sv[1],scell)>-1) {
11438
11625
  ret[j] = sv[0];
11439
11626
  j++;
11440
11627
  }
@@ -11445,7 +11632,7 @@ hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function()
11445
11632
  }
11446
11633
  } else if($.fmatter.isObject(oSelect) || $.isArray(oSelect) ){
11447
11634
  if(!msl) {scell[0] = cell;}
11448
- ret = jQuery.map(scell, function(n){
11635
+ ret = $.map(scell, function(n){
11449
11636
  var rv;
11450
11637
  $.each(oSelect, function(i,val){
11451
11638
  if (val == n) {
@@ -11738,7 +11925,7 @@ var xmlJsonClass = {
11738
11925
  //}
11739
11926
  }
11740
11927
  else {
11741
- json += (name && ":") + "\"" + o.toString()+ "\"";
11928
+ json += (name && ":") + o.toString();
11742
11929
  }
11743
11930
  return json;
11744
11931
  },