Hormold

VK Change (#1392809441)

Feb 19th, 2014
469
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 180.63 KB | None | 0 0
  1. Файл - audio.js (Старый размер - 115497 | Новый - 0):
  2. 0.  - var Audio = {
  3. 1.  -   address: '/audio',
  4. 2.  -   scrollnode: browser.msie6 ? pageNode : window,
  5. 3.  -   fixedScroll: !(browser.msie && browser.version < 8 || browser.mobile),
  6. 4.  -   initPad: function()  {
  7. 5.  -     if (window._pads && _pads.cur) {
  8. 6.  -       var __cur = _pads.cur;
  9. 7.  -       extend(__cur, {
  10. 8.  -         searchCont: ge('pad_audio_search'),
  11. 9.  -         aSearch: ge('pad_search'),
  12. 10.  -         clearSearch: ge('pad_audio_reset'),
  13. 11.  -         aContent: ge('pad_playlist'),
  14. 12.  -         sContent: ge('pad_search_list'),
  15. 13.  -         sPreload: ge('pad_search_preload'),
  16. 14.  -         showMore: ge('pad_more_audio'),
  17. 15.  -         sShowMore: ge('pad_more_search_link'),
  18. 16.  -         sWrap: ge('pad_audio_search_wrap'),
  19. 17.  -         sSummary: ge('pad_audio_search_summary'),
  20. 18.  -         albumFilters: ge('pad_album_filters'),
  21. 19.  -         audioFriends: ge('pad_audio_friends'),
  22. 20.  -         albumFiltered: ge('pad_album_filtered'),
  23. 21.  -         popularFilters: ge('pad_audio_popular_filters'),
  24. 22.  -         audioAlbums: ge('pad_audio_albums'),
  25. 23.  -         searchFilters: ge('pad_audio_search_filters'),
  26. 24.  -         popularOwners: ge('pad_audio_popular_owners'),
  27. 25.  -         popularGenres: ge('pad_audio_genres'),
  28. 26.  -         audioAlbumsWrap: ge('pad_audio_albums_wrap'),
  29. 27.  -         searchInfoCont: ge('pad_audio_search_info'),
  30. 28.  -         feedFilter: ge('pad_feed_filter'),
  31. 29.  -         topFilter: ge('pad_top_audios'),
  32. 30.  -         recFilter: ge('pad_recommendations'),
  33. 31.  -         albumsFilter: ge('pad_audios_albums'),
  34. 32.  -         friendsList: ge('pad_audio_friends_list'),
  35. 33.  -         currentFilter: ge('pad_current_filter'),
  36. 34.  -         friendsSearch: ge('pad_audio_friends_search_input'),
  37. 35.  -         audioMoreFriensId: 'pad_audio_more_friends',
  38. 36.  -         popularPerformersId: 'pad_audio_performers',
  39. 37.  -         searchStr: '',
  40. 38.  -         htitle: getLang('audio_header')
  41. 39.  -       });
  42. 40.  -       __cur.audiosList = __cur.audiosList || {};
  43. 41.  -       __cur.audios = __cur.audios || {};
  44. 42.  -       if (cur.module == 'audio' && cur.oid == vk.id && cur.audiosList && cur.audiosList['all']) {
  45. 43.  -         __cur.audiosList['all'] = clone(cur.audiosList['all']);
  46. 44.  -         __cur.allAudiosIndex = 'all';
  47. 45.  -         if (cur.summaryLang) {
  48. 46.  -           __cur.summaryLang = extend(__cur.summaryLang || {}, cur.summaryLang);
  49. 47.  -         }
  50. 48.  -         Audio.generateAlbums(true);
  51. 49.  -         Audio.changeAllIndex({from_pad: true, index: 'all', clbk: function() {}});
  52. 50.  -       }
  53. 51.  -       Audio.startPadEvents();
  54. 52.  -     }
  55. 53.  -   },
  56. 54.  -   init: function(obj, audioTpl) {
  57. 55.  -     extend(cur, {
  58. 56.  -       searchCont: ge('audio_search'),
  59. 57.  -       aSearch: ge('s_search'),
  60. 58.  -       clearSearch: ge('audio_query_reset'),
  61. 59.  -       aContent: ge('initial_list'),
  62. 60.  -       sContent: ge('search_list'),
  63. 61.  -       sPreload: ge('search_preload'),
  64. 62.  -       showMore: ge('more_link'),
  65. 63.  -       sShowMore: ge('s_more_link'),
  66. 64.  -       sWrap: ge('audio_search_wrap'),
  67. 65.  -       sSummary: ge('audio_search_summary'),
  68. 66.  -       albumFilters: ge('album_filters'),
  69. 67.  -       albumFiltered: ge('album_filtered'),
  70. 68.  -       searchFilters: ge('audio_search_filters'),
  71. 69.  -       popularFilters: ge('audio_popular_filters'),
  72. 70.  -       popularOwners: ge('audio_popular_owners'),
  73. 71.  -       popularGenres: ge('audio_genres'),
  74. 72.  -       audioFriends: ge('audio_friends'),
  75. 73.  -       audioAlbums: ge('audio_albums'),
  76. 74.  -       audioAlbumsWrap: ge('audio_albums_wrap'),
  77. 75.  -       audioWrap: ge('audio_wrap'),
  78. 76.  -       searchInfoCont: ge('audio_search_info'),
  79. 77.  -       feedFilter: ge('feed_filter'),
  80. 78.  -       topFilter: ge('top_audios'),
  81. 79.  -       recFilter: ge('recommendations'),
  82. 80.  -       albumsFilter: ge('audios_albums'),
  83. 81.  -       friendsList: ge('audio_friends_list'),
  84. 82.  -       friendsSearch: ge('audio_friends_search_input'),
  85. 83.  -       audioMoreFriensId: 'audio_more_friends',
  86. 84.  -       popularPerformersId: 'audio_performers',
  87. 85.  -       searchStr: "",
  88. 86.  -       autoComplete: 1,
  89. 87.  -       audioTpl: audioTpl,
  90. 88.  -       audioEl: {
  91. 89.  -         head: ge('page_header'),
  92. 90.  -         bar: ge('ac'),
  93. 91.  -         cont: ge('audio'),
  94. 92.  -         filters: ge('side_filters')
  95. 93.  -       }
  96. 94.  -     });
  97. 95.  -
  98. 96.  -     if (ge('ac') && window.audioPlayer) {
  99. 97.  -       audioPlayer.initEvents();
  100. 98.  -       audioPlayer.registerPlayer('ac', {
  101. 99.  -         container: ge('ac'),
  102. 100.  -         performer: ge('ac_performer'),
  103. 101.  -         title: ge('ac_title'),
  104. 102.  -         titleWrap: ge('ac_name'),
  105. 103.  -         duration: ge('ac_duration'),
  106. 104.  -         load: ge('ac_load_line'),
  107. 105.  -         progress: ge('ac_pr_line'),
  108. 106.  -         progressArea: ge('ac_pr'),
  109. 107.  -         volume: ge('ac_vol_line'),
  110. 108.  -         volumeArea: ge('ac_vol'),
  111. 109.  -         play: ge('ac_play'),
  112. 110.  -         prev: ge('ac_prev'),
  113. 111.  -         next: ge('ac_next'),
  114. 112.  -         add: ge('ac_add'),
  115. 113.  -         repeat: ge('ac_repeat'),
  116. 114.  -         shuffle: ge('ac_shuffle'),
  117. 115.  -         rec: ge('ac_rec'),
  118. 116.  -         status: ge('ac_status'),
  119. 117.  -         fixed: !(browser.msie && browser.version < 8 || browser.mobile)
  120. 118.  -       });
  121. 119.  -     }
  122. 120.  -     if (browser.mobile) {
  123. 121.  -       hide('ac_vol');
  124. 122.  -       setStyle('ac_duration', {margin: 0});
  125. 123.  -     }
  126. 124.  -
  127. 125.  -     if (!cur.allAudiosIndex) cur.allAudiosIndex = 'all';
  128. 126.  -
  129. 127.  -     extend(cur, obj);
  130. 128.  -     cur.module = 'audio';
  131. 129.  -     //cur.disableAutoMore = true;
  132. 130.  -     if (cur.aSearch) {
  133. 131.  -       cur.aSearch.value = cur.q;
  134. 132.  -       toggleClass(cur.clearSearch, 'shown', !!cur.q);
  135. 133.  -       placeholderSetup(cur.aSearch, {back: true});
  136. 134.  -       setTimeout(function() {
  137. 135.  -         cur.aSearch.focus();
  138. 136.  -       }, 0);
  139. 137.  -     }
  140. 138.  -     if (ge('audio_friends_search_input')) {
  141. 139.  -       placeholderSetup(ge('audio_friends_search_input'));
  142. 140.  -     }
  143. 141.  -
  144. 142.  -     Audio.scrollnode = browser.msie6 ? pageNode : window;
  145. 143.  -     Audio.fixedScroll = !(browser.msie && browser.version < 8 || browser.mobile);
  146. 144.  -     window.scrollTop = bodyNode.scrollTop = pageNode.scrollTop = htmlNode.scrollTop = 0;
  147. 145.  -     Audio.startEvents();
  148. 146.  -     cur.destroy.push(function() {
  149. 147.  -       Audio.stopEvents();
  150. 148.  -     });
  151. 149.  -
  152. 150.  -     cur.nav.push(function(changed, old, n) {
  153. 151.  -       if (changed.act == 'popular') {
  154. 152.  -         Audio.loadPopular({update: true, genre: intval(n.genre)});
  155. 153.  -         return false;
  156. 154.  -       }
  157. 155.  -     });
  158. 156.  -
  159. 157.  -
  160. 158.  -     var _a = window.audioPlayer;
  161. 159.  -     if (_a && _a.showCurrentTrack) {
  162. 160.  -       _a.shuffle = false;
  163. 161.  -       _a.showCurrentTrack();
  164. 162.  -     }
  165. 163.  -
  166. 164.  -     cur.audios = {};
  167. 165.  -     hide(cur.sContent);
  168. 166.  -
  169. 167.  -     cur.silent = true;
  170. 168.  -     var query = {act: 'load_audios_silent', id: (cur.allAudiosIndex == 'all' ? cur.id : cur.audioFriend), gid: cur.gid, claim: nav.objLoc.claim, please_dont_ddos: 2};
  171. 169.  -     if (cur.allAudiosIndex != 'all') {
  172. 170.  -       Audio.cacheFriendsList();
  173. 171.  -     }
  174. 172.  -     if (cur.club) {
  175. 173.  -       cur.curSection = 'club' + cur.club;
  176. 174.  -       query.club = cur.club;
  177. 175.  -       cur.searchStr = cur.q;
  178. 176.  -     }
  179. 177.  -     ajax.post(Audio.address, query, {onDone: (function(data, opts) {
  180. 178.  -       opts = eval('('+opts+')');
  181. 179.  -       if (opts.exp) {
  182. 180.  -         _a.statusExport = opts.exp;
  183. 181.  -         checkbox('currinfo_audio', (_a.hasStatusExport()));
  184. 182.  -         if (_a && _a.showCurrentTrack) _a.showCurrentTrack();
  185. 183.  -         delete opts.exp;
  186. 184.  -       }
  187. 185.  -       extend(cur, opts);
  188. 186.  -       if (cur.hashes && cur.hashes.add_hash && !_a.addHash) {
  189. 187.  -         _a.addHash = cur.hashes.add_hash;
  190. 188.  -       }
  191. 189.  -       if (query.id > 0) {
  192. 190.  -         cur.allFriendsTitles = cur.allFriendsTitles || {};
  193. 191.  -         cur.allFriendsTitles[query.id] = opts.summaryLang.all_friend_title;
  194. 192.  -         cur.allFriendsHTitles = cur.allFriendsHTitles || {};
  195. 193.  -         cur.allFriendsHTitles[query.id] = opts.summaryLang.all_friend_htitle;
  196. 194.  -       }
  197. 195.  -       var obj = eval('('+data+')');
  198. 196.  -       if (!obj) {
  199. 197.  -         return;
  200. 198.  -       }
  201. 199.  -       cur.audiosList = cur.audiosList || {};
  202. 200.  -       if ((query.club || query.id < 0) && obj.club) {
  203. 201.  -         var club = query.club || -query.id;
  204. 202.  -         cur.allClubsHTitles = cur.allClubsHTitles || {};
  205. 203.  -         cur.allClubsHTitles[club] = opts.summaryLang.all_club_htitle || cur.htitle;
  206. 204.  -         cur.allFriendsHTitles = cur.allFriendsHTitles || {};
  207. 205.  -         cur.allFriendsHTitles[-club] = opts.summaryLang.all_club_htitle || cur.htitle;
  208. 206.  -         cur.curList = 'club' + club;
  209. 207.  -         cur.audiosList[cur.curList] = obj.club;
  210. 208.  -       } else {
  211. 209.  -         cur.curList = (cur.album_id) ? 'album'+cur.album_id : cur.allAudiosIndex;
  212. 210.  -       }
  213. 211.  -       cur.searchOffset = 0;
  214. 212.  -       cur.audiosList[cur.allAudiosIndex] = obj.all ? obj.all : [];
  215. 213.  -       if (cur.allAudiosIndex == 'all') Audio.generateAlbums();
  216. 214.  -       cur.sectionCount = (cur.audiosList[cur.curList] || []).length;
  217. 215.  -       if (cur.canEdit && nav.objLoc.act != 'popular' && nav.objLoc.act != 'recommendations' && nav.objLoc.act != 'feed' && !browser.mobile && cur.allAudiosIndex == 'all' && !cur.shuffled && !cur.club) {
  218. 216.  -         if (cur.sectionCount) {
  219. 217.  -           var opts = {onReorder: Audio.onAudioReorder, onMouseDown: Audio.onDragStart, onMouseUp: Audio.onDragEnd, noMoveCursor: 1};
  220. 218.  -           if (cur.audioAlbumsWrap) {
  221. 219.  -             extend(opts, {target: cur.audioAlbumsWrap, onDragOver: Audio.onDragOver, onDragOut: Audio.onDragOut});
  222. 220.  -           }
  223. 221.  -           sorter.init(cur.aContent, opts);
  224. 222.  -         }
  225. 223.  -       }
  226. 224.  -       if (cur.albums) {
  227. 225.  -         Audio.initAlbumsSort();
  228. 226.  -       }
  229. 227.  -       this.indexAll({callback: function() {
  230. 228.  -         cur.silent = false;
  231. 229.  -         if (cur.onSilentLoad) {
  232. 230.  -           cur.onSilentLoad();
  233. 231.  -         }
  234. 232.  -         if (!cur.q || cur.club) {
  235. 233.  -           if (cur.curSection == 'recommendations' || cur.curSection == 'popular' || cur.curSection == 'feed') {
  236. 234.  -             if (cur[cur.curSection+'Audios']) {
  237. 235.  -               var k = 0;
  238. 236.  -               for (var i in cur[cur.curSection+'Audios']) {
  239. 237.  -                 cur[cur.curSection+'Audios'][i]._order = k++;
  240. 238.  -               }
  241. 239.  -               audioPlayer.genPlaylist(cur[cur.curSection+'Audios'], false);
  242. 240.  -             }
  243. 241.  -           } else {
  244. 242.  -             audioPlayer.genPlaylist(cur.audiosList[cur.curList], false, {my: (cur.curList == 'all' && cur.oid == vk.id ? 'my' : false)});
  245. 243.  -           }
  246. 244.  -         } else if (!query.club) {
  247. 245.  -           Audio.selectPerformer({name: cur.q});
  248. 246.  -         }
  249. 247.  -         if (cur.audio_id) {
  250. 248.  -           var audio = cur.audios[cur.audio_id];
  251. 249.  -           if (audio) {
  252. 250.  -             var audio_id = audio[0] + '_' + audio[1];
  253. 251.  -             if (audio[11] && parseInt(audio[11])) {
  254. 252.  -               var claim = parseInt(audio[11]) || 0;
  255. 253.  -               if (claim == -2) claim = 0;
  256. 254.  -               Audio.showAudioClaimWarning(audio_id, claim, audio[5] + ' &ndash; ' + audio[6]);
  257. 255.  -             } else {
  258. 256.  -               try{
  259. 257.  -                 playAudioNew(audio_id);
  260. 258.  -               }catch(e){};
  261. 259.  -             }
  262. 260.  -           }
  263. 261.  -         }
  264. 262.  -       }});
  265. 263.  -     }).bind(this), local: 1});
  266. 264.  -   },
  267. 265.  -
  268. 266.  -   startEvents: function() {
  269. 267.  -     addEvent(Audio.scrollnode, 'scroll', Audio.scrollCheck);
  270. 268.  -     addEvent(window, 'resize', Audio.scrollCheck);
  271. 269.  -     addEvent(cur.aSearch, 'blur', Audio.searchBlur.pbind(false));
  272. 270.  -     addEvent(cur.aSearch, 'focus', Audio.searchFocus.pbind(false));
  273. 271.  -     cur.gpHidden = true;
  274. 272.  -     toggleGlobalPlayer(false);
  275. 273.  -     if (Audio.fixedScroll) {
  276. 274.  -       var els = geByClass('top_info_wrap', ge('page_wrap'));
  277. 275.  -       each(els, function() { hide(this); });
  278. 276.  -       hide(_stlSide);
  279. 277.  -       setTimeout(function() {
  280. 278.  -         each(els, function() { hide(this); });
  281. 279.  -         hide(_stlSide);
  282. 280.  -       }, 110);
  283. 281.  -       var headH = cur.audioEl.head.clientHeight,
  284. 282.  -           headT = getXY(cur.audioEl.head)[1],
  285. 283.  -           audioNavH = cur.audioEl.bar.offsetHeight,
  286. 284.  -           headW = cur.audioEl.head.clientWidth,
  287. 285.  -           contentY = headH + audioNavH;
  288. 286.  -       setStyle(cur.audioEl.head, {width: headW, top: headT});
  289. 287.  -       setStyle('side_bar', {top: headH + headT});
  290. 288.  -       setStyle(cur.audioEl.bar, {top: headH + headT});
  291. 289.  -       setStyle(cur.audioEl.cont, {paddingTop: contentY});
  292. 290.  -       setStyle(cur.audioEl.filters, {top: contentY});
  293. 291.  -
  294. 292.  -       addClass(bodyNode, 'audio_fixed_nav');
  295. 293.  -       _fixedNav = true;
  296. 294.  -     }
  297. 295.  -     Audio.updateAlbumsTitles();
  298. 296.  -     Audio.handleFilterPos();
  299. 297.  -   },
  300. 298.  -
  301. 299.  -   stopEvents: function() {
  302. 300.  -     removeEvent(Audio.scrollnode, 'scroll', Audio.scrollCheck);
  303. 301.  -     removeEvent(window, 'resize', Audio.scrollCheck);
  304. 302.  -     removeEvent(cur.aSearch, 'blur', Audio.searchBlur.pbind(false));
  305. 303.  -     removeEvent(cur.aSearch, 'focus', Audio.searchFocus.pbind(false));
  306. 304.  -     if (Audio.fixedScroll) {
  307. 305.  -       var els = geByClass('top_info_wrap', ge('page_wrap'));
  308. 306.  -       each(els, function() { show(this); });
  309. 307.  -       setStyle(cur.audioEl.head, {width: '', top: ''});
  310. 308.  -       setStyle('side_bar', {top: ''});
  311. 309.  -
  312. 310.  -       removeClass(bodyNode, 'audio_fixed_nav');
  313. 311.  -       _fixedNav = false;
  314. 312.  -
  315. 313.  -       show(_stlSide);
  316. 314.  -     }
  317. 315.  -     audioPlayer.deregisterPlayer('ac');
  318. 316.  -     setTimeout(function() {
  319. 317.  -       toggleGlobalPlayer(true);
  320. 318.  -       updGlobalPlayer();
  321. 319.  -     }, 100);
  322. 320.  -   },
  323. 321.  -
  324. 322.  -   startPadEvents: function() {
  325. 323.  -     var __cur = window._pads && _pads.cur;
  326. 324.  -     addEvent(__cur.aSearch, 'blur', Audio.searchBlur.pbind(true));
  327. 325.  -     addEvent(__cur.aSearch, 'focus', Audio.searchFocus.pbind(true));
  328. 326.  -     Audio.updateAlbumsTitles({from_pad: true});
  329. 327.  -   },
  330. 328.  -
  331. 329.  -   stopPadEvents: function() {
  332. 330.  -     var __cur = window._pads && _pads.cur;
  333. 331.  -     removeEvent(__cur.aSearch, 'blur', Audio.searchBlur.pbind(true));
  334. 332.  -     removeEvent(__cur.aSearch, 'focus', Audio.searchFocus.pbind(true));
  335. 333.  -     audioPlayer.deregisterPlayer('pd');
  336. 334.  -   },
  337. 335.  -
  338. 336.  -   searchFocus: function(from_pad) {
  339. 337.  -     var alist = from_pad ? ge('pad_playlist_panel') : ge('audios_list');
  340. 338.  -     if (!hasClass(alist, 'light')) addClass(alist, 'light');
  341. 339.  -   },
  342. 340.  -
  343. 341.  -   searchBlur: function(from_pad) {
  344. 342.  -     var alist = from_pad ? ge('pad_playlist_panel') : ge('audios_list');
  345. 343.  -     if (hasClass(alist, 'light')) removeClass(alist, 'light');
  346. 344.  -   },
  347. 345.  -
  348. 346.  -   scrollToTop: function(from_pad) {
  349. 347.  -     if (from_pad && window._pads) {
  350. 348.  -       animate(_pads.content, {scrollTop: 0}, 200);
  351. 349.  -     } else {
  352. 350.  -       scrollToTop();
  353. 351.  -     }
  354. 352.  -   },
  355. 353.  -
  356. 354.  -   clearSearch: function(opts) {
  357. 355.  -     opts = opts || {};
  358. 356.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  359. 357.  -         from_pad = !!opts.from_pad, event = opts.event, el = opts.el;
  360. 358.  -     setStyle(el, {opacity: .6});
  361. 359.  -     __cur.aSearch.focus();
  362. 360.  -     if (__cur.allAudiosIndex == 'all') {
  363. 361.  -       Audio.loadAlbum({from_pad: from_pad, album: 0});
  364. 362.  -     } else {
  365. 363.  -       this.filterTimeout = setTimeout((function() {
  366. 364.  -         val(__cur.aSearch, '');
  367. 365.  -         removeClass(__cur.clearSearch, 'shown');
  368. 366.  -         this.updateList({from_pad: from_pad});
  369. 367.  -         this.hideSearchResults(from_pad);
  370. 368.  -         this.scrollToTop(from_pad);
  371. 369.  -       }).bind(this), 10);
  372. 370.  -     }
  373. 371.  -     if (isVisible(__cur.searchInfoCont)) {
  374. 372.  -       hide(__cur.searchInfoCont);
  375. 373.  -       if (from_pad) {
  376. 374.  -         Audio.updatePadFiltersHeight();
  377. 375.  -       }
  378. 376.  -     }
  379. 377.  -   },
  380. 378.  -
  381. 379.  -   updateSorterRows: function(fromEl) {
  382. 380.  -     if (fromEl && fromEl.parentNode.sorter){
  383. 381.  -       sorter.update(fromEl);
  384. 382.  -     }
  385. 383.  -   },
  386. 384.  -
  387. 385.  -   showLyrics: function(id, lid, top) {
  388. 386.  -     var lyrics_div = ge('lyrics'+id);
  389. 387.  -     if (!isVisible(lyrics_div)) {
  390. 388.  -       show(lyrics_div);
  391. 389.  -       lyrics_div.innerHTML = "<div style='text-align: center; height: 50px; padding: 30px 10px 10px 10px'><img valign='middle' src='/images/progress7.gif'></div>";
  392. 390.  -       Audio.updateSorterRows(ge('audio'+id));
  393. 391.  -       ajax.post(Audio.address, {act: 'get_lyrics', lid: lid, aid: id, top: top ? 1 : 0}, {cache: 1, onDone: (function(responseText) {
  394. 392.  -           lyrics_div.innerHTML = responseText;
  395. 393.  -           Audio.updateSorterRows(ge('audio'+id));
  396. 394.  -         }).bind(this)});
  397. 395.  -     } else {
  398. 396.  -       lyrics_div.innerHTML = "";
  399. 397.  -       hide(lyrics_div);
  400. 398.  -       Audio.updateSorterRows(ge('audio'+id));
  401. 399.  -       Audio.handleFilterPos();
  402. 400.  -     }
  403. 401.  -   },
  404. 402.  -
  405. 403.  -   allAudios: function(from_pad) {
  406. 404.  -     var __cur = from_pad ? window._pads && _pads.cur : window.cur;
  407. 405.  -     return __cur.audiosList ? __cur.audiosList[__cur.allAudiosIndex] || [] : [];
  408. 406.  -   },
  409. 407.  -
  410. 408.  -   showRows: function(opts) {
  411. 409.  -     opts = opts || {};
  412. 410.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  413. 411.  -         from_pad = !!opts.from_pad, force = opts.force, start = opts.start, end = opts.end;
  414. 412.  -
  415. 413.  -     if (from_pad && !__cur.curSection) {
  416. 414.  -       Pads.showAudios();
  417. 415.  -       return;
  418. 416.  -     } else if (__cur.curSection == 'recommendations') {
  419. 417.  -       Audio.loadRecommendations({from_pad: from_pad});
  420. 418.  -       return;
  421. 419.  -     } else if (__cur.curSection == 'popular') {
  422. 420.  -       Audio.loadPopular({from_pad: from_pad});
  423. 421.  -       return;
  424. 422.  -     } else if (__cur.curSection == 'feed') {
  425. 423.  -       Audio.loadFeed({from_pad: from_pad});
  426. 424.  -       return;
  427. 425.  -     }
  428. 426.  -     if (__cur.silent) {
  429. 427.  -       __cur.onSilentLoad = function() {
  430. 428.  -         Audio.showRows(opts);
  431. 429.  -       };
  432. 430.  -       return;
  433. 431.  -     }
  434. 432.  -     var list = __cur.audiosList[__cur.curList] || [];
  435. 433.  -     if (list[0] && list[0]._order !== undefined) {
  436. 434.  -       list = list.sort(function(a,b) {return a._order - b._order});
  437. 435.  -     }
  438. 436.  -     list = Audio.filterClaimed(list);
  439. 437.  -     __cur.sectionCount = list.length;
  440. 438.  -     if (!__cur.searchStr) {
  441. 439.  -       list = Audio.filterDeleted(list, from_pad);
  442. 440.  -       if (__cur.filterUnsorted) {
  443. 441.  -         list = Audio.filterByAlbum(list, 0);
  444. 442.  -       }
  445. 443.  -       __cur.sectionCount = list.length;
  446. 444.  -     }
  447. 445.  -     if (start == undefined) {
  448. 446.  -       start = __cur.shownAudios;
  449. 447.  -     }
  450. 448.  -     if (end == undefined) {
  451. 449.  -       end = __cur.shownAudios + __cur.audiosPerPage;
  452. 450.  -     }
  453. 451.  -     if (window.tooltips && cur.tooltips) {
  454. 452.  -       for (var i = 0; i < cur.tooltips.length; ++i) {
  455. 453.  -         if (cur.tooltips[i].el) {
  456. 454.  -           if (hasClass(cur.tooltips[i].el, 'audio_friend')) continue;
  457. 455.  -           if (cur.tooltips[i].el.ttimer) {
  458. 456.  -             clearTimeout(cur.tooltips[i].el.ttimer);
  459. 457.  -           }
  460. 458.  -         }
  461. 459.  -         cur.tooltips[i].hide({fasthide: true});
  462. 460.  -       }
  463. 461.  -     }
  464. 462.  -     if (from_pad && ge('pad_footer_text')) {
  465. 463.  -       ge('pad_footer_text').innerHTML = '';
  466. 464.  -     }
  467. 465.  -     var _a = window.audioPlayer;
  468. 466.  -     if (!list || !list.length) {
  469. 467.  -       if (__cur.shownAudios == 0 && (__cur.album_id || (!Audio.allAudios(from_pad).length && !__cur.searchStr))) {
  470. 468.  -         var msg;
  471. 469.  -         if (Audio.allAudios(from_pad).length) {
  472. 470.  -           msg = (__cur.album_id) ? getLang('audio_album_no_recs') : getLang('audio_no_audios_found').split('{query}').join('<b>'+cur.searchStr.replace(/([<>&#]*)/g, '')+'</b>');
  473. 471.  -         } else {
  474. 472.  -           if (__cur.oid > 0 && !__cur.audioFriend) {
  475. 473.  -             if ((__cur.id == vk.id || from_pad) && __cur.allAudiosIndex == 'all') {
  476. 474.  -               msg = getLang('audio_no_rec_load_msg').split('{link}').join('<a href="#" onclick="Audio.addAudio(); return false">').split('{/link}').join('</a>');
  477. 475.  -             } else {
  478. 476.  -               msg = getLang('audio_user_no_recs');
  479. 477.  -             }
  480. 478.  -           } else {
  481. 479.  -             msg = __cur.audioFriend > 0 ? getLang('audio_user_no_recs') : getLang('audio_group_no_recs');
  482. 480.  -           }
  483. 481.  -         }
  484. 482.  -         var style = from_pad && window._pads && _pads.content ? ' style="height: ' + (getSize(_pads.content)[1] - 110 - ge('pad_playlist').offsetTop) + 'px;"' : '';
  485. 483.  -         __cur.aContent.innerHTML = '<div id="not_found" class="info_msg" ' + style + '>'+msg+'</div>';
  486. 484.  -       }
  487. 485.  -       hide(__cur.showMore);
  488. 486.  -     } else {
  489. 487.  -       if (!__cur.shownAudios) {
  490. 488.  -         __cur.aContent.innerHTML = '';
  491. 489.  -       }
  492. 490.  -       var audios = list.slice(start, end);
  493. 491.  -       if (!audios.length) {
  494. 492.  -         if (__cur.shownAudios >= __cur.sectionCount) {
  495. 493.  -           hide(__cur.showMore);
  496. 494.  -           if (__cur.searchStr) {
  497. 495.  -             this.loadRows(from_pad);
  498. 496.  -           }
  499. 497.  -         }
  500. 498.  -         return;
  501. 499.  -       }
  502. 500.  -       var html = [];
  503. 501.  -       for (i in audios) {
  504. 502.  -         var audio = audios[i].slice();
  505. 503.  -         if (__cur.selection) {
  506. 504.  -           audio[5] = audio[5].replace(__cur.selection.re, __cur.selection.val);
  507. 505.  -           audio[6] = audio[6].replace(__cur.selection.re, __cur.selection.val);
  508. 506.  -         }
  509. 507.  -         html.push(this.drawAudio(audio, from_pad));
  510. 508.  -         __cur.shownAudios += 1;
  511. 509.  -       }
  512. 510.  -       var au = ce('div', {innerHTML: html.join('')});
  513. 511.  -       while (au.firstChild) {
  514. 512.  -         var el = au.firstChild;
  515. 513.  -         __cur.aContent.appendChild(el);
  516. 514.  -       }
  517. 515.  -       if (from_pad && window.Pads && Pads.updateHeight) {
  518. 516.  -         Pads.updateHeight();
  519. 517.  -       } else if (__cur.canEdit && nav.objLoc.act != 'popular' && nav.objLoc.act != 'recommendations' && nav.objLoc.act != 'feed' && !browser.mobile && !__cur.searchStr && __cur.sectionCount && __cur.allAudiosIndex == 'all' && !__cur.shuffled && !__cur.club) {
  520. 518.  -         if (start > 0) {
  521. 519.  -           setTimeout(sorter.added.pbind(__cur.aContent), 0);
  522. 520.  -         } else {
  523. 521.  -           setTimeout(function(){
  524. 522.  -             var opts = {onReorder: Audio.onAudioReorder, onMouseDown: Audio.onDragStart, onMouseUp: Audio.onDragEnd, noMoveCursor: 1};
  525. 523.  -             if (__cur.audioAlbumsWrap) {
  526. 524.  -               extend(opts, {target: __cur.audioAlbumsWrap, onDragOver: Audio.onDragOver, onDragOut: Audio.onDragOut});
  527. 525.  -             }
  528. 526.  -             sorter.init(__cur.aContent, opts);
  529. 527.  -           }, 0);
  530. 528.  -         }
  531. 529.  -       }
  532. 530.  -       if (__cur.searchCount && isVisible(__cur.sContent)) {
  533. 531.  -         show(__cur.sWrap);
  534. 532.  -         __cur.sContent.style.paddingTop = '12px';
  535. 533.  -         __cur.sSummary.innerHTML = langNumeric(__cur.searchCount, __cur.summaryLang['list_found'], true);
  536. 534.  -       }
  537. 535.  -       if (_a && _a.showCurrentTrack) _a.showCurrentTrack();
  538. 536.  -     }
  539. 537.  -     setTimeout(Audio.handleFilterPos, 0);
  540. 538.  -     var aid = currentAudioId(), clubList = (__cur.curSection && __cur.curSection.substr(0, 4) == 'club');
  541. 539.  -     if (_a && _a.gpDisabled && aid) {
  542. 540.  -       var track_id = aid.split('_')[1];
  543. 541.  -       if (!__cur.audios[track_id]) _a.stop();
  544. 542.  -     }
  545. 543.  -     if (__cur.justShuffled) {
  546. 544.  -       toggle(__cur.showMore, __cur.shownAudios < __cur.sectionCount);
  547. 545.  -       return;
  548. 546.  -     }
  549. 547.  -     if (clubList) {
  550. 548.  -       Audio.hideSearchResults(from_pad);
  551. 549.  -     }
  552. 550.  -     if (force) return;
  553. 551.  -     if (__cur.shownAudios >= __cur.sectionCount) {
  554. 552.  -       hide(__cur.showMore);
  555. 553.  -       if (__cur.searchStr && !clubList) {
  556. 554.  -         this.loadRows(from_pad);
  557. 555.  -       } else if (!from_pad) {
  558. 556.  -         Audio.setQLoc(__cur.searchStr);
  559. 557.  -       }
  560. 558.  -     } else {
  561. 559.  -       show(__cur.showMore);
  562. 560.  -       if (!from_pad) {
  563. 561.  -         Audio.setQLoc(__cur.searchStr);
  564. 562.  -       }
  565. 563.  -     }
  566. 564.  -   },
  567. 565.  -
  568. 566.  -   toggleSearchFriends: function(show, el) {
  569. 567.  -     var inpWrap = el.nextSibling, inp = geByTag1('input', inpWrap);
  570. 568.  -     if (val(inp) && !show) return;
  571. 569.  -     toggle(el, !show);
  572. 570.  -     toggle(inpWrap, show);
  573. 571.  -     if (show) {
  574. 572.  -       setTimeout(function() {inp.select();}, 0);
  575. 573.  -     }
  576. 574.  -   },
  577. 575.  -
  578. 576.  -   clearFriendsSearch: function(opts) {
  579. 577.  -     opts = opts || {};
  580. 578.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  581. 579.  -         from_pad = !!opts.from_pad, inp = opts.el;
  582. 580.  -     val(inp, '');
  583. 581.  -     this.searchFriends({from_pad: from_pad, str: '', el: inp});
  584. 582.  -     this.toggleSearchFriends(false, domPS(inp.parentNode));
  585. 583.  -   },
  586. 584.  -
  587. 585.  -   searchFriends: function(opts) {
  588. 586.  -     opts = opts || {};
  589. 587.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  590. 588.  -         from_pad = !!opts.from_pad, str = trim(val(__cur.friendsSearch)),
  591. 589.  -         inp = opts.el, event = opts.event;
  592. 590.  -     if (event && event.keyCode == KEY.ESC) {
  593. 591.  -       inp.blur();
  594. 592.  -       return;
  595. 593.  -     }
  596. 594.  -     if (str == __cur.searchFriendsStr) return;
  597. 595.  -     __cur.searchFriendsStr = str;
  598. 596.  -     toggleClass(inp.parentNode, 'str', !!str);
  599. 597.  -
  600. 598.  -     clearTimeout(this.searchFTimeout);
  601. 599.  -     this.searchFTimeout = setTimeout((function() {
  602. 600.  -       Audio.searchFriendsRequest({from_pad: from_pad, str: __cur.searchFriendsStr});
  603. 601.  -     }).bind(this), 150);
  604. 602.  -   },
  605. 603.  -
  606. 604.  -   searchFriendsRequest: function(opts) {
  607. 605.  -     opts = opts || {};
  608. 606.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  609. 607.  -         from_pad = !!opts.from_pad, str = opts.str;
  610. 608.  -     if (__cur.searchFriendsSent) {
  611. 609.  -       return;
  612. 610.  -     }
  613. 611.  -     __cur.searchFriendsSent = true;
  614. 612.  -
  615. 613.  -     var query = {act: 'search_friends', str: str};
  616. 614.  -     if (__cur.audioFriend && __cur.allAudiosIndex && !__cur.allAudiosIndex.indexOf('friend')) {
  617. 615.  -       query.owner = __cur.audioFriend;
  618. 616.  -     }
  619. 617.  -     if (from_pad) {
  620. 618.  -       query.from_pad = 1;
  621. 619.  -     }
  622. 620.  -     ajax.post(Audio.address, query, {onDone: function(cont, friends) {
  623. 621.  -       __cur.searchFriendsSent = false;
  624. 622.  -       if (cont) {
  625. 623.  -         __cur.friendsList.innerHTML = cont;
  626. 624.  -         setTimeout(Audio.handleFilterPos, 0);
  627. 625.  -         if (friends) {
  628. 626.  -           __cur.shownFriends = friends;
  629. 627.  -         }
  630. 628.  -       }
  631. 629.  -       if (ge(__cur.audioMoreFriensId)) {
  632. 630.  -         toggle(ge(__cur.audioMoreFriensId).parentNode, !str);
  633. 631.  -       }
  634. 632.  -       if (from_pad) {
  635. 633.  -         Audio.updatePadFiltersHeight();
  636. 634.  -       }
  637. 635.  -     }});
  638. 636.  -   },
  639. 637.  -
  640. 638.  -   loadRows: function(from_pad) {
  641. 639.  -     var __cur = from_pad ? window._pads && _pads.cur : window.cur;
  642. 640.  -     if (__cur.sPreload.innerHTML) {
  643. 641.  -       while (__cur.sPreload.firstChild) {
  644. 642.  -         var el = __cur.sPreload.firstChild
  645. 643.  -         __cur.sContent.appendChild(el);
  646. 644.  -       }
  647. 645.  -       if (from_pad && window.Pads && Pads.updateHeight) {
  648. 646.  -         Pads.updateHeight();
  649. 647.  -       }
  650. 648.  -     }
  651. 649.  -     clearTimeout(this.searchTimeout);
  652. 650.  -     this.searchTimeout = setTimeout((function() {
  653. 651.  -       Audio.searchRequest({from_pad: from_pad, str: __cur.searchStr, offset: __cur.searchOffset});
  654. 652.  -     }).bind(this), 300);
  655. 653.  -   },
  656. 654.  -
  657. 655.  -   searchRequest: function(opts) {
  658. 656.  -     opts = opts || {};
  659. 657.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  660. 658.  -         from_pad = !!opts.from_pad, val = opts.str, offset = opts.offset;
  661. 659.  -     if (!val) return;
  662. 660.  -     if (val[val.length - 1] == ' ') {
  663. 661.  -       val[val.length - 1] = '_';
  664. 662.  -     }
  665. 663.  -     addClass(__cur.searchCont, 'loading');
  666. 664.  -     setStyle(__cur.clearSearch, {opacity: .6});
  667. 665.  -     var query = {act: 'search', q: val, offset: offset, id: __cur.id, gid: __cur.gid, performer: __cur.searchTypeMenu ? __cur.searchTypeMenu.val() : 0};
  668. 666.  -     if (!from_pad) {
  669. 667.  -       var l = ge('audio_lyrics_filter');
  670. 668.  -       if (l && parseInt(l.value)) query.lyrics = 1;
  671. 669.  -     }
  672. 670.  -     if (__cur.searchSortFilter) query.sort = parseInt(__cur.searchSortFilter.val());
  673. 671.  -     if (__cur.autoComplete) query.autocomplete = __cur.autoComplete;
  674. 672.  -     if (nav.objLoc.claim && !from_pad) query.claim = nav.objLoc.claim;
  675. 673.  -     if (from_pad) {
  676. 674.  -       query.from_pad = 1;
  677. 675.  -     }
  678. 676.  -     ajax.post(Audio.address, query, {onDone: function(res, preload, options) {
  679. 677.  -         removeClass(__cur.searchCont, 'loading');
  680. 678.  -         var newVal = __cur.searchStr;
  681. 679.  -         if (newVal[newVal.length - 1] == ' ') {
  682. 680.  -           newVal[newVal.length - 1] = '_';
  683. 681.  -         }
  684. 682.  -         if (val != newVal) {
  685. 683.  -           return;
  686. 684.  -         }
  687. 685.  -         if (res) {
  688. 686.  -           __cur.sContent.innerHTML = res;
  689. 687.  -           if (from_pad && window.Pads && Pads.updateHeight) {
  690. 688.  -             Pads.updateHeight();
  691. 689.  -           }
  692. 690.  -         }
  693. 691.  -         if (preload) {
  694. 692.  -           __cur.sPreload.innerHTML = preload;
  695. 693.  -         }
  696. 694.  -         Audio.applyOptions(__cur, options, offset);
  697. 695.  -         if (from_pad) {
  698. 696.  -           Audio.updatePadFiltersHeight();
  699. 697.  -         }
  700. 698.  -         show(__cur.sContent);
  701. 699.  -         if (!__cur.sectionCount) {
  702. 700.  -           hide(__cur.sWrap);
  703. 701.  -           __cur.sContent.style.paddingTop = '0px';
  704. 702.  -           __cur.aContent.innerHTML = '';
  705. 703.  -           if (!__cur.searchCount && !res && !preload) {
  706. 704.  -             msg = getLang('audio_no_audios_found').split('{query}').join('<b>'+__cur.searchStr.replace(/([<>&#]*)/g, '')+'</b>');
  707. 705.  -             var style = from_pad && window._pads && _pads.content ? ' style="height: ' + (getSize(_pads.content)[1] - 110 - ge('pad_playlist').offsetTop) + 'px;"' : '';
  708. 706.  -             __cur.aContent.innerHTML = '<div id="not_found" class="info_msg"' + style + '>'+msg+'</div>';
  709. 707.  -             hide(__cur.showMore);
  710. 708.  -             hide(__cur.sContent);
  711. 709.  -           }
  712. 710.  -         } else {
  713. 711.  -           __cur.sContent.style.paddingTop = '12px';
  714. 712.  -           if (__cur.searchCount) {
  715. 713.  -             __cur.sSummary.innerHTML = langNumeric(__cur.searchCount, __cur.summaryLang['list_found'], true);
  716. 714.  -             show(__cur.sWrap);
  717. 715.  -           } else {
  718. 716.  -             Audio.hideSearchResults(from_pad);
  719. 717.  -             hide(__cur.sWrap);
  720. 718.  -           }
  721. 719.  -         }
  722. 720.  -         Audio.changeSummary({from_pad: from_pad, from_search: true});
  723. 721.  -         Audio.scrollCheck();
  724. 722.  -         if (!offset && !from_pad) {
  725. 723.  -           Audio.setQLoc(__cur.searchStr);
  726. 724.  -         }
  727. 725.  -         var _a = window.audioPlayer;
  728. 726.  -         if (_a && _a.showCurrentTrack) _a.showCurrentTrack();
  729. 727.  -       },
  730. 728.  -       onFail: function() {
  731. 729.  -         removeClass(__cur.searchCont, 'loading');
  732. 730.  -       },
  733. 731.  -       showProgress: function () {
  734. 732.  -         __cur.isAudioLoading = true;
  735. 733.  -       },
  736. 734.  -       hideProgress: function () {
  737. 735.  -         __cur.isAudioLoading = false;
  738. 736.  -       }
  739. 737.  -     });
  740. 738.  -   },
  741. 739.  -
  742. 740.  -   changeSearchFilters: function(from_pad) {
  743. 741.  -     var __cur = from_pad ? window._pads && _pads.cur : window.cur;
  744. 742.  -     __cur.searchOffset = 0;
  745. 743.  -     Audio.searchRequest({from_pad: from_pad, str: __cur.searchStr, offset: 0});
  746. 744.  -   },
  747. 745.  -
  748. 746.  -   hideSearchResults: function(from_pad) {
  749. 747.  -     setTimeout(function(){
  750. 748.  -       var __cur = from_pad ? window._pads && _pads.cur : window.cur;
  751. 749.  -       __cur.sContent.innerHTML = '';
  752. 750.  -       if (__cur.curSection != 'recommendations' && __cur.curSection != 'popular' && __cur.curSection != 'feed') __cur.sPreload.innerHTML = '';
  753. 751.  -       hide(__cur.sContent);
  754. 752.  -       hide(__cur.sWrap);
  755. 753.  -       hide(__cur.sShowMore);
  756. 754.  -       Audio.scrollCheck();
  757. 755.  -     }, 0);
  758. 756.  -   },
  759. 757.  -
  760. 758.  -   drawAudio: function(audio, from_pad) {
  761. 759.  -     return from_pad ? Pads.audioRow(audio, {}) : cur.audioTpl(audio, cur.curSection);
  762. 760.  -   },
  763. 761.  -
  764. 762.  -   applyOptions: function(__cur, options, offset) {
  765. 763.  -     extend(__cur, options);
  766. 764.  -     if (!__cur.has_more) {
  767. 765.  -       hide(__cur.sShowMore);
  768. 766.  -     } else {
  769. 767.  -       show(__cur.sShowMore);
  770. 768.  -     }
  771. 769.  -     if (!offset) {
  772. 770.  -       if (options.searchInfo) {
  773. 771.  -         __cur.searchInfoCont.innerHTML = options.searchInfo;
  774. 772.  -         if (!isVisible(__cur.searchInfoCont)) {
  775. 773.  -           show(__cur.searchInfoCont);
  776. 774.  -         }
  777. 775.  -         each(geByClass('audio_friend_name_now', __cur.searchInfoCont), function() {
  778. 776.  -           if (this.scrollWidth > this.clientWidth) {
  779. 777.  -             this.setAttribute('title', this.innerText || this.textContent);
  780. 778.  -           } else {
  781. 779.  -             this.removeAttribute('title');
  782. 780.  -           }
  783. 781.  -         })
  784. 782.  -       } else if (isVisible(__cur.searchInfoCont)) {
  785. 783.  -         hide(__cur.searchInfoCont);
  786. 784.  -       }
  787. 785.  -     }
  788. 786.  -   },
  789. 787.  -
  790. 788.  -   handleFilterPos: function() {
  791. 789.  -     if (!Audio.fixedScroll || !cur.audioEl) return false;
  792. 790.  -     var headH = cur.audioEl.head.clientHeight, audioNavH = cur.audioEl.bar.offsetHeight,
  793. 791.  -         contentY = headH + audioNavH,
  794. 792.  -         st = Math.max(0, scrollGetY()), wh = window.lastWindowHeight || 0, pos = 0,
  795. 793.  -         filt = ge('side_panel'), filtPos = getXY(filt)[1], filtY = getSize(filt)[1],
  796. 794.  -         sf = ge('side_filters'), sfPos = (getStyle(sf, 'position') == 'fixed') ? parseInt(getStyle(sf, 'top')) : getXY(sf)[1], sfY = getSize(sf)[1],
  797. 795.  -         bottomPad = Math.max(0, st + wh - filtY - contentY),
  798. 796.  -         tooBig = (filtPos + filtY - sfPos - sfY < 20),
  799. 797.  -         lastPos = cur.filterLastPos || 100, lastSt = cur.lastSt || 0;
  800. 798.  -
  801. 799.  -     if  (!tooBig) {
  802. 800.  -       addClass(sf, 'fixed');
  803. 801.  -       pos = (wh > sfY + contentY) ? Math.min(contentY, wh - sfY - bottomPad) : Math.max(Math.min(contentY, lastPos + lastSt - st), wh - sfY - bottomPad);
  804. 802.  -     } else {
  805. 803.  -       removeClass(sf, 'fixed');
  806. 804.  -       pos = 0;
  807. 805.  -     }
  808. 806.  -     cur.filterLastPos = pos;
  809. 807.  -     cur.lastSt = st;
  810. 808.  -     setStyle(sf, {top: pos + 'px'});
  811. 809.  -
  812. 810.  -     if (!browser.mozilla && !browser.msie && cur.lastWW !== lastWindowWidth) {
  813. 811.  -       cur.lastWW = lastWindowWidth;
  814. 812.  -       var goodLeft1 = ge('page_layout').offsetLeft,
  815. 813.  -           goodLeft2 = goodLeft1 + cur.audioEl.cont.offsetLeft,
  816. 814.  -           goodLeft3 = goodLeft2 + getSize(cur.audioEl.cont)[0] - getSize(cur.audioEl.filters)[0] - 10;
  817. 815.  -       cur.audioEl.head.style.left = ge('side_bar').style.left = goodLeft1 + 'px';
  818. 816.  -       cur.audioEl.bar.style.left = goodLeft2 + 'px';
  819. 817.  -       cur.audioEl.filters.style.left = goodLeft3 + 'px';
  820. 818.  -       setTimeout(Audio.resetStyles, 0);
  821. 819.  -     }
  822. 820.  -   },
  823. 821.  -
  824. 822.  -   resetStyles: function() {
  825. 823.  -     cur.audioEl.head.style.left = ge('side_bar').style.left =
  826. 824.  -     cur.audioEl.bar.style.left = cur.audioEl.filters.style.left = '';
  827. 825.  -   },
  828. 826.  -
  829. 827.  -   scrollCheck: function () {
  830. 828.  -     Audio.handleFilterPos();
  831. 829.  -     if (browser.mobile || cur.isAudioLoading  || cur.disableAutoMore) return;
  832. 830.  -
  833. 831.  -     if (!isVisible(cur.showMore) && !isVisible(cur.sShowMore)) return;
  834. 832.  -     if (!cur.curList) {
  835. 833.  -       setTimeout(Audio.scrollCheck, 50);
  836. 834.  -       return;
  837. 835.  -     }
  838. 836.  -
  839. 837.  -     var docEl = document.documentElement;
  840. 838.  -     var ch = window.innerHeight || docEl.clientHeight || bodyNode.clientHeight;
  841. 839.  -     var st = scrollGetY();
  842. 840.  -
  843. 841.  -     if (isVisible(cur.showMore) && st + ch + 400 > cur.showMore.offsetTop) {
  844. 842.  -       Audio.showRows();
  845. 843.  -     }
  846. 844.  -     if (isVisible(cur.sShowMore) && st + ch + 400 > cur.sShowMore.offsetTop) {
  847. 845.  -       Audio.loadRows();
  848. 846.  -     }
  849. 847.  -   },
  850. 848.  -
  851. 849.  -   updateList: function(opts) {
  852. 850.  -     opts = opts || {};
  853. 851.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  854. 852.  -         from_pad = !!opts.from_pad, e = opts.event, force = opts.force,
  855. 853.  -         showAlbums = opts.showAlbums, fromIndex = opts.fromIndex, obj = __cur.aSearch;
  856. 854.  -     if (__cur.silent) {
  857. 855.  -       __cur.onSilentLoad = function() {
  858. 856.  -         Audio.updateList(opts);
  859. 857.  -       };
  860. 858.  -       return;
  861. 859.  -     }
  862. 860.  -     if (e && (e.keyCode == 10 || e.keyCode == 13) || __cur.forceNoAutoComplete) {
  863. 861.  -       delete __cur.forceNoAutoComplete
  864. 862.  -       delete __cur.autoComplete;
  865. 863.  -     } else {
  866. 864.  -       __cur.autoComplete = 1;
  867. 865.  -     }
  868. 866.  -     clearTimeout(this.filterTimeout);
  869. 867.  -     this.filterTimeout = setTimeout((function() {
  870. 868.  -       var str = trim(obj.value), el;
  871. 869.  -       if (str == __cur.searchStr && __cur.autoComplete && !__cur.ignoreEqual) {
  872. 870.  -         return;
  873. 871.  -       }
  874. 872.  -       delete __cur.ignoreEqual;
  875. 873.  -       if (!from_pad) {
  876. 874.  -         delete nav.objLoc.audio_id;
  877. 875.  -         if (nav.objLoc.act == 'recommendations' || nav.objLoc.act == 'popular' || nav.objLoc.act == 'feed' || nav.objLoc.act == 'albums') {
  878. 876.  -           delete nav.objLoc.act;
  879. 877.  -         }
  880. 878.  -       }
  881. 879.  -
  882. 880.  -       if (__cur.allAudiosIndex == 'all') {
  883. 881.  -         __cur.album_id = 0;
  884. 882.  -       }
  885. 883.  -       each(geByClass('audio_filter', __cur.albumFilters), function(i, e) {
  886. 884.  -         removeClass(e, 'selected');
  887. 885.  -       });
  888. 886.  -       var c = Audio.allAudios(from_pad).length;
  889. 887.  -       if (str) {
  890. 888.  -         el = __cur.albumFiltered;
  891. 889.  -         hide(__cur.audioFriends);
  892. 890.  -         Audio.hideAlbums({from_pad: from_pad});
  893. 891.  -         addClass(__cur.clearSearch, 'shown');
  894. 892.  -         show(__cur.searchFilters);
  895. 893.  -         hide(__cur.searchInfoCont);
  896. 894.  -         if (__cur.audioWrap && !c && __cur.allAudiosIndex == 'all') {
  897. 895.  -           removeClass(__cur.audioWrap, 'audio_no_recs');
  898. 896.  -         }
  899. 897.  -       } else {
  900. 898.  -         if (showAlbums || __cur.oid != vk.id && !from_pad) {
  901. 899.  -           if (__cur.allAudiosIndex == 'all') {
  902. 900.  -             el = __cur.albumsFilter || ge((from_pad ? 'pad_' : '') + 'album0');
  903. 901.  -           }
  904. 902.  -           hide(__cur.audioFriends, __cur.searchInfoCont);
  905. 903.  -           Audio.showAlbums({from_pad: from_pad});
  906. 904.  -         } else if (fromIndex == 2) {
  907. 905.  -           Audio.hideAlbums({from_pad: from_pad});
  908. 906.  -           hide(__cur.audioFriends);
  909. 907.  -           __cur.searchInfoCont.innerHTML = __cur.performerInfo[__cur.allAudiosIndex];
  910. 908.  -           show(__cur.searchInfoCont);
  911. 909.  -         } else {
  912. 910.  -           Audio.hideAlbums({from_pad: from_pad});
  913. 911.  -           show(__cur.audioFriends);
  914. 912.  -           hide(__cur.searchInfoCont);
  915. 913.  -           if (__cur.allAudiosIndex == 'all') {
  916. 914.  -             el = ge((from_pad ? 'pad_' : '') + 'album0');
  917. 915.  -             var curEl = geByClass1('current', __cur.friendsList);
  918. 916.  -             if (curEl) removeClass(curEl, 'current');
  919. 917.  -           }
  920. 918.  -         }
  921. 919.  -         removeClass(__cur.clearSearch, 'shown');
  922. 920.  -         removeClass(__cur.albumFiltered, 'selected');
  923. 921.  -         hide(__cur.searchFilters);
  924. 922.  -         if (__cur.audioWrap) {
  925. 923.  -           toggleClass(__cur.audioWrap, 'audio_no_recs', !c && __cur.allAudiosIndex == 'all' && __cur.oid <= 0);
  926. 924.  -         }
  927. 925.  -       }
  928. 926.  -       if (el) addClass(el, 'selected');
  929. 927.  -       hide(__cur.popularFilters, __cur.popularOwners);
  930. 928.  -       if (from_pad) {
  931. 929.  -         Audio.updatePadFiltersHeight();
  932. 930.  -       }
  933. 931.  -       __cur.searchStr = str;
  934. 932.  -       this.searchAudios({from_pad: from_pad, str: str, type: __cur.allAudiosIndex, force: force});
  935. 933.  -       this.scrollToTop(from_pad);
  936. 934.  -     }).bind(this), fromIndex ? 0 : 10);
  937. 935.  -   },
  938. 936.  -
  939. 937.  -   selectPerformer: function(opts) {
  940. 938.  -     opts = opts || {};
  941. 939.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  942. 940.  -         from_pad = !!opts.from_pad, event = opts.event, name = opts.name;
  943. 941.  -     __cur.aSearch.setValue(name);
  944. 942.  -     __cur.forceNoAutoComplete = true;
  945. 943.  -     if (event) {
  946. 944.  -       __cur.searchTypeMenu.value = 1;
  947. 945.  -       __cur.searchTypeChanged({target: {index: 1}}, true);
  948. 946.  -     }
  949. 947.  -     Audio.updateList({from_pad: from_pad});
  950. 948.  -     if (event) cancelEvent(event);
  951. 949.  -   },
  952. 950.  -
  953. 951.  -   searchAudios: function(opts) {
  954. 952.  -     opts = opts || {};
  955. 953.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  956. 954.  -         from_pad = !!opts.from_pad, str = opts.str, type = opts.type, force = opts.force;
  957. 955.  -     __cur.shownAudios = 0;
  958. 956.  -     __cur.curSection = type;
  959. 957.  -     if (from_pad && !__cur.audiosIndex) {
  960. 958.  -       Audio.loadFriendsAudios({from_pad: from_pad, id: vk.id, index: 'all', str: str});
  961. 959.  -       return;
  962. 960.  -     }
  963. 961.  -     var clubList = (type && type.substr(0, 4) == 'club');
  964. 962.  -     if (!clubList && __cur.searchSortFilter) {
  965. 963.  -       __cur.searchSortFilter.disable(false);
  966. 964.  -       __cur.searchLyricsFilter.disable(false);
  967. 965.  -       removeClass(__cur.albumFiltered, 'club_shown');
  968. 966.  -       delete __cur.club;
  969. 967.  -     }
  970. 968.  -     if (str) {
  971. 969.  -       var htmlentities = function(s){
  972. 970.  -         var el = document.createElement('div');
  973. 971.  -         el.innerText = el.textContent = s;
  974. 972.  -         s = el.innerHTML;
  975. 973.  -         delete el;
  976. 974.  -         return s.split('"').join('&quot;');
  977. 975.  -       }
  978. 976.  -       var htmlencode = function(str){
  979. 977.  -         return str.toLowerCase().replace(/\u2013|\u2014/g, '-');
  980. 978.  -         var aStr = str.toLowerCase().replace(/\u2013|\u2014/g, '-').split(''), i = aStr.length, aRet = [];
  981. 979.  -         while (i--) {
  982. 980.  -           var iC = aStr[i].charCodeAt();
  983. 981.  -           if ((iC > 127 && iC < 994)) {
  984. 982.  -             aRet.push('&#'+iC+';');
  985. 983.  -           } else if (iC == 36) {
  986. 984.  -             aRet.push('&#0'+iC+';');
  987. 985.  -           } else {
  988. 986.  -             aRet.push(htmlentities(aStr[i]));
  989. 987.  -           }
  990. 988.  -         }
  991. 989.  -         return aRet.reverse().join('');
  992. 990.  -       }
  993. 991.  -       var res = __cur.audiosIndex.search(htmlencode(str));
  994. 992.  -       var newList = __cur.curSection;
  995. 993.  -       newList += '_search_'+str;
  996. 994.  -
  997. 995.  -       __cur.curList = newList;
  998. 996.  -       __cur.audiosList[__cur.curList] = res.sort(function(a,b) {return a._order - b._order});
  999. 997.  -       audioPlayer.genPlaylist(res, false);
  1000. 998.  -
  1001. 999.  -       if (str) {
  1002. 1000.  -         str += ' '+(parseLatin(str) || '');
  1003. 1001.  -         str = trim(escapeRE(str.replace(/\)/g, '')).split('&').join('&amp;'));
  1004. 1002.  -         __cur.selection = {
  1005. 1003.  -           re: new RegExp('(\\s|^)('+str.replace(__cur.audiosIndex.delimiter, '|').replace(/(^\||\|$|\?)/g, '')+')', 'gi'),
  1006. 1004.  -           val: '$1<span>$2</span>'
  1007. 1005.  -         };
  1008. 1006.  -       }
  1009. 1007.  -     } else {
  1010. 1008.  -       if (!clubList) Audio.hideSearchResults(from_pad);
  1011. 1009.  -       __cur.curList = __cur.curSection;
  1012. 1010.  -       audioPlayer.genPlaylist(__cur.audiosList[__cur.curList], false, {my: (__cur.curList == 'all' && (__cur.oid == vk.id || from_pad) ? 'my' : false), htitle: __cur.justShuffled && window.audioPlaylist && audioPlaylist.htitle});
  1013. 1011.  -       __cur.selection = false;
  1014. 1012.  -     }
  1015. 1013.  -
  1016. 1014.  -     __cur.sectionCount = (__cur.audiosList[__cur.curList]) ? __cur.audiosList[__cur.curList].length : 0;
  1017. 1015.  -     this.filterTimeout = setTimeout((function() {
  1018. 1016.  -       if (!force) {
  1019. 1017.  -         hide(__cur.sShowMore);
  1020. 1018.  -         __cur.searchOffset = 0;
  1021. 1019.  -       }
  1022. 1020.  -       this.showRows({from_pad: from_pad, force: force});
  1023. 1021.  -       if (__cur.sectionCount || !__cur.searchStr) {
  1024. 1022.  -         this.changeSummary({from_pad: from_pad});
  1025. 1023.  -       }
  1026. 1024.  -       if (__cur.justShuffled) {
  1027. 1025.  -         delete __cur.justShuffled;
  1028. 1026.  -         var aid = currentAudioId();
  1029. 1027.  -         if (cur.nextPlaylist && (!aid || window.audioPlaylist && !window.audioPlaylist[aid])) {
  1030. 1028.  -           window.audioPlaylist = clone(cur.nextPlaylist);
  1031. 1029.  -         }
  1032. 1030.  -         if (!from_pad) {
  1033. 1031.  -           Audio.loadCurrentPlaylist();
  1034. 1032.  -         }
  1035. 1033.  -       }
  1036. 1034.  -     }).bind(this), 10);
  1037. 1035.  -   },
  1038. 1036.  -
  1039. 1037.  -   indexAll: function(opts) {
  1040. 1038.  -     opts = opts || {};
  1041. 1039.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  1042. 1040.  -         from_pad = !!opts.from_pad, callback = opts.callback;
  1043. 1041.  -     var all = Audio.allAudios(from_pad),
  1044. 1042.  -     replacer = function(str, p) {
  1045. 1043.  -       var c = intval(p);
  1046. 1044.  -       return (c >= 33 && c < 48) ? String.fromCharCode(c) : str;
  1047. 1045.  -     };
  1048. 1046.  -
  1049. 1047.  -     __cur.audiosIndex = new vkIndexer(all, function(obj) {
  1050. 1048.  -       __cur.audios[parseInt(obj[1])] = obj;
  1051. 1049.  -       return (obj[5]+' '+obj[6]).replace(/\&\#(\d+);?/gi, replacer);
  1052. 1050.  -     }, function() {
  1053. 1051.  -       if (callback) {
  1054. 1052.  -         callback();
  1055. 1053.  -       }
  1056. 1054.  -     });
  1057. 1055.  -   },
  1058. 1056.  -
  1059. 1057.  -   changeAllIndex: function(opts) {
  1060. 1058.  -     opts = opts || {};
  1061. 1059.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  1062. 1060.  -         from_pad = !!opts.from_pad, index = opts.index, albumSelected = opts.album,
  1063. 1061.  -         showAlbums = opts.showAlbums, owner = opts.owner, str = opts.str || '';
  1064. 1062.  -
  1065. 1063.  -     if (!__cur.audiosList[index]) return;
  1066. 1064.  -     __cur.allAudiosIndex = __cur.curList = index;
  1067. 1065.  -     this.indexAll({from_pad: from_pad, callback: opts.clbk || function() {
  1068. 1066.  -       var _a = window.audioPlayer;
  1069. 1067.  -       Audio.mixAllAudios({from_pad: from_pad, mix: (_a && _a.shuffle), noShuffle: true});
  1070. 1068.  -       audioPlayer.genPlaylist(__cur.audiosList[__cur.curList], from_pad && index == 'all' && !currentAudioId(), {my: (index == 'all' && (__cur.oid == vk.id || from_pad) ? 'my' : false)});
  1071. 1069.  -       each(geByTag('div', __cur.albumFilters), function(i, e) {
  1072. 1070.  -         removeClass(e, 'loading');
  1073. 1071.  -       });
  1074. 1072.  -       if (__cur.allLoadedCallback) {
  1075. 1073.  -         __cur.allLoadedCallback();
  1076. 1074.  -         delete __cur.allLoadedCallback;
  1077. 1075.  -         return;
  1078. 1076.  -       }
  1079. 1077.  -
  1080. 1078.  -       __cur.ignoreEqual = true;
  1081. 1079.  -
  1082. 1080.  -       setStyle(__cur.clearSearch, {opacity: .6});
  1083. 1081.  -       val(__cur.aSearch, str, true);
  1084. 1082.  -       toggleClass(__cur.clearSearch, 'shown', !!str);
  1085. 1083.  -       __cur.searchStr = str;
  1086. 1084.  -       if (str) {
  1087. 1085.  -         __cur.forceNoAutoComplete = true;
  1088. 1086.  -       } else {
  1089. 1087.  -         Audio.hideSearchResults(from_pad);
  1090. 1088.  -       }
  1091. 1089.  -       if (albumSelected) {
  1092. 1090.  -         Audio.loadAlbum({from_pad: from_pad, album: albumSelected});
  1093. 1091.  -       } else {
  1094. 1092.  -         Audio.updateList({from_pad: from_pad, showAlbums: showAlbums, fromIndex: (owner ? 2 : 1)});
  1095. 1093.  -       }
  1096. 1094.  -     }});
  1097. 1095.  -   },
  1098. 1096.  -
  1099. 1097.  -   generateAlbums: function(from_pad) {
  1100. 1098.  -     var __cur = from_pad ? window._pads && _pads.cur : window.cur;
  1101. 1099.  -     for (var i in __cur.audiosList) {
  1102. 1100.  -       if (i.substr(0, 5) == 'album') __cur.audiosList[i] = [];
  1103. 1101.  -     }
  1104. 1102.  -     var all = Audio.allAudios(from_pad);
  1105. 1103.  -     for (var i in all) {
  1106. 1104.  -       var el = all[i];
  1107. 1105.  -       if (el[8] && parseInt(el[8])) {
  1108. 1106.  -         if (!__cur.audiosList['album'+el[8]]) {
  1109. 1107.  -           __cur.audiosList['album'+el[8]] = [];
  1110. 1108.  -         }
  1111. 1109.  -         __cur.audiosList['album'+el[8]].push(el);
  1112. 1110.  -       }
  1113. 1111.  -     }
  1114. 1112.  -   },
  1115. 1113.  -
  1116. 1114.  -   changeHTitle: function(opts) {
  1117. 1115.  -     opts = opts || {};
  1118. 1116.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  1119. 1117.  -         from_pad = !!opts.from_pad, from_search = opts.from_search;
  1120. 1118.  -     var htitle = __cur.htitle, pad_htitle = '';
  1121. 1119.  -     if (__cur.curSection && !__cur.curSection.indexOf('album')) {
  1122. 1120.  -       var album = ge((from_pad ? 'pad_' : '') + __cur.curSection);
  1123. 1121.  -       if (album) {
  1124. 1122.  -         htitle = album.innerText || album.textContent;
  1125. 1123.  -       }
  1126. 1124.  -     } else if (__cur.curSection && __cur.curSection == 'recommendations') {
  1127. 1125.  -       htitle = __cur.recommendTitle ? __cur.recommendTitle : getLang('audio_recommended_audios');
  1128. 1126.  -     } else if (__cur.curSection && __cur.curSection == 'feed') {
  1129. 1127.  -       htitle = __cur.feedTitle ? __cur.feedTitle : getLang('audio_friends_feed');
  1130. 1128.  -     } else if (__cur.curSection && __cur.curSection == 'popular') {
  1131. 1129.  -       htitle = __cur.popularTitle ? __cur.popularTitle : getLang('audio_popular_audios');
  1132. 1130.  -     } else if (__cur.curSection && __cur.curSection.indexOf('owner') === 0) {
  1133. 1131.  -       htitle = __cur.allFriendsHTitles[__cur.audioFriend];
  1134. 1132.  -     } else if (from_search) {
  1135. 1133.  -       htitle = getLang('audio_title_search').replace('{q}', val(__cur.aSearch));
  1136. 1134.  -       pad_htitle = getLang('audio_title_search').replace('{q}', '<b>' + val(__cur.aSearch) + '</b>');
  1137. 1135.  -     } else if (__cur.curSection && !__cur.curSection.indexOf('club')) {
  1138. 1136.  -       htitle = __cur.allClubsHTitles[__cur.club] || htitle;
  1139. 1137.  -     } else if (__cur.audioFriend && __cur.allAudiosIndex && !__cur.allAudiosIndex.indexOf('friend')) {
  1140. 1138.  -       htitle = __cur.allFriendsHTitles[__cur.audioFriend];
  1141. 1139.  -     }
  1142. 1140.  -     __cur.lastHTitle = pad_htitle || htitle;
  1143. 1141.  -     if (from_pad) {
  1144. 1142.  -       return;
  1145. 1143.  -     }
  1146. 1144.  -     if (opts.count && cur.lang.audio_N_recs) {
  1147. 1145.  -       htitle += ' | ' + getLang('audio_N_recs', opts.count);
  1148. 1146.  -     }
  1149. 1147.  -     // Updating document title
  1150. 1148.  -     document.title = replaceEntities(stripHTML(htitle));
  1151. 1149.  -   },
  1152. 1150.  -
  1153. 1151.  -   changeSummary: function(opts) {
  1154. 1152.  -     opts = opts || {};
  1155. 1153.  -     var from_pad = opts.from_pad, from_search = opts.from_search;
  1156. 1154.  -     var count = (from_search) ? cur.searchCount : cur.sectionCount;
  1157. 1155.  -     Audio.changeHTitle({from_pad: from_pad, count: count, from_search: from_search});
  1158. 1156.  -   },
  1159. 1157.  -
  1160. 1158.  -   setQLoc: function(query) {
  1161. 1159.  -     clearTimeout(this.qTimeout);
  1162. 1160.  -     this.qTimeout = setTimeout(function() {
  1163. 1161.  -       if (cur.allAudiosIndex != 'all') {
  1164. 1162.  -         if (cur.allAudiosIndex && cur.allAudiosIndex.substr(0, 5) == 'owner') {
  1165. 1163.  -           extend(nav.objLoc, {owner: cur.audioFriend});
  1166. 1164.  -         } else {
  1167. 1165.  -           extend(nav.objLoc, {friend: cur.audioFriend});
  1168. 1166.  -         }
  1169. 1167.  -       } else {
  1170. 1168.  -         delete nav.objLoc.owner;
  1171. 1169.  -         delete nav.objLoc.friend;
  1172. 1170.  -       }
  1173. 1171.  -       if (cur.curSection && cur.curSection.substr(0, 4) == 'club') {
  1174. 1172.  -         extend(nav.objLoc, {club: cur.club});
  1175. 1173.  -       } else {
  1176. 1174.  -         delete nav.objLoc.club;
  1177. 1175.  -         delete nav.objLoc.genre;
  1178. 1176.  -       }
  1179. 1177.  -       if (query) {
  1180. 1178.  -         extend(nav.objLoc, {q: query});
  1181. 1179.  -         var performer = cur.searchTypeMenu ? parseInt(cur.searchTypeMenu.val()) : 0;
  1182. 1180.  -         if (performer) {
  1183. 1181.  -           extend(nav.objLoc, {performer: performer});
  1184. 1182.  -         } else {
  1185. 1183.  -           delete nav.objLoc.performer;
  1186. 1184.  -         }
  1187. 1185.  -       } else {
  1188. 1186.  -         delete nav.objLoc.q;
  1189. 1187.  -       }
  1190. 1188.  -       nav.setLoc(nav.objLoc);
  1191. 1189.  -     }, 500);
  1192. 1190.  -   },
  1193. 1191.  -
  1194. 1192.  -   filterClaimed: function(arr) {
  1195. 1193.  -     var len = arr.length;
  1196. 1194.  -     var res = [];
  1197. 1195.  -     for (var i = 0; i < len; i++) {
  1198. 1196.  -       var t = arr[i];
  1199. 1197.  -       if (t && (!(t[11] && parseInt(t[11])) || t[12] && parseInt(t[12])) || nav.objLoc.claim) {
  1200. 1198.  -         res.push(t);
  1201. 1199.  -       }
  1202. 1200.  -     }
  1203. 1201.  -     return res;
  1204. 1202.  -   },
  1205. 1203.  -
  1206. 1204.  -   filterDeleted: function(arr, from_pad) {
  1207. 1205.  -     var __cur = from_pad ? window._pads && _pads.cur : window.cur;
  1208. 1206.  -     var len = arr.length;
  1209. 1207.  -     var res = [];
  1210. 1208.  -     for (var i = 0; i < len; i++) {
  1211. 1209.  -       var t = arr[i];
  1212. 1210.  -       if (__cur && __cur.audios && __cur.audios[t[1]] && !__cur.audios[t[1]].deleted) {
  1213. 1211.  -         res.push(t);
  1214. 1212.  -       }
  1215. 1213.  -     }
  1216. 1214.  -     return res;
  1217. 1215.  -   },
  1218. 1216.  -
  1219. 1217.  -   filterByAlbum: function(arr, album) {
  1220. 1218.  -     var len = arr.length;
  1221. 1219.  -     var res = [];
  1222. 1220.  -     for (var i = 0; i < len; i++) {
  1223. 1221.  -       var t = arr[i];
  1224. 1222.  -       if (album == t[8]) {
  1225. 1223.  -         res.push(t);
  1226. 1224.  -       }
  1227. 1225.  -     }
  1228. 1226.  -     return res;
  1229. 1227.  -   },
  1230. 1228.  -
  1231. 1229.  -   animateAdded: function(el, speed) {
  1232. 1230.  -     var c = se('<div class="audio_add_wrap anim fl_r"><div class="audio_add_anim_wrap"><div class="audio_add_anim clear_fix"><div class="audio_add fl_l"></div><div class="audio_add done fl_l"></div></div></div></div>');
  1233. 1231.  -     el.parentNode.replaceChild(c, el);
  1234. 1232.  -     el = c;
  1235. 1233.  -     setTimeout(function() {
  1236. 1234.  -       var anim = geByClass1('audio_add_anim', el), add = anim.firstChild, added = add.nextSibling;
  1237. 1235.  -       cssAnim(anim, {left: '-15px'}, {duration: speed}, function() {
  1238. 1236.  -         setStyle(anim.parentNode, {width: '15px'});
  1239. 1237.  -         setStyle(anim.parentNode.parentNode, {paddingLeft: '2px'});
  1240. 1238.  -         setStyle(anim, {left: '-13px'});
  1241. 1239.  -       });
  1242. 1240.  -       cssAnim(add, {opacity: 0}, {duration: speed});
  1243. 1241.  -       cssAnim(added, {opacity: 1}, {duration: speed});
  1244. 1242.  -     }, 0);
  1245. 1243.  -     return el;
  1246. 1244.  -   },
  1247. 1245.  -
  1248. 1246.  -   addShareAudio: function(opts) {
  1249. 1247.  -     opts = opts || {};
  1250. 1248.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  1251. 1249.  -         from_pad = !!opts.from_pad, el = opts.el, aid = opts.aid, oid = opts.oid,
  1252. 1250.  -         hash = opts.hash, gid = opts.gid, top = opts.top || '',
  1253. 1251.  -         from_choose = opts.from_choose, ev = opts.ev;
  1254. 1252.  -
  1255. 1253.  -     if (el && !from_choose) {
  1256. 1254.  -       if (el.tt) el.tt.hide();
  1257. 1255.  -       el = Audio.animateAdded(el, 200);
  1258. 1256.  -     }
  1259. 1257.  -     var noboxhide = false;
  1260. 1258.  -     if (ev && ev.type == 'click' && (event.ctrlKey || event.metaKey || event.shiftKey)) {
  1261. 1259.  -       noboxhide = true;
  1262. 1260.  -     }
  1263. 1261.  -     if (from_choose) {
  1264. 1262.  -       if (noboxhide && curBox()) {
  1265. 1263.  -         curBox().setOptions({onHide: function() {
  1266. 1264.  -           setTimeout(function() {
  1267. 1265.  -             while (__bq.count()) {
  1268. 1266.  -               __bq.hideLast();
  1269. 1267.  -             }
  1270. 1268.  -           }, 0);
  1271. 1269.  -         }});
  1272. 1270.  -       } else {
  1273. 1271.  -         while (__bq.count()) {
  1274. 1272.  -           __bq.hideLast();
  1275. 1273.  -         }
  1276. 1274.  -       }
  1277. 1275.  -     }
  1278. 1276.  -     var query = {act:'add', aid:aid, oid:oid, hash:hash, top:top};
  1279. 1277.  -     if (gid) query.gid = cur.gid || cur.oid < 0 && -cur.oid;
  1280. 1278.  -     if (__cur.curSection == 'recommendations') query.recommendation = 1;
  1281. 1279.  -     if ((cur.module == 'audio' || cur.module == 'feed') && nav.objLoc['q'] || cur.module == 'search' && nav.objLoc['c[q]']) query.search = 1;
  1282. 1280.  -     ajax.post(Audio.address, query, {
  1283. 1281.  -       onDone: function (data, res) {
  1284. 1282.  -         var obj = eval('('+data+')'), all_list;
  1285. 1283.  -         obj = obj['all'][0];
  1286. 1284.  -         if (((!cur.gid && (cur.id == vk.id || from_pad)) || (cur.gid && gid)) && obj && cur.module == 'audio') {
  1287. 1285.  -           setTimeout(function(){
  1288. 1286.  -             if (cur.audiosIndex) {
  1289. 1287.  -               all_list = cur.audiosList['all'];
  1290. 1288.  -               if (all_list && all_list.length) {
  1291. 1289.  -                 obj._order = all_list[0]._order - 1;
  1292. 1290.  -                 cur.audiosList['all'].splice(0,0,obj);
  1293. 1291.  -               } else {
  1294. 1292.  -                 obj._order = 0;
  1295. 1293.  -                 cur.audiosList['all'] = [obj];
  1296. 1294.  -               }
  1297. 1295.  -               cur.audios[obj[1]] = obj;
  1298. 1296.  -               if (cur.allAudiosIndex == 'all') {
  1299. 1297.  -                 cur.audiosIndex.add(obj);
  1300. 1298.  -               }
  1301. 1299.  -             }
  1302. 1300.  -             if (window._pads && _pads.cur && _pads.cur.audiosIndex && _pads.cur.audiosList) {
  1303. 1301.  -               all_list = _pads.cur.audiosList['all'];
  1304. 1302.  -               if (all_list && all_list.length) {
  1305. 1303.  -                 obj._order = all_list[0]._order - 1;
  1306. 1304.  -                 _pads.cur.audiosList['all'].splice(0,0,obj);
  1307. 1305.  -               } else {
  1308. 1306.  -                 obj._order = 0;
  1309. 1307.  -                 _pads.cur.audiosList['all'] = [obj];
  1310. 1308.  -               }
  1311. 1309.  -               if (_pads.cur.audios) {
  1312. 1310.  -                 _pads.cur.audios[obj[1]] = obj;
  1313. 1311.  -               }
  1314. 1312.  -               if (_pads.cur.allAudiosIndex == 'all') {
  1315. 1313.  -                 _pads.cur.audiosIndex.add(obj);
  1316. 1314.  -               }
  1317. 1315.  -             }
  1318. 1316.  -             if (window.Pads && Pads.clearAudioLoadCache) {
  1319. 1317.  -               Pads.clearAudioLoadCache();
  1320. 1318.  -             }
  1321. 1319.  -           }, 0);
  1322. 1320.  -         }
  1323. 1321.  -         var showShare = function() {
  1324. 1322.  -           addClass(ge('audio'+oid+'_'+aid), 'tt_shown');
  1325. 1323.  -           showTooltip(el, {
  1326. 1324.  -             content: res.content,
  1327. 1325.  -             slide: 15,
  1328. 1326.  -             shift: [59, 5, 0],
  1329. 1327.  -             black: 1,
  1330. 1328.  -             hidedt: 200,
  1331. 1329.  -             className: 'audio_add_tt wall_tt rich',
  1332. 1330.  -             onHide: function() {
  1333. 1331.  -               removeClass(ge('audio'+oid+'_'+aid), 'tt_shown');
  1334. 1332.  -             }
  1335. 1333.  -           });
  1336. 1334.  -           var tip = el.tt;
  1337. 1335.  -           if (tip && !tip.inited) {
  1338. 1336.  -             var a = geByClass('add_cont', tip.container)[0];
  1339. 1337.  -             tip.onClean = function() {
  1340. 1338.  -               tip.inited = false;
  1341. 1339.  -               removeEvent(tip.container, 'mouseover', tip.show);
  1342. 1340.  -               removeEvent(tip.container, 'mouseout', tip.hide);
  1343. 1341.  -             }
  1344. 1342.  -             addEvent(tip.container, 'mouseover', tip.show);
  1345. 1343.  -             addEvent(tip.container, 'mouseout', tip.hide);
  1346. 1344.  -             addEvent(a, 'click', function(){
  1347. 1345.  -               toggleClass(this, 'on');
  1348. 1346.  -               var share_q = {act: 'share_audio', audio:res.audio, status: tip.status? tip.status : 0, check: hasClass(a, 'on')?1:0, hash: res.hash};
  1349. 1347.  -               if (gid) share_q.gid = cur.gid;
  1350. 1348.  -               ajax.post(Audio.address, share_q, {
  1351. 1349.  -                 onDone: function(data) {
  1352. 1350.  -                   if (data) tip.status = data;
  1353. 1351.  -                 }
  1354. 1352.  -               });
  1355. 1353.  -             });
  1356. 1354.  -             tip.inited = true;
  1357. 1355.  -           }
  1358. 1356.  -         }
  1359. 1357.  -         if (el) {
  1360. 1358.  -           if (from_choose) {
  1361. 1359.  -             if (res.added_msg) {
  1362. 1360.  -               el.parentNode.insertBefore(se(res.added_msg), el);
  1363. 1361.  -               hide(el);
  1364. 1362.  -             }
  1365. 1363.  -           } else {
  1366. 1364.  -             addEvent(el, 'mouseover', showShare);
  1367. 1365.  -           }
  1368. 1366.  -         }
  1369. 1367.  -         if (!cur.addedIds) cur.addedIds = {};
  1370. 1368.  -         cur.addedIds[oid+'_'+aid] = 1;
  1371. 1369.  -         if (window.audioPlayer && currentAudioId()) {
  1372. 1370.  -           var cur_aids = currentAudioId().split('_');
  1373. 1371.  -           if (cur_aids[0] == oid && cur_aids[1] == aid) {
  1374. 1372.  -             audioPlayer.showCurrentAdded();
  1375. 1373.  -           }
  1376. 1374.  -         }
  1377. 1375.  -         if (from_choose) {
  1378. 1376.  -           if (cur.module != 'audio') {
  1379. 1377.  -             if (!noboxhide) {
  1380. 1378.  -               nav.go('/audios' + obj[0], false, {onDone: function() {
  1381. 1379.  -                 cur.__phinputs = cur.__phinputs || [];
  1382. 1380.  -                 globalHistoryDestroy(nav.objLoc[0]);
  1383. 1381.  -               }});
  1384. 1382.  -             }
  1385. 1383.  -           } else {
  1386. 1384.  -             __cur.ignoreEqual = true;
  1387. 1385.  -             setTimeout(Audio.clearSearch.pbind({from_pad: from_pad}), 0);
  1388. 1386.  -           }
  1389. 1387.  -         }
  1390. 1388.  -         if (_tbLink && _tbLink.loc) {
  1391. 1389.  -           cur.__phinputs = cur.__phinputs || [];
  1392. 1390.  -           globalHistoryDestroy(_tbLink.loc);
  1393. 1391.  -         }
  1394. 1392.  -       }
  1395. 1393.  -     });
  1396. 1394.  -   },
  1397. 1395.  -
  1398. 1396.  -   alistOver: function(obj){
  1399. 1397.  -     if (!hasClass(obj, 'audio_list_cell_on')) {
  1400. 1398.  -       obj.className = 'audio_list_cell_over';
  1401. 1399.  -     }
  1402. 1400.  -   },
  1403. 1401.  -
  1404. 1402.  -   alistOff: function(obj) {
  1405. 1403.  -     if (!hasClass(obj, 'audio_list_cell_on')){
  1406. 1404.  -       obj.className = 'audio_list_cell';
  1407. 1405.  -     }
  1408. 1406.  -   },
  1409. 1407.  -
  1410. 1408.  -   listOut: function(obj) {
  1411. 1409.  -     removeClass(obj, 'over');
  1412. 1410.  -   },
  1413. 1411.  -
  1414. 1412.  -   listOver: function(obj) {
  1415. 1413.  -     addClass(obj, 'over');
  1416. 1414.  -   },
  1417. 1415.  -
  1418. 1416.  -   loadAlbum: function(opts) {
  1419. 1417.  -     opts = opts || {};
  1420. 1418.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  1421. 1419.  -         from_pad = !!opts.from_pad,
  1422. 1420.  -         album_id = opts.album, filter = opts.filter, showAlbums = opts.showAlbums;
  1423. 1421.  -     if (__cur.silent) {
  1424. 1422.  -       __cur.onSilentLoad = function() {
  1425. 1423.  -         Audio.loadAlbum(opts);
  1426. 1424.  -       };
  1427. 1425.  -       return;
  1428. 1426.  -     }
  1429. 1427.  -     if (!album_id && !showAlbums && (__cur.oid == vk.id) && isVisible(__cur.audioMoreFriensId) && !__cur.searchFriendsStr) {
  1430. 1428.  -       __cur.shownFriends = [];
  1431. 1429.  -       Audio.showMoreFriends({from_pad: from_pad, onShow: addClass.pbind(ge((from_pad ? 'pad_' : '') + 'album0'), 'loading'), onHide: removeClass.pbind(ge((from_pad ? 'pad_' : '') + 'album0'), 'loading')});
  1432. 1430.  -     }
  1433. 1431.  -     hide(__cur.searchInfoCont);
  1434. 1432.  -     if (__cur.allAudiosIndex != 'all') {
  1435. 1433.  -       Audio.loadFriendsAudios({from_pad: from_pad, id: vk.id, index: 'all', album: album_id, showAlbums: showAlbums});
  1436. 1434.  -       return;
  1437. 1435.  -     }
  1438. 1436.  -     if (__cur.audioWrap) {
  1439. 1437.  -       toggleClass(__cur.audioWrap, 'audio_no_recs', !Audio.allAudios(from_pad).length && __cur.allAudiosIndex == 'all' && __cur.oid <= 0);
  1440. 1438.  -     }
  1441. 1439.  -     if (filter) {
  1442. 1440.  -       __cur.filterUnsorted = 1;
  1443. 1441.  -     } else {
  1444. 1442.  -       delete __cur.filterUnsorted;
  1445. 1443.  -     }
  1446. 1444.  -     var curSel = __cur.filterUnsorted ? ge('album_unsorted') : (showAlbums ? __cur.albumsFilter : ge((from_pad ? 'pad_' : '') + 'album' + album_id));
  1447. 1445.  -     __cur.lastAct = 'album' + album_id;
  1448. 1446.  -     album_id = album_id || 0;
  1449. 1447.  -     each(geByClass('audio_filter', __cur.albumFilters), function(i, e) {
  1450. 1448.  -       removeClass(e, 'selected');
  1451. 1449.  -     });
  1452. 1450.  -     if (curSel) addClass(curSel, 'selected');
  1453. 1451.  -     removeClass(__cur.albumFiltered, 'selected');
  1454. 1452.  -     hide(__cur.popularFilters, __cur.popularOwners, __cur.searchFilters);
  1455. 1453.  -     if (album_id == 0 && !showAlbums && (__cur.oid == vk.id || from_pad)) {
  1456. 1454.  -       Audio.hideAlbums({from_pad: from_pad});
  1457. 1455.  -       show(__cur.audioFriends);
  1458. 1456.  -       var curEl = geByClass1('current', __cur.friendsList);
  1459. 1457.  -       if (curEl) removeClass(curEl, 'current');
  1460. 1458.  -     } else {
  1461. 1459.  -       hide(__cur.audioFriends);
  1462. 1460.  -       Audio.showAlbums({from_pad: from_pad});
  1463. 1461.  -     }
  1464. 1462.  -     if (from_pad) {
  1465. 1463.  -       Audio.updatePadFiltersHeight();
  1466. 1464.  -     } else {
  1467. 1465.  -       if (showAlbums && !filter && !album_id) {
  1468. 1466.  -         Audio.updateAlbums();
  1469. 1467.  -       }
  1470. 1468.  -       delete nav.objLoc.q;
  1471. 1469.  -       delete nav.objLoc.owner;
  1472. 1470.  -       delete nav.objLoc.friend;
  1473. 1471.  -       delete __cur.recsOffset;
  1474. 1472.  -       delete __cur.popularOffset;
  1475. 1473.  -       delete nav.objLoc.club;
  1476. 1474.  -       delete nav.objLoc.genre;
  1477. 1475.  -       delete nav.objLoc.audio_id;
  1478. 1476.  -       delete __cur._back;
  1479. 1477.  -       if (nav.objLoc.act == 'recommendations' || nav.objLoc.act == 'popular' || nav.objLoc.act == 'feed' || nav.objLoc.act == 'albums') delete nav.objLoc.act;
  1480. 1478.  -       if (album_id) {
  1481. 1479.  -         extend(nav.objLoc, {album_id: album_id});
  1482. 1480.  -       } else {
  1483. 1481.  -         delete nav.objLoc.album_id;
  1484. 1482.  -       }
  1485. 1483.  -       nav.setLoc(nav.objLoc);
  1486. 1484.  -     }
  1487. 1485.  -     clearTimeout(this.filterTimeout);
  1488. 1486.  -     this.filterTimeout = setTimeout((function() {
  1489. 1487.  -       val(__cur.aSearch, '');
  1490. 1488.  -       removeClass(__cur.clearSearch, 'shown');
  1491. 1489.  -       __cur.searchStr = '';
  1492. 1490.  -       __cur.album_id = album_id;
  1493. 1491.  -       var type = (album_id) ? 'album'+album_id : __cur.allAudiosIndex;
  1494. 1492.  -       this.searchAudios({from_pad: from_pad, type: type, str: ''});
  1495. 1493.  -       this.hideSearchResults(from_pad);
  1496. 1494.  -       this.scrollToTop(from_pad);
  1497. 1495.  -     }).bind(this), 10);
  1498. 1496.  -     if (__cur.oid == vk.id || from_pad) {
  1499. 1497.  -       ajax.post(Audio.address, {act: 'list_stats', albums: (album_id || showAlbums) ? 1 : 0});
  1500. 1498.  -     }
  1501. 1499.  -   },
  1502. 1500.  -
  1503. 1501.  -   hideAlbums: function(opts) {
  1504. 1502.  -     opts = opts || {};
  1505. 1503.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  1506. 1504.  -         from_pad = !!opts.from_pad, icon = __cur.albumsFilter && geByClass1('icon', __cur.albumsFilter);
  1507. 1505.  -     if (isVisible(__cur.audioAlbums)) {
  1508. 1506.  -       slideUp(__cur.audioAlbums, __cur.albumsFilter ? 200 : 0, function() {
  1509. 1507.  -         if (from_pad) {
  1510. 1508.  -           Audio.updatePadFiltersHeight();
  1511. 1509.  -         }
  1512. 1510.  -         if (icon) {
  1513. 1511.  -           removeClass(icon, 'up');
  1514. 1512.  -         }
  1515. 1513.  -       });
  1516. 1514.  -     }
  1517. 1515.  -   },
  1518. 1516.  -
  1519. 1517.  -   showAlbums: function(opts) {
  1520. 1518.  -     opts = opts || {};
  1521. 1519.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  1522. 1520.  -         from_pad = !!opts.from_pad, icon = __cur.albumsFilter && geByClass1('icon', __cur.albumsFilter);
  1523. 1521.  -     if (!isVisible(__cur.audioAlbums)) {
  1524. 1522.  -       if (!from_pad) {
  1525. 1523.  -         Audio.updateAlbumsStart();
  1526. 1524.  -       }
  1527. 1525.  -       slideDown(__cur.audioAlbums, __cur.albumsFilter ? 200 : 0, function() {
  1528. 1526.  -         if (icon) {
  1529. 1527.  -           addClass(icon, 'up');
  1530. 1528.  -         }
  1531. 1529.  -         if (from_pad) {
  1532. 1530.  -           Audio.updatePadFiltersHeight();
  1533. 1531.  -         } else {
  1534. 1532.  -           Audio.handleFilterPos();
  1535. 1533.  -           Audio.updateAlbumsFinish();
  1536. 1534.  -         }
  1537. 1535.  -       });
  1538. 1536.  -       if (!from_pad) {
  1539. 1537.  -         setTimeout(Audio.handleFilterPos, 100);
  1540. 1538.  -       }
  1541. 1539.  -     }
  1542. 1540.  -   },
  1543. 1541.  -
  1544. 1542.  -   toggleAlbums: function(opts) {
  1545. 1543.  -     opts = opts || {};
  1546. 1544.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  1547. 1545.  -         from_pad = !!opts.from_pad, down = isVisible(__cur.audioAlbums),
  1548. 1546.  -         icon = __cur.albumsFilter && geByClass1('icon', __cur.albumsFilter);
  1549. 1547.  -     if (!from_pad) {
  1550. 1548.  -       Audio.updateAlbumsStart();
  1551. 1549.  -     }
  1552. 1550.  -     slideToggle(__cur.audioAlbums, __cur.albumsFilter ? 200 : 0, function() {
  1553. 1551.  -       if (from_pad) {
  1554. 1552.  -         Audio.updatePadFiltersHeight();
  1555. 1553.  -       } else {
  1556. 1554.  -         Audio.handleFilterPos();
  1557. 1555.  -         Audio.updateAlbumsFinish();
  1558. 1556.  -       }
  1559. 1557.  -     });
  1560. 1558.  -     if (!from_pad && !down) {
  1561. 1559.  -       setTimeout(Audio.handleFilterPos, 100);
  1562. 1560.  -     }
  1563. 1561.  -     if (icon) {
  1564. 1562.  -       toggleClass(icon, 'up', !down);
  1565. 1563.  -     }
  1566. 1564.  -   },
  1567. 1565.  -
  1568. 1566.  -   addAudio: function(params, event) {
  1569. 1567.  -     if (cur.uploadBanned) {
  1570. 1568.  -       setTimeout(showFastBox({title: getLang('audio_no_upload_title'), bodyStyle: 'line-height: 160%;', dark: 1}, getLang('audio_claims_no_upload')).hide, 5000);
  1571. 1569.  -       if (event) cancelEvent(event);
  1572. 1570.  -       return false;
  1573. 1571.  -     }
  1574. 1572.  -     showBox(Audio.address, extend(params || {}, {act: 'new_audio', gid: cur.gid}), {
  1575. 1573.  -       params: {width: '440px', bodyStyle: 'padding: 0px; position: relative;'}, dark: 1
  1576. 1574.  -     });
  1577. 1575.  -     if (event) cancelEvent(event);
  1578. 1576.  -     return false;
  1579. 1577.  -   },
  1580. 1578.  -
  1581. 1579.  -   mixAllAudios: function(opts) {
  1582. 1580.  -     opts = opts || {};
  1583. 1581.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  1584. 1582.  -         from_pad = !!opts.from_pad, mix = opts.mix, noShuffle = opts.noShuffle;
  1585. 1583.  -     var all_list = Audio.allAudios(from_pad), _a = window.audioPlayer, current = 0;
  1586. 1584.  -     if (!all_list) return;
  1587. 1585.  -     if (mix) {
  1588. 1586.  -       if (all_list[0] && all_list[0]._old_order !== undefined) return;
  1589. 1587.  -       for (var i = all_list.length; i; ) {
  1590. 1588.  -         var j = parseInt(Math.random() * i)
  1591. 1589.  -         var x = all_list[--i];
  1592. 1590.  -         all_list[i] = all_list[j];
  1593. 1591.  -         all_list[i]._old_order = all_list[i]._order;
  1594. 1592.  -         all_list[i]._order = i;
  1595. 1593.  -         if (currentAudioId() == all_list[i][0]+'_'+all_list[i][1]) {
  1596. 1594.  -           current = i;
  1597. 1595.  -         }
  1598. 1596.  -         all_list[j] = x;
  1599. 1597.  -       };
  1600. 1598.  -       if (current) {
  1601. 1599.  -         var x = all_list[current];
  1602. 1600.  -         all_list[current] = all_list[0];
  1603. 1601.  -         all_list[current]._order = current;
  1604. 1602.  -         all_list[0] = x;
  1605. 1603.  -         all_list[0]._order = 0;
  1606. 1604.  -       }
  1607. 1605.  -     } else {
  1608. 1606.  -       for (var i in all_list) {
  1609. 1607.  -         if (all_list[i]._old_order !== undefined) {
  1610. 1608.  -           all_list[i]._order = all_list[i]._old_order;
  1611. 1609.  -           delete all_list[i]._old_order;
  1612. 1610.  -         }
  1613. 1611.  -       };
  1614. 1612.  -     }
  1615. 1613.  -     if (!noShuffle) __cur.justShuffled = true;
  1616. 1614.  -   },
  1617. 1615.  -   mixAudios: function(opts) {
  1618. 1616.  -     opts = opts || {};
  1619. 1617.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur, from_pad = !!opts.from_pad;
  1620. 1618.  -     if (__cur.silent) {
  1621. 1619.  -       __cur.onSilentLoad = function() {
  1622. 1620.  -         Audio.mixAudios(opts);
  1623. 1621.  -       };
  1624. 1622.  -       return;
  1625. 1623.  -     }
  1626. 1624.  -     var _a = window.audioPlayer;
  1627. 1625.  -     Audio.mixAllAudios({from_pad: from_pad, mix: _a && _a.shuffle});
  1628. 1626.  -     if (__cur.curSection == 'recommendations') {
  1629. 1627.  -       Audio.loadRecommendations({from_pad: from_pad, update: 'remix'});
  1630. 1628.  -       return;
  1631. 1629.  -     }
  1632. 1630.  -     if (__cur.curSection == 'popular') {
  1633. 1631.  -       Audio.loadPopular({from_pad: from_pad, update: 'remix'});
  1634. 1632.  -       return;
  1635. 1633.  -     }
  1636. 1634.  -     __cur.ignoreEqual = true;
  1637. 1635.  -     if (__cur.album_id) {
  1638. 1636.  -       this.loadAlbum({from_pad: from_pad, album: __cur.album_id});
  1639. 1637.  -     } else {
  1640. 1638.  -       this.updateList({from_pad: from_pad});
  1641. 1639.  -     }
  1642. 1640.  -     __cur.shuffled = _a && _a.shuffle;
  1643. 1641.  -   },
  1644. 1642.  -
  1645. 1643.  -   loadRecommendations: function(opts) {
  1646. 1644.  -     opts = opts || {};
  1647. 1645.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  1648. 1646.  -         from_pad = !!opts.from_pad, update = opts.update, audioId = opts.audioId;
  1649. 1647.  -     if (__cur.loadingRecs) return;
  1650. 1648.  -     if (update) {
  1651. 1649.  -       delete __cur.recsOffset;
  1652. 1650.  -       delete __cur.recommendIds;
  1653. 1651.  -       delete __cur.recommendAudios;
  1654. 1652.  -       delete __cur.preloadJSON;
  1655. 1653.  -     }
  1656. 1654.  -     if (audioId) {
  1657. 1655.  -       __cur.recsAudioId = audioId;
  1658. 1656.  -     } else if (update === true) {
  1659. 1657.  -       delete __cur.recsAudioId;
  1660. 1658.  -     }
  1661. 1659.  -     each(geByClass('audio_filter', __cur.albumFilters), function(i, e) {
  1662. 1660.  -       removeClass(e, 'selected');
  1663. 1661.  -     });
  1664. 1662.  -     if (__cur.searchStr && isVisible(__cur.searchInfoCont)) {
  1665. 1663.  -       hide(__cur.searchInfoCont);
  1666. 1664.  -     }
  1667. 1665.  -     if (from_pad && ge('pad_footer_text')) {
  1668. 1666.  -       ge('pad_footer_text').innerHTML = '';
  1669. 1667.  -     }
  1670. 1668.  -     var rec_filter = __cur.recFilter;
  1671. 1669.  -     addClass(rec_filter, 'selected');
  1672. 1670.  -     removeClass(__cur.albumFiltered, 'selected');
  1673. 1671.  -     hide(__cur.searchFilters, __cur.popularFilters);
  1674. 1672.  -     if (from_pad || __cur.oid == vk.id) {
  1675. 1673.  -       hide(__cur.audioFriends, __cur.searchInfoCont);
  1676. 1674.  -       Audio.hideAlbums({from_pad: from_pad});
  1677. 1675.  -     }
  1678. 1676.  -     if (from_pad && ge('pad_footer_text')) {
  1679. 1677.  -       ge('pad_footer_text').innerHTML = '';
  1680. 1678.  -     }
  1681. 1679.  -     removeClass(__cur.albumFiltered, 'club_shown');
  1682. 1680.  -     Audio.handleFilterPos();
  1683. 1681.  -     __cur.lastSection = __cur.curSection;
  1684. 1682.  -     __cur.curSection = 'recommendations';
  1685. 1683.  -     if (__cur.recsOffset === undefined) {
  1686. 1684.  -       __cur.recsOffset = 0;
  1687. 1685.  -     } else {
  1688. 1686.  -       addClass(__cur.showMore, 'loading');
  1689. 1687.  -     }
  1690. 1688.  -     if (__cur.recommendIds === undefined) __cur.recommendIds = [];
  1691. 1689.  -     if (__cur.recommendAudios === undefined) __cur.recommendAudios = [];
  1692. 1690.  -     if (__cur.recsCount === undefined) __cur.recsCount = 0;
  1693. 1691.  -     if (__cur.sPreload.innerHTML) {
  1694. 1692.  -       while (__cur.sPreload.firstChild) {
  1695. 1693.  -         var el = __cur.sPreload.firstChild;
  1696. 1694.  -         __cur.aContent.appendChild(el);
  1697. 1695.  -         __cur.recsCount++;
  1698. 1696.  -       }
  1699. 1697.  -       if (from_pad && window.Pads && Pads.updateHeight) {
  1700. 1698.  -         Pads.updateHeight();
  1701. 1699.  -       }
  1702. 1700.  -     }
  1703. 1701.  -     if (__cur.preloadJSON) {
  1704. 1702.  -       json = __cur.preloadJSON['all'];
  1705. 1703.  -       var cur_order = __cur.recsCount;
  1706. 1704.  -       for (var i in json) {
  1707. 1705.  -         var audio = json[i];
  1708. 1706.  -         audio._order = cur_order++;
  1709. 1707.  -         if (indexOf(__cur.recommendIds, audio[0]+"_"+audio[1]) == -1) {
  1710. 1708.  -           __cur.recommendIds.push(audio[0]+"_"+audio[1]);
  1711. 1709.  -           __cur.recommendAudios.push(audio);
  1712. 1710.  -         }
  1713. 1711.  -       }
  1714. 1712.  -       var aid = currentAudioId(), needs_update = __cur.recsOffset && (aid && __cur.recommendIds && indexOf(__cur.recommendIds, aid) != -1);
  1715. 1713.  -       audioPlayer.genPlaylist(__cur.recommendAudios, needs_update);
  1716. 1714.  -     }
  1717. 1715.  -     if (__cur.noRecommendations) {
  1718. 1716.  -       hide(__cur.showMore);
  1719. 1717.  -       delete __cur.noRecommendations;
  1720. 1718.  -       return;
  1721. 1719.  -     }
  1722. 1720.  -     if (opts.tt) {
  1723. 1721.  -       opts.tt.hide();
  1724. 1722.  -     }
  1725. 1723.  -     __cur.loadingRecs = true;
  1726. 1724.  -     __cur.lastAct = 'recommendations';
  1727. 1725.  -     var offset = __cur.recsOffset, query = {act: 'get_recommendations', id: __cur.id, offset: offset},
  1728. 1726.  -         needsUpdate = window.audioPlayer && audioPlayer.shuffle;
  1729. 1727.  -     if (from_pad) {
  1730. 1728.  -       query.from_pad = 1;
  1731. 1729.  -     }
  1732. 1730.  -     if (update == 'remix' || needsUpdate != __cur.recsRemix) {
  1733. 1731.  -       __cur.recsRemix = needsUpdate;
  1734. 1732.  -       query.remix = needsUpdate ? 1 : 0;
  1735. 1733.  -       var aid = currentAudioId();
  1736. 1734.  -       if (aid && window.audioPlaylist && audioPlaylist[aid] && audioPlaylist.address && audioPlaylist.address.indexOf('act=recommendations') > 0) {
  1737. 1735.  -         var a = audioPlaylist[aid];
  1738. 1736.  -         if (a[10]) query.current = a[10]+' '+aid;
  1739. 1737.  -       }
  1740. 1738.  -     }
  1741. 1739.  -     if (__cur.recsAudioId) {
  1742. 1740.  -       query.audio_id = __cur.recsAudioId;
  1743. 1741.  -     }
  1744. 1742.  -     ajax.post(Audio.address, query, {
  1745. 1743.  -       onDone: function(rows, preload, json, preload_json, options, ownersRows) {
  1746. 1744.  -         delete __cur.loadingRecs;
  1747. 1745.  -         if (__cur.lastAct != 'recommendations') return;
  1748. 1746.  -         if (!offset) {
  1749. 1747.  -           if (ownersRows) {
  1750. 1748.  -             val((from_pad ? 'pad_' : '') + 'audio_popular_owners_rows', ownersRows);
  1751. 1749.  -             show(__cur.popularOwners);
  1752. 1750.  -           } else {
  1753. 1751.  -             hide(__cur.popularOwners);
  1754. 1752.  -           }
  1755. 1753.  -         }
  1756. 1754.  -         if (from_pad) {
  1757. 1755.  -           Audio.updatePadFiltersHeight();
  1758. 1756.  -         }
  1759. 1757.  -         if (options.recsCount === 0 && offset) {
  1760. 1758.  -           __cur.noRecommendations = true;
  1761. 1759.  -           delete options.recsOffset;
  1762. 1760.  -         }
  1763. 1761.  -         if (json) {
  1764. 1762.  -           json = eval('('+json+')');
  1765. 1763.  -           json = json['all'];
  1766. 1764.  -           var cur_order = __cur.recsCount;
  1767. 1765.  -           for (var i in json) {
  1768. 1766.  -             var audio = json[i];
  1769. 1767.  -             audio._order = cur_order++;
  1770. 1768.  -             if (indexOf(__cur.recommendIds, audio[0]+"_"+audio[1]) == -1) {
  1771. 1769.  -               __cur.recommendIds.push(audio[0]+"_"+audio[1]);
  1772. 1770.  -               __cur.recommendAudios.push(audio);
  1773. 1771.  -             }
  1774. 1772.  -           }
  1775. 1773.  -           var aid = currentAudioId(), needs_update = query.offset && (aid && __cur.recommendIds && indexOf(__cur.recommendIds, aid) != -1);
  1776. 1774.  -           audioPlayer.genPlaylist(__cur.recommendAudios, needs_update);
  1777. 1775.  -           if (query.audio_id) {
  1778. 1776.  -             cur.nextPlaylist.rec = 1;
  1779. 1777.  -           }
  1780. 1778.  -         }
  1781. 1779.  -         removeClass(__cur.showMore, 'loading');
  1782. 1780.  -         if (offset) {
  1783. 1781.  -           delete options.recsCount;
  1784. 1782.  -         }
  1785. 1783.  -         if (options) extend(__cur, options);
  1786. 1784.  -         if (!offset) {
  1787. 1785.  -           __cur.aContent.innerHTML = rows;
  1788. 1786.  -           if (from_pad && window.Pads && Pads.updateHeight) {
  1789. 1787.  -             Pads.updateHeight();
  1790. 1788.  -           }
  1791. 1789.  -         }
  1792. 1790.  -
  1793. 1791.  -         __cur.preloadJSON = preload_json ? eval('('+preload_json+')') : false;
  1794. 1792.  -         __cur.sPreload.innerHTML = '';
  1795. 1793.  -         var au = ce('div', {innerHTML: preload});
  1796. 1794.  -         while (au.firstChild) {
  1797. 1795.  -           if (!ge(au.firstChild.id)) {
  1798. 1796.  -             var el = au.firstChild;
  1799. 1797.  -             __cur.sPreload.appendChild(el);
  1800. 1798.  -           } else {
  1801. 1799.  -             au.removeChild(au.firstChild);
  1802. 1800.  -           }
  1803. 1801.  -         }
  1804. 1802.  -
  1805. 1803.  -         if (__cur.recsCount && !query.audio_id) {
  1806. 1804.  -           show(__cur.showMore);
  1807. 1805.  -         } else {
  1808. 1806.  -           hide(__cur.showMore);
  1809. 1807.  -         }
  1810. 1808.  -         if (query.remix) {
  1811. 1809.  -           __cur.justShuffled = true;
  1812. 1810.  -         }
  1813. 1811.  -         Audio.changeHTitle({from_pad: from_pad});
  1814. 1812.  -         val(__cur.aSearch, '');
  1815. 1813.  -         removeClass(__cur.clearSearch, 'shown');
  1816. 1814.  -         __cur.searchStr = '';
  1817. 1815.  -         __cur.album_id = 0;
  1818. 1816.  -         Audio.hideSearchResults(from_pad);
  1819. 1817.  -         hide(__cur.sShowMore);
  1820. 1818.  -         if (!offset) {
  1821. 1819.  -           Audio.scrollToTop(from_pad);
  1822. 1820.  -         }
  1823. 1821.  -         if (!from_pad) {
  1824. 1822.  -           delete nav.objLoc.q;
  1825. 1823.  -           delete nav.objLoc.owner;
  1826. 1824.  -           delete nav.objLoc.friend;
  1827. 1825.  -           delete nav.objLoc.album_id;
  1828. 1826.  -           delete nav.objLoc.club;
  1829. 1827.  -           delete nav.objLoc.genre;
  1830. 1828.  -           delete __cur._back;
  1831. 1829.  -           extend(nav.objLoc, {act: 'recommendations'});
  1832. 1830.  -           if (query.audio_id) {
  1833. 1831.  -             extend(nav.objLoc, {audio_id: query.audio_id});
  1834. 1832.  -           } else {
  1835. 1833.  -             delete nav.objLoc.audio_id;
  1836. 1834.  -           }
  1837. 1835.  -           nav.setLoc(nav.objLoc);
  1838. 1836.  -         }
  1839. 1837.  -         var _a = window.audioPlayer;
  1840. 1838.  -         if (_a && _a.showCurrentTrack) _a.showCurrentTrack();
  1841. 1839.  -         if (!from_pad) {
  1842. 1840.  -           Audio.loadCurrentPlaylist();
  1843. 1841.  -         }
  1844. 1842.  -       },
  1845. 1843.  -       onFail: function(msg) {
  1846. 1844.  -         delete __cur.loadingRecs;
  1847. 1845.  -         __cur.curSection = __cur.lastSection;
  1848. 1846.  -         removeClass(__cur.recFilter, 'selected');
  1849. 1847.  -         setTimeout(showFastBox({title: getLang('global_error'), dark: 1}, msg).hide, 3000);
  1850. 1848.  -         return true;
  1851. 1849.  -       },
  1852. 1850.  -       showProgress: function () {
  1853. 1851.  -         addClass(rec_filter, 'loading');
  1854. 1852.  -       },
  1855. 1853.  -       hideProgress: function () {
  1856. 1854.  -         removeClass(rec_filter, 'loading');
  1857. 1855.  -       }
  1858. 1856.  -     });
  1859. 1857.  -     __cur.recsOffset += offset ? 50 : 100;
  1860. 1858.  -   },
  1861. 1859.  -
  1862. 1860.  -   loadPopular: function(opts) {
  1863. 1861.  -     opts = opts || {};
  1864. 1862.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  1865. 1863.  -         from_pad = !!opts.from_pad, update = opts.update, genre = opts.genre;
  1866. 1864.  -     if (__cur.silent) {
  1867. 1865.  -       __cur.onSilentLoad = function() {
  1868. 1866.  -         Audio.loadPopular(opts);
  1869. 1867.  -       };
  1870. 1868.  -       return;
  1871. 1869.  -     }
  1872. 1870.  -     if (__cur.loadingPopular) return;
  1873. 1871.  -     if (__cur.popularAudios === undefined) {
  1874. 1872.  -       __cur.popularAudios = [];
  1875. 1873.  -     }
  1876. 1874.  -     if (update) {
  1877. 1875.  -       delete __cur.popularOffset;
  1878. 1876.  -       delete __cur.popularIds;
  1879. 1877.  -       delete __cur.popularAudios[genre];
  1880. 1878.  -       delete __cur.preloadJSON;
  1881. 1879.  -       if (genre !== undefined) {
  1882. 1880.  -         __cur.genre = genre;
  1883. 1881.  -       }
  1884. 1882.  -     }
  1885. 1883.  -     each(geByClass('audio_filter', __cur.albumFilters), function(i, e) {
  1886. 1884.  -       removeClass(e, 'selected');
  1887. 1885.  -     });
  1888. 1886.  -     if (__cur.searchStr && isVisible(__cur.searchInfoCont)) {
  1889. 1887.  -       hide(__cur.searchInfoCont);
  1890. 1888.  -     }
  1891. 1889.  -     if (from_pad && ge('pad_footer_text')) {
  1892. 1890.  -       ge('pad_footer_text').innerHTML = '';
  1893. 1891.  -     }
  1894. 1892.  -     var genre_filter = false;
  1895. 1893.  -     if (__cur.genre) {
  1896. 1894.  -       var prevGenre = geByClass1('selected', __cur.popularGenres);
  1897. 1895.  -       if (prevGenre) {
  1898. 1896.  -         removeClass(prevGenre, 'selected');
  1899. 1897.  -       }
  1900. 1898.  -
  1901. 1899.  -       genre_filter = ge((from_pad ? 'pad_' : '') + 'audio_genre_'+__cur.genre);
  1902. 1900.  -       if (genre_filter) {
  1903. 1901.  -         addClass(genre_filter, 'selected');
  1904. 1902.  -       } else {
  1905. 1903.  -         __cur.genre = 0;
  1906. 1904.  -       }
  1907. 1905.  -     }
  1908. 1906.  -     var pop_filter = __cur.topFilter;
  1909. 1907.  -     addClass(pop_filter, 'selected');
  1910. 1908.  -     removeClass(__cur.albumFiltered, 'selected');
  1911. 1909.  -     toggle(__cur.audioFriends, false);
  1912. 1910.  -     hide(__cur.searchInfoCont);
  1913. 1911.  -     if (__cur.popularFilters) {
  1914. 1912.  -       show(__cur.popularFilters);
  1915. 1913.  -       Audio.hideAlbums({from_pad: from_pad});
  1916. 1914.  -     } else {
  1917. 1915.  -       Audio.showAlbums({from_pad: from_pad});
  1918. 1916.  -     }
  1919. 1917.  -     removeClass(__cur.albumFiltered, 'club_shown');
  1920. 1918.  -     hide(__cur.searchFilters, __cur.popularOwners);
  1921. 1919.  -     Audio.handleFilterPos();
  1922. 1920.  -     __cur.curSection = 'popular';
  1923. 1921.  -     if (__cur.popularOffset === undefined) {
  1924. 1922.  -       __cur.popularOffset = 0;
  1925. 1923.  -     } else {
  1926. 1924.  -       addClass(__cur.showMore, 'loading');
  1927. 1925.  -     }
  1928. 1926.  -     if (__cur.popularIds === undefined) __cur.popularIds = [];
  1929. 1927.  -     if (__cur.popularAudios[genre] === undefined) __cur.popularAudios[genre] = [];
  1930. 1928.  -     if (__cur.popularCount === undefined) __cur.popularCount = 0;
  1931. 1929.  -     if (__cur.sPreload.innerHTML) {
  1932. 1930.  -       while (__cur.sPreload.firstChild) {
  1933. 1931.  -         var el = __cur.sPreload.firstChild;
  1934. 1932.  -         __cur.aContent.appendChild(el);
  1935. 1933.  -         __cur.popularCount++;
  1936. 1934.  -       }
  1937. 1935.  -       if (from_pad && window.Pads && Pads.updateHeight) {
  1938. 1936.  -         Pads.updateHeight();
  1939. 1937.  -       }
  1940. 1938.  -     }
  1941. 1939.  -     if (__cur.preloadJSON) {
  1942. 1940.  -       json = __cur.preloadJSON['all'];
  1943. 1941.  -       var cur_order = __cur.popularCount;
  1944. 1942.  -       for (var i in json) {
  1945. 1943.  -         var audio = json[i];
  1946. 1944.  -         audio._order = cur_order++;
  1947. 1945.  -         if (indexOf(__cur.popularIds, audio[0]+"_"+audio[1]) == -1) {
  1948. 1946.  -           __cur.popularIds.push(audio[0]+"_"+audio[1]);
  1949. 1947.  -           __cur.popularAudios[genre].push(audio);
  1950. 1948.  -         }
  1951. 1949.  -       }
  1952. 1950.  -       var aid = currentAudioId(), needs_update = __cur.popularOffset && (aid && __cur.popularIds && indexOf(__cur.popularIds, aid) != -1);
  1953. 1951.  -       audioPlayer.genPlaylist(__cur.popularAudios[genre], needs_update);
  1954. 1952.  -     }
  1955. 1953.  -     if (__cur.noPopular) {
  1956. 1954.  -       hide(__cur.showMore);
  1957. 1955.  -       delete __cur.noPopular;
  1958. 1956.  -       return;
  1959. 1957.  -     }
  1960. 1958.  -     __cur.loadingPopular = true;
  1961. 1959.  -     __cur.lastAct = 'popular';
  1962. 1960.  -     var offset = __cur.popularOffset, query = {act: 'get_popular', offset: offset},
  1963. 1961.  -         needsUpdate = window.audioPlayer && audioPlayer.shuffle;
  1964. 1962.  -     if (from_pad) {
  1965. 1963.  -       query.from_pad = 1;
  1966. 1964.  -     }
  1967. 1965.  -     if (nav.objLoc.update)  {
  1968. 1966.  -       query.update = 1;
  1969. 1967.  -     }
  1970. 1968.  -     if (needsUpdate && !offset) query.offset = -1;
  1971. 1969.  -     if (update == 'remix' || needsUpdate != __cur.popRemix) {
  1972. 1970.  -       __cur.popRemix = needsUpdate;
  1973. 1971.  -       query.remix = needsUpdate ? 1 : 0;
  1974. 1972.  -       var aid = currentAudioId();
  1975. 1973.  -       if (aid && window.audioPlaylist && audioPlaylist[aid] && audioPlaylist.address && audioPlaylist.address.indexOf('act=popular') > 0) {
  1976. 1974.  -         query.current = aid;
  1977. 1975.  -       }
  1978. 1976.  -     }
  1979. 1977.  -     if (__cur.topType !== undefined) {
  1980. 1978.  -       query.type = __cur.topType;
  1981. 1979.  -       delete __cur.topType;
  1982. 1980.  -     }
  1983. 1981.  -     if (__cur.genre) {
  1984. 1982.  -       query.genre = __cur.genre;
  1985. 1983.  -     }
  1986. 1984.  -     ajax.post(Audio.address, query, {
  1987. 1985.  -       onDone: function(rows, preload, json, preload_json, options, genres) {
  1988. 1986.  -         delete __cur.loadingPopular;
  1989. 1987.  -         if (__cur.lastAct != 'popular') return;
  1990. 1988.  -         if (options.popularCount === 0 && offset) {
  1991. 1989.  -           __cur.noPopular = true;
  1992. 1990.  -           delete options.popularOffset;
  1993. 1991.  -         }
  1994. 1992.  -         if (json) {
  1995. 1993.  -           json = eval('('+json+')');
  1996. 1994.  -           json = json['all'];
  1997. 1995.  -           var cur_order = __cur.popularCount;
  1998. 1996.  -           for (var i in json) {
  1999. 1997.  -             var audio = json[i];
  2000. 1998.  -             audio._order = cur_order++;
  2001. 1999.  -             if (indexOf(__cur.popularIds, audio[0]+"_"+audio[1]) == -1) {
  2002. 2000.  -               __cur.popularIds.push(audio[0]+"_"+audio[1]);
  2003. 2001.  -               __cur.popularAudios[genre].push(audio);
  2004. 2002.  -             }
  2005. 2003.  -           }
  2006. 2004.  -           var aid = currentAudioId(), needs_update = query.offset && (aid && __cur.popularIds && indexOf(__cur.popularIds, aid) != -1);
  2007. 2005.  -           audioPlayer.genPlaylist(__cur.popularAudios[genre], needs_update);
  2008. 2006.  -         }
  2009. 2007.  -         removeClass(__cur.showMore, 'loading');
  2010. 2008.  -         if (offset) {
  2011. 2009.  -           delete options.popularCount;
  2012. 2010.  -         }
  2013. 2011.  -         if (options) extend(__cur, options);
  2014. 2012.  -         if (!offset) {
  2015. 2013.  -           __cur.aContent.innerHTML = rows;
  2016. 2014.  -           if (from_pad && window.Pads && Pads.updateHeight) {
  2017. 2015.  -             Pads.updateHeight();
  2018. 2016.  -           }
  2019. 2017.  -           Audio.scrollToTop(from_pad);
  2020. 2018.  -         }
  2021. 2019.  -
  2022. 2020.  -         if (preload_json) {
  2023. 2021.  -           __cur.preloadJSON = eval('('+preload_json+')');
  2024. 2022.  -         } else {
  2025. 2023.  -           __cur.preloadJSON = {};
  2026. 2024.  -         }
  2027. 2025.  -         __cur.sPreload.innerHTML = '';
  2028. 2026.  -         var au = ce('div', {innerHTML: preload});
  2029. 2027.  -         while (au.firstChild) {
  2030. 2028.  -           if (!ge(au.firstChild.id)) {
  2031. 2029.  -             var el = au.firstChild;
  2032. 2030.  -             __cur.sPreload.appendChild(el);
  2033. 2031.  -           } else {
  2034. 2032.  -             au.removeChild(au.firstChild);
  2035. 2033.  -           }
  2036. 2034.  -         }
  2037. 2035.  -
  2038. 2036.  -         if (__cur.popularCount) {
  2039. 2037.  -           show(__cur.showMore);
  2040. 2038.  -         } else {
  2041. 2039.  -           hide(__cur.showMore);
  2042. 2040.  -         }
  2043. 2041.  -         if (update == 'remix') {
  2044. 2042.  -           __cur.justShuffled = true;
  2045. 2043.  -         }
  2046. 2044.  -         if (genres) {
  2047. 2045.  -           __cur.popularGenres.innerHTML = genres;
  2048. 2046.  -         }
  2049. 2047.  -         Audio.changeHTitle({from_pad: from_pad});
  2050. 2048.  -         val(__cur.aSearch, '');
  2051. 2049.  -         removeClass(__cur.clearSearch, 'shown');
  2052. 2050.  -         __cur.searchStr = '';
  2053. 2051.  -         __cur.album_id = 0;
  2054. 2052.  -         Audio.hideSearchResults(from_pad);
  2055. 2053.  -         hide(__cur.sShowMore);
  2056. 2054.  -         if (!from_pad) {
  2057. 2055.  -           delete nav.objLoc.q;
  2058. 2056.  -           delete nav.objLoc.owner;
  2059. 2057.  -           delete nav.objLoc.friend;
  2060. 2058.  -           delete nav.objLoc.album_id;
  2061. 2059.  -           delete nav.objLoc.club;
  2062. 2060.  -           delete nav.objLoc.genre;
  2063. 2061.  -           delete nav.objLoc.audio_id;
  2064. 2062.  -           nav.objLoc.act = 'popular';
  2065. 2063.  -           if (__cur.genre) {
  2066. 2064.  -             nav.objLoc.genre = __cur.genre;
  2067. 2065.  -           } else {
  2068. 2066.  -             delete nav.objLoc.genre;
  2069. 2067.  -           }
  2070. 2068.  -           nav.setLoc(nav.objLoc);
  2071. 2069.  -         }
  2072. 2070.  -         var _a = window.audioPlayer;
  2073. 2071.  -         if (_a && _a.showCurrentTrack) _a.showCurrentTrack();
  2074. 2072.  -         if (window.tooltips) {
  2075. 2073.  -           tooltips.destroyAll();
  2076. 2074.  -         }
  2077. 2075.  -         if (!from_pad) {
  2078. 2076.  -           Audio.loadCurrentPlaylist();
  2079. 2077.  -         }
  2080. 2078.  -         if (options.infoJS) {
  2081. 2079.  -           eval('(function(){' + options.infoJS + ';})()');
  2082. 2080.  -         }
  2083. 2081.  -       },
  2084. 2082.  -       showProgress: function () {
  2085. 2083.  -         addClass(genre_filter || pop_filter, 'loading');
  2086. 2084.  -       },
  2087. 2085.  -       hideProgress: function () {
  2088. 2086.  -         removeClass(genre_filter || pop_filter, 'loading');
  2089. 2087.  -       }
  2090. 2088.  -     });
  2091. 2089.  -     __cur.popularOffset += offset ? 50 : 100;
  2092. 2090.  -   },
  2093. 2091.  -
  2094. 2092.  -   loadFeed: function(opts) {
  2095. 2093.  -     opts = opts || {};
  2096. 2094.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  2097. 2095.  -         from_pad = !!opts.from_pad, update = opts.update;
  2098. 2096.  -     if (__cur.silent) {
  2099. 2097.  -       __cur.onSilentLoad = function() {
  2100. 2098.  -         Audio.loadFeed(opts);
  2101. 2099.  -       };
  2102. 2100.  -       return;
  2103. 2101.  -     }
  2104. 2102.  -     if (__cur.isFeedLoading) return;
  2105. 2103.  -     __cur.isFeedLoading = true;
  2106. 2104.  -     if (__cur.audiosList && __cur.audiosList['all'] && __cur.allAudiosIndex != 'all') {
  2107. 2105.  -       __cur.allAudiosIndex = 'all';
  2108. 2106.  -       this.indexAll({from_pad: from_pad});
  2109. 2107.  -       var curEl = geByClass1('current', __cur.friendsList);
  2110. 2108.  -       if (curEl) removeClass(curEl, 'current');
  2111. 2109.  -     }
  2112. 2110.  -     if (update) {
  2113. 2111.  -       delete __cur.feedFrom;
  2114. 2112.  -       delete __cur.feedOffset;
  2115. 2113.  -       delete __cur.feedIds;
  2116. 2114.  -       delete __cur.feedAudios;
  2117. 2115.  -       if (update === 'reload') {
  2118. 2116.  -         var params = {act: 'feed', part: 1, update: 1}, q = Audio.address + '#' + ajx2q(params);
  2119. 2117.  -         delete window.ajaxCache[q];
  2120. 2118.  -       }
  2121. 2119.  -     }
  2122. 2120.  -     each(geByClass('audio_filter', __cur.albumFilters), function(i, e) {
  2123. 2121.  -       removeClass(e, 'selected');
  2124. 2122.  -     });
  2125. 2123.  -     if (__cur.searchStr && isVisible(__cur.searchInfoCont)) {
  2126. 2124.  -       hide(__cur.searchInfoCont);
  2127. 2125.  -     }
  2128. 2126.  -     if (from_pad && ge('pad_footer_text')) {
  2129. 2127.  -       ge('pad_footer_text').innerHTML = '';
  2130. 2128.  -     }
  2131. 2129.  -     addClass(__cur.feedFilter, 'selected');
  2132. 2130.  -     removeClass(__cur.albumFiltered, 'selected');
  2133. 2131.  -     hide(__cur.searchFilters, __cur.popularFilters, __cur.popularOwners);
  2134. 2132.  -     if (from_pad || __cur.oid == vk.id) {
  2135. 2133.  -       show(__cur.audioFriends);
  2136. 2134.  -       hide(__cur.searchInfoCont);
  2137. 2135.  -       Audio.hideAlbums({from_pad: from_pad});
  2138. 2136.  -     }
  2139. 2137.  -     removeClass(__cur.albumFiltered, 'club_shown');
  2140. 2138.  -     Audio.handleFilterPos();
  2141. 2139.  -     __cur.lastSection = __cur.curSection;
  2142. 2140.  -     __cur.curSection = 'feed';
  2143. 2141.  -     if (!update) {
  2144. 2142.  -       addClass(__cur.showMore, 'loading');
  2145. 2143.  -     }
  2146. 2144.  -     __cur.lastAct = 'feed';
  2147. 2145.  -     var query = {act: 'feed', offset: __cur.feedOffset, from: __cur.feedFrom, part: 1, update: update ? 1 : ''};
  2148. 2146.  -     if (from_pad) {
  2149. 2147.  -       query.from_pad = 1;
  2150. 2148.  -     }
  2151. 2149.  -     ajax.post(Audio.address, query, {
  2152. 2150.  -       onDone: function (rows, script) {
  2153. 2151.  -         if (__cur.lastAct != 'feed') return;
  2154. 2152.  -         if (rows) {
  2155. 2153.  -           if (update) {
  2156. 2154.  -             __cur.aContent.innerHTML = rows;
  2157. 2155.  -           } else {
  2158. 2156.  -             var au = ce('div'), par = geByClass1('wall_module', __cur.aContent), row;
  2159. 2157.  -             au.innerHTML = rows;
  2160. 2158.  -             if (par && update) {
  2161. 2159.  -               par.innerHTML = '';
  2162. 2160.  -             }
  2163. 2161.  -             while (row = au.firstChild) {
  2164. 2162.  -               if (!row.id || ge(row.id)) {
  2165. 2163.  -                 au.removeChild(row);
  2166. 2164.  -                 continue;
  2167. 2165.  -               }
  2168. 2166.  -               if (par) {
  2169. 2167.  -                 par.appendChild(row);
  2170. 2168.  -               }
  2171. 2169.  -             }
  2172. 2170.  -           }
  2173. 2171.  -         } else {
  2174. 2172.  -           hide(__cur.showMore);
  2175. 2173.  -         }
  2176. 2174.  -         if (from_pad && window.Pads && Pads.updateHeight) {
  2177. 2175.  -           Pads.updateHeight();
  2178. 2176.  -         }
  2179. 2177.  -         if (script) {
  2180. 2178.  -           eval(script);
  2181. 2179.  -         }
  2182. 2180.  -         var aid = currentAudioId(), needs_update = query.offset && (aid && __cur.feedIds && indexOf(__cur.feedIds, aid) != -1 && window.audioPlaylist && audioPlaylist.address && audioPlaylist.address.indexOf('act=feed') != -1);
  2183. 2181.  -         audioPlayer.genPlaylist(__cur.feedAudios, needs_update);
  2184. 2182.  -         removeClass(__cur.showMore, 'loading');
  2185. 2183.  -         Audio.changeHTitle({from_pad: from_pad});
  2186. 2184.  -         val(__cur.aSearch, '');
  2187. 2185.  -         removeClass(__cur.clearSearch, 'shown');
  2188. 2186.  -         __cur.searchStr = '';
  2189. 2187.  -         __cur.album_id = 0;
  2190. 2188.  -         Audio.hideSearchResults(from_pad);
  2191. 2189.  -         hide(__cur.sShowMore);
  2192. 2190.  -         if (update) {
  2193. 2191.  -           Audio.scrollToTop(from_pad);
  2194. 2192.  -         }
  2195. 2193.  -         if (!from_pad) {
  2196. 2194.  -           delete nav.objLoc.q;
  2197. 2195.  -           delete nav.objLoc.owner;
  2198. 2196.  -           delete nav.objLoc.friend;
  2199. 2197.  -           delete nav.objLoc.album_id;
  2200. 2198.  -           delete nav.objLoc.club;
  2201. 2199.  -           delete nav.objLoc.genre;
  2202. 2200.  -           delete nav.objLoc.audio_id;
  2203. 2201.  -           delete __cur._back;
  2204. 2202.  -           extend(nav.objLoc, {act: 'feed'});
  2205. 2203.  -           nav.setLoc(nav.objLoc);
  2206. 2204.  -         }
  2207. 2205.  -         var _a = window.audioPlayer;
  2208. 2206.  -         if (_a && _a.showCurrentTrack) _a.showCurrentTrack();
  2209. 2207.  -       },
  2210. 2208.  -       showProgress: function () {
  2211. 2209.  -         __cur.isFeedLoading = true;
  2212. 2210.  -         addClass(__cur.feedFilter, 'loading');
  2213. 2211.  -       },
  2214. 2212.  -       hideProgress: function () {
  2215. 2213.  -         __cur.isFeedLoading = false;
  2216. 2214.  -         removeClass(__cur.feedFilter, 'loading');
  2217. 2215.  -       },
  2218. 2216.  -       cache: 1
  2219. 2217.  -     });
  2220. 2218.  -   },
  2221. 2219.  -
  2222. 2220.  -   loadCurrentPlaylist: function() {
  2223. 2221.  -     if (!window.Pads || !Pads.showAudios || !window._pads || _pads.shown != 'mus') {
  2224. 2222.  -       return;
  2225. 2223.  -     }
  2226. 2224.  -     var __cur = _pads.cur;
  2227. 2225.  -     __cur.aContent.innerHTML = '';
  2228. 2226.  -
  2229. 2227.  -     each(geByClass('audio_filter', __cur.albumFilters), function(i, e) {
  2230. 2228.  -       removeClass(e, 'selected');
  2231. 2229.  -     });
  2232. 2230.  -     removeClass(__cur.albumFiltered, 'selected');
  2233. 2231.  -     addClass(__cur.currentFilter, 'selected');
  2234. 2232.  -     hide(__cur.popularFilters, __cur.popularOwners, __cur.searchFilters, __cur.searchInfoCont);
  2235. 2233.  -     show(__cur.audioFriends, __cur.showMore, __cur.currentFilter);
  2236. 2234.  -     Audio.hideAlbums({from_pad: true});
  2237. 2235.  -
  2238. 2236.  -     val(__cur.aSearch, '');
  2239. 2237.  -     removeClass(__cur.clearSearch, 'shown');
  2240. 2238.  -     __cur.lastSection = __cur.curSection;
  2241. 2239.  -     __cur.lastAct = __cur.searchStr = __cur.curSection = '';
  2242. 2240.  -     __cur.album_id = 0;
  2243. 2241.  -     Audio.hideSearchResults(true);
  2244. 2242.  -
  2245. 2243.  -     Pads.showAudios();
  2246. 2244.  -
  2247. 2245.  -     var _a = window.audioPlayer;
  2248. 2246.  -     if (_a && _a.showCurrentTrack) _a.showCurrentTrack();
  2249. 2247.  -   },
  2250. 2248.  -
  2251. 2249.  -   reorderPlaylist: function(aid, before_id, after_id) {
  2252. 2250.  -     each([window.audioPlaylist, cur.nextPlaylist], function(i, e) {
  2253. 2251.  -       var list = e;
  2254. 2252.  -       if (before_id && !after_id && list && list[before_id]) {
  2255. 2253.  -         after_id = list[before_id]._prev;
  2256. 2254.  -       }
  2257. 2255.  -       if (list && list[aid] && after_id && list[after_id] && after_id != aid) {
  2258. 2256.  -         var next_id = list[aid]._next, prev_id = list[aid]._prev;
  2259. 2257.  -         if (next_id != aid) {
  2260. 2258.  -           list[next_id]._prev = prev_id;
  2261. 2259.  -           list[prev_id]._next = next_id;
  2262. 2260.  -           list[aid]._prev = after_id;
  2263. 2261.  -           list[aid]._next = list[after_id]._next;
  2264. 2262.  -           list[after_id]._next = list[list[after_id]._next]._prev = aid;
  2265. 2263.  -         }
  2266. 2264.  -       }
  2267. 2265.  -     });
  2268. 2266.  -     var plist = ls.get('pad_playlist');
  2269. 2267.  -     if (plist && plist[aid] && after_id && plist[after_id] && after_id != aid && window.audioPlayer) {
  2270. 2268.  -       audioPlayer.setPadPlaylist();
  2271. 2269.  -     }
  2272. 2270.  -   },
  2273. 2271.  -
  2274. 2272.  -   removeFromPlaylist: function(aid) {
  2275. 2273.  -     each([window.audioPlaylist, cur.nextPlaylist], function(i, e) {
  2276. 2274.  -       var list = e;
  2277. 2275.  -       if (list && list[aid]) {
  2278. 2276.  -         var next_id = list[aid]._next, prev_id = list[aid]._prev;
  2279. 2277.  -         if (next_id != aid) {
  2280. 2278.  -           // delete list[aid];
  2281. 2279.  -           list[next_id]._prev = prev_id;
  2282. 2280.  -           list[prev_id]._next = next_id;
  2283. 2281.  -         }
  2284. 2282.  -       }
  2285. 2283.  -     });
  2286. 2284.  -     var plist = ls.get('pad_playlist');
  2287. 2285.  -     if (plist && plist[aid] && window.audioPlayer) {
  2288. 2286.  -       audioPlayer.setPadPlaylist();
  2289. 2287.  -     }
  2290. 2288.  -   },
  2291. 2289.  -
  2292. 2290.  -   backToPlaylist: function(aid) {
  2293. 2291.  -     each([window.audioPlaylist, cur.nextPlaylist], function(i, e) {
  2294. 2292.  -       var list = e;
  2295. 2293.  -       if (list && list[aid]) {
  2296. 2294.  -         var next_id = list[aid]._next, prev_id = list[aid]._prev;
  2297. 2295.  -         if (next_id != aid) {
  2298. 2296.  -           list[next_id]._prev = list[prev_id]._next = aid;
  2299. 2297.  -         }
  2300. 2298.  -       }
  2301. 2299.  -     });
  2302. 2300.  -     var plist = ls.get('pad_playlist');
  2303. 2301.  -     if (plist && plist[aid] && window.audioPlayer) {
  2304. 2302.  -       audioPlayer.setPadPlaylist();
  2305. 2303.  -     }
  2306. 2304.  -   },
  2307. 2305.  -
  2308. 2306.  -   hideRecommendation: function(aid, q, hash, event) {
  2309. 2307.  -     if (window.audioPlayer && currentAudioId() == aid) {
  2310. 2308.  -       audioPlayer.nextTrack(true);
  2311. 2309.  -     }
  2312. 2310.  -     var recRow = ge('audio'+aid);
  2313. 2311.  -     if (recRow) {
  2314. 2312.  -       if (window.tooltips) {
  2315. 2313.  -         tooltips.hide(ge('remove'+aid))
  2316. 2314.  -       }
  2317. 2315.  -       slideUp(recRow, 200, function() {
  2318. 2316.  -         recRow.parentNode.removeChild(recRow);
  2319. 2317.  -         Audio.removeFromPlaylist(aid);
  2320. 2318.  -         cur.recsCount--;
  2321. 2319.  -         Audio.changeHTitle();
  2322. 2320.  -       });
  2323. 2321.  -     }
  2324. 2322.  -     ajax.post(Audio.address, {act: 'hide_recommendation', q: q, hash: hash});
  2325. 2323.  -     if (event) cancelEvent(event);
  2326. 2324.  -     return false;
  2327. 2325.  -   },
  2328. 2326.  -
  2329. 2327.  -   _animDelX: function(el, opacity, set_active) {
  2330. 2328.  -     if (!el) return;
  2331. 2329.  -     if (set_active !== undefined) {
  2332. 2330.  -       el.active = set_active;
  2333. 2331.  -     } else if (el.active) {
  2334. 2332.  -       return;
  2335. 2333.  -     }
  2336. 2334.  -     animate(el, {opacity: opacity}, 200);
  2337. 2335.  -   },
  2338. 2336.  -
  2339. 2337.  -   rowActive: function(el, tt, sh) {
  2340. 2338.  -     Audio._animDelX(el, 1, 1);
  2341. 2339.  -     if (tt) showTooltip(el, {text: tt, showdt: 0, black: 1, shift: (sh ? sh : [12, 4, 0])});
  2342. 2340.  -   },
  2343. 2341.  -   rowInactive: function(el, light) {
  2344. 2342.  -     var opacity = light ? 0.6 : 0.4;
  2345. 2343.  -     Audio._animDelX(el, opacity, 0);
  2346. 2344.  -   },
  2347. 2345.  -
  2348. 2346.  -   selectFriend: function(opts, ev) {
  2349. 2347.  -     opts = opts || {};
  2350. 2348.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  2351. 2349.  -         from_pad = !!opts.from_pad, id = opts.id;
  2352. 2350.  -     if (__cur.skipSelectFriend) {
  2353. 2351.  -       __cur.skipSelectFriend = false;
  2354. 2352.  -       return;
  2355. 2353.  -     }
  2356. 2354.  -     each(geByTag('div', __cur.audioFriends), function(i, e) {
  2357. 2355.  -       removeClass(e, 'current');
  2358. 2356.  -     });
  2359. 2357.  -     addClass(ge((from_pad ? 'pad_' : '') + 'audio_friend' + id), 'current');
  2360. 2358.  -     addClass(ge((from_pad ? 'pad_' : '') + 'album0'), 'loading');
  2361. 2359.  -     each(geByClass('audio_filter', __cur.albumFilters), function(i, e) {
  2362. 2360.  -       removeClass(e, 'selected');
  2363. 2361.  -     });
  2364. 2362.  -     Audio.loadFriendsAudios({id: id, index: 'friend' + id, from_pad: from_pad});
  2365. 2363.  -     if (id && (__cur.oid == vk.id || from_pad)) {
  2366. 2364.  -       ajax.post(Audio.address, {act: 'list_stats', owner: id});
  2367. 2365.  -     }
  2368. 2366.  -     return ev ? cancelEvent(ev) : false;
  2369. 2367.  -   },
  2370. 2368.  -   skipSelectFriend: function(opts) {
  2371. 2369.  -     opts = opts || {};
  2372. 2370.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur;
  2373. 2371.  -     __cur.skipSelectFriend = true;
  2374. 2372.  -   },
  2375. 2373.  -   selectCommunity: function(opts, ev) {
  2376. 2374.  -     opts = opts || {};
  2377. 2375.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  2378. 2376.  -         from_pad = !!opts.from_pad, id = opts.id;
  2379. 2377.  -     if (__cur.skipSelectCommunity) {
  2380. 2378.  -       __cur.skipSelectCommunity = false;
  2381. 2379.  -       return;
  2382. 2380.  -     }
  2383. 2381.  -     each(geByClass('audio_friend', __cur.searchInfoCont), function(i, e) {
  2384. 2382.  -       removeClass(e, 'current');
  2385. 2383.  -     });
  2386. 2384.  -     addClass(ge((from_pad ? 'pad_' : '') + 'audio_community' + id), 'current');
  2387. 2385.  -     mentionOver(ge((from_pad ? 'pad_' : '') + 'audio_community' + id), {shift: [47, 7, 7]});
  2388. 2386.  -     each(geByClass('audio_filter', __cur.albumFilters), function(i, e) {
  2389. 2387.  -       removeClass(e, 'selected');
  2390. 2388.  -     });
  2391. 2389.  -     addClass(__cur.albumFiltered, 'club_shown');
  2392. 2390.  -     __cur.searchSortFilter.disable(true);
  2393. 2391.  -     __cur.searchLyricsFilter.disable(true);
  2394. 2392.  -     removeClass(__cur.albumFiltered, 'selected');
  2395. 2393.  -     __cur.club = id;
  2396. 2394.  -     Audio.loadCommunityAudios({from_pad: from_pad, gid: id, index: 'club' + id});
  2397. 2395.  -     if (id && (__cur.oid == vk.id || from_pad)) {
  2398. 2396.  -       ajax.post(Audio.address, {act: 'list_stats', club: id});
  2399. 2397.  -     }
  2400. 2398.  -     return ev ? cancelEvent(ev) : false;
  2401. 2399.  -   },
  2402. 2400.  -   skipSelectCommunity: function(opts) {
  2403. 2401.  -     opts = opts || {};
  2404. 2402.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur;
  2405. 2403.  -     __cur.skipSelectCommunity = true;
  2406. 2404.  -   },
  2407. 2405.  -   backToSearch: function(from_pad) {
  2408. 2406.  -     var __cur = from_pad ? window._pads && _pads.cur : window.cur;
  2409. 2407.  -     if (__cur.curSection && __cur.curSection.substr(0, 4) == 'club') {
  2410. 2408.  -       __cur.ignoreEqual = true;
  2411. 2409.  -       each(geByClass('audio_friend', __cur.searchInfoCont), function() {
  2412. 2410.  -         removeClass(this, 'current');
  2413. 2411.  -       });
  2414. 2412.  -       this.updateList({from_pad: from_pad});
  2415. 2413.  -     }
  2416. 2414.  -   },
  2417. 2415.  -   playCurrent: function(el, hash, ev) {
  2418. 2416.  -     var _a = window.audioPlayer, aid = currentAudioId(), audioId = el.getAttribute('data-audio');
  2419. 2417.  -     if (_a) _a.gpDisabled = false;
  2420. 2418.  -     if ((window.audioPlaylist || {})[audioId]) {
  2421. 2419.  -       if (!_a || aid != audioId || _a.player.paused()) playAudioNew(audioId);
  2422. 2420.  -       return cancelEvent(ev);
  2423. 2421.  -     }
  2424. 2422.  -
  2425. 2423.  -     var prg = el.nextSibling || el.parentNode.appendChild(ce('span', {className: 'progress_inline current_audio_prg'}));
  2426. 2424.  -     stManager.add(['audioplayer.css', 'audioplayer.js'], ajax.post.pbind(Audio.address, {act: 'play_audio_status', id: audioId, hash: hash}, {
  2427. 2425.  -       onDone: function(info, data, uid) {
  2428. 2426.  -         if (data && uid) {
  2429. 2427.  -           audioPlayer.statusData = audioPlayer.statusData || {};
  2430. 2428.  -           audioPlayer.statusData[uid] = data;
  2431. 2429.  -         }
  2432. 2430.  -         if (!info) return;
  2433. 2431.  -
  2434. 2432.  -         if (!window.audioPlaylist) {
  2435. 2433.  -           window.audioPlaylist = {};
  2436. 2434.  -         }
  2437. 2435.  -         audioPlaylist[audioId] = info;
  2438. 2436.  -         audioPlaylist.start = audioId;
  2439. 2437.  -         if (data && uid) {
  2440. 2438.  -           audioPlaylist.statusData = data;
  2441. 2439.  -         } else {
  2442. 2440.  -           delete audioPlaylist.statusData;
  2443. 2441.  -         }
  2444. 2442.  -         audioPlayer.setPadPlaylist(audioPlaylist);
  2445. 2443.  -         playAudioNew(audioId);
  2446. 2444.  -       },
  2447. 2445.  -       showProgress: function() {
  2448. 2446.  -         show(prg);
  2449. 2447.  -         hide(el);
  2450. 2448.  -       },
  2451. 2449.  -       hideProgress: function() {
  2452. 2450.  -         hide(prg);
  2453. 2451.  -         show(el);
  2454. 2452.  -       }
  2455. 2453.  -     }));
  2456. 2454.  -     return cancelEvent(ev);
  2457. 2455.  -   },
  2458. 2456.  -   loadFriendsAudios: function(opts) {
  2459. 2457.  -     opts = opts || {};
  2460. 2458.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  2461. 2459.  -         from_pad = !!opts.from_pad, id = opts.id, index = opts.index, str = opts.str,
  2462. 2460.  -         album = opts.album, showAlbums = opts.showAlbums, owner = opts.owner;
  2463. 2461.  -     if (__cur.silent) {
  2464. 2462.  -       __cur.onSilentLoad = function() {
  2465. 2463.  -         Audio.loadFriendsAudios(opts);
  2466. 2464.  -       };
  2467. 2465.  -       return;
  2468. 2466.  -     }
  2469. 2467.  -     if (!__cur.audiosList[index]) {
  2470. 2468.  -       if (index == 'all') {
  2471. 2469.  -         each(geByClass('audio_filter', __cur.albumFilters), function(i, e) {
  2472. 2470.  -           removeClass(e, 'selected');
  2473. 2471.  -         });
  2474. 2472.  -         if (showAlbums) {
  2475. 2473.  -           addClass(__cur.albumsFilter, 'loading');
  2476. 2474.  -         } else if (album) {
  2477. 2475.  -           addClass(ge((from_pad ? 'pad_' : '') + 'album' + album), 'selected loading');
  2478. 2476.  -         } else {
  2479. 2477.  -           addClass(ge((from_pad ? 'pad_' : '') + 'album0'), 'selected loading');
  2480. 2478.  -         }
  2481. 2479.  -         removeClass(__cur.albumFiltered, 'selected');
  2482. 2480.  -       }
  2483. 2481.  -       __cur.lastAct = index;
  2484. 2482.  -       var query = {act: 'load_audios_silent', id: id, claim: nav.objLoc.claim, please_dont_ddos: 3};
  2485. 2483.  -       if (owner) {
  2486. 2484.  -         query.is_owner = 1;
  2487. 2485.  -       }
  2488. 2486.  -       if (index != 'all' && !ge((from_pad ? 'pad_' : '') + 'audio_friend' + id) && !owner) {
  2489. 2487.  -         __cur.shownFriends = [];
  2490. 2488.  -         var txt = domFC(ge(__cur.audioMoreFriensId)), prg = domLC(ge(__cur.audioMoreFriensId));
  2491. 2489.  -         Audio.showMoreFriends({from_pad: from_pad, onShow: function() {
  2492. 2490.  -           hide(txt);
  2493. 2491.  -           show(prg);
  2494. 2492.  -         }, onHide: function() {
  2495. 2493.  -           hide(prg);
  2496. 2494.  -           show(txt);
  2497. 2495.  -         }, friend: id});
  2498. 2496.  -       }
  2499. 2497.  -       ajax.post(Audio.address, query, {
  2500. 2498.  -         cache: 1,
  2501. 2499.  -         onDone: function(data, options) {
  2502. 2500.  -           if (__cur.lastAct != index) return;
  2503. 2501.  -           options = eval('('+options+')');
  2504. 2502.  -           if (options.summaryLang) {
  2505. 2503.  -             __cur.summaryLang = extend(__cur.summaryLang || {}, options.summaryLang);
  2506. 2504.  -           }
  2507. 2505.  -           if (id < 0) {
  2508. 2506.  -             __cur.allFriendsHTitles = __cur.allFriendsHTitles || {};
  2509. 2507.  -             __cur.allFriendsHTitles[id] = options.summaryLang.all_club_htitle;
  2510. 2508.  -           } else {
  2511. 2509.  -             __cur.allFriendsTitles = __cur.allFriendsTitles || {};
  2512. 2510.  -             __cur.allFriendsTitles[id] = options.summaryLang.all_friend_title;
  2513. 2511.  -             __cur.allFriendsHTitles = __cur.allFriendsHTitles || {};
  2514. 2512.  -             __cur.allFriendsHTitles[id] = options.summaryLang.all_friend_htitle;
  2515. 2513.  -           }
  2516. 2514.  -           var obj = eval('('+data+')');
  2517. 2515.  -           if (!obj) return;
  2518. 2516.  -           __cur.audiosList[index] = obj['all'];
  2519. 2517.  -           if (id == vk.id && index == 'all') {
  2520. 2518.  -             __cur.allAudiosIndex = 'all';
  2521. 2519.  -             Audio.generateAlbums(from_pad);
  2522. 2520.  -           }
  2523. 2521.  -           if (!__cur.performerInfo) {
  2524. 2522.  -             __cur.performerInfo = {};
  2525. 2523.  -           }
  2526. 2524.  -           __cur.performerInfo[index] = options.performerInfo;
  2527. 2525.  -           if (options.backLink && !from_pad) {
  2528. 2526.  -             __cur.backLink = options.backLink;
  2529. 2527.  -             showBackLink('/audios' + vk.id + '?act=popular'+(__cur.genre ? '&genre='+__cur.genre : ''), __cur.backLink);
  2530. 2528.  -           }
  2531. 2529.  -           if (index != 'all') __cur.audioFriend = id;
  2532. 2530.  -           Audio.changeAllIndex({from_pad: from_pad, index: index, album: album, showAlbums: showAlbums, owner: owner, str: str});
  2533. 2531.  -           Audio.cacheFriendsList(from_pad);
  2534. 2532.  -         }
  2535. 2533.  -       });
  2536. 2534.  -     } else {
  2537. 2535.  -       if (index != 'all') __cur.audioFriend = id;
  2538. 2536.  -       if (owner && !from_pad) {
  2539. 2537.  -         showBackLink('/audios' + vk.id + '?act=popular'+(__cur.genre ? '&genre='+__cur.genre : ''), __cur.backLink);
  2540. 2538.  -       }
  2541. 2539.  -       Audio.changeAllIndex({from_pad: from_pad, index: index, album: album, showAlbums: showAlbums, owner: owner, str: str});
  2542. 2540.  -     }
  2543. 2541.  -   },
  2544. 2542.  -   loadCommunityAudios: function(opts) {
  2545. 2543.  -     opts = opts || {};
  2546. 2544.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  2547. 2545.  -         from_pad = !!opts.from_pad, gid = opts.gid, index = opts.index;
  2548. 2546.  -     if (__cur.silent) {
  2549. 2547.  -       __cur.onSilentLoad = function() {
  2550. 2548.  -         Audio.loadCommunityAudios(opts);
  2551. 2549.  -       };
  2552. 2550.  -       return;
  2553. 2551.  -     }
  2554. 2552.  -     if (!__cur.audiosList[index]) {
  2555. 2553.  -       __cur.lastAct = index;
  2556. 2554.  -       ajax.post(Audio.address, {act: 'load_audios_silent', gid: gid, claim: nav.objLoc.claim, please_dont_ddos: 1}, {
  2557. 2555.  -         cache: 1,
  2558. 2556.  -         showProgress: addClass.pbind(ge((from_pad ? 'pad_' : '') + 'album0'), 'loading'),
  2559. 2557.  -         hideProgress: removeClass.pbind(ge((from_pad ? 'pad_' : '') + 'album0'), 'loading'),
  2560. 2558.  -         onDone: function(data, options) {
  2561. 2559.  -           if (__cur.lastAct != index) return;
  2562. 2560.  -           options = eval('('+options+')');
  2563. 2561.  -           __cur.allClubsHTitles = __cur.allClubsHTitles || {};
  2564. 2562.  -           __cur.allClubsHTitles[gid] = options.summaryLang.all_club_htitle;
  2565. 2563.  -           var obj = eval('('+data+')');
  2566. 2564.  -           if (!obj) return;
  2567. 2565.  -           __cur.audiosList[index] = obj['all'];
  2568. 2566.  -           Audio.searchAudios({from_pad: from_pad, type: index, str: ''});
  2569. 2567.  -           Audio.scrollToTop(from_pad);
  2570. 2568.  -         }
  2571. 2569.  -       });
  2572. 2570.  -     } else {
  2573. 2571.  -       Audio.searchAudios({from_pad: from_pad, type: index, str: ''});
  2574. 2572.  -       Audio.scrollToTop(from_pad);
  2575. 2573.  -     }
  2576. 2574.  -   },
  2577. 2575.  -   showMoreFriends: function(opts) {
  2578. 2576.  -     opts = opts || {};
  2579. 2577.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  2580. 2578.  -         from_pad = !!opts.from_pad, friend = opts.friend,
  2581. 2579.  -         onShow = opts.onShow || function() {}, onHide = opts.onHide || function() {};
  2582. 2580.  -     if (__cur.moreFriendsSent) {
  2583. 2581.  -       return;
  2584. 2582.  -     }
  2585. 2583.  -     __cur.moreFriendsSent = true;
  2586. 2584.  -     var query = {act: 'more_friends', ids: __cur.shownFriends};
  2587. 2585.  -     if (friend) {
  2588. 2586.  -       query.owner = friend;
  2589. 2587.  -     }
  2590. 2588.  -     if (from_pad) {
  2591. 2589.  -       query.from_pad = 1;
  2592. 2590.  -     }
  2593. 2591.  -     ajax.post(Audio.address, query, {
  2594. 2592.  -       onDone: function(cont, friends, reset) {
  2595. 2593.  -         __cur.moreFriendsSent = false;
  2596. 2594.  -         if (cont) {
  2597. 2595.  -           var list = __cur.friendsList;
  2598. 2596.  -           re('audio_friends_old');
  2599. 2597.  -           var old = ce('div', {innerHTML: '<div id="audio_friends_old" style="position: absolute; top: ' + list.offsetTop + 'px">'+list.innerHTML+'</div>'}).firstChild;
  2600. 2598.  -           list.parentNode.insertBefore(old, list);
  2601. 2599.  -           list.innerHTML = '';
  2602. 2600.  -           setStyle(list, {display: 'none'});
  2603. 2601.  -           list.innerHTML = cont;
  2604. 2602.  -           var oldRows = geByClass('audio_friend', old), oldCnt = oldRows.length,
  2605. 2603.  -               newCnt = geByClass('audio_friend', list).length;
  2606. 2604.  -           if (oldCnt > newCnt) {
  2607. 2605.  -             oldRows = oldRows.slice(newCnt);
  2608. 2606.  -             each(oldRows, function() {
  2609. 2607.  -               re(this);
  2610. 2608.  -             });
  2611. 2609.  -           }
  2612. 2610.  -           setTimeout(Audio.handleFilterPos, 0);
  2613. 2611.  -           fadeIn(list, 400, re.pbind(old));
  2614. 2612.  -           if (friends) {
  2615. 2613.  -             __cur.shownFriends = reset ? friends : __cur.shownFriends.concat(friends);
  2616. 2614.  -           }
  2617. 2615.  -         } else {
  2618. 2616.  -           Audio.handleFilterPos();
  2619. 2617.  -         }
  2620. 2618.  -       },
  2621. 2619.  -       onFail: function() {
  2622. 2620.  -         __cur.moreFriendsSent = false;
  2623. 2621.  -       },
  2624. 2622.  -       showProgress: onShow,
  2625. 2623.  -       hideProgress: onHide
  2626. 2624.  -     });
  2627. 2625.  -   },
  2628. 2626.  -   cacheFriendsList: function(from_pad) {
  2629. 2627.  -     var __cur = from_pad ? window._pads && _pads.cur : window.cur,
  2630. 2628.  -         query = {act: 'more_friends'};
  2631. 2629.  -     if (__cur.audioFriendPlaying) query.owner = __cur.audioFriendPlaying;
  2632. 2630.  -     else if (__cur.audioFriend) query.owner = __cur.audioFriend;
  2633. 2631.  -     ajax.post(Audio.address, query, {cache: 1});
  2634. 2632.  -   },
  2635. 2633.  -
  2636. 2634.  -   // Audio Edit functions
  2637. 2635.  -
  2638. 2636.  -   showAudioClaimWarning: function(aid, claim_id, title, reason) {
  2639. 2637.  -     if (cur.silent) {
  2640. 2638.  -       cur.onSilentLoad = function() {
  2641. 2639.  -         Audio.showAudioClaimWarning(aid, claim_id, title, reason);
  2642. 2640.  -       };
  2643. 2641.  -       return;
  2644. 2642.  -     }
  2645. 2643.  -     var claimText, claimTitle;
  2646. 2644.  -     if (reason == 'crap') {
  2647. 2645.  -       claimText = getLang(claim_id >= 0 ? 'audio_crap_warning_text' : 'audio_crap_warning') || getLang(claim_id > 0 ? 'audio_claim_warning_objection' : (claim_id == 0 ? 'audio_claim_warning_text' : 'audio_claim_warning'));
  2648. 2646.  -       claimTitle = getLang('audio_crap_warning_title') || getLang('audio_claim_warning_title');
  2649. 2647.  -     } else {
  2650. 2648.  -       claimText = (claim_id > 0) ? getLang('audio_claim_warning_objection') : (claim_id == 0 ? getLang('audio_claim_warning_text') : getLang('audio_claim_warning'));
  2651. 2649.  -       claimTitle = getLang('audio_claim_warning_title');
  2652. 2650.  -     }
  2653. 2651.  -     claimText = claimText.split('{audio}').join('<b>' + title + '</b>');
  2654. 2652.  -     claimText = claimText.split('{objection_link}').join('<a href="/help?act=cc_objection&claim=' + claim_id + '&content=audio' + aid + '">' + getLang('audio_claim_objection') + '</a>');
  2655. 2653.  -     claimText = claimText.split('{delete_link}').join('<a href="#" onclick="Audio.deleteAudio(\'' + aid + '\'); return false;">' + getLang('audio_claim_delete') + '</a>');
  2656. 2654.  -     cur.claimWarning = showFastBox({title: claimTitle, dark: 1}, claimText);
  2657. 2655.  -   },
  2658. 2656.  -
  2659. 2657.  -   deleteAudio: function(id) {
  2660. 2658.  -     if (cur.silent) {
  2661. 2659.  -       cur.onSilentLoad = function() {
  2662. 2660.  -         Audio.deleteAudio(id);
  2663. 2661.  -       };
  2664. 2662.  -       return;
  2665. 2663.  -     }
  2666. 2664.  -     if (cur.deleting) {
  2667. 2665.  -       return false;
  2668. 2666.  -     }
  2669. 2667.  -     cur.deleting = true;
  2670. 2668.  -     var el = ge('audio' + id), aid = id.split('_')[1];
  2671. 2669.  -     if (!cur.deletedAudios) cur.deletedAudios = [];
  2672. 2670.  -     cur.deletedAudios[aid] = el.innerHTML;
  2673. 2671.  -     var acts = geByClass1('actions', el);
  2674. 2672.  -     each(acts.children, function(){if (this.tt && this.tt.hide) this.tt.hide()});
  2675. 2673.  -     var a = (cur.audios || {})[aid] || [], lyrics = isVisible(ge('lyrics'+id)),
  2676. 2674.  -         _tw = el && geByClass1('title_wrap', el),
  2677. 2675.  -         performer = a[5] || _tw && (geByTag1('a', _tw) || {}).innerHTML || '',
  2678. 2676.  -         title = a[6] || _tw && (geByClass1('title', _tw) || {}).innerHTML || '';
  2679. 2677.  -     el.innerHTML = rs(cur.deletedTpl, {
  2680. 2678.  -       audio_id: id,
  2681. 2679.  -       performer: performer.split('<span>').join('').split('</span>').join(''),
  2682. 2680.  -       title: title,
  2683. 2681.  -       delete_all: ''
  2684. 2682.  -     });
  2685. 2683.  -     var _a = window.audioPlayer;
  2686. 2684.  -     if (currentAudioId() == id) {
  2687. 2685.  -       _a.showCurrentTrack();
  2688. 2686.  -     }
  2689. 2687.  -     if (lyrics) {
  2690. 2688.  -       Audio.updateSorterRows(ge('audio'+id));
  2691. 2689.  -     }
  2692. 2690.  -     var addBtn = ge('audio_add'+id);
  2693. 2691.  -     if (addBtn) {
  2694. 2692.  -       addBtn.onmouseover = function() {};
  2695. 2693.  -     }
  2696. 2694.  -     ajax.post(Audio.address, {act: 'delete_audio', oid: cur.oid, aid: aid, hash: cur.hashes.delete_hash, restore: 1}, {
  2697. 2695.  -       onDone: function(action, delete_all) {
  2698. 2696.  -         cur.deleting = false;
  2699. 2697.  -         if (cur.claimWarning) {
  2700. 2698.  -           cur.claimWarning.hide();
  2701. 2699.  -         }
  2702. 2700.  -         var acts = geByClass1('actions', el);
  2703. 2701.  -         each(acts.children, function(){if (this.tt) this.tt.hide()});
  2704. 2702.  -         el.innerHTML = rs(cur.deletedTpl, {
  2705. 2703.  -           audio_id: id,
  2706. 2704.  -           performer: performer.split('<span>').join('').split('</span>').join(''),
  2707. 2705.  -           title: title,
  2708. 2706.  -           delete_all: action ? action : ''
  2709. 2707.  -         });
  2710. 2708.  -         el.style.cursor = 'auto';
  2711. 2709.  -         el.setAttribute('nosorthandle', '1');
  2712. 2710.  -         if (currentAudioId() == id) {
  2713. 2711.  -           _a.showCurrentTrack();
  2714. 2712.  -         }
  2715. 2713.  -         if (delete_all) {
  2716. 2714.  -           cur.lang = cur.lang || {};
  2717. 2715.  -           cur.lang.audio_delete_all = delete_all;
  2718. 2716.  -         }
  2719. 2717.  -         if (cur.audios[aid]) {
  2720. 2718.  -           cur.audiosIndex.remove(cur.audios[aid]);
  2721. 2719.  -           cur.audios[aid].deleted = true;
  2722. 2720.  -           if (window.Pads && Pads.clearAudioLoadCache) {
  2723. 2721.  -             Pads.clearAudioLoadCache();
  2724. 2722.  -           }
  2725. 2723.  -         }
  2726. 2724.  -         Audio.removeFromPlaylist(id);
  2727. 2725.  -         cur.sectionCount--;
  2728. 2726.  -         if (cur.shownAudios) cur.shownAudios--;
  2729. 2727.  -         Audio.changeSummary();
  2730. 2728.  -       },
  2731. 2729.  -       onFail: function() {
  2732. 2730.  -         cur.deleting = false;
  2733. 2731.  -       }
  2734. 2732.  -     });
  2735. 2733.  -     return false;
  2736. 2734.  -   },
  2737. 2735.  -
  2738. 2736.  -   restoreAudio: function(id) {
  2739. 2737.  -     if (cur.restoring) {
  2740. 2738.  -       return;
  2741. 2739.  -     }
  2742. 2740.  -     cur.restoring = true;
  2743. 2741.  -     var el = ge('audio' + id), aid = id.split('_')[1];
  2744. 2742.  -     ajax.post(Audio.address, {act: 'restore_audio', oid: cur.oid, aid: aid, hash: cur.hashes.restore_hash}, {
  2745. 2743.  -       onDone: function() {
  2746. 2744.  -         cur.restoring = false;
  2747. 2745.  -         var acts = geByClass1('actions', el);
  2748. 2746.  -         each(acts.children, function(){if (this.tt) this.tt.hide()});
  2749. 2747.  -         el.innerHTML = cur.deletedAudios[aid];
  2750. 2748.  -         var lyrics = isVisible(ge('lyrics'+id));
  2751. 2749.  -         if (lyrics) {
  2752. 2750.  -           Audio.updateSorterRows(ge('audio'+id));
  2753. 2751.  -         }
  2754. 2752.  -         el.removeAttribute('nosorthandle');
  2755. 2753.  -         if (cur.audios[aid]) {
  2756. 2754.  -           cur.audiosIndex.add(cur.audios[aid]);
  2757. 2755.  -           cur.audios[aid].deleted = false;
  2758. 2756.  -           if (window.Pads && Pads.clearAudioLoadCache) {
  2759. 2757.  -             Pads.clearAudioLoadCache();
  2760. 2758.  -           }
  2761. 2759.  -         }
  2762. 2760.  -         Audio.backToPlaylist(id);
  2763. 2761.  -         cur.sectionCount++;
  2764. 2762.  -         if (cur.shownAudios) cur.shownAudios++;
  2765. 2763.  -         Audio.changeSummary();
  2766. 2764.  -         toggleClass(ge('play'+id), 'playing', id == currentAudioId());
  2767. 2765.  -       },
  2768. 2766.  -       onFail: function() {
  2769. 2767.  -         cur.restoring = false;
  2770. 2768.  -       }
  2771. 2769.  -     });
  2772. 2770.  -   },
  2773. 2771.  -
  2774. 2772.  -   deleteAll: function(object_id, from_id, to_id, hash) {
  2775. 2773.  -     var box = showFastBox({title: getLang('audio_delete_all_title'), dark: 1}, getLang('audio_delete_all') || '', getLang('global_delete'), function(btn){
  2776. 2774.  -       ajax.post(Audio.address, {act: 'delete_all', object_id: object_id, to_id: to_id, from_id: from_id, hash: hash}, {
  2777. 2775.  -         showProgress: lockButton.pbind(btn),
  2778. 2776.  -         onDone: function() {
  2779. 2777.  -           nav.reload();
  2780. 2778.  -         },
  2781. 2779.  -         onFail: box.hide
  2782. 2780.  -       });
  2783. 2781.  -     }, getLang('global_cancel'));
  2784. 2782.  -   },
  2785. 2783.  -
  2786. 2784.  -   editAudio: function(aid, event){
  2787. 2785.  -     showBox(Audio.address, {act: 'edit_audio_box', aid: aid}, {
  2788. 2786.  -       params: {width: '440px', bodyStyle: 'padding: 20px; background-color: #F7F7F7;', hideButtons: 1}, dark: 1
  2789. 2787.  -     });
  2790. 2788.  -     if (event) cancelEvent(event);
  2791. 2789.  -     return false;
  2792. 2790.  -   },
  2793. 2791.  -
  2794. 2792.  -   editTopAudio: function(full_aid, event) {
  2795. 2793.  -     showBox('al_search.php', {act: 'audio_top_edit_box', id: full_aid, full_id: full_aid}, {
  2796. 2794.  -       params: {width: '440px', bodyStyle: 'padding: 20px; background-color: #F7F7F7;', hideButtons: 1}, dark: 1
  2797. 2795.  -     });
  2798. 2796.  -     if (event) cancelEvent(event);
  2799. 2797.  -     return false;
  2800. 2798.  -   },
  2801. 2799.  -
  2802. 2800.  -   removeFromTop: function(audio_hash, hash, full_aid, event) {
  2803. 2801.  -     ajax.post('al_search.php', {act: 'save_top_audio', deleted: 1, audio_hash: audio_hash, hash: hash, id: full_aid}, {
  2804. 2802.  -       onDone: function() {
  2805. 2803.  -         var audioRow = ge('audio'+full_aid);
  2806. 2804.  -         slideUp(audioRow, 100);
  2807. 2805.  -       }
  2808. 2806.  -     })
  2809. 2807.  -   },
  2810. 2808.  -
  2811. 2809.  -   updateAlbumsStart: function() {
  2812. 2810.  -     if (!cur.canEdit || browser.mobile || !cur.audioAlbumsWrap ||  !cur.audioAlbumsWrap.sorter) return;
  2813. 2811.  -     each (cur.audioAlbumsWrap.sorter.elems, function() {
  2814. 2812.  -       setStyle(this, {top: 'auto', left: 'auto', width: 'auto'});
  2815. 2813.  -     });
  2816. 2814.  -     cur.audioAlbumsWrap.sorter.destroy();
  2817. 2815.  -   },
  2818. 2816.  -
  2819. 2817.  -   updateAlbumsFinish: function() {
  2820. 2818.  -     if (!cur.canEdit || browser.mobile) return;
  2821. 2819.  -     this.initAlbumsSort();
  2822. 2820.  -     this.updateAlbumsTitles();
  2823. 2821.  -   },
  2824. 2822.  -
  2825. 2823.  -   updateAlbums: function() {
  2826. 2824.  -     this.updateAlbumsStart();
  2827. 2825.  -     this.updateAlbumsFinish();
  2828. 2826.  -   },
  2829. 2827.  -
  2830. 2828.  -   updateAlbumsTitles: function(opts) {
  2831. 2829.  -     opts = opts || {};
  2832. 2830.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  2833. 2831.  -         from_pad = !!opts.from_pad;
  2834. 2832.  -
  2835. 2833.  -     if (!__cur.audioAlbumsWrap) return;
  2836. 2834.  -
  2837. 2835.  -     each (geByClass('label', __cur.audioAlbumsWrap), function() {
  2838. 2836.  -       if (this.scrollWidth > this.clientWidth) {
  2839. 2837.  -         this.setAttribute('title', this.innerText || this.textContent);
  2840. 2838.  -       } else {
  2841. 2839.  -         this.removeAttribute('title');
  2842. 2840.  -       }
  2843. 2841.  -     });
  2844. 2842.  -   },
  2845. 2843.  -
  2846. 2844.  -   updatePadFiltersHeight: function() {
  2847. 2845.  -     var filters = ge('pad_side_filters'), td = ge('pad_filters_panel'),
  2848. 2846.  -         curSz = getSize(td)[1], minSz = getSize(_pads.content)[1],
  2849. 2847.  -         newSz = Math.max(minSz, getSize(filters)[1] + 10);
  2850. 2848.  -     if (newSz != curSz) {
  2851. 2849.  -       setStyle(td, {height: newSz});
  2852. 2850.  -       if (window.Pads) {
  2853. 2851.  -         Pads.updateHeight();
  2854. 2852.  -       }
  2855. 2853.  -     }
  2856. 2854.  -   },
  2857. 2855.  -
  2858. 2856.  -   initAlbumsSort: function() {
  2859. 2857.  -     if (!cur.canEdit || browser.mobile || !cur.audioAlbumsWrap || cur.audioAlbumsWrap.sorter) return;
  2860. 2858.  -     sorter.init(cur.audioAlbumsWrap, {onMouseDown: Audio.hideAlbumsTT, onReorder: Audio.onAlbumReorder, noMoveCursor: 1});
  2861. 2859.  -   },
  2862. 2860.  -
  2863. 2861.  -   hideAlbumsTT: function() {
  2864. 2862.  -     each(geByClass('icon_wrap', cur.audioAlbumsWrap), function() {
  2865. 2863.  -       if (this.tt) this.tt.hide();
  2866. 2864.  -     })
  2867. 2865.  -   },
  2868. 2866.  -
  2869. 2867.  -   onAlbumReorder: function(album, before, after) {
  2870. 2868.  -     var aid = album.id.replace('album', '');
  2871. 2869.  -     var before_id = (before && before.id || '').replace('album', '');
  2872. 2870.  -     var after_id = (after && after.id || '').replace('album', '');
  2873. 2871.  -     ajax.post(Audio.address, {act: 'reorder_albums', oid: cur.oid, aid: aid, before: before_id, after: after_id, hash: cur.hashes.reorder_hash});
  2874. 2872.  -   },
  2875. 2873.  -
  2876. 2874.  -   editAlbum: function(aid){
  2877. 2875.  -     if (cur.silent) {
  2878. 2876.  -       cur.onSilentLoad = function() {
  2879. 2877.  -         Audio.editAlbum(aid);
  2880. 2878.  -       };
  2881. 2879.  -       return;
  2882. 2880.  -     }
  2883. 2881.  -     if (!cur.audiosList) {
  2884. 2882.  -       return;
  2885. 2883.  -     }
  2886. 2884.  -     var box = showTabbedBox(Audio.address, {act: 'edit_album_box', album_id: aid, oid: cur.oid}, {stat: ['privacy.js', 'privacy.css', 'ui_controls.js', 'ui_controls.css', 'indexer.js'], dark: 1});
  2887. 2885.  -     cur.onOListSave = Audio.saveAlbum.pbind(box, aid);
  2888. 2886.  -     return false;
  2889. 2887.  -   },
  2890. 2888.  -
  2891. 2889.  -   createAlbum: function() {
  2892. 2890.  -     return this.editAlbum(0);
  2893. 2891.  -   },
  2894. 2892.  -
  2895. 2893.  -   saveAlbum: function(box, aid, audio_ids) {
  2896. 2894.  -     var btn = geByClass1('button_blue', box.bodyNode.nextSibling).firstChild,
  2897. 2895.  -         albumName = val('album_name');
  2898. 2896.  -     if (!albumName) {
  2899. 2897.  -       notaBene('album_name');
  2900. 2898.  -       return false;
  2901. 2899.  -     }
  2902. 2900.  -     var query = {act: 'save_album', album_id: aid, name: albumName, gid: cur.gid, Audios: audio_ids.join(','), hash: cur.hashes.save_album_hash};
  2903. 2901.  -     ajax.post(Audio.address, query, {
  2904. 2902.  -       showProgress: lockButton.pbind(btn),
  2905. 2903.  -       hideProgress: unlockButton.pbind(btn),
  2906. 2904.  -       onFail: box.hide,
  2907. 2905.  -       onDone: function(album_id, audio_ids, filters) {
  2908. 2906.  -         try{
  2909. 2907.  -           cur.audioAlbumsWrap.innerHTML = filters;
  2910. 2908.  -           var old = cur.audiosList['album'+album_id];
  2911. 2909.  -           if (old) {
  2912. 2910.  -             for (var i in old) {
  2913. 2911.  -               cur.audios[old[i][1]][8] = 0;
  2914. 2912.  -             }
  2915. 2913.  -           }
  2916. 2914.  -           for (var i in audio_ids) {
  2917. 2915.  -             cur.audios[audio_ids[i]][8] = album_id;
  2918. 2916.  -           }
  2919. 2917.  -           cur.albums[album_id] = {id: album_id, title: clean(albumName)};
  2920. 2918.  -           Audio.generateAlbums();
  2921. 2919.  -           Audio.loadAlbum({album: album_id});
  2922. 2920.  -           Audio.initAlbumsSort();
  2923. 2921.  -           Audio.updateAlbumsTitles();
  2924. 2922.  -           box.hide();
  2925. 2923.  -         }catch(e){}
  2926. 2924.  -       }
  2927. 2925.  -     });
  2928. 2926.  -     return false;
  2929. 2927.  -   },
  2930. 2928.  -
  2931. 2929.  -   deleteAlbum: function(aid, hash){
  2932. 2930.  -     var box = showFastBox({title: getLang('audio_delete_album_title'), dark: 1}, getLang('audio_delete_album_are_you_sure'), getLang('audio_delete_album_button'), function(btn){
  2933. 2931.  -       ajax.post(Audio.address, {act: 'delete_album', album_id: aid, hash: hash, gid: cur.gid}, {
  2934. 2932.  -         showProgress: lockButton.pbind(btn),
  2935. 2933.  -         hideProgress: unlockButton.pbind(btn),
  2936. 2934.  -         onDone: function(audio_ids, filters){
  2937. 2935.  -           try{
  2938. 2936.  -             re('album'+aid);
  2939. 2937.  -             boxQueue.hideAll();
  2940. 2938.  -             for (var i in audio_ids) {
  2941. 2939.  -               cur.audios[audio_ids[i]][8] = 0;
  2942. 2940.  -             }
  2943. 2941.  -             delete cur.albums[aid];
  2944. 2942.  -             Audio.generateAlbums();
  2945. 2943.  -             if (cur.album_id == aid) {
  2946. 2944.  -               Audio.loadAlbum({album: 0, showAlbums: true});
  2947. 2945.  -             }
  2948. 2946.  -             Audio.updateAlbums();
  2949. 2947.  -           }catch(e){}
  2950. 2948.  -         },
  2951. 2949.  -         onFail: function(){
  2952. 2950.  -           box.hide(200);
  2953. 2951.  -         }
  2954. 2952.  -       });
  2955. 2953.  -     }, getLang('global_cancel'));
  2956. 2954.  -   },
  2957. 2955.  -
  2958. 2956.  -   moveAudio: function(full_id, album_id) {
  2959. 2957.  -     var id = full_id.split('_')[1];
  2960. 2958.  -     ajax.post(Audio.address, {act:'move_to_album', album_id:album_id, audio_id:id, gid:cur.gid, hash:cur.hashes.move_hash}, {
  2961. 2959.  -       onDone: function(text) {
  2962. 2960.  -         if((cur.album_id && cur.album_id != album_id) || cur.filterUnsorted){
  2963. 2961.  -           var el = ge('audio'+full_id);
  2964. 2962.  -           fadeOut(el, 300, function(){
  2965. 2963.  -             el.parentNode.removeChild(el);
  2966. 2964.  -             each (cur.aContent.sorter.elems, function() {
  2967. 2965.  -               setStyle(this, {top: 'auto', left: 'auto'});
  2968. 2966.  -             });
  2969. 2967.  -             cur.aContent.sorter.destroy();
  2970. 2968.  -             var opts = {onReorder: Audio.onAudioReorder, onMouseDown: Audio.onDragStart, onMouseUp: Audio.onDragEnd, noMoveCursor: 1};
  2971. 2969.  -             if (cur.audioAlbumsWrap) {
  2972. 2970.  -               extend(opts, {target: cur.audioAlbumsWrap, onDragOver: Audio.onDragOver, onDragOut: Audio.onDragOut});
  2973. 2971.  -             }
  2974. 2972.  -             sorter.init(cur.aContent, opts);
  2975. 2973.  -             cur.sectionCount--;
  2976. 2974.  -             Audio.changeSummary();
  2977. 2975.  -             if (cur.sectionCount == 0) {
  2978. 2976.  -               cur.aContent.innerHTML = '<div id="not_found" class="info_msg">'+getLang('audio_album_no_recs')+'</div>';
  2979. 2977.  -             }
  2980. 2978.  -             hide(cur.showMore);
  2981. 2979.  -           });
  2982. 2980.  -         }
  2983. 2981.  -         cur.audios[id][8] = album_id;
  2984. 2982.  -         Audio.generateAlbums();
  2985. 2983.  -       }
  2986. 2984.  -     });
  2987. 2985.  -   },
  2988. 2986.  -
  2989. 2987.  -   onAudioReorder: function(audio, before, after) {
  2990. 2988.  -     var aid = audio.id.replace('audio', '').split('_')[1];
  2991. 2989.  -     var before_id = (before && before.id || '').replace('audio', '').split('_')[1];
  2992. 2990.  -     var after_id = (after && after.id || '').replace('audio', '').split('_')[1];
  2993. 2991.  -     ajax.post(Audio.address, {act: 'reorder_audios', oid: cur.oid, aid: aid, before: before_id, after: after_id, hash: cur.hashes.reorder_hash}, {
  2994. 2992.  -       onDone: function(data) {
  2995. 2993.  -         var val;
  2996. 2994.  -         if (before_id && !after_id) {
  2997. 2995.  -           val = cur.audios[before_id]._order - 0.01;
  2998. 2996.  -         } else {
  2999. 2997.  -           val = cur.audios[after_id]._order + 0.01;
  3000. 2998.  -         }
  3001. 2999.  -         cur.audios[aid]._order = val;
  3002. 3000.  -         Audio.reorderPlaylist(cur.oid + '_' + aid, before_id ? cur.oid + '_' + before_id : '', after_id ? cur.oid + '_' + after_id : '');
  3003. 3001.  -       }
  3004. 3002.  -     });
  3005. 3003.  -   },
  3006. 3004.  -
  3007. 3005.  -   onDragStart: function(el) {
  3008. 3006.  -     // addClass(ge('page_body'), 'no_overflow');
  3009. 3007.  -     cur.dragStartTimer = setTimeout(function() {
  3010. 3008.  -       addClass(cur.audioAlbumsWrap, 'drag');
  3011. 3009.  -       hide('album_add');
  3012. 3010.  -       var ids = el.id.substr(5), id = parseInt(ids.split('_')[1]);
  3013. 3011.  -       var album_id = (cur.audios) ? cur.audios[id][8] : cur.album_id;
  3014. 3012.  -       each(geByClass('audio_filter', cur.audioAlbumsWrap), function(i,v) {
  3015. 3013.  -         if ('album'+album_id == v.id || (album_id == 0 && v.id == 'album_unsorted')) {
  3016. 3014.  -           return;
  3017. 3015.  -         }
  3018. 3016.  -         addClass(v, 'drag_on');
  3019. 3017.  -       });
  3020. 3018.  -       animate(el, {opacity: .8}, 200);
  3021. 3019.  -     }, 300);
  3022. 3020.  -   },
  3023. 3021.  -
  3024. 3022.  -   onDragEnd: function(el, target) {
  3025. 3023.  -     if (cur.dragStartTimer) clearTimeout(cur.dragStartTimer);
  3026. 3024.  -     // removeClass(ge('page_body'), 'no_overflow');
  3027. 3025.  -     each(geByClass('audio_filter', cur.audioAlbumsWrap), function(i,v) {
  3028. 3026.  -       removeClass(v, 'drag_on');
  3029. 3027.  -     });
  3030. 3028.  -     show('album_add');
  3031. 3029.  -     if (target) {
  3032. 3030.  -       var new_album, full_id = el.id.substr(5), aid = parseInt(full_id.split('_')[1]);
  3033. 3031.  -       var album_id = (cur.audios) ? cur.audios[aid][8] : cur.album_id;
  3034. 3032.  -       if (target.id != 'album_unsorted') {
  3035. 3033.  -         new_album = parseInt(target.id.substr(5));
  3036. 3034.  -       } else {
  3037. 3035.  -         new_album = 0;
  3038. 3036.  -       }
  3039. 3037.  -       if (new_album != album_id) {
  3040. 3038.  -         Audio.moveAudio(full_id, new_album);
  3041. 3039.  -       }
  3042. 3040.  -     }
  3043. 3041.  -     removeClass(cur.audioAlbumsWrap, 'drag');
  3044. 3042.  -     animate(el, {opacity: 1}, 200);
  3045. 3043.  -   },
  3046. 3044.  -
  3047. 3045.  -   onDragOver: function(el, target) {
  3048. 3046.  -     cur.targetId = target.id || '';
  3049. 3047.  -     var ids = el.id.substr(5), id = parseInt(ids.split('_')[1]);
  3050. 3048.  -     var album_id = (cur.audios) ? cur.audios[id][8] : cur.album_id;
  3051. 3049.  -     if ('album'+album_id == target.id || (album_id == 0 && target.id == 'album_unsorted')) {
  3052. 3050.  -       return;
  3053. 3051.  -     }
  3054. 3052.  -     if (cur.dragOutTimer) {
  3055. 3053.  -       clearTimeout(cur.dragOutTimer);
  3056. 3054.  -     }
  3057. 3055.  -     addClass(target, 'drag_over');
  3058. 3056.  -     setStyle(el, {opacity: .4});
  3059. 3057.  -   },
  3060. 3058.  -
  3061. 3059.  -   onDragOut: function(el, target) {
  3062. 3060.  -     removeClass(target, 'drag_over');
  3063. 3061.  -     if (target.id && cur.targetId != target.id) return;
  3064. 3062.  -     cur.dragOutTimer = setTimeout(function(){setStyle(el, {opacity: .8});}, 200);
  3065. 3063.  -   },
  3066. 3064.  -
  3067. 3065.  -   ignoreOwner: function (post_raw, owner_id, hash, btn) {
  3068. 3066.  -     triggerEvent(ge('delete_post' + post_raw), 'mouseout');
  3069. 3067.  -     cur.feedEntriesHTML = cur.feedEntriesHTML || {};
  3070. 3068.  -     if (post_raw) {
  3071. 3069.  -       cur.feedEntriesHTML[post_raw + '_ignored'] = val('post' + post_raw);
  3072. 3070.  -     }
  3073. 3071.  -     ajax.post(Audio.address, {act: 'a_ignore_owner', post_raw: post_raw, owner_id: owner_id, hash: hash}, {
  3074. 3072.  -       onDone:function(html) {
  3075. 3073.  -         val('post' + post_raw, html);
  3076. 3074.  -         each(geByClass('post', cur.aContent), function(i,v) {
  3077. 3075.  -           var ids = this.id.match(/post((-?\d+)_(-?\d+)(_\d+)?)/);
  3078. 3076.  -           if (ids[1] != post_raw && (!ids[4] && ids[2] == owner_id || ids[4] && ids[3] == owner_id)) {
  3079. 3077.  -             hide(this);
  3080. 3078.  -           }
  3081. 3079.  -         });
  3082. 3080.  -       }
  3083. 3081.  -     });
  3084. 3082.  -   },
  3085. 3083.  -
  3086. 3084.  -   unignoreOwner: function (post_raw, owner_id, hash) {
  3087. 3085.  -     ajax.post(Audio.address, {act: 'a_unignore_owner', post_raw: post_raw || '', owner_id: owner_id, hash: hash}, {
  3088. 3086.  -       onDone:function(html) {
  3089. 3087.  -         if (post_raw) {
  3090. 3088.  -           val('post' + post_raw, cur.feedEntriesHTML[post_raw + '_ignored']);
  3091. 3089.  -         } else {
  3092. 3090.  -           val('ignore_row' + owner_id, html);
  3093. 3091.  -         }
  3094. 3092.  -         each(geByClass('post', cur.aContent), function(i,v) {
  3095. 3093.  -           var ids = this.id.match(/post((-?\d+)_(-?\d+)(_\d+)?)/);
  3096. 3094.  -           if (!ids[4] && ids[2] == owner_id || ids[4] && ids[3] == owner_id) {
  3097. 3095.  -             show(this);
  3098. 3096.  -           }
  3099. 3097.  -         });
  3100. 3098.  -       }
  3101. 3099.  -     });
  3102. 3100.  -   },
  3103. 3101.  -
  3104. 3102.  -   editHidden: function () {
  3105. 3103.  -     showTabbedBox('al_settings.php', {act: 'a_edit_owners_list', list: 'audio', height: lastWindowHeight}, {stat: ['privacy.js', 'privacy.css', 'ui_controls.js', 'ui_controls.css', 'indexer.js'], dark: 1});
  3106. 3104.  -     cur.onOListSave = Audio.onHiddenSave;
  3107. 3105.  -     return false;
  3108. 3106.  -   },
  3109. 3107.  -
  3110. 3108.  -   onHiddenSave: function(white, black, list, options) {
  3111. 3109.  -     var box = curBox(), params = {act: 'a_ignore_olist', hash: options.hash};
  3112. 3110.  -     if (white.length < black.length) {
  3113. 3111.  -       params.White = white.join(',');
  3114. 3112.  -     } else {
  3115. 3113.  -       params.Black = black.join(',');
  3116. 3114.  -     }
  3117. 3115.  -     ajax.post(Audio.address, params, {
  3118. 3116.  -       onDone: function(control, rules) {
  3119. 3117.  -         box.hide();
  3120. 3118.  -         Audio.loadFeed({update: 'reload'});
  3121. 3119.  -       },
  3122. 3120.  -       showProgress: box.showProgress,
  3123. 3121.  -       hiderogress: box.hideProgress
  3124. 3122.  -     });
  3125. 3123.  -     return false;
  3126. 3124.  -   },
  3127. 3125.  -
  3128. 3126.  -   loadGenre: function(opts, ev) {
  3129. 3127.  -     if (checkEvent(ev)) {
  3130. 3128.  -       return true;
  3131. 3129.  -     }
  3132. 3130.  -     opts = opts || {};
  3133. 3131.  -     var from_pad = !!opts.from_pad, genre_id = opts.genre;
  3134. 3132.  -     Audio.loadPopular({update: true, genre: genre_id, from_pad: from_pad});
  3135. 3133.  -     return cancelEvent(ev);
  3136. 3134.  -   },
  3137. 3135.  -
  3138. 3136.  -   loadPerformer: function(opts, ev) {
  3139. 3137.  -     if (checkEvent(ev)) {
  3140. 3138.  -       return true;
  3141. 3139.  -     }
  3142. 3140.  -     opts = opts || {};
  3143. 3141.  -     var from_pad = !!opts.from_pad, oid = opts.oid, index = 'owner' + oid;
  3144. 3142.  -     Audio.loadFriendsAudios({id: oid, index: index, owner: true, from_pad: from_pad});
  3145. 3143.  -     return cancelEvent(ev);
  3146. 3144.  -   },
  3147. 3145.  -
  3148. 3146.  -   moreCatalog: function(opts) {
  3149. 3147.  -     opts = opts || {};
  3150. 3148.  -     var __cur = opts.from_pad ? window._pads && _pads.cur : window.cur,
  3151. 3149.  -         from_pad = !!opts.from_pad, obj = opts.el;
  3152. 3150.  -     if (hasClass(obj, 'audio_performer_shown')) {
  3153. 3151.  -       var height = getSize(ge('audio_more_performers'))[1];
  3154. 3152.  -       removeClass(obj, 'audio_performer_shown');
  3155. 3153.  -       hide('audio_more_performers');
  3156. 3154.  -       if (height > 300) {
  3157. 3155.  -         scrollToTop(0);
  3158. 3156.  -       }
  3159. 3157.  -     } else {
  3160. 3158.  -       if (ge('audio_more_performers')) {
  3161. 3159.  -         show('audio_more_performers')
  3162. 3160.  -         addClass(obj, 'audio_performer_shown');
  3163. 3161.  -         return false;
  3164. 3162.  -       }
  3165. 3163.  -       var exclude = [];
  3166. 3164.  -       var nodes = ge(__cur.popularPerformersId).childNodes;
  3167. 3165.  -       for (var i in nodes) {
  3168. 3166.  -         if (hasClass(nodes[i], 'audio_owner')) {
  3169. 3167.  -           exclude.push(intval(nodes[i].getAttribute('ref')));
  3170. 3168.  -         }
  3171. 3169.  -       }
  3172. 3170.  -       var query = {act: 'get_more_performers', offset: 4, exclude: exclude.join(','), genre: parseInt(__cur.genre)};
  3173. 3171.  -       if (from_pad) {
  3174. 3172.  -         query.from_pad = 1;
  3175. 3173.  -       }
  3176. 3174.  -       ajax.post('al_audio.php', query, {
  3177. 3175.  -         onDone: function(rows) {
  3178. 3176.  -           ge(__cur.popularPerformersId).appendChild(ce('div', {
  3179. 3177.  -             id: 'audio_more_performers',
  3180. 3178.  -             innerHTML: rows
  3181. 3179.  -           }));
  3182. 3180.  -           addClass(obj, 'audio_performer_shown');
  3183. 3181.  -         },
  3184. 3182.  -         showProgress: addClass.pbind(obj, 'audio_performer_loading'),
  3185. 3183.  -         hideProgress: removeClass.pbind(obj, 'audio_performer_loading')
  3186. 3184.  -       });
  3187. 3185.  -     }
  3188. 3186.  -   },
  3189. 3187.  -
  3190. 3188.  -   _eof: 1
  3191. 3189.  - }
  3192. 3190.  - try{stManager.done('audio.js');}catch(e){}
  3193. ------
  3194. Файл - audio.css (Старый размер - 40664 | Новый - 32944):
  3195. 16.  -   width: 156px;
  3196. 17.  +   width: 155px;
  3197. 29.  -   line-height: normal;
  3198. 32.  -   width: 121px;
  3199. 33.  -   height: 25px;
  3200. 34.  +   width: 119px;
  3201. 35.  +   height: 23px;
  3202. 37.  -   -webkit-border-bottom-left-radius: 0;
  3203. 38.  -   -webkit-border-top-left-radius: 0;
  3204. 39.  -   -khtml-border-bottom-left-radius: 0;
  3205. 40.  -   -khtml-border-top-left-radius: 0;
  3206. 41.  -   -moz-border-bottom-left-radius: 0;
  3207. 42.  -   -moz-border-top-left-radius: 0;
  3208. 43.  -   border-bottom-left-radius: 0;
  3209. 44.  -   border-top-left-radius: 0;
  3210. 47.  -   width: 134px;
  3211. 48.  +   width: 135px;
  3212. 55.  + }
  3213. 56.  + .audio_search div.abutton_wrap .button_blue {
  3214. 57.  +   -webkit-border-radius: 0 2px 2px 0;
  3215. 58.  +   -khtml-border-radius: 0 2px 2px 0;
  3216. 59.  +   -moz-border-radius: 0 2px 2px 0;
  3217. 60.  +   border-radius: 0 2px 2px 0;
  3218. 108.  -   width: 262px;
  3219. 109.  - }
  3220. 110.  - .audio_search .s_search::-ms-clear {
  3221. 111.  -   display: none;
  3222. 112.  +   width: 263px;
  3223. 114.  -
  3224. 184.  -   width: 424px;
  3225. 185.  +   width: 425px;
  3226. 187.  - }
  3227. 188.  - #audio.new .wall_module .area {
  3228. 189.  -   width: 369px;
  3229. 190.  -   margin-bottom: 10px;
  3230. 191.  - }
  3231. 192.  - #audio.new .wall_module .audio.current .area {
  3232. 193.  -   margin-bottom: 0px;
  3233. 199.  - #audio.new .audio.claimed .play_btn_wrap,
  3234. 200.  - #audio.new .audio.claimed .title_wrap,
  3235. 201.  - #audio.new .audio.claimed .duration,
  3236. 211.  - #audio.new .audio.claimed .title_wrap,
  3237. 236.  - #audio.new .audio.current.tt_shown .area
  3238. 237.  + #audio.new .audio.current.tt_shown .area,
  3239. 240.  - }
  3240. 241.  - #audio.new .wall_module .audio.current .area,
  3241. 242.  - #audio.new .wall_module .audio.current.tt_shown .area {
  3242. 243.  -   background: none;
  3243. 244.  - }
  3244. 245.  - #audio.new .wall_module .audio.current.over .area {
  3245. 246.  -   background-color: #EDF1F5;
  3246. 254.  - }
  3247. 255.  - #audio.new .wall_module .audio.current .area .duration {
  3248. 256.  -   color: #777;
  3249. 257.  - }
  3250. 258.  - #audio.new .wall_module .audio.current .title_wrap {
  3251. 259.  -   color: #000;
  3252. 260.  - }
  3253. 261.  - #audio.new .wall_module .audio.current .title_wrap a {
  3254. 262.  -   color: #2B587A;
  3255. 276.  - }
  3256. 277.  - .audio_table .wall_module .audio td {
  3257. 278.  -   padding: 0px;
  3258. 286.  - }
  3259. 287.  - #audio.new .wall_module .duration{
  3260. 288.  -   padding: 8px 7px 7px 0px;
  3261. 299.  - #audio.new .audio.over.no_actions .duration,
  3262. 300.  - #audio.new .wall_module .audio.over .duration,
  3263. 301.  - #audio.new .wall_module .audio.tt_shown .duration {
  3264. 302.  + #audio.new .audio.over.no_actions .duration {
  3265. 320.  -   margin: 0px;
  3266. 321.  +   margin: 2px 33px 10px 18px;
  3267. 325.  -   width: 425px;
  3268. 326.  +   width: 387px;
  3269. 375.  - }
  3270. 376.  - #audio.new .wall_module .audio .play_btn_wrap {
  3271. 377.  -   padding: 6px;
  3272. 383.  -   background: url(/images/icons/audio_icons.png?5) -147px -28px no-repeat;
  3273. 384.  +   background: url(/images/icons/audio_icons.png?2) -147px -28px no-repeat;
  3274. 388.  - }
  3275. 389.  - #audio.new .wall_module .audio.current .play_new {
  3276. 390.  -   background: url(/images/playpause.gif) no-repeat 0px 0px;
  3277. 391.  - }
  3278. 392.  - #audio.new .wall_module .audio.current .play_new.playing {
  3279. 393.  -   background-position: 0px -16px;
  3280. 410.  -   width: 330px;
  3281. 411.  +   width: 325px;
  3282. 420.  - }
  3283. 421.  - #audio.new .wall_module .audio .title_wrap {
  3284. 422.  -   width: 290px;
  3285. 423.  -   padding: 7px 0 6px;
  3286. 424.  - }
  3287. 425.  - #audio.new .wall_module .audio .title_wrap b {
  3288. 426.  -   max-width: 200px;
  3289. 453.  -   overflow: hidden;
  3290. 454.  - }
  3291. 455.  - #audio.new .audio_rec_wrap {
  3292. 456.  -   margin: 7px 7px 7px 0;
  3293. 457.  -   padding: 4px;
  3294. 458.  -   opacity: 0.4;
  3295. 459.  -   filter: alpha(opacity=40);
  3296. 460.  - }
  3297. 461.  - #audio.new .rec_source .audio_rec_wrap {
  3298. 462.  -   opacity: 1;
  3299. 463.  -   filter: alpha(opacity=100);
  3300. 464.  - }
  3301. 465.  - #audio.new .audio_rec {
  3302. 466.  -   background: url(/images/icons/audio_icons.png?5) -202px -51px no-repeat;
  3303. 467.  -   position: relative;
  3304. 468.  -   width: 12px;
  3305. 469.  -   height: 12px;
  3306. 470.  -   margin: 0px;
  3307. 471.  -   cursor: pointer;
  3308. 473.  -   visibility: hidden;
  3309. 474.  - }
  3310. 475.  - #audio.new .audio.rec_source .audio_rec,
  3311. 476.  - #audio.new .audio.over .audio_rec {
  3312. 477.  -   visibility: visible;
  3313. 478.  - }
  3314. 479.  - #audio.new .audio.current .audio_rec {
  3315. 480.  -   background-position: -218px -51px;
  3316. 483.  -   background: url(/images/icons/audio_icons.png?5) -136px -51px no-repeat;
  3317. 484.  +   background: url(/images/icons/audio_icons.png?2) -136px -51px no-repeat;
  3318. 492.  -   background: url(/images/icons/audio_icons.png?5) -79px -51px no-repeat;
  3319. 493.  +   background: url(/images/icons/audio_icons.png?2) -79px -51px no-repeat;
  3320. 541.  -   background: url(/images/icons/audio_icons.png?5) -107px -51px no-repeat;
  3321. 542.  +   background: url(/images/icons/audio_icons.png?2) -107px -51px no-repeat;
  3322. 585.  -   width: 156px;
  3323. 586.  +   width: 155px;
  3324. 592.  -   display: block;
  3325. 593.  +   border: 1px solid #F7F7F7;
  3326. 595.  -   max-width: 156px;
  3327. 596.  +   max-width: 155px;
  3328. 599.  - }
  3329. 600.  - .audio_filter:hover {
  3330. 601.  -   text-decoration: none;
  3331. 604.  -   max-width: 121px;
  3332. 605.  +   max-width: 138px;
  3333. 610.  -   padding: 6px 24px 7px 11px;
  3334. 611.  +   padding: 4px 5px 4px 10px;
  3335. 613.  - .audio_filter div.icon_wrap_arrow {
  3336. 614.  -   position: absolute;
  3337. 615.  -   top: 0px;
  3338. 616.  -   right: 0px;
  3339. 617.  -   width: 26px;
  3340. 618.  -   height: 26px;
  3341. 619.  - /*  opacity: 0.7;
  3342. 620.  -   filter: alpha(opacity=70);*/
  3343. 621.  + .audio_filter.edit .label {
  3344. 622.  +   padding-right: 20px;
  3345. 623.  +   max-width: 123px;
  3346. 627.  -   top: 0px;
  3347. 628.  -   right: 0px;
  3348. 629.  -   width: 26px;
  3349. 630.  -   height: 26px;
  3350. 631.  +   top: -1px;
  3351. 632.  +   right: -1px;
  3352. 633.  +   width: 23px;
  3353. 634.  +   height: 23px;
  3354. 654.  -   top: 7px;
  3355. 655.  -   right: 7px;
  3356. 656.  -   background: url(/images/icons/audio_icons.png?5) -80px -52px no-repeat;
  3357. 657.  +   top: 6px;
  3358. 658.  +   right: 6px;
  3359. 659.  +   background: url(/images/icons/audio_icons.png?2) -80px -52px no-repeat;
  3360. 665.  - }
  3361. 666.  - .audio_filter div.icon.arrow {
  3362. 667.  -   top: 8px;
  3363. 668.  -   right: 8px;
  3364. 669.  -   background-position: -234px -55px;
  3365. 670.  -   width: 10px;
  3366. 671.  -   height: 10px;
  3367. 672.  - }
  3368. 673.  - .audio_filter div.icon.arrow.up {
  3369. 674.  -   background-position: -244px -55px;
  3370. 677.  -   top: 7px;
  3371. 678.  -   right: 7px;
  3372. 679.  +   top: 5px;
  3373. 680.  +   right: 5px;
  3374. 700.  +   border: 1px solid #E1E7ED;
  3375. 706.  +   border: 1px solid #E1E7ED;
  3376. 711.  +   border: 1px solid #517295;
  3377. 729.  -   padding: 14px 10px 0px 0px;
  3378. 730.  +   padding: 10px 10px 0px 0px;
  3379. 737.  -   padding-top: 7px;
  3380. 738.  +   padding-top: 5px;
  3381. 744.  - }
  3382. 745.  - .audio_choose_added {
  3383. 746.  -   display: block;
  3384. 747.  -   height: 28px;
  3385. 748.  -   line-height: 28px;
  3386. 749.  -   margin: 0px;
  3387. 750.  -   padding: 0px 6px;
  3388. 751.  -   max-width: 130px;
  3389. 752.  -   overflow: hidden;
  3390. 753.  -   text-overflow: ellipsis;
  3391. 754.  -   color: #777777;
  3392. 1164.  -   height: 1.36em;
  3393. 1165.  -   line-height: 1.36em;
  3394. 1166.  -   font-size: 0.9em;
  3395. 1167.  - }
  3396. 1168.  - .audio_friends_search_btn {
  3397. 1169.  -   margin: 8px 10px 4px;
  3398. 1170.  -   background: #E3E9EF url(/images/magglass_audio_blue.png) no-repeat 138px 7px;
  3399. 1171.  -   color: #6A7889;
  3400. 1172.  -   height: 13px;
  3401. 1173.  -   padding: 6px 11px;
  3402. 1174.  -   cursor: pointer;
  3403. 1175.  - }
  3404. 1176.  - .audio_friends_search_btn.over {
  3405. 1177.  -   background-color: #dde4eb;
  3406. 1178.  - }
  3407. 1179.  - .audio_friends_search_input.text {
  3408. 1180.  -   margin: 2px 10px 4px;
  3409. 1181.  -   background: #FFF url(/images/magglass_audio.png) no-repeat 137px 6px;
  3410. 1182.  -   width: 134px;
  3411. 1183.  -   height: 13px;
  3412. 1184.  -   padding: 5px 10px;
  3413. 1185.  - }
  3414. 1186.  - .audio_friends_search_input.text::-ms-clear {
  3415. 1187.  -   display: none;
  3416. 1188.  - }
  3417. 1189.  - .audio_friends_search_inp_wrap .reset {
  3418. 1190.  -   cursor: pointer;
  3419. 1191.  -   display: none;
  3420. 1192.  -   background: transparent url(/images/clear_audio.png) 4px 4px no-repeat;
  3421. 1193.  -   padding: 4px;
  3422. 1194.  -   width: 9px;
  3423. 1195.  -   height: 9px;
  3424. 1196.  -   margin-left: -31px;
  3425. 1197.  -   margin-top: 6px;
  3426. 1198.  -   opacity: 0.6;
  3427. 1199.  -   filter: alpha(opacity=60);
  3428. 1200.  -   position: relative;
  3429. 1201.  -   z-index: 100;
  3430. 1202.  -   -webkit-transition: opacity 100ms ease-out;
  3431. 1203.  -   -moz-transition: opacity 100ms ease-out;
  3432. 1204.  -   -o-transition: opacity 100ms ease-out;
  3433. 1205.  -   transition: opacity 100ms ease-out;
  3434. 1206.  - }
  3435. 1207.  - .audio_friends_search_inp_wrap.str .reset {
  3436. 1208.  -   display: block;
  3437. 1209.  - }
  3438. 1210.  - .audio_friends_search_inp_wrap.str .audio_friends_search_input.text {
  3439. 1211.  -   background: #FFF;
  3440. 1212.  - }
  3441. 1213.  - .audio_friends_search_inp_wrap .reset.over {
  3442. 1214.  -   opacity: 1;
  3443. 1215.  -   filter: alpha(opacity=100);
  3444. 1216.  - }
  3445. 1217.  - .audio_popular_owner {
  3446. 1218.  -   padding: 4px 11px;
  3447. 1219.  - }
  3448. 1220.  - .audio_popular_status {
  3449. 1221.  -   white-space: nowrap;
  3450. 1222.  -   overflow: hidden;
  3451. 1223.  -   text-overflow: ellipsis;
  3452. 1224.  -   -o-text-overflow: ellipsis;
  3453. 1225.  -   width: 133px;
  3454. 1226.  -   line-height: 1.36em;
  3455. 1227.  - }
  3456. 1228.  - .audio_popular_owner:hover {
  3457. 1229.  -   text-decoration: none;
  3458. 1230.  -   background: #E1E7ED;
  3459. 1231.  - }
  3460. 1232.  - .audio_popular_owner_cnt {
  3461. 1233.  -   color: #777;
  3462. 1237.  - }
  3463. 1238.  - .audio_popular_owner:hover .audio_popular_owner_cnt {
  3464. 1239.  -   color: #6A798A;
  3465. 1292.  - .audio_more_friends {
  3466. 1293.  + #audio_more_friends {
  3467. 1300.  - .audio_more_friends:hover {
  3468. 1301.  + #audio_more_friends:hover {
  3469. 1347.  -   background: url(/images/icons/audio_icons.png?5) no-repeat scroll 0 -25px transparent;
  3470. 1348.  +   background: url(/images/icons/audio_icons.png?2) no-repeat scroll 0 -25px transparent;
  3471. 1392.  -   padding: 2px 3px 3px 4px;
  3472. 1393.  +   padding: 4px 2px 4px 4px;
  3473. 1416.  -   background: url(/images/icons/audio_icons.png?5) no-repeat scroll 0 0 transparent;
  3474. 1417.  +   background: url(/images/icons/audio_icons.png?2) no-repeat scroll 0 0 transparent;
  3475. 1422.  - }
  3476. 1423.  - #ac.no_rec #ac_rec {
  3477. 1424.  -   display: none;
  3478. 1426.  - #ac #ac_shuffle.ctrl_wrap,
  3479. 1427.  - #ac #ac_rec.ctrl_wrap {
  3480. 1428.  -   padding: 3px 4px 4px 3px;
  3481. 1429.  + #ac #ac_shuffle.ctrl_wrap {
  3482. 1430.  +   padding-top: 3px;
  3483. 1449.  -   background-position: -32px -49px;
  3484. 1450.  -   height: 14px;
  3485. 1451.  +   background-position: -33px -52px;
  3486. 1463.  - }
  3487. 1464.  - #ac .ctrl.rec {
  3488. 1465.  -   background-position: -202px -51px;
  3489. 1466.  -   height: 12px;
  3490. 1467.  -   width: 12px;
  3491. 1484.  -   width: 434px;
  3492. 1485.  -   margin-left: 10px;
  3493. 1486.  - }
  3494. 1487.  - #ac.no_rec .info {
  3495. 1489.  +   margin-left: 10px;
  3496. 1492.  -   width: 414px;
  3497. 1493.  - }
  3498. 1494.  - #ac.no_rec.add .info {
  3499. 1495.  -   width: 433px;
  3500. 1496.  +   width: 437px;
  3501. 1516.  -   max-width: 327px;
  3502. 1517.  - }
  3503. 1518.  - #ac.no_rec .ac_name {
  3504. 1522.  -   max-width: 310px;
  3505. 1523.  - }
  3506. 1524.  - #ac.no_rec.add .ac_name {
  3507. 1525.  -   max-width: 329px;
  3508. 1526.  +   max-width: 333px;
  3509. 1529.  -   max-width: 307px;
  3510. 1530.  - }
  3511. 1531.  - .font_medium #ac.no_rec.add .ac_name {
  3512. 1532.  -   max-width: 326px;
  3513. 1533.  +   max-width: 330px;
  3514. 1638.  -   padding: 4px 4px 5px 20px;
  3515. 1650.  -   border-bottom: 1px solid #E1E3E5;
  3516. 1651.  +   border-bottom: 1px solid #DAE1E8;
  3517. 1657.  -   padding: 4px 5px 5px;
  3518. 1834.  + #ac_pr.over .ac_slider,
  3519. 1857.  - .audio_fixed_nav,
  3520. 1858.  - .audio_fixed_nav .scroll_fix_wrap {
  3521. 1859.  + .audio_fixed_nav {
  3522. 1877.  -   margin-bottom: 7px;
  3523. 1878.  +   margin-bottom: 5px;
  3524. 1883.  -   padding: 7px 10px 0;
  3525. 1884.  +   padding: 3px 10px 0;
  3526. 1897.  -   width: 288px;
  3527. 1898.  -   padding: 7px 5px 8px;
  3528. 1899.  +   width: 290px;
  3529. 1912.  - }
  3530. 1913.  - .audio_button_save_wrap {
  3531. 1914.  -   padding-top: 15px;
  3532. 1920.  - }
  3533. 1921.  - .audio_album_length {
  3534. 1922.  -   color: #777777;
  3535. 1923.  -   display: inline-block;
  3536. 1924.  -   max-width: 400px;
  3537. 1925.  -   overflow: hidden;
  3538. 1926.  -   text-overflow: ellipsis;
  3539. 1927.  -   white-space: nowrap;
  3540. 1928.  - }
  3541. 1929.  - .audio_delete_album {
  3542. 1930.  -   padding-top: 4px;
  3543. 1931.  - }
  3544. 1932.  - #audio_total_duration {
  3545. 1933.  -   font-weight: bold;
  3546. 1934.  - }
  3547. 1935.  - #audio.new .wall_module .post {
  3548. 1936.  -   border-top: 0;
  3549. 1937.  -   border-bottom: 1px solid #F1F1F1;
  3550. 1938.  -   margin-right: 12px;
  3551. 1939.  - }
  3552. 1940.  - #audio.new .wall_module .post:first-child {
  3553. 1941.  -   margin-top: -10px;
  3554. 1942.  - }
  3555. 1943.  - #audio.new .wall_module .post:last-child {
  3556. 1944.  -   border-bottom: none;
  3557. 1945.  - }
  3558. 1946.  - #audio.new .wall_module .post_info,
  3559. 1947.  - #audio.new .wall_text,
  3560. 1948.  - #audio.new .wall_text_name {
  3561. 1949.  -   width: 364px;
  3562. 1950.  - }
  3563. 1951.  - #audio.new .wall_module .reply_link_wrap {
  3564. 1952.  -   color: #999;
  3565. 1953.  -   font-size: 11px;
  3566. 1954.  -   padding-top: 2px;
  3567. 1955.  -   padding-bottom: 4px;
  3568. 1956.  - }
  3569. 1957.  - .font_medium #audio.new .wall_module .reply_link_wrap {
  3570. 1958.  -   font-size: 12px;
  3571. 1959.  - }
  3572. 1960.  - .wall_module .dld.audio_ignore_label {
  3573. 1961.  -   text-align: center;
  3574. 1962.  -   line-height: 1.81em;
  3575. 1963.  -   padding: 8px 30px;
  3576. 1964.  - }
  3577. 1965.  - .audio_summary {
  3578. 1966.  -   padding: 0px 0px 2px;
  3579. 1967.  -   margin: 0px 13px 0px 0px;
  3580. 1968.  -   color: #45688E;
  3581. 1969.  -   border-bottom: 1px solid #DAE1E8;
  3582. 1970.  -   font-weight: bold;
  3583. 1971.  -   font-size: 1.1em;
  3584. 1972.  - }
  3585. 1973.  - .audio_owner {
  3586. 1974.  -   padding: 0px 8px 0px 0px;
  3587. 1975.  -   margin-bottom: 8px;
  3588. 1976.  -   display: inline-block;
  3589. 1977.  -   *display: inline;
  3590. 1978.  -   zoom: 1;
  3591. 1979.  -   position: relative;
  3592. 1980.  - }
  3593. 1981.  - .audio_owner_name {
  3594. 1982.  -   background: #000000;
  3595. 1983.  -   background: rgba(0, 0, 0, 0.5);
  3596. 1984.  -   color: #FFFFFF;
  3597. 1985.  -   position: absolute;
  3598. 1986.  -   bottom: 0px;
  3599. 1987.  -   width: 92px;
  3600. 1988.  -   padding: 4px 4px;
  3601. 1989.  -   text-align: center;
  3602. 1990.  -   overflow: hidden;
  3603. 1991.  - }
  3604. 1992.  - .audio_owner_img {
  3605. 1993.  -   vertical-align: top;
  3606. 1994.  - }
  3607. 1995.  - .audio_cat_list {
  3608. 1996.  -   padding: 10px 6px;
  3609. 1997.  - }
  3610. 1998.  - .audio_genre_showmore {
  3611. 1999.  -   display: block;
  3612. 2000.  -   text-align: center;
  3613. 2001.  -   padding: 10px 6px;
  3614. 2002.  -   color: #738392;
  3615. 2003.  -   background: #EFF1F3;
  3616. 2004.  -   margin: 2px 13px 6px 0px;
  3617. 2005.  - }
  3618. 2006.  - .audio_genre_showmore:hover {
  3619. 2007.  -   text-decoration: none;
  3620. 2008.  -   background: #E9EDF1;
  3621. 2009.  -   color: #616e7e;
  3622. 2010.  - }
  3623. 2011.  - .audio_owner_info {
  3624. 2012.  -   text-align: center;
  3625. 2013.  -   padding-bottom: 0px;
  3626. 2014.  - }
  3627. 2015.  - .audio_owner_info_img {
  3628. 2016.  -   -webkit-border-radius: 5px;
  3629. 2017.  -   -moz-border-radius: 3px;
  3630. 2018.  -   border-radius: 3px;
  3631. 2019.  - }
  3632. 2020.  - .audio_owner_info_name {
  3633. 2021.  -   margin-top: 6px;
  3634. 2022.  -   text-align: center;
  3635. 2023.  -   font-weight: bold;
  3636. 2024.  -   overflow:hidden;
  3637. 2025.  - }
  3638. 2026.  - .audio_catalog_more_loading,
  3639. 2027.  - .audio_catalog_hide_more {
  3640. 2028.  -   display: none;
  3641. 2029.  - }
  3642. 2030.  - .audio_performer_loading .audio_catalog_more_loading {
  3643. 2031.  -   display: block;
  3644. 2032.  - }
  3645. 2033.  - .audio_performer_shown .audio_catalog_hide_more {
  3646. 2034.  -   display: block;
  3647. 2035.  - }
  3648. 2036.  - .audio_performer_shown .audio_catalog_more {
  3649. 2037.  -   display: none;
  3650. 2038.  - }
  3651. 2039.  - .audio_performer_loading .audio_catalog_more {
  3652. 2040.  -   display: none;
  3653. 2041.  - }
  3654. 2042.  - .audio_owner_info_desc {
  3655. 2043.  -   color: #777777;
  3656. 2044.  -   padding-top: 6px;
  3657. 2045.  - }
  3658. 2046.  - .audio_edited {
  3659. 2047.  -   color: #777777;
  3660. 2048.  - }
  3661. 2049.  - .audio_new_sticker {
  3662. 2050.  -   background: url('/images/icons/new_audio_en.png') 0px 0px no-repeat;
  3663. 2051.  -   width: 60px;
  3664. 2052.  -   height: 60px;
  3665. 2053.  -   position: absolute;
  3666. 2054.  -   margin-left: -1px;
  3667. 2055.  -   margin-top: -1px;
  3668. 2056.  -   z-index: 10;
  3669. 2057.  - }
  3670. 2058.  - .audio_sticker_ru {
  3671. 2059.  -   background-image: url('/images/icons/new_audio_ru.png');
  3672. 2060.  - }
  3673. 2061.  - .audio_sticker_ua {
  3674. 2062.  -   background-image: url('/images/icons/new_audio_ua.png');
  3675. ------
  3676. Файл - public.css (Старый размер - 16014 | Новый - 15720):
  3677. 31.  -   padding-bottom:7px;
  3678. 32.  +   padding-bottom:5px;
  3679. 171.  + }
  3680. 172.  +
  3681. 173.  + #info_module_wrap {
  3682. 174.  +   /*overflow:hidden;*/
  3683. 175.  +   position: relative;
  3684. 176.  +   width: 397px;
  3685. 177.  +   margin-bottom: 10px;
  3686. 191.  - #info_module_cont {
  3687. 192.  + #info_module_wrap #info_module_tab {
  3688. 196.  - #info_module_cont .info_edit_pad {
  3689. 197.  + #info_module_wrap .info_edit_pad {
  3690. 206.  + #info_module_wrap .info_tabs {
  3691. 207.  +   position:relative;
  3692. 208.  +   width: 1191px;
  3693. 209.  + }
  3694. 211.  - #info_module_cont .info_tabs.no_edit {
  3695. 212.  + #info_module_wrap .info_tabs.no_edit {
  3696. 213.  +   width: 397px;
  3697. 214.  + }
  3698. 215.  +
  3699. 216.  + #info_module_wrap .info_tab {
  3700. 281.  - #info_module_cont #public_edit_search_member {
  3701. 282.  + #info_module_wrap #public_edit_search_member {
  3702. 286.  - #info_module_cont .mem_row {
  3703. 287.  + #info_module_wrap .mem_row {
  3704. 294.  - #info_module_cont .mem_row .mem_photo {
  3705. 295.  + #info_module_wrap .mem_row .mem_photo {
  3706. 301.  - #info_module_cont .mem_row .mem_photo img {
  3707. 302.  + #info_module_wrap .mem_row .mem_photo img {
  3708. 306.  - #info_module_cont .mem_row .mem_info {
  3709. 307.  + #info_module_wrap .mem_row .mem_info {
  3710. 449.  -   padding: 10px 20px;
  3711. 450.  +   padding: 7px 5px 5px;
  3712. 451.  +   overflow-y: scroll;
  3713. 453.  -   height: 273px;
  3714. 454.  +   height: 298px;
  3715. 455.  +   width: 455px;
  3716. 466.  -   padding: 10px 0px;
  3717. 467.  +   padding: 6px;
  3718. 473.  -   padding: 10px;
  3719. 474.  -   width: 220px;
  3720. 475.  +   padding: 6px 5px;
  3721. 476.  +   width: 240px;
  3722. 480.  -   padding: 10px;
  3723. 481.  +   padding: 6px 5px;
  3724. 482.  +   width: 350px;
  3725. 486.  - .public_contacts_list .actions,
  3726. 487.  - .public_contacts_list .edit_actions {
  3727. 488.  -   width: 120px;
  3728. 489.  -   padding: 10px 0;
  3729. 490.  + .public_contacts_list .actions {
  3730. 491.  +   width:120px;
  3731. 492.  +   padding: 8px 0;
  3732. 494.  - }
  3733. 495.  - .public_contacts_list .actions a,
  3734. 496.  - .public_contacts_list .edit_actions a {
  3735. 497.  -   display: block;
  3736. 498.  -   padding: 4px 6px;
  3737. 499.  -   margin: 0px 0px 2px;
  3738. 501.  - .public_contacts_list .actions a:hover,
  3739. 502.  - .public_contacts_list .edit_actions a:hover {
  3740. 503.  -   text-decoration: none;
  3741. 504.  -   background: #E1E7ED;
  3742. 505.  +
  3743. 506.  + .public_contacts_list .edit_actions {
  3744. 507.  +   width:120px;
  3745. 508.  +   overflow: hidden;
  3746. 529.  - }
  3747. 530.  -
  3748. 531.  - .public_contacts_list .image a {
  3749. 532.  -   display: block
  3750. 540.  +   width:435px;
  3751. 542.  - }
  3752. 543.  - .public_contacts_list .cell:last-child {
  3753. 544.  -   border-bottom: none;
  3754. 572.  -   padding: 120px 5px 5px;
  3755. 573.  +   padding: 145px 5px 5px;
  3756. 603.  - #info_module_cont .public_edit_add_member .text {
  3757. 604.  + #info_module_wrap .public_edit_add_member .text {
  3758. 628.  -   display: block;
  3759. 633.  -   border-bottom: none;
  3760. 868.  - #info_module_cont .open_link {
  3761. 869.  + #info_module_tab .open_link {
  3762. 872.  - #info_module_cont .close_link {
  3763. 873.  + #info_module_tab .close_link {
  3764. 876.  - #info_module_cont .closed .open_link {
  3765. 877.  + #info_module_tab .closed .open_link {
  3766. 880.  - #info_module_cont .closed .close_link {
  3767. 881.  + #info_module_tab .closed .close_link {
  3768. 884.  - #info_module_cont .closed a.toggle_link {
  3769. 885.  + #info_module_tab .closed a.toggle_link {
  3770. 888.  - #info_module_cont a.toggle_link {
  3771. 889.  + #info_module_tab a.toggle_link {
  3772. 934.  -   padding: 10px 20px;
  3773. 935.  +   padding: 7px 5px 5px;
  3774. 936.  +   overflow-y: scroll;
  3775. 938.  -   height: 263px;
  3776. 939.  +   height: 298px;
  3777. 940.  +   width: 455px;
  3778. 943.  -   padding: 10px 0;
  3779. 944.  +   padding: 3px 0;
  3780. 946.  - }
  3781. 947.  - .public_places_list .cell:last-child {
  3782. 948.  -   border-bottom: none;
  3783. 949.  +   width: 435px;
  3784. 952.  -   width: 280px;
  3785. 953.  +   padding: 6px 5px;
  3786. 954.  +   width: 290px;
  3787. 961.  -   margin-left: 8px;
  3788. 962.  +   margin-left: 5px;
  3789. 966.  - }
  3790. 967.  - .public_places_list .actions,
  3791. 968.  - .public_places_list .edit_actions {
  3792. 969.  -   width: 125px;
  3793. 971.  - .public_places_list .actions a,
  3794. 972.  - .public_places_list .edit_actions a {
  3795. 973.  -   display: block;
  3796. 974.  -   padding: 4px 6px;
  3797. 975.  -   margin: 0px 0px 2px;
  3798. 976.  + .public_places_list .actions {
  3799. 977.  +   width: 135px;
  3800. 978.  +   text-align: right;
  3801. 980.  - .public_places_list .actions a:hover,
  3802. 981.  - .public_places_list .edit_actions a:hover {
  3803. 982.  -   text-decoration: none;
  3804. 983.  -   background: #E1E7ED;
  3805. 984.  + .public_places_list .edit_actions {
  3806. 985.  +   width: 135px;
  3807. 986.  +   text-align: right;
  3808. 1007.  + }
  3809. 1008.  +
  3810. 1009.  + #group_block_comment_wrap {
  3811. 1010.  +   padding-top: 10px;
  3812. 1011.  +   display: none;
  3813. 1012.  + }
  3814. 1013.  + #group_block_comment {
  3815. 1014.  +   width: 200px;
  3816. 1015.  +   height: 50px;
  3817. 1016.  +   margin-top: 10px;
  3818. 1017.  + }
  3819. 1018.  + .group_block_reason_wrap {
  3820. 1019.  +   padding: 10px 0px;
  3821. 1036.  -   background: url(/images/icons/mono_iconset.gif?8) no-repeat 0px -192px;
  3822. 1037.  +   background: url(/images/icons/mono_iconset.gif?6) no-repeat 0px -192px;
  3823. 1048.  - }
  3824. 1049.  -
  3825. 1050.  - div.gtop_message {
  3826. 1051.  -   margin: 0 0 10px 0;
  3827. 1052.  -   padding: 8px 13px;
  3828. 1053.  -   border: none;
  3829. 1054.  -   background-color: #F0F2F5;
  3830. 1055.  - }
  3831. 1056.  - .gtop_mesage_buttons {
  3832. 1057.  -   padding: 10px 0px 3px;
  3833. 1058.  - }
  3834. 1059.  - .gtop_mesage_buttons a {
  3835. 1060.  -   margin: 6px 0 0 20px;
  3836. ------
  3837. Файл - groups.css (Старый размер - 14667 | Новый - 0):
  3838. 0.  - #groups_css {
  3839. 1.  -   display: none;
  3840. 2.  - }
  3841. 3.  -
  3842. 4.  - #group .narrow_column .module_body {
  3843. 5.  -   border-left: 1px solid #F1F1F1;
  3844. 6.  - }
  3845. 7.  - #group .narrow_column .audios_module .module_body {
  3846. 8.  -   padding: 8px 0px 8px 8px;
  3847. 9.  - }
  3848. 10.  - #group {
  3849. 11.  -   padding: 10px 10px 0px;
  3850. 12.  - }
  3851. 13.  - #group h4.simple .top_header {
  3852. 14.  -   width: 395px;
  3853. 15.  -   height: 1.23em;
  3854. 16.  -   white-space: nowrap;
  3855. 17.  -   overflow: hidden;
  3856. 18.  -   -o-text-overflow: ellipsis;
  3857. 19.  -   text-overflow: ellipsis;
  3858. 20.  -   text-overflow: ellipsis-word;
  3859. 21.  - }
  3860. 22.  -
  3861. 23.  - .group_info {
  3862. 24.  -   padding: 7px 6px 10px;
  3863. 25.  -   line-height: 150%;
  3864. 26.  - }
  3865. 27.  - .group_info_private {
  3866. 28.  -   padding-top: 5px;
  3867. 29.  -   color: #777;
  3868. 30.  - }
  3869. 31.  - .group_info .label {
  3870. 32.  -   width: 120px;
  3871. 33.  -   color: #777;
  3872. 34.  -   padding: 3px 0px 0px;
  3873. 35.  - }
  3874. 36.  - .group_info .labeled {
  3875. 37.  -   width: 265px;
  3876. 38.  -   overflow: hidden;
  3877. 39.  -   padding: 3px 0px 0px;
  3878. 40.  - }
  3879. 41.  - .group_row_labeled {
  3880. 42.  -   padding: 0px 0px 2px;
  3881. 43.  - }
  3882. 44.  - #page_avatar.group_no_avatar {
  3883. 45.  -   padding: 175px 10px 15px;
  3884. 46.  -   text-align: center;
  3885. 47.  -   background: #EEF2F6 url(/images/no_photo.png) no-repeat 45px 55px;
  3886. 48.  - }
  3887. 49.  -
  3888. 50.  - #group_photos .module_body {
  3889. 51.  -   padding: 0px 0px 10px;
  3890. 52.  - }
  3891. 53.  - #group_photos.module.empty .module_body {
  3892. 54.  -   padding: 0px;
  3893. 55.  - }
  3894. 56.  - #group_photos.module.empty .module_body .empty_wrap {
  3895. 57.  -   padding: 20px 0px;
  3896. 58.  - }
  3897. 59.  - .group_photos_wrap {
  3898. 60.  -   margin: 5px -1px 0px;
  3899. 61.  - }
  3900. 62.  - #group_photos .profile_sized_photos {
  3901. 63.  -   margin: 0;
  3902. 64.  - }
  3903. 65.  - .group_photos_wrap .profile_wide_sized_photos,
  3904. 66.  - .page_wide_no_narrow .profile_sized_photos {
  3905. 67.  -   display: none;
  3906. 68.  - }
  3907. 69.  - .page_wide_no_narrow .group_photos_wrap .profile_wide_sized_photos {
  3908. 70.  -   display: block;
  3909. 71.  - }
  3910. 72.  - .group_photos_table, .group_photos_table a img {
  3911. 73.  -   margin: 0px auto;
  3912. 74.  - }
  3913. 75.  - .profile_wide_sized_photos a.page_post_thumb_wrap {
  3914. 76.  -   margin-right: 6px;
  3915. 77.  - }
  3916. 78.  - .group_photos_table a {
  3917. 79.  -   display: block;
  3918. 80.  -   width: 75px;
  3919. 81.  -   height: 57px;
  3920. 82.  -   background: #F1F1F1;
  3921. 83.  -   text-align: center;
  3922. 84.  -   overflow: hidden;
  3923. 85.  -   margin: 0px 3px 0px 2px;
  3924. 86.  - }
  3925. 87.  -
  3926. 88.  - .group_wiki_wrap {
  3927. 89.  -   padding-bottom: 10px;
  3928. 90.  -   overflow: hidden;
  3929. 91.  - }
  3930. 92.  - .group_wiki_hider {
  3931. 93.  -   padding: 8px 0 8px 125px;
  3932. 94.  -   border-top: 1px solid #FFF;
  3933. 95.  -   display: block;
  3934. 96.  - }
  3935. 97.  - .group_wiki_hider span {
  3936. 98.  -   padding: 0px 8px;
  3937. 99.  -   color: #2B587A;
  3938. 100.  -   visibility: hidden;
  3939. 101.  - }
  3940. 102.  - .group_wiki_hider span:hover {
  3941. 103.  -   text-decoration: underline;
  3942. 104.  - }
  3943. 105.  - .group_wiki_hider:hover {
  3944. 106.  -   text-decoration: none;
  3945. 107.  -   background: #E9EDF1;
  3946. 108.  - }
  3947. 109.  - .group_wiki_hider:hover span {
  3948. 110.  -   visibility: visible;
  3949. 111.  - }
  3950. 112.  - #group .group_wiki_wrap .wk_text {
  3951. 113.  -   display: none;
  3952. 114.  -   padding: 10px 8px;
  3953. 115.  -   width: 370px;
  3954. 116.  -   word-wrap: break-word;
  3955. 117.  -   line-height:150%;
  3956. 118.  - }
  3957. 119.  - .groups_edit_board_row {
  3958. 120.  -   padding: 5px 0px;
  3959. 121.  - }
  3960. 122.  - .groups_edit_board_label {
  3961. 123.  -   padding: 5px 10px 0px;
  3962. 124.  -   width: 200px;
  3963. 125.  -   color: #777;
  3964. 126.  - }
  3965. 127.  - .groups_edit_board_labeled {
  3966. 128.  -   width: 160px;
  3967. 129.  - }
  3968. 130.  -
  3969. 131.  - #group_voting .module_body {
  3970. 132.  -   padding-bottom: 11px;
  3971. 133.  - }
  3972. 134.  - #group_voting .header_bottom {
  3973. 135.  -   padding: 3px 9px;
  3974. 136.  - }
  3975. 137.  - .group_voting_title {
  3976. 138.  -   font-weight: bold;
  3977. 139.  -   color: #45688E;
  3978. 140.  -   padding: 0px 6px 3px;
  3979. 141.  -   margin: 13px 8px 4px;
  3980. 142.  -   border-bottom: 1px solid #E7EAED;
  3981. 143.  - }
  3982. 144.  - .group_voting_row_wrap {
  3983. 145.  -   width: 100%;
  3984. 146.  -   padding: 0px 5px;
  3985. 147.  - }
  3986. 148.  - .group_voting_row {
  3987. 149.  -   background: #F1F1F1;
  3988. 150.  -   width: 100%;
  3989. 151.  - }
  3990. 152.  - .group_voting_row_desc {
  3991. 153.  -   padding: 1px 7px 3px;
  3992. 154.  - }
  3993. 155.  - .group_voting_text {
  3994. 156.  -   padding: 6px 7px 4px;
  3995. 157.  - }
  3996. 158.  - .group_voting_percent {
  3997. 159.  -   background: #E1E7ED;
  3998. 160.  -   border: solid #D8DFE5;
  3999. 161.  -   border-width: 1px 1px 0px 0px;
  4000. 162.  -   height: 13px;
  4001. 163.  - }
  4002. 164.  - .group_voting_table {
  4003. 165.  -   padding: 0px 8px;
  4004. 166.  - }
  4005. 167.  - .group_voting_table .radiobtn {
  4006. 168.  -   padding: 12px 6px;
  4007. 169.  -   border-top: 1px solid #E7EAED;
  4008. 170.  - }
  4009. 171.  - .group_voting_table .radiobtn.first {
  4010. 172.  -   padding-top: 8px;
  4011. 173.  -   border-top: 0px;
  4012. 174.  - }
  4013. 175.  - #group_voting_msg {
  4014. 176.  -   margin: 10px 14px 0px;
  4015. 177.  - }
  4016. 178.  - .group_voting_actions {
  4017. 179.  -   font-weight: normal;
  4018. 180.  - }
  4019. 181.  -
  4020. 182.  - #group_like_module, .group_block_module {
  4021. 183.  -   margin: 0px 0px 10px;
  4022. 184.  -   padding: 11px 10px 10px;
  4023. 185.  -   background: #F1F1F1;
  4024. 186.  -   line-height: 160%;
  4025. 187.  - }
  4026. 188.  - .group_block_module {
  4027. 189.  -   margin: 10px 0px 0px;
  4028. 190.  - }
  4029. 191.  - .group_like_desc {
  4030. 192.  -   padding-bottom: 10px;
  4031. 193.  - }
  4032. 194.  - .group_like_enter_desc {
  4033. 195.  -   padding-top: 10px;
  4034. 196.  -   text-align: center;
  4035. 197.  -   color: #777;
  4036. 198.  - }
  4037. 199.  - .group_share_wrap {
  4038. 200.  -   padding-top: 1px;
  4039. 201.  - }
  4040. 202.  - .group_button_wrap {
  4041. 203.  -   padding-bottom: 10px;
  4042. 204.  - }
  4043. 205.  - .group_button_action {
  4044. 206.  -   text-align: center;
  4045. 207.  - }
  4046. 208.  - .group_button_action .progress {
  4047. 209.  -   margin: 0px auto;
  4048. 210.  - }
  4049. 211.  -
  4050. 212.  - #group_block_comment_wrap {
  4051. 213.  -   padding-top: 10px;
  4052. 214.  - }
  4053. 215.  - #group_block_comment,
  4054. 216.  - #group_block_public_comment,
  4055. 217.  - #group_block_admin_comment {
  4056. 218.  -   width: 396px;
  4057. 219.  -   height: 40px;
  4058. 220.  -   padding: 5px;
  4059. 221.  -   vertical-align: top;
  4060. 222.  - }
  4061. 223.  - div.group_block_button,
  4062. 224.  - div.group_block_button.dark_box_btn {
  4063. 225.  -   margin-top: 26px;
  4064. 226.  - }
  4065. 227.  - #group_block_reason_wrap,
  4066. 228.  - #group_block_duration_wrap {
  4067. 229.  -   height: 30px;
  4068. 230.  - }
  4069. 231.  - .group_block_day,
  4070. 232.  - .group_block_month {
  4071. 233.  -   padding-left: 5px;
  4072. 234.  - }
  4073. 235.  - .is_rtl1 .group_block_day,
  4074. 236.  - .is_rtl1 .group_block_month {
  4075. 237.  -   padding-left: 0;
  4076. 238.  -   padding-right: 5px;
  4077. 239.  - }
  4078. 240.  - #group_block_subreason_wrap {
  4079. 241.  -   height: 30px;
  4080. 242.  -   padding: 10px 0 0;
  4081. 243.  - }
  4082. 244.  - #group_block_warning,
  4083. 245.  - #group_block_public_preview,
  4084. 246.  - #group_block_admin_preview {
  4085. 247.  -   padding-bottom: 10px;
  4086. 248.  - }
  4087. 249.  - #group_block_public_comment_preview,
  4088. 250.  - #group_block_admin_comment_preview {
  4089. 251.  -   padding-bottom: 10px;
  4090. 252.  -   display: none;
  4091. 253.  - }
  4092. 254.  -
  4093. 255.  -
  4094. 256.  - .page_actions a.group_block_mem {
  4095. 257.  -   display: inline;
  4096. 258.  -   padding: 0px;
  4097. 259.  -   background: none;
  4098. 260.  - }
  4099. 261.  - .page_actions a.group_block_mem:hover {
  4100. 262.  -   text-decoration: underline;
  4101. 263.  -   background: none;
  4102. 264.  - }
  4103. 265.  -
  4104. 266.  - .group_abuse_made {
  4105. 267.  -   padding: 4px 6px;
  4106. 268.  -   color: #777;
  4107. 269.  - }
  4108. 270.  -
  4109. 271.  - .groups_donate {
  4110. 272.  -   margin: 5px 0px;
  4111. 273.  -   background: #F7F7F7;
  4112. 274.  -   border: solid #DAE1E8;
  4113. 275.  -   border-width: 1px 0px;
  4114. 276.  -   padding: 7px;
  4115. 277.  - }
  4116. 278.  - #groups_donate_options {
  4117. 279.  -   display: none;
  4118. 280.  -   padding-bottom: 5px;
  4119. 281.  - }
  4120. 282.  - #groups_donate_options .radiobtn {
  4121. 283.  -   padding: 3px 5px;
  4122. 284.  - }
  4123. 285.  - #groups_donate_button {
  4124. 286.  -   display: none;
  4125. 287.  - }
  4126. 288.  - #groups_donate_other {
  4127. 289.  -   display: none;
  4128. 290.  -   padding: 0px 5px 7px;
  4129. 291.  - }
  4130. 292.  - #groups_donate_other_val {
  4131. 293.  -   width: 70px;
  4132. 294.  - }
  4133. 295.  - #groups_donate_other_add {
  4134. 296.  -   padding: 0px 5px;
  4135. 297.  - }
  4136. 298.  - .groups_no_donations {
  4137. 299.  -   padding: 30px 10px;
  4138. 300.  -   text-align: center;
  4139. 301.  -   color: #777;
  4140. 302.  - }
  4141. 303.  - .summary_wrap.groups_donators_summary {
  4142. 304.  -   padding: 0px;
  4143. 305.  -   margin: 0px 5px 10px;
  4144. 306.  - }
  4145. 307.  - #groups_donators_wrap {
  4146. 308.  -   padding: 7px 5px 0px;
  4147. 309.  -   overflow: hidden;
  4148. 310.  -   height: 360px;
  4149. 311.  - }
  4150. 312.  -
  4151. 313.  - div.gl_message {
  4152. 314.  -   margin: 10px 10px 0px;
  4153. 315.  - }
  4154. 316.  - .groups_list_search {
  4155. 317.  -   background: #F7F7F7;
  4156. 318.  -   border-bottom: 1px solid #DAE1E8;
  4157. 319.  -   padding: 10px;
  4158. 320.  - }
  4159. 321.  - #groups_list_search {
  4160. 322.  -   padding: 5px 40px 6px 20px;
  4161. 323.  -   background: url(/images/magglass.png) no-repeat scroll 5px 6px white;
  4162. 324.  -   height: 13px;
  4163. 325.  -   width: 320px;
  4164. 326.  -   outline: none;
  4165. 327.  - }
  4166. 328.  - #groups_list_search::-ms-clear {
  4167. 329.  -   display: none;
  4168. 330.  - }
  4169. 331.  -
  4170. 332.  - .groups_list {
  4171. 333.  -   padding: 0px 10px;
  4172. 334.  - }
  4173. 335.  - .group_list_row {
  4174. 336.  -   border-bottom: 1px solid #EDEDED;
  4175. 337.  -   padding: 10px 0;
  4176. 338.  -   background: #FFFFFF;
  4177. 339.  - }
  4178. 340.  - .group_list_row:last-child {
  4179. 341.  -   border-bottom: 0px;
  4180. 342.  - }
  4181. 343.  - .group_row_blockinv {
  4182. 344.  -   white-space: nowrap;
  4183. 345.  -   overflow: hidden;
  4184. 346.  -   -o-text-overflow: ellipsis;
  4185. 347.  -   text-overflow: ellipsis;
  4186. 348.  -   padding-top: 10px;
  4187. 349.  - }
  4188. 350.  - .group_row_photo {
  4189. 351.  -   height: 100px;
  4190. 352.  -   overflow: hidden;
  4191. 353.  -   width: 100px;
  4192. 354.  - }
  4193. 355.  - .group_row_info {
  4194. 356.  -   padding-left: 10px;
  4195. 357.  -   width: 485px;
  4196. 358.  -   overflow: hidden;
  4197. 359.  -   color: #777777;
  4198. 360.  - }
  4199. 361.  - .group_inv_info {
  4200. 362.  -   padding: 0px 0px 0px 15px;
  4201. 363.  -   width: 480px;
  4202. 364.  -   overflow: hidden;
  4203. 365.  - }
  4204. 366.  - .group_row_label {
  4205. 367.  -   color: #777;
  4206. 368.  -   width: 70px;
  4207. 369.  -   padding: 0 10px;
  4208. 370.  - }
  4209. 371.  - .group_row_labeled, .group_row_status_wrap {
  4210. 372.  -   margin-bottom: 3px;
  4211. 373.  -   width: 405px;
  4212. 374.  - }
  4213. 375.  - .group_row_status_wrap {
  4214. 376.  -   color: #777;
  4215. 377.  -   padding: 5px 0;
  4216. 378.  - }
  4217. 379.  - .group_row_actions {
  4218. 380.  -   padding: 0 5px;
  4219. 381.  - }
  4220. 382.  - .group_row_actions {
  4221. 383.  -   padding: 0px;
  4222. 384.  - }
  4223. 385.  - .groups_no_list {
  4224. 386.  -   border: 0;
  4225. 387.  -   background: #FFF;
  4226. 388.  -   color: #777;
  4227. 389.  -   font-size: 1.18em;
  4228. 390.  -   margin: 0 0 3px;
  4229. 391.  -   padding: 80px 0;
  4230. 392.  -   text-align: center;
  4231. 393.  -   overflow: hidden;
  4232. 394.  -   text-overflow: ellipsis;
  4233. 395.  - }
  4234. 396.  - .groups_more_link {
  4235. 397.  -   display: block;
  4236. 398.  -   padding: 10px 0px;
  4237. 399.  -   margin: 0px 10px 10px;
  4238. 400.  -   border-top: 1px solid #DAE1E8;
  4239. 401.  -   text-align: center;
  4240. 402.  - }
  4241. 403.  - .groups_more_link:hover {
  4242. 404.  -   background: #E1E7ED;
  4243. 405.  -   text-decoration: none;
  4244. 406.  - }
  4245. 407.  - .group_friends_in_gr {
  4246. 408.  -   padding-top: 6px;
  4247. 409.  -   margin: 0px -2px;
  4248. 410.  - }
  4249. 411.  - .group_friend_in_gr {
  4250. 412.  -   height: 32px;
  4251. 413.  -   overflow: hidden;
  4252. 414.  -   padding: 0px 2px;
  4253. 415.  - }
  4254. 416.  - .group_row_buttons {
  4255. 417.  -   margin: 8px -3px 0px -2px;
  4256. 418.  - }
  4257. 419.  - .group_row_button {
  4258. 420.  -   margin: 0px 3px 0px 2px;
  4259. 421.  - }
  4260. 422.  -
  4261. 423.  - .group_friend_in_img {
  4262. 424.  -   width: 32px;
  4263. 425.  - }
  4264. 426.  - .groups_create_box {
  4265. 427.  -   padding: 3px 0px 1px;
  4266. 428.  -   width: 370px;
  4267. 429.  - }
  4268. 430.  - .groups_create_header {
  4269. 431.  -   color: #36638E;
  4270. 432.  -   font-size: 1.09em;
  4271. 433.  -   font-weight: bold;
  4272. 434.  -   margin: 11px 0px 5px;
  4273. 435.  - }
  4274. 436.  - .groups_create_section {
  4275. 437.  -   padding: 9px 1px 2px;
  4276. 438.  - }
  4277. 439.  - .groups_create_section .radiobtn div {
  4278. 440.  -   width: 18px;
  4279. 441.  - }
  4280. 442.  - .groups_create_about {
  4281. 443.  -   color: #777;
  4282. 444.  -   padding: 2px 23px 0px;
  4283. 445.  - }
  4284. 446.  - #group_create_title, #group_create_desc {
  4285. 447.  -   width: 360px;
  4286. 448.  - }
  4287. 449.  - .groups_about_public {
  4288. 450.  -   font-size: 0.9em;
  4289. 451.  -   color: #777;
  4290. 452.  -   padding-top: 10px;
  4291. 453.  - }
  4292. 454.  - .groups_search_focused .group_row_highlight {
  4293. 455.  -   background: #E1E7ED;
  4294. 456.  -   border-bottom: 1px solid #DAE1E8;
  4295. 457.  -   padding: 0px 1px 0px;
  4296. 458.  -   margin: 0px -1px;
  4297. 459.  -   *padding: 0px;
  4298. 460.  -   *margin: 0px;
  4299. 461.  - }
  4300. 462.  - .group_full_private {
  4301. 463.  -   font-size: 1.09em;
  4302. 464.  -   padding: 140px 20px 200px;
  4303. 465.  -   text-align: center;
  4304. 466.  -   width: 567px;
  4305. 467.  - }
  4306. 468.  -
  4307. 469.  - .public_contacts_list {
  4308. 470.  -   padding: 10px 20px;
  4309. 471.  -   overflow-x: hidden;
  4310. 472.  -   height: 273px;
  4311. 473.  - }
  4312. 474.  - .public_contacts_list_header {
  4313. 475.  -   border-bottom: 1px solid rgb(218, 225, 232);
  4314. 476.  -   margin: 0pt 5px 4px;
  4315. 477.  -   padding: 5px 0pt 2px;
  4316. 478.  -   width: 430px;
  4317. 479.  - }
  4318. 480.  - .public_contacts_list .row {
  4319. 481.  -   padding: 10px 0px;
  4320. 482.  -   width: 50px;
  4321. 483.  - }
  4322. 484.  - .public_contacts_list .info {
  4323. 485.  -   padding: 10px;
  4324. 486.  -   width: 220px;
  4325. 487.  - }
  4326. 488.  - .public_contacts_list .info_wide {
  4327. 489.  -   padding: 10px;
  4328. 490.  -   width: 340px;
  4329. 491.  - }
  4330. 492.  - .public_contacts_list .actions,
  4331. 493.  - .public_contacts_list .edit_actions {
  4332. 494.  -   width: 120px;
  4333. 495.  -   padding: 10px 0;
  4334. 496.  -   overflow: hidden;
  4335. 497.  - }
  4336. 498.  - .public_contacts_list .actions a,
  4337. 499.  - .public_contacts_list .edit_actions a {
  4338. 500.  -   display: block;
  4339. 501.  -   padding: 4px 6px;
  4340. 502.  -   margin: 0px 0px 2px;
  4341. 503.  - }
  4342. 504.  - .public_contacts_list .actions a:hover,
  4343. 505.  - .public_contacts_list .edit_actions a:hover {
  4344. 506.  -   text-decoration: none;
  4345. 507.  -   background: #E1E7ED;
  4346. 508.  - }
  4347. 509.  - .public_contacts_list .name a {
  4348. 510.  -   font-size: 1.09em;
  4349. 511.  -   color: #2B587A;
  4350. 512.  -   font-weight: bold;
  4351. 513.  -   padding-bottom: 5px;
  4352. 514.  - }
  4353. 515.  - .public_contacts_list .name span {
  4354. 516.  -   font-weight: bold;
  4355. 517.  -   font-size: 1.09em;
  4356. 518.  -   padding-bottom: 5px;
  4357. 519.  -   color: #777777;
  4358. 520.  - }
  4359. 521.  - .public_contacts_list .image {
  4360. 522.  -   height: 50px;
  4361. 523.  -   width: 50px;
  4362. 524.  -   overflow: hidden;
  4363. 525.  - }
  4364. 526.  - .public_contacts_list .image a {
  4365. 527.  -   display: block
  4366. 528.  - }
  4367. 529.  - .public_contacts_list h2 {
  4368. 530.  -   border: 0;
  4369. 531.  - }
  4370. 532.  - .public_contacts_list .cell {
  4371. 533.  -   border-bottom: 1px solid #E6EAED;
  4372. 534.  - }
  4373. 535.  - .public_contacts_list .cell:last-child {
  4374. 536.  -   border-bottom: none;
  4375. 537.  - }
  4376. 538.  - .public_contacts_list .desc {
  4377. 539.  -   padding: 4px 2px 0;
  4378. 540.  - }
  4379. 541.  - .public_contacts_list .extra_info {
  4380. 542.  -   padding: 4px 2px 0;
  4381. 543.  -   color: #777777;
  4382. 544.  -   line-height: 150%;
  4383. 545.  - }
  4384. 546.  - .public_contacts_list .extra_info a {
  4385. 547.  -   color: #777777;
  4386. 548.  - }
  4387. 549.  - .public_contacts_list .extra_info span {
  4388. 550.  -   background: url(/images/icons/info_icons.gif) no-repeat 0 0;
  4389. 551.  -   padding: 0 8px 0 13px;
  4390. 552.  - }
  4391. 553.  - .public_contacts_list .extra_info .info_phone {
  4392. 554.  -   background-position: 0 -18px;
  4393. 555.  -   padding-left: 9px;
  4394. 556.  - }
  4395. 557.  - .public_no_contacts {
  4396. 558.  -   padding: 120px 5px 5px;
  4397. 559.  -   height: 140px;
  4398. 560.  -   text-align: center;
  4399. 561.  -   font-size: 1.09em;
  4400. 562.  -   color:gray;
  4401. 563.  - }
  4402. 564.  -
  4403. 565.  -
  4404. 566.  - #group_like_module .like_link_state {
  4405. 567.  -   width: 180px;
  4406. 568.  - }
  4407. 569.  - #group_like_module #group_subscribe.like_link_state {
  4408. 570.  -   padding: 6px 0px 8px;
  4409. 571.  - }
  4410. 572.  - #group_like_module .like_link_state .subscribe_button_wrap {
  4411. 573.  -   padding: 3px 30px 14px;
  4412. 574.  - }
  4413. 575.  - #group_like_module .like_link_state .desc {
  4414. 576.  -   padding-bottom: 13px;
  4415. 577.  - }
  4416. 578.  - #group_like_module .like_link_state .desc .share_event_link {
  4417. 579.  -   padding-top: 1px;
  4418. 580.  - }
  4419. 581.  - #group_like_module .group_friends_count {
  4420. 582.  -   text-align: center;
  4421. 583.  - }
  4422. 584.  - #group_decline_past_event, #group_restore_past_event {
  4423. 585.  -   padding-top: 8px;
  4424. 586.  - }
  4425. 587.  - .group_event_took_place {
  4426. 588.  -   padding-bottom: 5px;
  4427. 589.  - }
  4428. 590.  - .group_user_invited {
  4429. 591.  -   padding: 2px 0 11px;
  4430. 592.  -   text-align: center;
  4431. 593.  - }
  4432. 594.  -
  4433. 595.  -
  4434. 596.  - #public_contact_memlink_tip {
  4435. 597.  -   color: #777;
  4436. 598.  -   padding: 3px 0;
  4437. 599.  -   font-size: 0.9em;
  4438. 600.  - }
  4439. 601.  - .public_edit_contact_info h2 {
  4440. 602.  -   margin: 0 0 10px 10px;
  4441. 603.  -   border-bottom: none;
  4442. 604.  - }
  4443. 605.  - .public_edit_contact_info .label {
  4444. 606.  -   padding: 3px 10px 2px;
  4445. 607.  -   width: 70px;
  4446. 608.  -   clear: both;
  4447. 609.  -   color: #777;
  4448. 610.  - }
  4449. 611.  - .public_edit_contact_info .labeled_text {
  4450. 612.  -   padding: 3px 0px 10px;
  4451. 613.  -   width: 190px;
  4452. 614.  - }
  4453. 615.  - .public_edit_contact_info .labeled {
  4454. 616.  -   padding: 0px 0px 5px;
  4455. 617.  -   width: 190px;
  4456. 618.  -   overflow: hidden;
  4457. 619.  - }
  4458. 620.  - .public_edit_contact_info .labeled .text {
  4459. 621.  -   width: 182px;
  4460. 622.  - }
  4461. 623.  -
  4462. 624.  - .gle_block {
  4463. 625.  -   width: 190px;
  4464. 626.  -   overflow: hidden;
  4465. 627.  -   padding: 10px 0px;
  4466. 628.  - }
  4467. 629.  - .gle_table {
  4468. 630.  -   width: 190px;
  4469. 631.  - }
  4470. 632.  - .gle_td {
  4471. 633.  -   vertical-align: top;
  4472. 634.  - }
  4473. 635.  - .gle_thumb {
  4474. 636.  -   display: block;
  4475. 637.  -   width: 50px;
  4476. 638.  -   height: 50px;
  4477. 639.  -   overflow: hidden;
  4478. 640.  - }
  4479. 641.  - .gle_img {
  4480. 642.  -   width: 50px;
  4481. 643.  -   vertical-align: top;
  4482. 644.  - }
  4483. 645.  - .gle_row {
  4484. 646.  -   padding: 1px 0px 2px;
  4485. 647.  -   margin: 0px 8px;
  4486. 648.  -   width: 124px;
  4487. 649.  -   white-space: nowrap;
  4488. 650.  -   height: 13px;
  4489. 651.  -   overflow: hidden;
  4490. 652.  -   -o-text-overflow: ellipsis;
  4491. 653.  -   text-overflow: ellipsis;
  4492. 654.  - }
  4493. 655.  - .gle_date, .gle_place {
  4494. 656.  -   color: #777;
  4495. 657.  - }
  4496. 658.  - .gl_events_msg_hide {
  4497. 659.  -   padding: 15px 0px 3px;
  4498. 660.  - }
  4499. 661.  - div.gl_summary_short {
  4500. 662.  -   padding: 13px 0px 0px;
  4501. 663.  -   margin: 0px 10px;
  4502. 664.  - }
  4503. 665.  - .gle_list {
  4504. 666.  -   padding: 0px 10px;
  4505. 667.  - }
  4506. 668.  - #gle_list_more_lnk {
  4507. 669.  -   display: block;
  4508. 670.  -   background: #EFF1F3;
  4509. 671.  -   margin: 0px 10px 10px;
  4510. 672.  -   padding: 10px;
  4511. 673.  -   text-align: center;
  4512. 674.  -   color: #738392;
  4513. 675.  - }
  4514. 676.  - #gle_list_more_lnk:hover {
  4515. 677.  -   background: #E9EDF1;
  4516. 678.  -   text-decoration: none;
  4517. 679.  - }
  4518. 680.  - #gle_list_more {
  4519. 681.  -   display: none;
  4520. 682.  - }
  4521. 683.  -
  4522. 684.  - .group_share_club {
  4523. 685.  -   text-decoration: none;
  4524. 686.  -   width: 11px;
  4525. 687.  -   height: 13px;
  4526. 688.  -   background: url(/images/icons/mono_iconset.gif?8) no-repeat 0px -192px;
  4527. 689.  -   cursor: pointer;
  4528. 690.  -   margin: 3px 5px 0px;
  4529. 691.  - }
  4530. 692.  - #group_share_progress, #group_unshare_progress {
  4531. 693.  -   height: 17px;
  4532. 694.  - }
  4533. 695.  - .groups_list_search_summary {
  4534. 696.  -   padding: 8px 0px 0px;
  4535. 697.  - }
  4536. 698.  - .groups_list_last_row {
  4537. 699.  -   border-bottom: none;
  4538. 700.  - }
  4539. 701.  - #groups_loading {
  4540. 702.  -   background: url('/images/upload.gif') center center no-repeat;
  4541. 703.  -   width: 32px;
  4542. 704.  -   height: 9px;
  4543. 705.  -   margin: 7px 0px 0px 342px;
  4544. 706.  -   z-index: 95;
  4545. 707.  -   position: absolute;
  4546. 708.  -   display: none;
  4547. 709.  - }
  4548. 710.  - #groups_reset_search {
  4549. 711.  -   margin: 1px 0px 0px 356px;
  4550. 712.  -   display: none;
  4551. 713.  -   cursor: pointer;
  4552. 714.  -   background: transparent url(/images/icons/input_clear.gif) 6px 6px no-repeat;
  4553. 715.  -   padding: 2px;
  4554. 716.  -   width: 19px;
  4555. 717.  -   height: 19px;
  4556. 718.  -   opacity: 0.6;
  4557. 719.  -   filter: alpha(opacity=60);
  4558. 720.  -   position: absolute;
  4559. 721.  -   z-index: 95;
  4560. 722.  - }
  4561. 723.  - #groups_list_search_cont {
  4562. 724.  -   display: none;
  4563. 725.  - }
  4564. 726.  - .groups_row_type {
  4565. 727.  -   color: #777;
  4566. 728.  -   /*margin-left: 8px;*/
  4567. 729.  -   display: block;
  4568. 730.  -   padding-top: 4px;
  4569. 731.  - }
  4570. 732.  - .groups_inv_more {
  4571. 733.  -   display: none;
  4572. 734.  - }
  4573. 735.  - .groups_inv_showmore {
  4574. 736.  -   display: block;
  4575. 737.  -   padding: 10px 0px;
  4576. 738.  -   margin: 0px;
  4577. 739.  -   border-top: 1px solid #DAE1E8;
  4578. 740.  -   text-align: center;
  4579. 741.  - }
  4580. 742.  - .groups_inv_showmore:hover {
  4581. 743.  -   background: #E1E7ED;
  4582. 744.  -   text-decoration: none;
  4583. 745.  - }
  4584. 746.  - .gle_invites_list {
  4585. 747.  -   padding: 0px 10px;
  4586. 748.  - }
  4587. 749.  - .groups_inv_last_row {
  4588. 750.  -   border-bottom: none;
  4589. 751.  -   padding-bottom: 0px;
  4590. 752.  - }
  4591. 753.  - .groups_inv_info {
  4592. 754.  -   width: 540px;
  4593. 755.  -   padding-left: 10px;
  4594. 756.  - }
  4595. 757.  - .groups_inv_info_l {
  4596. 758.  -   color: #777777;
  4597. 759.  -   margin-left: 8px;
  4598. 760.  - }
  4599. 761.  - .groups_inv_cont {
  4600. 762.  -   background: #F7F7F7;
  4601. 763.  -   padding: 10px;
  4602. 764.  -   margin: 8px 0px 0px 0px;
  4603. 765.  - }
  4604. 766.  - .groups_row_inv_info {
  4605. 767.  -   padding-left: 10px;
  4606. 768.  -   width: 410px;
  4607. 769.  - }
  4608. 770.  - .group_inv_status {
  4609. 771.  -   margin-top: 2px;
  4610. 772.  -   color: #777777;
  4611. 773.  - }
  4612. 774.  - .groups_acted_text {
  4613. 775.  -   padding: 0px 0px 4px;
  4614. 776.  - }
  4615. 777.  - .gle_summary_progress {
  4616. 778.  -   display: none;
  4617. 779.  - }
  4618. 780.  - #gle_invites_more {
  4619. 781.  -   display: none;
  4620. 782.  - }
  4621. 783.  - .group_inv_event_time {
  4622. 784.  -   padding: 2px 0px 4px;
  4623. 785.  - }
  4624. 786.  - .groups_row_img {
  4625. 787.  -   width: 100px;
  4626. 788.  - }
  4627. 789.  - .gle_invites_actions {
  4628. 790.  -   margin: 0px 0px 14px;
  4629. 791.  -   text-align: center;
  4630. 792.  -   background: #F7F7F7;
  4631. 793.  -   padding: 8px;
  4632. 794.  - }
  4633. 795.  -
  4634. 796.  - div.gtop_message {
  4635. 797.  -   margin: 0 0 10px 0;
  4636. 798.  -   padding: 8px 13px;
  4637. 799.  -   border: none;
  4638. 800.  -   background-color: #F0F2F5;
  4639. 801.  - }
  4640. 802.  - .gtop_mesage_buttons {
  4641. 803.  -   padding: 10px 0px 3px;
  4642. 804.  - }
  4643. 805.  - .gtop_mesage_buttons a {
  4644. 806.  -   margin: 6px 0 0 20px;
  4645. 807.  - }
  4646. ------
Advertisement
Add Comment
Please, Sign In to add comment