jqgrid-jquery-rails 4.3.1.0 → 4.3.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
  },