Hormold

VK Change (#1373302806)

Jul 8th, 2013
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 40.06 KB | None | 0 0
  1. Файл - groups_list.js (Старый размер - 33002 | Новый - 0):
  2. 0.  - var GroupsList = {
  3. 1.  -   rand: function() {
  4. 2.  -     return Math.floor(Math.random() * 10000);
  5. 3.  -   },
  6. 4.  -   enter: function(el, gid, hash, act, past) {
  7. 5.  -     if (cur.invSwitching) {
  8. 6.  -       setTimeout(GroupsList.enter.pbind(el, gid, hash, act, past), 100);
  9. 7.  -       return false;
  10. 8.  -     }
  11. 9.  -     var sp, hp, tab = cur.scrollList.tab;
  12. 10.  -
  13. 11.  -     if (el.tagName.toLowerCase() != 'button') {
  14. 12.  -       if (!el.backhtml) {
  15. 13.  -         el.backhtml = el.innerHTML;
  16. 14.  -       }
  17. 15.  -       sp = function() {
  18. 16.  -         var w = getSize(el)[0];
  19. 17.  -         el.innerHTML = '<span class="progress_inline"></span>';
  20. 18.  -         setStyle(el, {width: w - 30});
  21. 19.  -       }
  22. 20.  -       hp = function() {
  23. 21.  -         el.innerHTML = el.backhtml;
  24. 22.  -       }
  25. 23.  -     } else {
  26. 24.  -       sp = lockButton.pbind(el);
  27. 25.  -       hp = unlockButton.pbind(el);
  28. 26.  -     }
  29. 27.  -
  30. 28.  -     var key = GroupsList.rand(), value = GroupsList.rand();
  31. 29.  -     cur.scrollList[key] = value;
  32. 30.  -
  33. 31.  -     var context = (cur.scrollList.tab == 'groups') ? '2' : '1';
  34. 32.  -
  35. 33.  -     var shown = false;
  36. 34.  -     cur.invSwitching = true;
  37. 35.  -     if (GroupsList.switchInvite(gid)) {
  38. 36.  -       shown = true;
  39. 37.  -       sp = false;
  40. 38.  -       hp = false;
  41. 39.  -     }
  42. 40.  -
  43. 41.  -     ajax.post('al_groups.php', {
  44. 42.  -       act: 'enter',
  45. 43.  -       gid: gid,
  46. 44.  -       hash: hash,
  47. 45.  -       context: context + (act ? '_' + act : ''),
  48. 46.  -       inv_shown: cur.scrollList.invShown
  49. 47.  -     }, {
  50. 48.  -       onDone: function(newRow, added) {
  51. 49.  -         cur.invSwitching = false;
  52. 50.  -         if (!cur.scrollList || cur.scrollList[key] != value) return;
  53. 51.  -
  54. 52.  -         var list = cur.scrollList.lists[tab], newStatus = past ? 5 : 1;
  55. 53.  -         if (act == 'unsure') {
  56. 54.  -           newStatus = past ? 5 : 3;
  57. 55.  -         } else if (act == 'decline') {
  58. 56.  -           newStatus = past ? -3 : -1;
  59. 57.  -         } else if (act == 'undecided') {
  60. 58.  -           newStatus = 4;
  61. 59.  -         }
  62. 60.  -         if (!list || list == 'loading' || list == 'update') {
  63. 61.  -           cur.scrollList.processed[tab][gid] = newStatus;
  64. 62.  -         } else {
  65. 63.  -           for (var i = 0, count = list.length; i < count; ++i) {
  66. 64.  -             if (list[i][2] == gid) {
  67. 65.  -               list[i][1] = newStatus;
  68. 66.  -             }
  69. 67.  -           }
  70. 68.  -         }
  71. 69.  -
  72. 70.  -         var row = ge('gl_' + tab + gid);
  73. 71.  -
  74. 72.  -         GroupsList.addInvite(newRow, added, act);
  75. 73.  -
  76. 74.  -         var rowEl = geByClass1('group_list_row', ge('groups_list_content'));
  77. 75.  -         if (rowEl && rowEl.id == 'gl_' + tab + gid) {
  78. 76.  -           setStyle(rowEl, {backgroundColor: '#FEFAE4'});
  79. 77.  -           animate(rowEl, {backgroundColor: '#FFF'}, 2000);
  80. 78.  -         }
  81. 79.  -
  82. 80.  -         if (shown) {
  83. 81.  -           return;
  84. 82.  -         }
  85. 83.  -
  86. 84.  -         if (!row) return;
  87. 85.  -
  88. 86.  -         var status = geByClass1('group_row_status', row), actions = geByClass1('group_row_actions', row), old = status.basehtml;
  89. 87.  -         var actOld = actions.basehtml;
  90. 88.  -         status.basehtml = status.innerHTML;
  91. 89.  -         actions.basehtml = actions.innerHTML;
  92. 90.  -         if (act == 'undecided') {
  93. 91.  -           actions.innerHTML = actOld || '';
  94. 92.  -           status.innerHTML = old || '\
  95. 93.  - <div class="group_row_buttons">\
  96. 94.  -   <div class="group_row_button button_blue fl_l">\
  97. 95.  -     <button onclick="GroupsList.enter(this, ' + gid + ', \'' + hash + '\', \'join\')">' + getLang('groups_event_go_btn') + '</button>\
  98. 96.  -   </div>\
  99. 97.  -   <div class="group_row_button button_blue fl_l">\
  100. 98.  -     <button onclick="GroupsList.enter(this, ' + gid + ', \'' + hash + '\', \'unsure\')">' + getLang('groups_event_maybe_btn') + '</button>\
  101. 99.  -   </div>\
  102. 100.  -   <div class="group_row_button button_cancel fl_l">\
  103. 101.  -     <div class="button" onclick="GroupsList.enter(this, ' + gid + ', \'' + hash + '\', \'decline\')">' + getLang('groups_event_cant_btn') + '</div>\
  104. 102.  -   </div>\
  105. 103.  - </div>';
  106. 104.  -         } else if (act) {
  107. 105.  -           if (past) {
  108. 106.  -             var statHTML = getLang('groups_was_on_event');
  109. 107.  -             if (act == 'decline') {
  110. 108.  -               actions.innerHTML = '<a onclick="GroupsList.enter(this.parentNode, ' + gid + ', \'' + hash + '\', \'join\', true)">' + getLang('groups_return_event') + '</a>';
  111. 109.  -             } else {
  112. 110.  -               actions.innerHTML = '<a onclick="GroupsList.enter(this.parentNode, ' + gid + ', \'' + hash + '\', \'decline\', true)">' + getLang('groups_remove_event') + '</a>';
  113. 111.  -             }
  114. 112.  -           } else {
  115. 113.  -             var acts = '<a onclick="GroupsList.enter(this.parentNode, ' + gid + ', \'' + hash + '\', \'undecided\')">' + getLang('groups_event_change') + '</a>';
  116. 114.  -             if (act == 'unsure') {
  117. 115.  -               var statHTML = getLang('groups_unsure_event');
  118. 116.  -             } else if (act == 'decline') {
  119. 117.  -               var statHTML = getLang('groups_event_left');
  120. 118.  -               //if (tab == 'inv') {
  121. 119.  -                 acts += '<span class="divider">|</span><a onclick="GroupsList.spam(this.parentNode, ' + gid + ', \'' + hash + '\')">' + getLang('its_spam') + '</a>';
  122. 120.  -               //}
  123. 121.  -             } else {
  124. 122.  -               var statHTML = getLang('groups_you_in_event');
  125. 123.  -             }
  126. 124.  -             actions.innerHTML = acts;
  127. 125.  -           }
  128. 126.  -           status.innerHTML = '<div class="groups_acted_text">'+statHTML+'</div>';
  129. 127.  -           cur.lst = status;
  130. 128.  -         } else {
  131. 129.  -           status.innerHTML = '<div class="groups_acted_text">'+getLang('groups_group_enter_message')+'</div>';
  132. 130.  -           actions.innerHTML = '<a onclick="GroupsList.cancel(this.parentNode, ' + gid + ', \'' + hash + '\')">' + getLang('global_cancel') + '</a>';
  133. 131.  -         }
  134. 132.  -
  135. 133.  -         if (tab == 'inv') {
  136. 134.  -           var row = ge('gl_groups'+ gid);
  137. 135.  -           if (row) {
  138. 136.  -             var statusOne = geByClass1('group_row_status', row), actionsOne = geByClass1('group_row_actions', row);
  139. 137.  -             statusOne.innerHTML = status.innerHTML;
  140. 138.  -             actionsOne.innerHTML = actions.innerHTML;
  141. 139.  -           }
  142. 140.  -         }
  143. 141.  -         if (act == 'join' || act == 'unsure') {
  144. 142.  -           GroupsList.updateEventsList(gid);
  145. 143.  -         } else if (act == 'undecided') {
  146. 144.  -           GroupsList.updateEventsList(false);
  147. 145.  -         }
  148. 146.  -         /*var list = cur.scrollList.lists[tab];
  149. 147.  -         if (act == 'join' || act == 'unsure' || act == 'decline') {
  150. 148.  -           GroupsList.updateEventsList();
  151. 149.  -           for(var i in list) {
  152. 150.  -             if (list[i][2] == gid) {
  153. 151.  -               cur['gid_restore_el'+gid] = [list.splice(i, 1), i];
  154. 152.  -             }
  155. 153.  -           }
  156. 154.  -         } else if (act == 'undecided' && cur['gid_restore_el'+gid]) {
  157. 155.  -           list.splice(cur['gid_restore_el'+gid][1], 0, cur['gid_restore_el'+gid][0][0]);
  158. 156.  -         }*/
  159. 157.  -       },
  160. 158.  -       onFail: function(text) {
  161. 159.  -         if (text) {
  162. 160.  -           setTimeout(showFastBox(getLang('global_error'), text).hide, 3000);
  163. 161.  -           return true;
  164. 162.  -         }
  165. 163.  -       },
  166. 164.  -       showProgress: sp, hideProgress: hp
  167. 165.  -     });
  168. 166.  -   },
  169. 167.  -
  170. 168.  -   addInvite: function(newRow, added, act) {
  171. 169.  -     if (newRow) {
  172. 170.  -       var moreCont = ge('gle_invites_more');
  173. 171.  -       moreCont.appendChild(se(newRow));
  174. 172.  -       cur.scrollList.invShown += 1;
  175. 173.  -       if (cur.scrollList.invSwitchGid) {
  176. 174.  -         GroupsList.switchInvite(cur.scrollList.invSwitchGid);
  177. 175.  -         cur.scrollList.invSwitchGid = false;
  178. 176.  -       }
  179. 177.  -     }
  180. 178.  -
  181. 179.  -     if (added && cur.scrollList.lists.groups) {
  182. 180.  -       var l = cur.scrollList.lists.groups;
  183. 181.  -       if (act == 'join' || act == 'unsure') {;
  184. 182.  -         l.push(added);
  185. 183.  -       } else if (!act) {
  186. 184.  -         l.unshift(added); // add to the start
  187. 185.  -       } else if (act == 'undecided') {
  188. 186.  -         for (var i in l) {
  189. 187.  -           if (l[i][2] == added[2]) {
  190. 188.  -             l.splice(i, 1)
  191. 189.  -           }
  192. 190.  -         }
  193. 191.  -       }
  194. 192.  -       cur.scrollList.cache['groups'] = {all: []};
  195. 193.  -       var c = cur.scrollList.cache['groups'];
  196. 194.  -       for (var i in l) {
  197. 195.  -         c.all.push(i);
  198. 196.  -       }
  199. 197.  -       cur.scrollList.index['groups'] = new vkIndexer(c.all, function(obj) {
  200. 198.  -         return l[obj][0];
  201. 199.  -       });
  202. 200.  -       GroupsList.showMore(true);
  203. 201.  -     }
  204. 202.  -   },
  205. 203.  -
  206. 204.  -   switchInvite: function(gid, prepareActs) {
  207. 205.  -     var tab = cur.scrollList.tab;
  208. 206.  -     if (tab != 'groups') {
  209. 207.  -       return false;
  210. 208.  -     }
  211. 209.  -
  212. 210.  -     var row = ge('gl_' + tab + gid);
  213. 211.  -
  214. 212.  -     var moreCont = ge('gle_invites_more');
  215. 213.  -     var newRows = moreCont.childNodes;
  216. 214.  -     if (!newRows.length) {
  217. 215.  -       if (cur.scrollList.invShown < cur.scrollList.invCount) {
  218. 216.  -         cur.scrollList.invSwitchGid = gid;
  219. 217.  -         return true;
  220. 218.  -       }
  221. 219.  -       return false;
  222. 220.  -     }
  223. 221.  -     var newRow = newRows[0];
  224. 222.  -
  225. 223.  -     if (!newRow) {
  226. 224.  -       return false;
  227. 225.  -     }
  228. 226.  -
  229. 227.  -     if (cur.switchedInvite) {
  230. 228.  -       slideUp(cur.switchedInvite);
  231. 229.  -     }
  232. 230.  -     if (prepareActs) {
  233. 231.  -       cur.switchedInvite = ce('div', {className: 'gle_invites_actions', innerHTML: '<div class="progress_inline"></div>'});
  234. 232.  -       newRow.insertBefore(cur.switchedInvite, newRow.firstChild)
  235. 233.  -     }
  236. 234.  -
  237. 235.  -     cur.scrollList.invShown -= 1;
  238. 236.  -     cur.scrollList.invCount -= 1;
  239. 237.  -
  240. 238.  -     var cont = row.parentNode;
  241. 239.  -     var size = getSize(cont);
  242. 240.  -     setStyle(newRow, {opacity: 0, overflow: 'hidden', height: 1, position: 'absolute'});
  243. 241.  -     cont.appendChild(newRow);
  244. 242.  -     animate(newRow, {marginTop: -size[1], opacity: 1, height: size[1]}, 200, function() {
  245. 243.  -       hide(row);
  246. 244.  -       setStyle(newRow, {marginTop: 0, position: 'static', height: 'auto'});
  247. 245.  -     });
  248. 246.  -
  249. 247.  -     if (cur.scrollList.invCount) {
  250. 248.  -       ge('gle_inv_summary').innerHTML = langNumeric(cur.scrollList.invCount, cur.scrollList.summaries.inv);
  251. 249.  -     } else {
  252. 250.  -       ge('gle_inv_summary').innerHTML = cur.scrollList.summaries.invEmpty;
  253. 251.  -     }
  254. 252.  -     return true;
  255. 253.  -   },
  256. 254.  -
  257. 255.  -   leave: function(el, gid, hash, pp) {
  258. 256.  -     if (cur.invSwitching) {
  259. 257.  -       setTimeout(GroupsList.leave.pbind(el, gid, hash, pp), 100);
  260. 258.  -       return false;
  261. 259.  -     }
  262. 260.  -     var sp, hp, tab = cur.scrollList.tab;
  263. 261.  -
  264. 262.  -     if (el.firstChild && el.firstChild.className == 'progress_inline') return;
  265. 263.  -     sp = function() {
  266. 264.  -       var w = getSize(el)[0];
  267. 265.  -       el.oldhtml = el.innerHTML;
  268. 266.  -       el.innerHTML = '<span class="progress_inline"></span>';
  269. 267.  -       setStyle(el, {width: w - 30});
  270. 268.  -     }
  271. 269.  -     hp = function() {
  272. 270.  -       el.innerHTML = el.oldhtml;
  273. 271.  -     }
  274. 272.  -
  275. 273.  -     var key = GroupsList.rand(), value = GroupsList.rand();
  276. 274.  -     cur.scrollList[key] = value;
  277. 275.  -
  278. 276.  -     var shown = false;
  279. 277.  -     cur.invSwitching = true;
  280. 278.  -     if (GroupsList.switchInvite(gid, true)) {
  281. 279.  -       shown = true;
  282. 280.  -       sp = false;
  283. 281.  -       hp = false;
  284. 282.  -     }
  285. 283.  -
  286. 284.  -     var context = (cur.scrollList.tab == 'groups') ? '2' : '1';
  287. 285.  -
  288. 286.  -     ajax.post('al_groups.php', {
  289. 287.  -       act: 'leave',
  290. 288.  -       gid: gid,
  291. 289.  -       hash: hash,
  292. 290.  -       context: context,
  293. 291.  -       inv_shown: cur.scrollList.invShown
  294. 292.  -     }, {
  295. 293.  -       onDone: function(newRow) {
  296. 294.  -         cur.invSwitching = false;
  297. 295.  -         if (!cur.scrollList || cur.scrollList[key] != value) return;
  298. 296.  -
  299. 297.  -         var list = cur.scrollList.lists[tab];
  300. 298.  -         if (!list || list == 'loading' || list == 'update') {
  301. 299.  -           cur.scrollList.processed[tab][gid] = -1;
  302. 300.  -         } else {
  303. 301.  -           for (var i = 0, count = list.length; i < count; ++i) {
  304. 302.  -             if (list[i][2] == gid) {
  305. 303.  -               list[i][1] = -1;
  306. 304.  -             }
  307. 305.  -           }
  308. 306.  -         }
  309. 307.  -
  310. 308.  -         var row = ge('gl_' + tab + gid);
  311. 309.  -         if (!row) return;
  312. 310.  -
  313. 311.  -         var acts = '<a onclick="GroupsList.cancel(this.parentNode, ' + gid + ', \'' + hash + '\')">' + getLang('global_cancel') + '</a><span class="divider">|</span><a onclick="GroupsList.spam(this.parentNode, ' + gid + ', \'' + hash + '\')">' + getLang('its_spam') + '</a>';
  314. 312.  -
  315. 313.  -         var text = '';
  316. 314.  -         if (tab == 'groups') {
  317. 315.  -           text = getLang(pp ? 'public_you_unsubscribed' : 'groups_group_left');
  318. 316.  -         } else {
  319. 317.  -           text = getLang('groups_group_deny_message');
  320. 318.  -         }
  321. 319.  -
  322. 320.  -
  323. 321.  -
  324. 322.  -         GroupsList.addInvite(newRow, false, false);
  325. 323.  -
  326. 324.  -         if (shown) {
  327. 325.  -           if (cur.switchedInvite) {
  328. 326.  -             cur.switchedInvite.innerHTML = text+' <a onclick="GroupsList.spam(this.parentNode, ' + gid + ', \'' + hash + '\', cur.switchedInvite)">' + getLang('its_spam') + '</a>';
  329. 327.  -           }
  330. 328.  -           return;
  331. 329.  -         }
  332. 330.  -
  333. 331.  -         var status = geByClass1('group_row_status', row), actions = geByClass1('group_row_actions', row);
  334. 332.  -         status.basehtml = status.innerHTML;
  335. 333.  -         actions.basehtml = actions.innerHTML;
  336. 334.  -         status.innerHTML = text;
  337. 335.  -         actions.innerHTML = acts;
  338. 336.  -       },
  339. 337.  -       showProgress: sp, hideProgress: hp
  340. 338.  -     });
  341. 339.  -   },
  342. 340.  -   rejectAll: function(el, hash) {
  343. 341.  -     var box = showFastBox(getLang('global_warning'), getLang('groups_sure_reject_all'), getLang('groups_members_application_decline'), function() {
  344. 342.  -       ajax.post('al_groups.php', {act: 'reject_all', hash: hash}, {progress: box.progress});
  345. 343.  -     }, getLang('global_cancel'));
  346. 344.  -   },
  347. 345.  -   spam: function(el, gid, hash, applyCont) {
  348. 346.  -     var sp, hp, tab = cur.scrollList.tab;
  349. 347.  -
  350. 348.  -     if (el.firstChild && el.firstChild.className == 'progress_inline') return;
  351. 349.  -     sp = function() {
  352. 350.  -       el.oldhtml = el.innerHTML;
  353. 351.  -       el.innerHTML = '<span class="progress_inline"></span>';
  354. 352.  -     }
  355. 353.  -     hp = function() {
  356. 354.  -       el.innerHTML = el.oldhtml;
  357. 355.  -     }
  358. 356.  -
  359. 357.  -     var key = GroupsList.rand(), value = GroupsList.rand();
  360. 358.  -     cur.scrollList[key] = value;
  361. 359.  -
  362. 360.  -     ajax.post('al_groups.php', {act: 'spam', gid: gid, hash: hash, context: 1}, {
  363. 361.  -       onDone: function(respText) {
  364. 362.  -         if (!cur.scrollList || cur.scrollList[key] != value) return;
  365. 363.  -         if (applyCont) {
  366. 364.  -           applyCont.innerHTML = respText;
  367. 365.  -         }
  368. 366.  -
  369. 367.  -         var list = cur.scrollList.lists[tab];
  370. 368.  -         if (!list || list == 'loading' || list == 'update') {
  371. 369.  -           cur.scrollList.processed[tab][gid] = -2;
  372. 370.  -         } else {
  373. 371.  -           for (var i = 0, count = list.length; i < count; ++i) {
  374. 372.  -             if (list[i][2] == gid) {
  375. 373.  -               list[i][1] = -2;
  376. 374.  -             }
  377. 375.  -           }
  378. 376.  -         }
  379. 377.  -
  380. 378.  -         var row = ge('gl_' + tab + gid);
  381. 379.  -         if (!row) return;
  382. 380.  -
  383. 381.  -         var status = geByClass1('group_row_status', row), actions = geByClass1('group_row_actions', row);
  384. 382.  -         status.basehtml = status.innerHTML;
  385. 383.  -         actions.basehtml = actions.innerHTML;
  386. 384.  -         status.innerHTML = getLang('groups_ajax_inv_declined_spam');
  387. 385.  -         actions.innerHTML = '';
  388. 386.  -       },
  389. 387.  -       showProgress: sp, hideProgress: hp
  390. 388.  -     });
  391. 389.  -   },
  392. 390.  -   cancel: function(el, gid, hash) {
  393. 391.  -     var sp, hp, tab = cur.scrollList.tab;
  394. 392.  -
  395. 393.  -     if (el.firstChild && el.firstChild.className == 'progress_inline') return;
  396. 394.  -     sp = function() {
  397. 395.  -       el.oldhtml = el.innerHTML;
  398. 396.  -       el.innerHTML = '<span class="progress_inline"></span>';
  399. 397.  -     }
  400. 398.  -     hp = function() {
  401. 399.  -       el.innerHTML = el.oldhtml;
  402. 400.  -     }
  403. 401.  -
  404. 402.  -     var key = GroupsList.rand(), value = GroupsList.rand();
  405. 403.  -     cur.scrollList[key] = value;
  406. 404.  -
  407. 405.  -     ajax.post('al_groups.php', {act: 'cancel', gid: gid, hash: hash, context: 1}, {
  408. 406.  -       onDone: function() {
  409. 407.  -         if (!cur.scrollList || cur.scrollList[key] != value) return;
  410. 408.  -
  411. 409.  -         var list = cur.scrollList.lists[tab], elem = false;
  412. 410.  -         if (!list || list == 'loading' || list == 'update') {
  413. 411.  -           cur.scrollList.processed[tab][gid] = 0;
  414. 412.  -         } else {
  415. 413.  -           for (var i in list) {
  416. 414.  -             if (list[i][2] == gid) {
  417. 415.  -               list.splice(i, 1)
  418. 416.  -             }
  419. 417.  -           }
  420. 418.  -           cur.scrollList.cache['groups'] = {all: []};
  421. 419.  -           var c = cur.scrollList.cache['groups'];
  422. 420.  -           for (var i in list) {
  423. 421.  -             c.all.push(i);
  424. 422.  -           }
  425. 423.  -           cur.scrollList.index[tab] = new vkIndexer(c.all, function(obj) {
  426. 424.  -             return list[obj][0];
  427. 425.  -           });
  428. 426.  -         }
  429. 427.  -         /*} else {
  430. 428.  -           for (var i = 0, count = list.length; i < count; ++i) {
  431. 429.  -             if (list[i][2] == gid) {
  432. 430.  -               list[i][1] = 0;
  433. 431.  -               elem = list[i];
  434. 432.  -               break;
  435. 433.  -             }
  436. 434.  -           }
  437. 435.  -         }*/
  438. 436.  -
  439. 437.  -         var row = ge('gl_' + tab + gid);
  440. 438.  -         if (!row) return;
  441. 439.  -
  442. 440.  -         if (elem) {
  443. 441.  -           var name = elem[0], q = trim(cur.scrollList.query.value);
  444. 442.  -           if (q) {
  445. 443.  -             var highlight = GroupsList.getHighlight(q);
  446. 444.  -             name = name.replace(highlight.re, highlight.val);
  447. 445.  -           }
  448. 446.  -           var newRow = (cur.scrollList.genRow(elem, name)) ? cur.scrollList.genInvRow(elem, name) : cur.scrollList.genRow(elem, name);
  449. 447.  -           row.parentNode.replaceChild(ce('div', {innerHTML: newRow}).firstChild, row);
  450. 448.  -         } else {
  451. 449.  -           var status = geByClass1('group_row_status', row), actions = geByClass1('group_row_actions', row);
  452. 450.  -           status.innerHTML = status.basehtml;
  453. 451.  -           actions.innerHTML = actions.basehtml;
  454. 452.  -         }
  455. 453.  -       },
  456. 454.  -       showProgress: sp, hideProgress: hp
  457. 455.  -     });
  458. 456.  -   },
  459. 457.  -
  460. 458.  -   scrollCheck: function() {
  461. 459.  -     if (browser.mobile) return;
  462. 460.  -     var lnk = ge(cur.scrollList.prefix + cur.scrollList.tab + '_more');
  463. 461.  -     if (!isVisible(lnk)) {
  464. 462.  -       return;
  465. 463.  -     }
  466. 464.  -
  467. 465.  -     var docEl = document.documentElement;
  468. 466.  -     var ch = window.innerHeight || docEl.clientHeight || bodyNode.clientHeight;
  469. 467.  -     var st = scrollGetY();
  470. 468.  -
  471. 469.  -     if (st + ch > lnk.offsetTop || (cur.searchOffset && st + 2*ch > lnk.offsetTop)) {
  472. 470.  -       GroupsList.showMore();
  473. 471.  -     }
  474. 472.  -   },
  475. 473.  -   initScroll: function() {
  476. 474.  -     addEvent((browser.msie6 ? pageNode : window), 'scroll', GroupsList.scrollCheck);
  477. 475.  -     addEvent(window, 'resize', GroupsList.scrollCheck);
  478. 476.  -   },
  479. 477.  -
  480. 478.  -   locNav: function(changed, oldLoc, newLoc) {
  481. 479.  -     var changedTab = changed.tab, tab = changedTab || 'groups';
  482. 480.  -     delete(changed.tab);
  483. 481.  -     if (!isEmpty(changed) || changedTab === undefined) return;
  484. 482.  -
  485. 483.  -     ge('groups_tab_' + cur.scrollList.tab).className = '';
  486. 484.  -     hide('groups_list_tab_' + cur.scrollList.tab);
  487. 485.  -     cur.scrollList.tab = tab;
  488. 486.  -     show('groups_list_tab_' + tab);
  489. 487.  -     var tabEl = ge('groups_tab_' + tab);
  490. 488.  -     tabEl.className = 'active_link';
  491. 489.  -     show(tabEl);
  492. 490.  -
  493. 491.  -     if (cur.scrollList.events) {
  494. 492.  -       toggle(cur.scrollList.events, tab == 'groups' && ge('gle_list_cont').innerHTML);
  495. 493.  -       cur.scrollList.eventsShow = false;
  496. 494.  -       if (isVisible(cur.scrollList.eventsMore)) {
  497. 495.  -         hide(cur.scrollList.eventsMore);
  498. 496.  -         show(cur.scrollList.eventsMoreLnk);
  499. 497.  -       }
  500. 498.  -     }
  501. 499.  -     if (cur.scrollList.invites) {
  502. 500.  -       toggle(cur.scrollList.invites, tab == 'groups');
  503. 501.  -     }
  504. 502.  -     if (cur.scrollList.invites || cur.scrollList.events) {
  505. 503.  -       ((tab == 'groups') ? addClass : removeClass)(cur.scrollList.summary.parentNode, 'gl_summary_short');
  506. 504.  -     }
  507. 505.  -
  508. 506.  -     toggle('gl_about_events', (tab == 'groups' || tab == 'inv'));
  509. 507.  -
  510. 508.  -     nav.setLoc(newLoc);
  511. 509.  -     ge('groups_list_search').setValue('');
  512. 510.  -     setTimeout(elfocus.pbind('groups_list_search'), 0);
  513. 511.  -
  514. 512.  -     cur.scrollList.summary.innerHTML = cur.scrollList.summaries[tab];
  515. 513.  -     cur.scrollList.offset = ge('groups_list_' + tab).childNodes.length;
  516. 514.  -
  517. 515.  -     GroupsList.showMore(true);
  518. 516.  -
  519. 517.  -     return false;
  520. 518.  -   },
  521. 519.  -
  522. 520.  -   init: function(opts) {
  523. 521.  -     placeholderSetup('groups_list_search', {back: true});
  524. 522.  -     setTimeout(elfocus.pbind('groups_list_search'), 0);
  525. 523.  -     extend(cur, {
  526. 524.  -       module: 'groups_list',
  527. 525.  -       _back: {
  528. 526.  -         text: getLang('groups_back_to_list'),
  529. 527.  -         show: [GroupsList.initScroll],
  530. 528.  -         hide: [function() {
  531. 529.  -           removeEvent((browser.msie6 ? pageNode : window), 'scroll', GroupsList.scrollCheck);
  532. 530.  -           removeEvent(window, 'resize', GroupsList.scrollCheck);
  533. 531.  -         }]
  534. 532.  -       },
  535. 533.  -
  536. 534.  -       scrollList: {
  537. 535.  -         tab: opts.tab,
  538. 536.  -
  539. 537.  -         url: 'al_groups.php',
  540. 538.  -         params: {act: 'get_list', mid: opts.mid},
  541. 539.  -         prefix: 'groups_list_',
  542. 540.  -         query: ge('groups_list_search'),
  543. 541.  -         summary: ge('groups_list_summary'),
  544. 542.  -         events: ge('gle_list_wrap'),
  545. 543.  -         eventsMore: ge('gle_list_more'),
  546. 544.  -         eventsMoreLnk: ge('gle_list_more_lnk'),
  547. 545.  -         invites: ge('gle_invites_wrap'),
  548. 546.  -         searchCont: ge('groups_list_search_cont'),
  549. 547.  -
  550. 548.  -         perpage: 20,
  551. 549.  -         offset: ge('groups_list_' + opts.tab).childNodes.length,
  552. 550.  -
  553. 551.  -         lists: {},
  554. 552.  -         cache: {},
  555. 553.  -         index: {},
  556. 554.  -         processed: {'groups': {}, 'admin': {}, 'inv': {}},
  557. 555.  -         filtered: {},
  558. 556.  -         queries: {},
  559. 557.  -         summaries: opts.summaries,
  560. 558.  -
  561. 559.  -         genEmpty: opts.genEmpty,
  562. 560.  -         genRow: opts.genRow,
  563. 561.  -         genEvent: opts.genEvent,
  564. 562.  -         genInvRow: opts.genInvRow,
  565. 563.  -         genSummary: opts.genSummary,
  566. 564.  -         genGroupsSummary: opts.genGroupsSummary,
  567. 565.  -         invShown: opts.invShown,
  568. 566.  -         invCount: opts.invCount
  569. 567.  -       },
  570. 568.  -       filter: opts.filter
  571. 569.  -     });
  572. 570.  -
  573. 571.  -     cur.nav.push(GroupsList.locNav);
  574. 572.  -
  575. 573.  -     setTimeout(GroupsList.load, 0);
  576. 574.  -     if (vk.version) {
  577. 575.  -       addEvent(window, 'load', GroupsList.initScroll);
  578. 576.  -     } else {
  579. 577.  -       GroupsList.initScroll();
  580. 578.  -     }
  581. 579.  -   },
  582. 580.  -   load: function(force, forceTab) {
  583. 581.  -     var tab = forceTab || cur.scrollList.tab;
  584. 582.  -     if (cur.scrollList.lists[tab]) return;
  585. 583.  -
  586. 584.  -     var key = GroupsList.rand(), value = GroupsList.rand();
  587. 585.  -     cur.scrollList[key] = value;
  588. 586.  -
  589. 587.  -     cur.scrollList.lists[tab] = 'loading';
  590. 588.  -     ajax.post(cur.scrollList.url, extend(cur.scrollList.params, {tab: tab}), {onDone: function(result) {
  591. 589.  -       if (!cur.scrollList || cur.scrollList[key] != value) return;
  592. 590.  -
  593. 591.  -       var upd = (cur.scrollList.lists[tab] == 'update');
  594. 592.  -       if (!upd && cur.scrollList.lists[tab] != 'loading') return;
  595. 593.  -
  596. 594.  -       cur.scrollList.cache[tab] = {all: []};
  597. 595.  -       var processed = cur.scrollList.processed[tab], gid;
  598. 596.  -       for (var i = 0, count = result.length; i < count; ++i) {
  599. 597.  -         res = processed[result[i][2]];
  600. 598.  -         if (res) {
  601. 599.  -           result[i][1] = res;
  602. 600.  -         }
  603. 601.  -         cur.scrollList.cache[tab].all.push(i);
  604. 602.  -       }
  605. 603.  -       cur.scrollList.lists[tab] = result;
  606. 604.  -
  607. 605.  -       var callback = upd ? function() {
  608. 606.  -         if (cur.scrollList && cur.scrollList[key] == value && cur.scrollList.tab == tab) {
  609. 607.  -           GroupsList.showMore(force);
  610. 608.  -         }
  611. 609.  -       } : function() {};
  612. 610.  -
  613. 611.  -       cur.scrollList.index[tab] = new vkIndexer(cur.scrollList.cache[tab].all, function(obj) {
  614. 612.  -         return cur.scrollList.lists[tab][obj][0];
  615. 613.  -       }, callback);
  616. 614.  -
  617. 615.  -       if (cur.scrollList.eventsShow) {
  618. 616.  -         GroupsList.eventsMore();
  619. 617.  -       }
  620. 618.  -     }});
  621. 619.  -   },
  622. 620.  -
  623. 621.  -   htmlencode: function(str) {
  624. 622.  -     var res = [];
  625. 623.  -     for (var i = 0, l = str.length; i < l; ++i) {
  626. 624.  -       var c = str.charCodeAt(i);
  627. 625.  -       if (c == 33 || c == 39 || (c > 127 && c < 1040) || c > 1103) {
  628. 626.  -         res.push('&#' + c + ';');
  629. 627.  -       } else if (c == 36) {
  630. 628.  -         res.push('&#0' + c + ';');
  631. 629.  -       } else {
  632. 630.  -         c = str.charAt(i);
  633. 631.  -         switch (c) {
  634. 632.  -           case '>': res.push('&gt;'); break;
  635. 633.  -           case '<': res.push('&lt;'); break;
  636. 634.  -           case '"': res.push('&quot;'); break;
  637. 635.  -           case '&': res.push('&amp;'); break;
  638. 636.  -           default:  res.push(c); break;
  639. 637.  -         }
  640. 638.  -       }
  641. 639.  -     }
  642. 640.  -     return res.join('');
  643. 641.  -   },
  644. 642.  -   getHighlight: function(q) {
  645. 643.  -     var indxr = cur.scrollList.index[cur.scrollList.tab], delimiter = indxr.delimiter, trimmer = indxr.trimmer;
  646. 644.  -
  647. 645.  -     q += ' ' + (parseLatin(q) || '');
  648. 646.  -     q = escapeRE(q).replace(/&/g, '&amp;');
  649. 647.  -     q = q.replace(trimmer, '').replace(delimiter, '|');
  650. 648.  -     return {
  651. 649.  -       re: new RegExp('(' + q + ')', 'gi'),
  652. 650.  -       val: '<span class="group_row_highlight">$1</span>'
  653. 651.  -     }
  654. 652.  -   },
  655. 653.  -   updateEvents: function() {
  656. 654.  -     if (!cur.scrollList.events || cur.scrollList.tab != 'groups') return;
  657. 655.  -     toggle(cur.scrollList.events, !cur.scrollList.query.value && ge('gle_list_cont').innerHTML);
  658. 656.  -     cur.scrollList.eventsShow = false;
  659. 657.  -     if (isVisible(cur.scrollList.eventsMore)) {
  660. 658.  -       hide(cur.scrollList.eventsMore);
  661. 659.  -       show(cur.scrollList.eventsMoreLnk);
  662. 660.  -     }
  663. 661.  -     if (cur.scrollList.invites) {
  664. 662.  -       toggle(cur.scrollList.invites, !cur.scrollList.query.value);
  665. 663.  -     }
  666. 664.  -     (!cur.scrollList.query.value ? addClass : removeClass)(cur.scrollList.summary.parentNode, 'gl_summary_short');
  667. 665.  -   },
  668. 666.  -   updateEventsList: function(addedGid) {
  669. 667.  -     ajax.post('groups', {act: 'update_events'}, {
  670. 668.  -       onDone: function(html, more) {
  671. 669.  -         var gleCont = ge('gle_list_cont');
  672. 670.  -         val(gleCont, html);
  673. 671.  -         toggle(cur.scrollList.events, !!html);
  674. 672.  -         hide(cur.scrollList.eventsMore);
  675. 673.  -         val(cur.scrollList.eventsMore, '');
  676. 674.  -         val(cur.scrollList.eventsMoreLnk, more || '');
  677. 675.  -         toggle(cur.scrollList.eventsMoreLnk, !!more);
  678. 676.  -         cur.scrollList.eventsShow = false;
  679. 677.  -         if (addedGid) {
  680. 678.  -           var addedRow = ge('gle_block_'+addedGid);
  681. 679.  -           if (addedRow) {
  682. 680.  -             setStyle(addedRow, {backgroundColor: '#FEFAE4'});
  683. 681.  -             animate(addedRow, {backgroundColor: '#FFF'}, 2000);
  684. 682.  -           }
  685. 683.  -         }
  686. 684.  -       }
  687. 685.  -     })
  688. 686.  -   },
  689. 687.  -   eventsMore: function() {
  690. 688.  -     var list = cur.scrollList.lists['groups'];
  691. 689.  -     if (!list || list == 'loading' || list == 'update') {
  692. 690.  -       cur.scrollList.eventsShow = true;
  693. 691.  -       return;
  694. 692.  -     }
  695. 693.  -
  696. 694.  -     hide(cur.scrollList.eventsMoreLnk);
  697. 695.  -     if (val(cur.scrollList.eventsMore)) {
  698. 696.  -       show(cur.scrollList.eventsMore);
  699. 697.  -     } else {
  700. 698.  -       var res = {}, shown = {}, dates = {}, list = [], html = [];
  701. 699.  -       each(ge('gle_list_cont').childNodes, function(k, v) {
  702. 700.  -         var id = intval(((v || {}).id || '').replace(/^gle_block_/, ''));
  703. 701.  -         if (id) shown[id] = true;
  704. 702.  -       });
  705. 703.  -       each(cur.scrollList.lists['groups'], function(k, v) {
  706. 704.  -         var gid = intval(v[2]);
  707. 705.  -         if (!v[11] || shown[gid]) return;
  708. 706.  -         list.push(gid);
  709. 707.  -         res[gid] = cur.scrollList.genEvent(v);
  710. 708.  -         dates[gid] = intval(v[11].split('<*>')[0]);
  711. 709.  -       });
  712. 710.  -       list.sort(function(gid1, gid2) {
  713. 711.  -         return (dates[gid1] < dates[gid2]) ? -1 : ((dates[gid2] < dates[gid1]) ? 1 : 0);
  714. 712.  -       });
  715. 713.  -       each(list, function(k, v) {
  716. 714.  -         html.push(res[v]);
  717. 715.  -       });
  718. 716.  -       if (html.length) {
  719. 717.  -         val(cur.scrollList.eventsMore, html.join(''));
  720. 718.  -         show(cur.scrollList.eventsMore);
  721. 719.  -       }
  722. 720.  -     }
  723. 721.  -   },
  724. 722.  -   showMore: function(force) {
  725. 723.  -     var tab = cur.scrollList.tab, list = cur.scrollList.lists[tab];
  726. 724.  -     if (!list || list == 'loading' || list == 'update') {
  727. 725.  -       if (!list) GroupsList.load(force);
  728. 726.  -       cur.scrollList.lists[tab] = 'update';
  729. 727.  -       return;
  730. 728.  -     }
  731. 729.  -
  732. 730.  -     var tab = cur.scrollList.tab, list = cur.scrollList.cache[tab].all;
  733. 731.  -
  734. 732.  -     var q = trim(cur.scrollList.query.value);
  735. 733.  -     cur.searchStr = q;
  736. 734.  -     if (!cur.loadingShown) {
  737. 735.  -       if (q) {
  738. 736.  -         show('groups_reset_search');
  739. 737.  -       } else {
  740. 738.  -         hide('groups_reset_search');
  741. 739.  -       }
  742. 740.  -     }
  743. 741.  -
  744. 742.  -     if (cur.scrollList.queries[tab] === undefined) {
  745. 743.  -       cur.scrollList.queries[tab] = '';
  746. 744.  -     }
  747. 745.  -     var refresh = (force || q != cur.scrollList.queries[tab]);
  748. 746.  -     if (!refresh && force === false) return;
  749. 747.  -
  750. 748.  -     cur.scrollList.queries[tab] = q;
  751. 749.  -
  752. 750.  -     var highlight = false;
  753. 751.  -     if (q) {
  754. 752.  -       list = cur.scrollList.cache[tab]['_' + q];
  755. 753.  -       if (list === undefined) {
  756. 754.  -         var tmp = cur.scrollList.index[tab].search(q), mp = {};
  757. 755.  -         list = [];
  758. 756.  -         for (var i = 0, l = tmp.length; i < l; ++i) {
  759. 757.  -           if (!mp[tmp[i]]) {
  760. 758.  -             mp[tmp[i]] = true;
  761. 759.  -             list.push(tmp[i]);
  762. 760.  -           }
  763. 761.  -         }
  764. 762.  -         list.sort(function(a,b){return a-b;});
  765. 763.  -         cur.scrollList.cache[tab]['_' + q] = list;
  766. 764.  -       }
  767. 765.  -       highlight = GroupsList.getHighlight(q);
  768. 766.  -     }
  769. 767.  -
  770. 768.  -     var len = list.length;
  771. 769.  -
  772. 770.  -     var cont = ge(cur.scrollList.prefix + tab), more = ge(cur.scrollList.prefix + tab + '_more');
  773. 771.  -     if (!len) {
  774. 772.  -       if (q && tab == 'groups') {
  775. 773.  -         if (refresh) {
  776. 774.  -           GroupsList.serverSearch(cont, q, true);
  777. 775.  -           hide(more);
  778. 776.  -         } else if (cur.searchOffset) {
  779. 777.  -           GroupsList.serverSearchMore(cont, q);
  780. 778.  -         }
  781. 779.  -       } else {
  782. 780.  -         q = cur.scrollList.query.value;
  783. 781.  -         cont.innerHTML = cur.scrollList.genEmpty(q);
  784. 782.  -         cur.scrollList.summary.innerHTML = q ? cur.scrollList.genSummary(len) : cur.scrollList.summaries[tab];
  785. 783.  -         hide(more);
  786. 784.  -         hide(cur.scrollList.searchCont);
  787. 785.  -         cur.searchOffset = 0;
  788. 786.  -       }
  789. 787.  -       return;
  790. 788.  -     } else if (tab == 'groups' && cur.scrollList.params.mid == vk.id) {
  791. 789.  -       cur.scrollList.summary.innerHTML = cur.scrollList.genGroupsSummary(len);
  792. 790.  -     } else {
  793. 791.  -       cur.scrollList.summary.innerHTML = q ? cur.scrollList.genSummary(len) : cur.scrollList.summaries[tab];
  794. 792.  -     }
  795. 793.  -
  796. 794.  -     var start = refresh ? 0 : cur.scrollList.offset, end = Math.min(len, start + cur.scrollList.perpage);
  797. 795.  -     var html = [];
  798. 796.  -
  799. 797.  -     for (var i = start; i < end; ++i) {
  800. 798.  -       var row = cur.scrollList.lists[tab][list[i]];
  801. 799.  -       if (!row) continue;
  802. 800.  -       var name = row[0];
  803. 801.  -       if (highlight) {
  804. 802.  -         name = name.replace(highlight.re, highlight.val);
  805. 803.  -       }
  806. 804.  -       if (cur.scrollList.tab == 'inv') {
  807. 805.  -         html.push(cur.scrollList.genInvRow(row, name));
  808. 806.  -       } else {
  809. 807.  -         html.push(cur.scrollList.genRow(row, name));
  810. 808.  -       }
  811. 809.  -     }
  812. 810.  -
  813. 811.  -     if (!q && (!start || refresh)) {
  814. 812.  -       hide(cur.scrollList.searchCont);
  815. 813.  -       cur.searchOffset = 0;
  816. 814.  -     }
  817. 815.  -
  818. 816.  -     if (refresh) {
  819. 817.  -       cont.innerHTML = html.join('');
  820. 818.  -       cur.searchOffset = false;
  821. 819.  -       if (list.length < 10 && q && tab == 'groups') {
  822. 820.  -         var exclude = [];
  823. 821.  -         for (var i in list) {
  824. 822.  -           var el = cur.scrollList.lists[tab][list[i]];
  825. 823.  -           exclude.push(el[2]);
  826. 824.  -         }
  827. 825.  -         GroupsList.serverSearch(cont, q, false, exclude);
  828. 826.  -       } else {
  829. 827.  -         hide(cur.scrollList.searchCont);
  830. 828.  -         cur.searchOffset = 0;
  831. 829.  -       }
  832. 830.  -     } else {
  833. 831.  -       cont.innerHTML += html.join('');
  834. 832.  -       if (cur.searchOffset) {
  835. 833.  -         GroupsList.serverSearchMore(cont, q);
  836. 834.  -       }
  837. 835.  -     }
  838. 836.  -     cur.scrollList.offset = end;
  839. 837.  -
  840. 838.  -     if (!cur.searchOffset) {
  841. 839.  -       (end < len ? show : hide)(more);
  842. 840.  -     }
  843. 841.  -   },
  844. 842.  -
  845. 843.  -   serverSearchMore: function(cont, q) {
  846. 844.  -     if (cur.searchLoadingMore) return;
  847. 845.  -     cur.searchLoadingMore = 1;
  848. 846.  -     var more = ge(cur.scrollList.prefix + cur.scrollList.tab + '_more');
  849. 847.  -     var back = more.innerHTML;
  850. 848.  -     ajax.post('al_groups.php', {
  851. 849.  -       act: 'server_search',
  852. 850.  -       q: q,
  853. 851.  -       offset: cur.searchOffset,
  854. 852.  -       exclude: cur.searchExclude.join(',')
  855. 853.  -     }, {
  856. 854.  -       onDone: function(count, rows, finish) {
  857. 855.  -         cur.searchLoadingMore = 0;
  858. 856.  -         if (count) {
  859. 857.  -           cur.searchOffset += count;
  860. 858.  -           cur.scrollList.searchCont.appendChild(cf(rows));
  861. 859.  -         } else {
  862. 860.  -           cur.searchOffset = 0;
  863. 861.  -         }
  864. 862.  -         (finish ? hide : show)(cur.scrollList.prefix + cur.scrollList.tab + '_more');
  865. 863.  -         debugLog((finish ? 'hide' : 'show'));
  866. 864.  -       },
  867. 865.  -       onFail: function() {
  868. 866.  -         cur.searchLoadingMore = 0;
  869. 867.  -       },
  870. 868.  -       showProgress: function() {
  871. 869.  -         more.innerHTML = '<img src="/images/upload.gif" />';
  872. 870.  -       },
  873. 871.  -       hideProgress: function() {
  874. 872.  -         more.innerHTML = back;
  875. 873.  -       }
  876. 874.  -     })
  877. 875.  -   },
  878. 876.  -
  879. 877.  -   serverSearch: function(cont, q, emptyLocal, exclude) {
  880. 878.  -     if (cur.scrollList.tab != 'groups') {
  881. 879.  -       return false;
  882. 880.  -     }
  883. 881.  -     clearTimeout(cur.searchTimeout);
  884. 882.  -     cur.searchTimeout = setTimeout(function() {
  885. 883.  -       if (cur.searchStr != q) return;
  886. 884.  -       cur.searchExclude = exclude || [];
  887. 885.  -       ajax.post('al_groups.php', {
  888. 886.  -         act: 'server_search',
  889. 887.  -         q: q,
  890. 888.  -         empty: emptyLocal ? 1 : 0,
  891. 889.  -         exclude: cur.searchExclude.join(',')
  892. 890.  -       }, {
  893. 891.  -         onDone: function(count, rows, summary, finish) {
  894. 892.  -           if (cur.searchStr != q) return;
  895. 893.  -           if (count) {
  896. 894.  -             var last = geByClass('group_list_row', cont).pop();
  897. 895.  -             if (last) {
  898. 896.  -               addClass(last, 'groups_list_last_row');
  899. 897.  -             }
  900. 898.  -             cur.scrollList.searchCont.innerHTML = rows;
  901. 899.  -             show(cur.scrollList.searchCont);
  902. 900.  -             if (emptyLocal) {
  903. 901.  -               cur.scrollList.summary.innerHTML = summary;
  904. 902.  -               cont.innerHTML = '';
  905. 903.  -             }
  906. 904.  -             if (!finish) {
  907. 905.  -               show(cur.scrollList.prefix + cur.scrollList.tab + '_more');
  908. 906.  -             }
  909. 907.  -           } else {
  910. 908.  -             cur.scrollList.searchCont.innerHTML = '';
  911. 909.  -             hide(cur.scrollList.searchCont);
  912. 910.  -             if (emptyLocal) {
  913. 911.  -               cont.innerHTML = cur.scrollList.genEmpty(q);
  914. 912.  -               cur.scrollList.summary.innerHTML = cur.scrollList.genSummary(0);
  915. 913.  -             }
  916. 914.  -           }
  917. 915.  -           cur.searchOffset = count;
  918. 916.  -         },
  919. 917.  -         showProgress: GroupsList.showLoading,
  920. 918.  -         hideProgress: GroupsList.hideLoading
  921. 919.  -       })
  922. 920.  -     }, 300);
  923. 921.  -   },
  924. 922.  -
  925. 923.  -   resetSearch: function() {
  926. 924.  -     val(cur.scrollList.query, '');
  927. 925.  -     GroupsList.showMore(true);
  928. 926.  -     GroupsList.updateEvents();
  929. 927.  -   },
  930. 928.  -
  931. 929.  -   showLoading: function() {
  932. 930.  -     cur.loadingShown = 1;
  933. 931.  -     show('groups_loading');
  934. 932.  -     hide('groups_reset_search');
  935. 933.  -   },
  936. 934.  -
  937. 935.  -   hideLoading: function() {
  938. 936.  -     cur.loadingShown = 0;
  939. 937.  -     hide('groups_loading');
  940. 938.  -     if (cur.scrollList.query.value) {
  941. 939.  -       show('groups_reset_search');
  942. 940.  -     }
  943. 941.  -   },
  944. 942.  -
  945. 943.  -   goToSearch: function() {
  946. 944.  -     var q = trim(cur.scrollList.query.value);
  947. 945.  -     nav.go('search?c%5Bq%5D='+encodeURIComponent(q)+'&c%5Bsection%5D=communities');
  948. 946.  -   },
  949. 947.  -
  950. 948.  -   showInvites: function(obj) {
  951. 949.  -     removeClass(obj.previousSibling, 'groups_list_last_row');
  952. 950.  -     hide(obj);
  953. 951.  -     show(obj.nextSibling);
  954. 952.  -   },
  955. 953.  -
  956. 954.  -   ttShow: function(obj, text) {
  957. 955.  -     var showsp = 200;
  958. 956.  -     if (cur.groupMemTT && cur.groupMemTT != obj && window.tooltips) {
  959. 957.  -       tooltips.hideAll();
  960. 958.  -       cur.groupMemTT = false;
  961. 959.  -       showsp = 0;
  962. 960.  -     }
  963. 961.  -     cur.groupMemTT = obj;
  964. 962.  -     return showTooltip(obj, {
  965. 963.  -       center: 1,
  966. 964.  -       black: 1,
  967. 965.  -       showsp: showsp,
  968. 966.  -       shift: [0, 2, 10],
  969. 967.  -       text: text
  970. 968.  -     });
  971. 969.  -   },
  972. 970.  -
  973. 971.  -   showMapBox: function(place, zoom, link) {
  974. 972.  -     if (window.showZeroZoneBox && showZeroZoneBox('places', function() {
  975. 973.  -       GroupsList.showMapBox(place, zoom, link);
  976. 974.  -     })) { return; }
  977. 975.  -
  978. 976.  -     showTabbedBox('places.php', {act: 'a_get_place_box', id: place}, {stat: ['places.css', 'map.css', 'maps.js', 'ui_controls.css', 'ui_controls.js']});
  979. 977.  -   },
  980. 978.  -
  981. 979.  -   feedbanGroup: function(el, gid, hash) {
  982. 980.  -     var oid = -gid;
  983. 981.  -     ajax.post('al_fans.php', {act: 'feedtgl', oid: oid, hash: hash}, {
  984. 982.  -       onDone: function(val, str) {
  985. 983.  -         el.innerHTML = str;
  986. 984.  -         if (!cur.scrollList.lists || !cur.scrollList.lists.groups) {
  987. 985.  -           return;
  988. 986.  -         }
  989. 987.  -         var lst = cur.scrollList.lists.groups;
  990. 988.  -         if (lst && lst.length) {
  991. 989.  -           for (var i = 0, l = lst.length; i < l; ++i) {
  992. 990.  -             if (lst[i][2] == gid) {
  993. 991.  -               cur.scrollList.lists.groups[i][12] = val;
  994. 992.  -               break;
  995. 993.  -             }
  996. 994.  -           }
  997. 995.  -         }
  998. 996.  -       },
  999. 997.  -       showProgress: function() {
  1000. 998.  -         el.innerHTML = '<span class="progress_inline"></span>';
  1001. 999.  -       }
  1002. 1000.  -     });
  1003. 1001.  -   }
  1004. 1002.  - }
  1005. 1003.  -
  1006. 1004.  - try{stManager.done('groups_list.js');}catch(e){}
  1007. ------
Advertisement
Add Comment
Please, Sign In to add comment