Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Файл - profile.js (Старый размер - 34811 | Новый - 0):
- 0. - var Profile = {
- 1. - showFull: function(uid, geolang, newMap) {
- 2. - if (!cur.vkLngCode) {
- 3. - cur.vkLngCode = geolang;
- 4. - }
- 5. -
- 6. - var lnk = ge('profile_full_link');
- 7. - if (lnk) {
- 8. - lnk.innerHTML = getLang('hide_full');
- 9. - lnk.onclick = Profile.hideFull;
- 10. - }
- 11. - ge('profile_short').innerHTML = cur.options.info[1];
- 12. - show('profile_full_info');
- 13. - if (ge('profile_map')) {
- 14. - if (!newMap && !window.google) {
- 15. - headNode.appendChild(ce('script', {
- 16. - type: 'text/javascript',
- 17. - src: (window.locProtocol || 'http:') + '//maps.google.com/maps/api/js?sensor=false&callback=gMapsInit&language='+(cur.vkLngCode || 'en')
- 18. - }));
- 19. - window.gMapsInit = function() {}
- 20. - }
- 21. - var params = {act: 'profile_map', uid: uid};
- 22. - if (nav.objLoc.as) {
- 23. - params.as = nav.objLoc.as;
- 24. - }
- 25. - ajax.post('al_places.php', params, {
- 26. - onDone: function(html, js) {
- 27. - if (html) {
- 28. - ge('profile_map').innerHTML = html;
- 29. - eval('(function () {' + js + '})();');
- 30. - } else {
- 31. - re('profile_map');
- 32. - }
- 33. - },
- 34. - stat: newMap ? ['places.js', 'mapbox.js', 'mapbox.css'] : ['places.js']
- 35. - });
- 36. - }
- 37. - },
- 38. - hideFull: function() {
- 39. - var lnk = ge('profile_full_link');
- 40. - if (lnk) {
- 41. - lnk.innerHTML = getLang('show_full');
- 42. - lnk.onclick = Profile.showFull;
- 43. - }
- 44. - ge('profile_short').innerHTML = cur.options.info[0];
- 45. - hide('profile_full_info', 'profile_class_hint');
- 46. - },
- 47. - showGroups: function(e) {
- 48. - if (checkEvent(e) !== false) return;
- 49. - var lnk = ge('profile_groups_link');
- 50. - lnk.oldText = val(lnk);
- 51. - ajax.post('al_profile.php', {act: 'groups', id: cur.oid}, {onDone: function(label, text) {
- 52. - if (text) {
- 53. - val(lnk, label);
- 54. - lnk.onclick = Profile.hideGroups;
- 55. - var pag = ge('profile_all_groups');
- 56. - val(pag, text);
- 57. - show(pag.parentNode);
- 58. - } else {
- 59. - hide(lnk);
- 60. - }
- 61. - }, showProgress: function() {
- 62. - val(lnk, '<div class="progress" id="profile_groups_prg"></div>');
- 63. - }, hideProgress: function() {
- 64. - val(lnk, lnk.oldText);
- 65. - }, cache: 1});
- 66. - return cancelEvent(e);
- 67. - },
- 68. - hideGroups: function(e) {
- 69. - if (checkEvent(e) !== false) return;
- 70. - var lnk = ge('profile_groups_link');
- 71. - val(lnk, lnk.oldText);
- 72. - lnk.onclick = Profile.showGroups;
- 73. - hide(ge('profile_all_groups').parentNode);
- 74. - return cancelEvent(e);
- 75. - },
- 76. - photoRemoveTip: function(lnk) {
- 77. - if (!((cur || {}).lang || {}).profile_photo_hide) return;
- 78. - showTooltip(lnk, {
- 79. - text: getLang('profile_photo_hide'),
- 80. - shift: [13, 1, 1],
- 81. - black: 1
- 82. - });
- 83. - },
- 84. - photoRemove: function(lnk, photo_id, ev) {
- 85. - if (cur.viewAsBox) {
- 86. - cur.viewAsBox();
- 87. - return cancelEvent(ev);
- 88. - }
- 89. - if (!cur.hidingPh) cur.hidingPh = {};
- 90. - if (cur.hidingPh[photo_id]) return cancelEvent(ev);
- 91. -
- 92. - ajax.post('al_profile.php', {act: 'remove_photo', photo_id: photo_id, hash: cur.options.profph_hash}, {
- 93. - onDone: function(about, photos) {
- 94. - val(ge('profile_photos_about') || ge('profile_photos_module').appendChild(ce('div', {className: 'msg', id: 'profile_photos_about'})), about);
- 95. - each(geByClass('profile_photo_hide_wrap', ge('profile_photos')), function() {
- 96. - if (this.tt && this.tt.destroy) {
- 97. - this.tt.destroy();
- 98. - }
- 99. - });
- 100. - val('profile_photos', photos);
- 101. - if (!photos) {
- 102. - hide('profile_photos_module');
- 103. - }
- 104. - },
- 105. - showProgress: function() {
- 106. - cur.hidingPh[photo_id] = 1;
- 107. - },
- 108. - hideProgress: function() {
- 109. - cur.hidingPh[photo_id] = 0;
- 110. - }
- 111. - });
- 112. - return cancelEvent(ev);
- 113. - },
- 114. - photoReturn: function(lnk, photo_id) {
- 115. - if (cur.viewAsBox) return cur.viewAsBox();
- 116. -
- 117. - ajax.post('al_profile.php', {act: 'return_photo', photo_id: photo_id, hash: cur.options.profph_hash}, {
- 118. - onDone: function(photos) {
- 119. - each(geByClass('profile_photo_hide_wrap', ge('profile_photos')), function() {
- 120. - if (this.tt && this.tt.destroy) {
- 121. - this.tt.destroy();
- 122. - }
- 123. - });
- 124. - val('profile_photos', photos);
- 125. - re('profile_photos_about');
- 126. - },
- 127. - showProgress: function() {
- 128. - hide(lnk);
- 129. - lnk.nextSibling.style.display = 'inline';
- 130. - },
- 131. - hideProgress: function() {
- 132. - hide(lnk.nextSibling);
- 133. - show(lnk);
- 134. - }
- 135. - });
- 136. - },
- 137. -
- 138. - otherActs: function(el) {
- 139. - clearTimeout(cur.hideOtherTimer);
- 140. - if (!el) return false;
- 141. - el.blur();
- 142. - var acts = ge('profile_other_acts');
- 143. - if (isVisible(acts)) {
- 144. - fadeIn(acts, 0);
- 145. - return false;
- 146. - }
- 147. - setTimeout(addEvent.pbind(document, 'click', Profile.hideOther), 1);
- 148. - acts.style.marginLeft = '-1px';
- 149. - acts.style.marginTop = '-21px';
- 150. - show(acts);
- 151. - return false;
- 152. - },
- 153. - hideOther: function(timeout) {
- 154. - if (timeout > 0) {
- 155. - cur.hideOtherTimer = setTimeout(Profile.hideOther.pbind(0), timeout);
- 156. - return;
- 157. - }
- 158. - var acts = ge('profile_other_acts');
- 159. - if (!acts) return;
- 160. - if (timeout == -1) {
- 161. - hide(acts);
- 162. - } else {
- 163. - fadeOut(acts, 200);
- 164. - }
- 165. - removeEvent(document, 'click', Profile.hideOther);
- 166. - },
- 167. -
- 168. - editPhoto: function(newph) {
- 169. - Profile.hideOther(-1);
- 170. - if (cur.viewAsBox) return cur.viewAsBox();
- 171. -
- 172. - showBox('/al_profile.php', extend(newph || {}, {act: 'edit_photo'}), {
- 173. - params: {bodyStyle: 'padding: 16px 7px'},
- 174. - stat: ['tagger.js', 'tagger.css']
- 175. - });
- 176. - },
- 177. - deletePhoto: function() {
- 178. - Profile.hideOther(-1);
- 179. - if (cur.viewAsBox) return cur.viewAsBox();
- 180. -
- 181. - showBox('al_profile.php', {act: 'delete_photo_box'});
- 182. - },
- 183. -
- 184. - setupSMS: function(hash) {
- 185. - Profile.hideOther(-1);
- 186. - if (cur.viewAsBox) return cur.viewAsBox();
- 187. -
- 188. - showBox('al_mobile.php', {act: 'configure_sms_notifications', mid: cur.oid, hash: hash});
- 189. - },
- 190. - toggleFan: function(btn, hash, act, ev) {
- 191. - if (cur.viewAsBox) {
- 192. - Profile.hideOther(-1);
- 193. - return cur.viewAsBox();
- 194. - }
- 195. -
- 196. - if (cur.toggleFanAct != undefined) {
- 197. - act = cur.toggleFanAct;
- 198. - }
- 199. - ajax.post('al_fans.php', {act: act ? 'be_fan' : 'not_fan', mid: cur.oid, hash: hash}, {onDone: function(text) {
- 200. - btn.firstChild.nextSibling.innerHTML = text;
- 201. - cur.toggleFanAct = !act;
- 202. - }, progress: btn.firstChild});
- 203. - cancelEvent(ev);
- 204. - },
- 205. - toggleFave: function(btn, hash, act, ev) {
- 206. - if (cur.viewAsBox) {
- 207. - Profile.hideOther(-1);
- 208. - return cur.viewAsBox();
- 209. - }
- 210. -
- 211. - if (cur.toggleFaveAct != undefined) {
- 212. - act = cur.toggleFaveAct;
- 213. - }
- 214. - ajax.post('fave.php', {act: act ? 'addPerson' : 'deletePerson', mid: cur.oid, hash: hash}, {onDone: function(text) {
- 215. - btn.firstChild.nextSibling.innerHTML = text;
- 216. - cur.toggleFaveAct = !act;
- 217. - }, progress: btn.firstChild});
- 218. - cancelEvent(ev);
- 219. - },
- 220. - toggleFriend: function(btn, hash, act, ev, sure) {
- 221. - if (cur.viewAsBox) {
- 222. - Profile.hideOther(-1);
- 223. - return cur.viewAsBox();
- 224. - }
- 225. -
- 226. - if (act) {
- 227. - if (sure !== true && cur.options.bannedhim) {
- 228. - showBox('al_profile.php', {act: 'banned_him', action: 'friend', mid: cur.oid}).onContinue = Profile.toggleFriend.pbind(btn, hash, act, false, true);
- 229. - return cancelEvent(ev);
- 230. - }
- 231. - stManager.add(['tooltips.css', 'tooltips.js']);
- 232. - }
- 233. -
- 234. - ajax.post('al_friends.php', {act: act ? 'add' : 'remove', mid: cur.oid, hash: hash, from: 'profile'}, {
- 235. - onDone: function(text, vis, ttText, ttScript, doReload) {
- 236. - if (act && cur.onFreindAdd) {
- 237. - cur.onFreindAdd();
- 238. - }
- 239. - if (!text) return nav.reload();
- 240. - var tt = (ge('profile_am_subscribed') || {}).tt;
- 241. - if (tt) {
- 242. - tt.hide({fasthide: 1});
- 243. - tt.destroy();
- 244. - }
- 245. - Profile.hideOther(-1);
- 246. - var fs = ge('friend_status');
- 247. - cleanElems(fs.firstChild);
- 248. - if (text) {
- 249. - show(fs);
- 250. - val(fs, text);
- 251. - } else {
- 252. - hide(fs);
- 253. - }
- 254. - (vis ? show : hide)('friend_remove');
- 255. - if (doReload || cur.options.bannedhim) {
- 256. - nav.reload();
- 257. - } else if (ttText) {
- 258. - ajax.preload('al_friends.php', {act: 'friend_tt', mid: cur.oid}, [ttText, ttScript])
- 259. - setTimeout(Profile.friendTooltip, 0);
- 260. - }
- 261. - },
- 262. - showProgress: btn.tagName == 'BUTTON' ? lockButton.pbind(btn) : show.pbind(btn.firstChild),
- 263. - hideProgress: btn.tagName == 'BUTTON' ? unlockButton.pbind(btn) : hide.pbind(btn.firstChild),
- 264. - onFail: function(text) {
- 265. - if (!text) return;
- 266. -
- 267. - showFastBox(getLang('global_error'), text);
- 268. - return true;
- 269. - }
- 270. - });
- 271. - cancelEvent(ev);
- 272. - },
- 273. - friendTTHide: function(e) {
- 274. - var tt = (ge('profile_am_subscribed') || {}).tt;
- 275. - if (e) {
- 276. - for (var el = e.target; el; el = domPN(el)) {
- 277. - if (el.tagName && hasClass(el, 'preq_tt')) {
- 278. - return;
- 279. - }
- 280. - }
- 281. - }
- 282. - if (tt && tt.hide) tt.hide({fasthide: 1});
- 283. - removeEvent(document, 'click', Profile.friendTTHide);
- 284. - },
- 285. - friendTooltip: function() {
- 286. - if (cur.viewAsBox) {
- 287. - return;
- 288. - }
- 289. -
- 290. - setTimeout(function() {
- 291. - removeEvent(document, 'click', Profile.friendTTHide);
- 292. - addEvent(document, 'click', Profile.friendTTHide);
- 293. - }, 0);
- 294. - return showTooltip(ge('profile_am_subscribed'), {
- 295. - url: 'al_friends.php',
- 296. - params: {act: 'friend_tt', mid: cur.oid},
- 297. - slide: 15,
- 298. - hidedt: 500,
- 299. - shift: [23, -1, -10],
- 300. - className: 'preq_tt',
- 301. - forcetodown: true
- 302. - });
- 303. - },
- 304. - submitReqText: function() {
- 305. - var msg = trim(val('preq_input'));
- 306. - if (!msg) return elfocus('preq_input');
- 307. -
- 308. - var oid = cur.mfid ? cur.mfid : cur.oid;
- 309. - ajax.post('al_friends.php', {act: 'request_text', mid: oid, message: msg, hash: cur.reqHash}, {onDone: function(text) {
- 310. - if (!text) return;
- 311. -
- 312. - var t = ge('preq_text');
- 313. - val(t, text);
- 314. - show(t.parentNode);
- 315. - hide(ge('preq_input').parentNode);
- 316. - }, showProgress: lockButton.pbind('preq_submit'), hideProgress: unlockButton.pbind('preq_submit')});
- 317. - },
- 318. - reqTextChanged: function(ev) {
- 319. - onCtrlEnter(ev, Profile.submitReqText);
- 320. - var field = ge('preq_input');
- 321. - var v = trim(val(field)).replace(/\n\n\n+/g, '\n\n');
- 322. - if (field.lastLen === v.length) return;
- 323. - field.lastLen = v.length;
- 324. - var countRealLen = function(text, max, maxbr) {
- 325. - var spec = {'&': 5, '<': 4, '>': 4, '"': 6, "\n": 4, "\r": 0, '!': 5, "'": 5};
- 326. - var res = 0, brs = 0, good = false;
- 327. - for (var i = 0, l = text.length; i < l; i++) {
- 328. - var k = spec[text.charAt(i)], c = text.charCodeAt(i);
- 329. - if (c == 10) ++brs;
- 330. - if (k !== undefined) res += k;
- 331. - else if ((c > 0x80 && c < 0xC0) || c > 0x500) res += ('&#' + c + ';').length;
- 332. - else res += 1;
- 333. - if (good === false && (max && res > max || maxbr && brs > maxbr)) good = i ? text.substr(0, i) : '';
- 334. - }
- 335. - return [res, brs, (good === false) ? text : good];
- 336. - }
- 337. - var maxLen = 240, maxBrs = 4, r = countRealLen(v, maxLen, maxBrs), realLen = r[0], brCount = r[1];
- 338. - var warn = ge('preq_warn');
- 339. - if (r[2] !== v) {
- 340. - if (realLen > maxLen) {
- 341. - realLen = maxLen;
- 342. - } else if (brCount > 4) {
- 343. - brCount = 4;
- 344. - }
- 345. - val(field, r[2]);
- 346. - field.lastLen = trim(r[2]).length;
- 347. - }
- 348. - if (realLen > maxLen - 40 || brCount > maxBrs) {
- 349. - if (realLen > maxLen) {
- 350. - warn.innerHTML = getLang('friends_exceeds_symbol_limit', realLen - maxLen);
- 351. - } else if (brCount > 4) {
- 352. - warn.innerHTML = getLang('friends_exceeds_lines_limit', brCount - 4);
- 353. - } else {
- 354. - warn.innerHTML = getLang('text_N_symbols_remain', maxLen - realLen);
- 355. - }
- 356. - show(warn);
- 357. - } else {
- 358. - hide(warn);
- 359. - }
- 360. - },
- 361. - toggleBlacklist: function(btn, hash, ev) {
- 362. - if (cur.viewAsBox) {
- 363. - Profile.hideOther(-1);
- 364. - return cur.viewAsBox();
- 365. - }
- 366. -
- 367. - ajax.post('al_settings.php', {act: cur.options.bannedhim ? 'a_del_from_bl' : 'a_add_to_bl', id: cur.oid, hash: hash, from: 'profile'}, {onDone: function(text) {
- 368. - domNS(domFC(btn)).innerHTML = text;
- 369. - cur.options.bannedhim = !cur.options.bannedhim;
- 370. - }, progress: domFC(btn)});
- 371. - cancelEvent(ev);
- 372. - },
- 373. - toggleFeedIgnored: function(btn, hash, ev) {
- 374. - if (cur.viewAsBox) {
- 375. - Profile.hideOther(-1);
- 376. - return cur.viewAsBox();
- 377. - }
- 378. -
- 379. - ajax.post('al_feed.php', {act: cur.options.ignoredhim ? 'a_unignore_owner' : 'a_ignore_owner', owner_id: cur.oid, hash: hash, from: 'profile'}, {onDone: function(text) {
- 380. - domNS(domFC(btn)).innerHTML = text;
- 381. - cur.options.ignoredhim = !cur.options.ignoredhim;
- 382. - }, progress: domFC(btn)});
- 383. - cancelEvent(ev);
- 384. - },
- 385. - showGiftBox: function(mid, ev) {
- 386. - Profile.hideOther(-1);
- 387. - cur.gftbxWasScroll = boxLayerWrap.scrollTop;
- 388. - boxLayerWrap.scrollTop = 0;
- 389. - if (cur.viewAsBox) return cur.viewAsBox();
- 390. -
- 391. - var cache = cur.ignoreBoxCache ? 0 : 1;
- 392. - cur.ignoreBoxCache = false;
- 393. - return !showBox('al_gifts.php', {act: 'get_gift_box', mid: mid, fr: (mid == vk.id ? 1 : 0)}, {stat: ['gifts.css', 'wide_dd.js', 'wide_dd.css'], cache: cache}, ev);
- 394. - },
- 395. - showHideGiftsBox: function(ev) {
- 396. - Profile.hideOther(-1);
- 397. - if (cur.viewAsBox) return cur.viewAsBox();
- 398. - var msg = getLang('profile_sure_hide_gifts').replace('{link}', '<a href="/settings">').replace('{/link}', '</a>').replace('{link1}', '<a href="/settings?act=privacy">').replace('{/link1}', '</a>');
- 399. -
- 400. - var box = showFastBox({title: getLang('global_warning'), bodyStyle: 'line-height: 140%;', width: 350}, msg, getLang('profile_gifts_hide_button'), function() {
- 401. - ajax.post('al_profile.php', {
- 402. - act: 'hide_gifts',
- 403. - hash: cur.options.gifts_hash
- 404. - }, {
- 405. - onDone: function() {
- 406. - slideUp('profile_gifts', 200);
- 407. - box.hide();
- 408. - },
- 409. - progress: box.progress
- 410. - });
- 411. - }, getLang('global_cancel'));
- 412. - cancelEvent(ev);
- 413. - return false;
- 414. - },
- 415. - showNewGift: function(giftId) {
- 416. - var gifts = ge('profile_gifts');
- 417. - if (!gifts || !giftId) return;
- 418. - var images = geByTag('img', geByClass1('module_body', gifts)), pic = vkImage();
- 419. - pic.src = '/images/gifts/'+(window.devicePixelRatio >= 2 ?'96':'48')+'/'+giftId+'.png';
- 420. - var onload = function() {
- 421. - var firstPic = images[0], a = firstPic.parentNode, imgCount = images.length;
- 422. - if (firstPic) {
- 423. - addClass(pic, 'giftImg');
- 424. - setStyle(a, {marginLeft: -pic.width+'px'});
- 425. - firstPic.parentNode.insertBefore(pic, firstPic);
- 426. - animate(a, {marginLeft: '0px'}, 200, function() {
- 427. - if (imgCount >= 4) re(images[images.length - 1]);
- 428. - })
- 429. - }
- 430. - };
- 431. - if (!pic.width) {
- 432. - addEvent(pic, 'load', onload);
- 433. - } else {
- 434. - onload();
- 435. - }
- 436. - },
- 437. - declineFriend: function(hash) {
- 438. - if (cur.viewAsBox) return cur.viewAsBox();
- 439. - ajax.post('al_friends.php', {act: 'remove', mid: cur.oid, hash: hash}, {onDone: function(text) {
- 440. - hide('friend_request_actions');
- 441. - }});
- 442. - },
- 443. - showWishesBox: function(ev) {
- 444. - return true;
- 445. - //return !showTabbedBox('al_gifts.php', {act: 'wishlist_box', mid: cur.oid}, {stat: ['gifts.css'], cache: 1}, ev);
- 446. - },
- 447. - processRelation: function(el, mid, hash, accept) {
- 448. - if (cur.viewAsBox) return cur.viewAsBox();
- 449. -
- 450. - var pos = getXY(el), parpos = getXY(el.parentNode);
- 451. - var pr = ge('relation_progress' + mid), lnk = ge('profile_full_link');
- 452. - ajax.post('al_profile.php', {
- 453. - act: 'process_relation',
- 454. - mid: mid,
- 455. - accept: accept ? 1 : '',
- 456. - full_shown: lnk ? 1 : '',
- 457. - hash: hash
- 458. - }, {
- 459. - onDone: function(short_info, long_info) {
- 460. - cur.options.info = [short_info, long_info];
- 461. - if (isVisible('profile_full_info')) {
- 462. - Profile.showFull();
- 463. - } else {
- 464. - Profile.hideFull();
- 465. - }
- 466. - },
- 467. - showProgress: function() {
- 468. - pr.style.left = (el.offsetLeft + Math.floor((el.offsetWidth - 32) / 2)) + 'px';
- 469. - show(pr);
- 470. - el.style.visibility = 'hidden';
- 471. - },
- 472. - hideProgress: function() {
- 473. - el.style.visibility = 'visible';
- 474. - hide(pr);
- 475. - }
- 476. - });
- 477. - },
- 478. - showFans: function(ev) {
- 479. - if (cur.viewAsBox) return cur.viewAsBox();
- 480. -
- 481. - return !showTabbedBox('al_fans.php', {act: 'show_fans_box', oid: cur.oid}, {cache: 1}, ev);
- 482. - },
- 483. - showIdols: function(ev) {
- 484. - if (cur.viewAsBox) return cur.viewAsBox();
- 485. -
- 486. - return !showTabbedBox('al_fans.php', {act: 'show_idols_box', oid: cur.oid}, {cache: 1}, ev);
- 487. - },
- 488. - showPublics: function(ev) {
- 489. - if (cur.viewAsBox) return cur.viewAsBox();
- 490. -
- 491. - return !showTabbedBox('al_fans.php', {act: 'show_publics_box', oid: cur.oid}, {cache: 1}, ev);
- 492. - },
- 493. - fansBox: function(oid, ev, tab) {
- 494. - if (cur.viewAsBox) return cur.viewAsBox();
- 495. - return !showBox('al_fans.php', {act: 'box', tab: tab || 'fans', oid: oid}, {cache: 1, stat: ['page_help.css', 'fansbox.js']}, ev);
- 496. - },
- 497. - giftsBox: function(mid, ev, tab) {
- 498. - if (cur.viewAsBox) return cur.viewAsBox();
- 499. - return !showBox('al_gifts.php', {act: 'box', tab: tab || 'received', mid: mid}, {cache: 1, stat: ['gifts.css', 'gifts.js']}, ev);
- 500. - },
- 501. - idolsBox: function(oid, ev) {
- 502. - return Profile.fansBox(oid, ev, 'idols');
- 503. - },
- 504. - showClassHint: function(text) {
- 505. - var cl = ge('profile_class');
- 506. - if (!cl) return;
- 507. -
- 508. - var hint = cur.classhint = bodyNode.appendChild(ce('div', {id: 'profile_class_hint', innerHTML: '\
- 509. - <table cellspacing="0" cellpadding="0">\
- 510. - <tr>\
- 511. - <td rowspan="2"><div class="pointer"></div></td>\
- 512. - <td><div class="content">' + text + '</div></td>\
- 513. - </tr>\
- 514. - <tr><td><div class="bottom"></div></td></tr>\
- 515. - </table>'}, {display: 'none'}));
- 516. -
- 517. - var xy = getXY(cl), elsize = getSize(cl);
- 518. -
- 519. - hint.style.opacity = 0;
- 520. - show(hint);
- 521. - var size = getSize(hint);
- 522. -
- 523. - var top = xy[1] - Math.floor((size[1] - elsize[1]) / 2);
- 524. - var newleft = xy[0] + (vk.rtl ? -(size[0] + 10) : (elsize[0] + 10));
- 525. - hint.style.left = (newleft + (vk.rtl ? -10 : 10)) + 'px';
- 526. - hint.style.top = top + 'px';
- 527. -
- 528. - var showhint = animate.pbind(hint, {left: newleft, opacity: 1}, 500, false), img = vkImage();
- 529. - img.onload = showhint;
- 530. - img.src = '/images/classhint.gif';
- 531. -
- 532. - cur.destroy.push(function(c) {
- 533. - if (c.classhint && c.classhint.parentNode) {
- 534. - c.classhint.parentNode.removeChild(c.classhint);
- 535. - c.classhint = false;
- 536. - }
- 537. - });
- 538. - if (cur._back) {
- 539. - cur._back.hide.push(function() {
- 540. - if (cur.classhint && cur.classhint.parentNode) {
- 541. - cur.classhint.parentNode.removeChild(cur.classhint);
- 542. - cur.classhint = false;
- 543. - }
- 544. - });
- 545. - }
- 546. - },
- 547. - init: function(opts) {
- 548. - extend(cur, {
- 549. - module: 'profile',
- 550. - hideOther: Profile.hideOther,
- 551. - options: opts,
- 552. - oid: opts.user_id,
- 553. - postTo: opts.user_id,
- 554. - editing: false,
- 555. - viewAsWarn: opts.view_as_warn,
- 556. - viewAsBox: opts.view_as ? function() {
- 557. - setTimeout(showFastBox(getLang('global_warning'), cur.options.view_as).hide, 2000);
- 558. - return false;
- 559. - } : false,
- 560. - _back: opts.view_as ? false : {loc: opts.loc, show: [], hide: [], text: opts.back}
- 561. - });
- 562. - if (opts.view_as) {
- 563. - cur.nav.push(function(changed, old, n, opts) {
- 564. - if (cur._leave) {
- 565. - cur._leave = false;
- 566. - return;
- 567. - }
- 568. - showFastBox(getLang('global_warning'), cur.viewAsWarn, getLang('global_continue'), function() {
- 569. - cur._leave = true;
- 570. - nav.go(n);
- 571. - }, getLang('global_cancel'));
- 572. - return false;
- 573. - });
- 574. - }
- 575. - if (opts.mail_cache) {
- 576. - ajax.preload('al_mail.php', {act: 'write_box', to: cur.oid}, opts.mail_cache)
- 577. - }
- 578. - if (ge('profile_wall')) {
- 579. - wall.init(extend(opts, {automore: 1}));
- 580. - }
- 581. - if (opts.class_hint) {
- 582. - cur.clHintTimer = setTimeout(Profile.showClassHint.pbind(opts.class_hint), 1000);
- 583. - }
- 584. - if (opts.invite_hint) {
- 585. - cur.invHintTimer = setTimeout(function() {
- 586. - var hint = ge('top_invite_hint');
- 587. - showTooltip(hint, {
- 588. - text: opts.invite_hint,
- 589. - slide: 30,
- 590. - shift: [vk.rtl ? -220 : 0, 0, 0],
- 591. - showdt: 0,
- 592. - showsp: 500,
- 593. - forcetodown: true,
- 594. - className: 'invite_tt'
- 595. - });
- 596. - cur.tsUpdated = Profile.inviteHintUpdate;
- 597. - stManager.add(['tooltips.css', 'tooltips.js'], cur.tsUpdated);
- 598. - }, 1000);
- 599. - }
- 600. - (cur._back ? cur._back.hide : cur.destroy).push(function(c) {
- 601. - clearTimeout((c || cur).clHintTimer);
- 602. - clearTimeout((c || cur).invHintTimer);
- 603. - Profile.hideOther(-1);
- 604. - Profile.friendTTHide(true);
- 605. - });
- 606. - if (nav.objLoc.suggest) {
- 607. - delete nav.objLoc.suggest;
- 608. - Profile.suggestFriends();
- 609. - }
- 610. -
- 611. - setTimeout(function () {
- 612. - if (window.FastChat && (window.curFastChat && curFastChat.inited || window.curNotifier && curNotifier.fc !== undefined)) {
- 613. - show('profile_fast_chat');
- 614. - }
- 615. - }, 100);
- 616. - var _a = window.audioPlayer, aid = currentAudioId();
- 617. - if (_a && aid && _a.showCurrentTrack) _a.showCurrentTrack();
- 618. -
- 619. - if (opts.photos_upload) {
- 620. - stManager.add(['upload.js'], Profile.initPhotosUpload);
- 621. - }
- 622. -
- 623. - cur.onPeerStatusChanged = function(peer, evType, evData) {
- 624. - if (peer == cur.oid) {
- 625. - var lv = ge('profile_online_lv');
- 626. - if (evType == 'online') {
- 627. - evData = intval(evData);
- 628. - setStyle('profile_mobile_online', {display: (evData && evData != 1) ? 'inline' : 'none'});
- 629. - if (!isVisible(lv)) {
- 630. - hide('profile_time_lv');
- 631. - setStyle(lv, {overflow: 'hidden', display: 'block', height: 0, paddingTop: 12, opacity: 0});
- 632. - show(lv);
- 633. - animate(lv, {paddingTop: 0, height: 12, opacity: 1}, 200, function() {
- 634. - setStyle(lv, {overflow: 'auto', height: 'auto'});
- 635. - });
- 636. - ajax.post('al_profile.php', {act: 'a_get_online_info', uid: cur.oid}, {
- 637. - onDone: function(cl) {
- 638. - var btn = ge('profile_message_send');
- 639. - if (hasClass(btn, cl)) return;
- 640. - animate(btn, {opacity: 0}, 200, function() {
- 641. - btn.className = 'profile_action_btn ' + cl;
- 642. - animate(btn, {opacity: 1}, 200)
- 643. - })
- 644. - }
- 645. - });
- 646. - }
- 647. - } else if (evType == 'offline') {
- 648. - setStyle(lv, {overflow: 'hidden', display: 'block', height: 12, paddingTop: 0, opacity: 1});
- 649. - animate(lv, {paddingTop: 12, height: 0, opacity: 0}, 200, function() {
- 650. - hide(lv);
- 651. - });
- 652. - var btn = ge('profile_message_send');
- 653. - if (hasClass(btn, 'profile_msg_call')) {
- 654. - var cl = 'profile_msg_none';
- 655. - } else if (hasClass(btn, 'profile_msg_split')) {
- 656. - var cl = 'profile_msg_msg';
- 657. - }
- 658. - if (cl) {
- 659. - animate(btn, {opacity: 0}, 200, function() {
- 660. - btn.className = 'profile_action_btn ' + cl;
- 661. - animate(btn, {opacity: 1}, 200)
- 662. - })
- 663. - }
- 664. - }
- 665. - }
- 666. - }
- 667. - },
- 668. - inviteHintUpdate: function() {
- 669. - var hint = ge('top_invite_hint');
- 670. - if (!hint || !hint.tt || !hint.tt.container) return;
- 671. - var lnk = isVisible('ts_wrap') ? ge('ts_settings') : ge('top_invite_link'), l = 0, r = 0;
- 672. - if (vk.rtl) {
- 673. - r = (413 - lnk.parentNode.parentNode.offsetLeft - (lnk.offsetWidth / 2)) + 'px';
- 674. - } else {
- 675. - l = (lnk.parentNode.parentNode.offsetLeft + (lnk.offsetWidth / 2) - 370) + 'px';
- 676. - }
- 677. - geByClass1('top_pointer', hint.tt.container).style.margin = '0px ' + r + ' 0px ' + l;
- 678. - },
- 679. - appStatusUpdate: function(hash) {
- 680. - if (!cur.ciApp) return;
- 681. -
- 682. - var exp = isChecked('currinfo_app');
- 683. - ajax.post('al_apps.php', {act: 'toggle_currinfo', hash: hash, exp: exp, id: cur.ciApp}, {onDone: function(text) {
- 684. - if (vk.id != cur.oid || !text) return;
- 685. - val('current_info', text);
- 686. - }})
- 687. - },
- 688. - suggestFriends: function() {
- 689. - if (cur.viewAsBox) return cur.viewAsBox();
- 690. -
- 691. - var box = showBox('al_friends.php', {
- 692. - act: 'select_friends_box',
- 693. - from: 'suggest_friends',
- 694. - friend_id: cur.oid
- 695. - }, {stat: ['privacy.js', 'privacy.css', 'indexer.js']});
- 696. - box.leaveOnSave = true;
- 697. - cur.onFlistSave = function(ids, list, hash) {
- 698. - //if (!ids || !ids.length) return;
- 699. - ajax.post('al_friends.php', {
- 700. - act: 'a_suggest_friends',
- 701. - mid: cur.oid,
- 702. - ids: ids.join(','),
- 703. - hash: hash
- 704. - }, {
- 705. - onDone: function(text) {
- 706. - box.hide();
- 707. - showDoneBox(text);
- 708. - },
- 709. - showProgress: box.showProgress,
- 710. - hideProgress: box.hideProgress
- 711. - });
- 712. - }
- 713. - },
- 714. - giftTooltip: function(obj, event, mid) {
- 715. - if (checkEvent(event)) return true;
- 716. - if (cur.hideGifts && !cur.giftsHidden) {
- 717. - return cur.hideGifts(event);
- 718. - }
- 719. - var is_module = hasClass(obj, 'module_header');
- 720. - addClass(obj, is_module ? 'module_inverted' : 'gifts_inverted');
- 721. - if (cur.giftsPrepare || !cur.votesBox) {
- 722. - if (!cur.giftsPrepare) {
- 723. - Profile.prepareGiftTooltip();
- 724. - }
- 725. - addClass(obj, is_module ? 'module_inverted_loading' : 'gifts_inverted_loading');
- 726. - cur.onGiftsLoad = Profile.giftTooltip.pbind(obj, event, mid);
- 727. - return cancelEvent(event);
- 728. - }
- 729. - removeClass(obj, is_module ? 'module_inverted_loading' : 'gifts_inverted_loading');
- 730. - if (!cur.votesBox) {
- 731. - return false;
- 732. - }
- 733. - if (Pads && Pads.hide) {
- 734. - Pads.hide();
- 735. - }
- 736. - var html = cur.votesBox[0];
- 737. - var js = cur.votesBox[1];
- 738. -
- 739. - eval('(function(){' + js + ';})()');
- 740. - if (obj.tt && obj.tt.container && !cur.giftsTooltipEl) {
- 741. - cur.giftsTooltipEl = re(geByClass1('gifts_profile_block', obj.tt.container));
- 742. - }
- 743. - cur.giftsHidden = false;
- 744. - addEvent(document, 'click', cur.hideGifts);
- 745. - addEvent(document, 'keydown', cur.hideGiftsOnEsc);
- 746. - return cancelEvent(event);
- 747. - },
- 748. - prepareGiftTooltip: function(event, mid) {
- 749. - if (!cur.votesBox && !cur.giftsPrepare) {
- 750. - cur.giftsPrepare = true;
- 751. - ajax.post('/al_gifts.php', {act: 'new_gift_box', mid: mid}, {
- 752. - onDone: function() {
- 753. - var args = Array.prototype.slice.call(arguments),
- 754. - div = ce('div', {innerHTML: args[0]}); // preload imgs
- 755. - cur.votesBox = args;
- 756. - cur.giftsPrepare = false;
- 757. - if (cur.onGiftsLoad) {
- 758. - cur.onGiftsLoad();
- 759. - }
- 760. - },
- 761. - stat: ['gifts.css', 'tooltips.js', 'tooltips.css', 'notifier.js']
- 762. - })
- 763. - }
- 764. - },
- 765. - giftSend: function() {
- 766. - var uid = cur.oid, num = ge('gifts_selected_num').value;
- 767. - lockButton('gifts_submit');
- 768. - ajax.post('al_gifts.php', {
- 769. - act: 'do_send',
- 770. - mids: uid,
- 771. - type: isChecked('receiver_only') ? 1 : 0,
- 772. - number: num,
- 773. - text: ge('gifts_message').value,
- 774. - hash: ge('gifts_hash').value,
- 775. - from: 'profile',
- 776. - need_module: ge('profile_gifts') ? 0 : 1,
- 777. - old: 1
- 778. - }, {
- 779. - onDone: function(data, text, giftsCnt, giftsModule) {
- 780. - updateMoney(data);
- 781. - ge('gifts_message').value = '';
- 782. - checkbox('receiver_only', false);
- 783. - unlockButton('gifts_submit');
- 784. - cur.hideGifts && cur.hideGifts();
- 785. - if (cur.clearGiftTt) {
- 786. - if (cur.clearGiftTt.tt) cur.clearGiftTt.tt.destroy();
- 787. - cur.votesBox = cur.giftsPrepare = cur.onGiftsLoad = cur.clearGiftTt = false;
- 788. - }
- 789. - text = text.replace('<b>', '<div class="top_result_header">').replace('</b><br>', '</div>');
- 790. - showDoneBox(text, {out: 1500});
- 791. - cur.ignoreBoxCache = true;
- 792. - if (cur.module == 'profile' && cur.oid == uid && window.Profile) {
- 793. - if (ge('gifts_module_count') && giftsCnt) {
- 794. - ge('gifts_module_count').innerHTML = giftsCnt;
- 795. - Profile.showNewGift(num);
- 796. - } else if (!ge('profile_gifts') && giftsModule) {
- 797. - hide('gifts_count_module');
- 798. - var firstModule = geByClass1('module', ge('profile_narrow'));
- 799. - if (firstModule) {
- 800. - firstModule.parentNode.insertBefore(se(giftsModule), firstModule);
- 801. - }
- 802. - }
- 803. - }
- 804. - },
- 805. - onFail: function(text) {
- 806. - unlockButton('gifts_submit');
- 807. - cur.hideGifts && cur.hideGifts();
- 808. - text && topError(text);
- 809. - return true;
- 810. - }
- 811. - });
- 812. - },
- 813. - publishPhotos: function(photos) {
- 814. - var query = {
- 815. - act: 'post',
- 816. - type: 'photos_upload',
- 817. - to_id: vk.id,
- 818. - attach1_type: 'photos_list',
- 819. - attach1: photos,
- 820. - hash: cur.options.photos_post_hash || ''
- 821. - }
- 822. - if (!window.Notifier || !window.curFastChat || !curFastChat.ready) {
- 823. - query.need_wall = 1;
- 824. - }
- 825. - ajax.post('/al_wall.php', query, {
- 826. - onDone: function(wall) {
- 827. - cur.photoUploadBox.hide();
- 828. - delete cur.photoUploadBox;
- 829. - delete cur.savedPhotos;
- 830. - showDoneBox('<div style="font-weight: bold">' + getLang('profile_photos_published') + '</div>', {w: 320});
- 831. - if (query.need_wall && wall && ge('page_wall_posts')) {
- 832. - ge('page_wall_posts').innerHTML = wall;
- 833. - }
- 834. - },
- 835. - onFail: function() {
- 836. - cur.photoUploadBox.hide();
- 837. - delete cur.photoUploadBox;
- 838. - delete cur.savedPhotos;
- 839. - }
- 840. - });
- 841. - return false;
- 842. - },
- 843. - initPhotosUploadBox: function() {
- 844. - if (cur.photoUploadBox) return;
- 845. - cur.photoUploadBox = showFastBox({title: getLang('profile_photo_upload_title'), width: 410, onHide: function() {
- 846. - Upload.embed(cur.phUplInd || 0);
- 847. - delete cur.photoUploadBox;
- 848. - delete cur.savedPhotos;
- 849. - }}, '<div class="profile_photo_upload_box"><div>' + getLang('profile_photos_uploading') + '</div><div id="profile_photo_upload_label"></div><div class="profile_progress_wrap"><div id="profile_photo_progress" class="profile_progress" style="width: 0%;"></div></div></div>', getLang('global_cancel'), function() {
- 850. - cur.photoUploadBox.hide();
- 851. - delete cur.photoUploadBox;
- 852. - delete cur.savedPhotos;
- 853. - });
- 854. - cur.photoUploadBox.changed = 1;
- 855. - },
- 856. - initPhotosUpload: function() {
- 857. - if (browser.flash <= 9) return false;
- 858. - var photos_data = (cur.options || {}).photos_upload,
- 859. - area = ge('profile_photos_upload') || ge('profile_photos_extra_link'), el = se('<div id="profile_photo_uploader" onclick="cancelEvent(event); return false;" style="position: absolute; height: 100%; width: 100%; cursor: pointer;"></div>');
- 860. - if (!photos_data || !area) return false;
- 861. -
- 862. - area.parentNode.insertBefore(el, area);
- 863. - cur.lang = extend(cur.lang || {}, photos_data.opts.lang);
- 864. - cur.phUplInd = Upload.init('profile_photo_uploader', photos_data.url, photos_data.params, {
- 865. - file_name: 'photo',
- 866. - file_size_limit: 1024 * 1024 * 5, // 5Mb
- 867. - file_types_description: 'Image files (*.jpg, *.jpeg, *.png, *.gif)',
- 868. - file_types: '*.jpg;*.JPG;*.jpeg;*.JPEG;*.png;*.PNG;*.gif;*.GIF',
- 869. - accept: 'image/jpeg,image/png,image/gif',
- 870. - file_match: photos_data.opts.ext_re,
- 871. - lang: {},
- 872. -
- 873. - onUploadStart: function(info, res) {
- 874. - Profile.initPhotosUploadBox();
- 875. - var txt;
- 876. - if (info.num == undefined) {
- 877. - info = res;
- 878. - }
- 879. - if (info.num === 0) {
- 880. - txt = (info.totalCount > 1) ? getLang('profile_photos_uploading_x').replace('%s', info.totalCount) : getLang('profile_photo_uploading');
- 881. - } else {
- 882. - txt = getLang('profile_photos_uploaded_x', info.num).replace('{count}', info.totalCount);
- 883. - }
- 884. - ge('profile_photo_upload_label').innerHTML = txt;
- 885. - },
- 886. - onUploadComplete: function(info, res) {
- 887. - if (info.totalCount > 1 && info.totalCount == info.num + 1) {
- 888. - ge('profile_photo_upload_label').innerHTML = getLang('profile_photos_uploaded_x', info.totalCount).replace('{count}', info.totalCount);
- 889. - }
- 890. - var params, i = info.ind !== undefined ? info.ind : info;
- 891. - try {
- 892. - params = eval('(' + res + ')');
- 893. - } catch(e) {
- 894. - params = q2ajx(res);
- 895. - }
- 896. - if (params.photos) {
- 897. - cur.savedPhotos = cur.savedPhotos || {mid: params.mid, gid: params.gid, aid: params.aid, server: params.server};
- 898. - cur.savedPhotos.photos = cur.savedPhotos.photos || [];
- 899. - cur.savedPhotos.photos.push({photo: params.photos, hash: params.hash});
- 900. - return;
- 901. - }
- 902. - },
- 903. - onUploadProgress: function(info, bytesLoaded, bytesTotal) {
- 904. - Profile.initPhotosUploadBox();
- 905. - var newWidth = intval(bytesLoaded / bytesTotal * 250);
- 906. - animate(ge('profile_photo_progress'), {width: newWidth + 'px'}, 200);
- 907. - },
- 908. - onUploadCompleteAll: function (i) {
- 909. - if (cur.photoUploadBox) {
- 910. - if (cur.savedPhotos) {
- 911. - var query = {act: 'done_add', context: 1, from: 'profile_block'}, k = 1;
- 912. - for (var j in (cur.savedPhotos.photos || [])) {
- 913. - query['photo'+k] = cur.savedPhotos.photos[j].photo;
- 914. - query['hash'+k] = cur.savedPhotos.photos[j].hash;
- 915. - k++;
- 916. - }
- 917. - delete cur.savedPhotos.photos;
- 918. - query = extend(query, cur.savedPhotos);
- 919. - ajax.post('/al_photos.php', query, {
- 920. - onDone: function(saved_photos, html, script) {
- 921. - if (ge('profile_photos_module')) {
- 922. - ge('profile_photos_module').innerHTML = se(html).innerHTML;
- 923. - if (script) eval(script);
- 924. - }
- 925. - if (saved_photos) Profile.publishPhotos(saved_photos);
- 926. - },
- 927. - onFail: function() {
- 928. - cur.photoUploadBox.hide();
- 929. - delete cur.photoUploadBox;
- 930. - delete cur.savedPhotos;
- 931. - Upload.embed(cur.phUplInd || 0);
- 932. - }
- 933. - })
- 934. - } else {
- 935. - cur.photoUploadBox.hide();
- 936. - delete cur.photoUploadBox;
- 937. - delete cur.savedPhotos;
- 938. - }
- 939. - show(cur.photoUploadBox.progress);
- 940. - }
- 941. - },
- 942. - onUploadError: function(i) {
- 943. - debugLog('error', arguments); return;
- 944. - },
- 945. - onSelectClick: function(i) {
- 946. - if (!Upload.checked || !Upload.checked[i]) {
- 947. - Upload.check(i);
- 948. - }
- 949. - },
- 950. - onCheckComplete: function(i) {
- 951. - try {
- 952. - var postData = [], vars = Upload.vars[i];
- 953. - for (var k in vars) {
- 954. - postData.push(k+'='+vars[k]);
- 955. - }
- 956. - if (!vars['ajx']) {
- 957. - postData.push('ajx=1');
- 958. - }
- 959. - ge('uploader_lite'+i).configureServer(Upload.uploadUrls[i], escape(postData.join('&')));
- 960. - } catch (e) {debugLog(e);}
- 961. - },
- 962. - onDebug: debugLog,
- 963. -
- 964. - flashPath: '/swf/photo_uploader_lite.swf',
- 965. - hoverEl: ge('profile_photos_upload') || ge('profile_photos_extra_link'),
- 966. - flash_lite: 1,
- 967. - noCheck: 1,
- 968. - noForm: 1,
- 969. - flashHeight: getSize(area)[1],
- 970. - forceFlash: 1,
- 971. - multiple: 1,
- 972. - multi_progress: 1,
- 973. - max_files: 50,
- 974. - clear: 1,
- 975. - type: 'photo',
- 976. - max_attempts: 3,
- 977. - server: photos_data.opts.server,
- 978. - error: photos_data.opts.default_error,
- 979. - error_hash: photos_data.opts.error_hash,
- 980. - label: photos_data.opts.label,
- 981. - dragEl: bodyNode
- 982. - });
- 983. - }
- 984. - }, profile = Profile;
- 985. -
- 986. - try{stManager.done('profile.js');}catch(e){}
- ------
- Файл - writebox.js (Старый размер - 14788 | Новый - 0):
- 0. - var WriteBox = {
- 1. - mrg: function(v) {
- 2. - return vk.rtl ? {marginRight: v} : {marginLeft: v};
- 3. - },
- 4. - show: function(box, opts) {
- 5. - addClass(boxLayerBG, 'bg_dark');
- 6. - box.setOptions({hideButtons: true, width: 502, bodyStyle: 'padding: 0px; border: 0px;'});
- 7. - box.removeButtons();
- 8. -
- 9. - cur.lang = extend(cur.lang || {}, opts.lang);
- 10. - extend(cur, {
- 11. - mbTxtInp: {},
- 12. - mbEditable: opts.editable,
- 13. - mbSmile: ge('mbe_smile'),
- 14. - mbEmoji: opts.emoji,
- 15. - mbMedia: null,
- 16. - mbField: ge(opts.editable ? 'mail_box_editable' : 'mail_box_text'),
- 17. - mbAva: ge('mail_box_ava'),
- 18. - mbMediaTypes: opts.mediaTypes,
- 19. - mbTo: opts.toData,
- 20. - mbHash: opts.hash,
- 21. - mbBannedHim: opts.bannedhim
- 22. - });
- 23. -
- 24. - if (opts.emojiRcnt && !cur.mbRcntEmoji) {
- 25. - var html = [];
- 26. - for (var a = opts.emojiRcnt, i = 0, l = a.length; i < l; ++i) {
- 27. - var code = a[i];
- 28. - if (!code) continue;
- 29. - html.push('<a id="mbe_rc_em_' + code + '" class="mbe_rc_emojibtn" onmousedown="Emoji.addEmoji(cur.emojiWId, \'' + code + '\', this); return cancelEvent(event);">' + Emoji.getEmojiHTML(code, false, true) + '</a>');
- 30. - }
- 31. - cur.mbRcntEmoji = html.join('');
- 32. - }
- 33. - val('mbe_rcemoji', cur.mbRcntEmoji || '');
- 34. -
- 35. -
- 36. - cur.sharedImWrite = {};
- 37. - cur.emojiWId = Emoji.init(cur.mbField, {
- 38. - ttDiff: -97,
- 39. - controlsCont: ge('mbe_emoji_wrap'),
- 40. - shouldFocus: true,
- 41. - onSend: WriteBox.send,
- 42. - noEnterSend: 1,
- 43. - forceTxt: !opts.editable,
- 44. - sharedTT: cur.sharedImWrite,
- 45. - txt: ge('mail_box_editable'),
- 46. - checkEditable: WriteBox.checkEditable,
- 47. - saveDraft: WriteBox.saveDraft,
- 48. - rceCont: ge('mbe_rcemoji_cont'),
- 49. - addMediaBtn: ge('mail_box_add_row'),
- 50. - sendWrap: ge('mail_box_controls'),
- 51. - onKeyAction: function(e) {
- 52. - clearTimeout(cur.saveWriteBoxDraft);
- 53. - cur.saveWriteBoxDraft = setTimeout(WriteBox.saveDraft, e.type == 'paste' ? 0 : 300);
- 54. - }
- 55. - });
- 56. -
- 57. - if (!cur.mbTo[0]) {
- 58. - setStyle(ge('mail_box_topic'), WriteBox.mrg(0));
- 59. - cur.mbHidden = true;
- 60. - } else {
- 61. - cur.mbHidden = false;
- 62. - }
- 63. -
- 64. - /*if (!cur.mbEditable) {
- 65. - autosizeSetup(cur.mbField, {minHeight: 120})
- 66. - setTimeout(elfocus.pbind(cur.mbField), 0);
- 67. - }*/
- 68. -
- 69. - cur.imwEmoji = -1;
- 70. -
- 71. - var tmp = cur.postTo;
- 72. - cur.postTo = false;
- 73. - box.setOptions({onHide: function() {
- 74. - removeClass(boxLayerBG, 'bg_dark');
- 75. - removeEvent(document, 'keydown', WriteBox.onKey);
- 76. - if (cur.mbEmojiShown) Emoji.ttClick(cur.emojiWId, cur.mbSmile, true);
- 77. - if (cur.mbOnMouseClick) {
- 78. - cur.onMouseClick = cur.mbOnMouseClick;
- 79. - cur.mbOnMouseClick = false;
- 80. - }
- 81. - if (browser.mozilla) {
- 82. - // document.execCommand("enableObjectResizing", false, true);
- 83. - }
- 84. - }, onShow: function() {
- 85. - addClass(boxLayerBG, 'bg_dark');
- 86. - addEvent(document, 'keydown', WriteBox.onKey);
- 87. - if (!cur.mbOnMouseClick) {
- 88. - cur.mbOnMouseClick = cur.onMouseClick;
- 89. - }
- 90. - if (browser.mozilla) {
- 91. - // document.execCommand("enableObjectResizing", false, false);
- 92. - }
- 93. - if (cur.sorterClbk) {
- 94. - cur.sorterClbk();
- 95. - delete cur.sorterClbk;
- 96. - }
- 97. - }, onClean: function() {
- 98. - clearTimeout(cur.mbSaveDraftTO);
- 99. - delete cur.mbSaveDraftTO;
- 100. - delete cur.mbField;
- 101. - cur.postTo = tmp;
- 102. - cur.mbEmojiScroll = cur.mbEmojiExpanded = false;
- 103. - if (window.WideDropdown) WideDropdown.deinit('mail_box_dd');
- 104. - }});
- 105. - addEvent(document, 'keydown', WriteBox.onKey);
- 106. - if (!cur.mbOnMouseClick) {
- 107. - cur.mbOnMouseClick = cur.onMouseClick;
- 108. - }
- 109. - if (browser.mozilla) {
- 110. - // document.execCommand("enableObjectResizing", false, false);
- 111. - }
- 112. -
- 113. - if (!window._mbFriends) { // is used in sharebox.js too!
- 114. - ajax.post('hints.php', {act: 'a_json_friends', from: 'imwrite', str: ''}, {onDone: function(arr) {
- 115. - window._mbFriends = arr;
- 116. - var dd = (cur.wdd && cur.wdd['mail_box_dd']);
- 117. - if (dd) {
- 118. - WideDropdown.items('mail_box_dd', arr);
- 119. - }
- 120. - }});
- 121. - }
- 122. - stManager.add(['wide_dd.js', 'wide_dd.css'], function() {
- 123. - if (WideDropdown.init('mail_box_dd', {
- 124. - defaultItems: window._mbFriends,
- 125. - url: 'hints.php',
- 126. - params: {act: 'a_json_friends', from: 'imwrite'},
- 127. - noResult: getLang('mail_not_found'),
- 128. - img: cur.mbAva,
- 129. - introText: getLang('mail_choose_recipient'),
- 130. - custom: function(q) {
- 131. - return (q.indexOf('@') != -1) ? [[clean(q), clean(q), getLang('mail_enter_email_address'), '/images/pics/contact50.gif', 0, '']] : false;
- 132. - },
- 133. - chooseOnBlur: function(id) {
- 134. - id = trim(id + '');
- 135. - return id.length < 64 && id.match(/^[a-z0-9_\-\.]+@[a-z0-9_\-\.]+\.[a-z]{2,6}$/i);
- 136. - },
- 137. - onChange: function(act) {
- 138. - var dd = cur.wdd['mail_box_dd'], sel = dd.selCount, peer = false, draft, ret = true;
- 139. - if (sel == 1 && !WriteBox.editableHasVal(cur.mbField)) {
- 140. - for (peer in dd.selected) break;
- 141. - WriteBox.restoreDraft(peer);
- 142. - }
- 143. - if (act == 1) { // added
- 144. - setTimeout(cur.mbEditable ? Emoji.editableFocus.pbind(cur.mbField, domLC(cur.mbField)) : elfocus.pbind(cur.mbField), 0);
- 145. - }
- 146. - var t = Fx.Transitions.easeOutCubic, d = 150, f = 'ease-out';
- 147. - if (sel < 1 && !cur.mbHidden) {
- 148. - cssAnim(cur.mbAva, extend({opacity: 0}, WriteBox.mrg(-26)), {duration: d, transition: t, func: f}, hide.pbind(cur.mbAva));
- 149. - cssAnim(ge('mail_box_topic'), WriteBox.mrg(0), {duration: d, transition: t, func: f});
- 150. - cur.mbHidden = true;
- 151. - ret = 0;
- 152. - } else if (sel > 0 && cur.mbHidden) {
- 153. - show(cur.mbAva);
- 154. - cssAnim(cur.mbAva, extend({opacity: 1}, WriteBox.mrg(0)), {duration: d, transition: t, func: f});
- 155. - cssAnim(ge('mail_box_topic'), WriteBox.mrg(26), {duration: d, transition: t, func: f});
- 156. - cur.mbHidden = false;
- 157. - ret = 1;
- 158. - }
- 159. - WriteBox.checkLen(cur.mbField);
- 160. - WriteBox.showToFull();
- 161. - val('mail_box_to_header', getLang((sel > 1) ? 'mail_rcpnts' : 'mail_rcpnt'));
- 162. - return ret;
- 163. - },
- 164. - itemMark: function(item) {
- 165. - return intval(item[5]) ? 1 : 0;
- 166. - }
- 167. - })) {
- 168. - WideDropdown.select('mail_box_dd', false, cur.mbTo);
- 169. - }
- 170. - });
- 171. - stManager.add(['page.js', 'page.css'], function() {
- 172. - cur.mbMedia = initAddMedia('mail_box_add_link', 'mail_box_added_row', cur.mbMediaTypes, {mail: 1, nocl: 1, editable: 1, sortable: 1, teWidth: 350, teHeight: 300, toggleLnk: true});
- 173. - cur.mbMedia.onChange = function() {
- 174. - box.changed = true;
- 175. - }
- 176. - if (ls.checkVersion() && cur.mbTo[0]) {
- 177. - WriteBox.restoreDraft(cur.mbTo[0]);
- 178. - }
- 179. - });
- 180. - },
- 181. - getPeer: function () {
- 182. - var dd = cur.wdd['mail_box_dd'],
- 183. - sel = (dd) ? dd.selCount : false,
- 184. - peer = false;
- 185. - if (sel != 1) {
- 186. - return false;
- 187. - }
- 188. - for (peer in dd.selected)
- 189. - break;
- 190. - return intval(peer);
- 191. - },
- 192. - restoreDraft: function(needPeer) {
- 193. - var peer = WriteBox.getPeer();
- 194. - if (!peer || needPeer && peer != intval(needPeer) || browser.mobile || !cur.mbMedia) return;
- 195. -
- 196. - var draft = ls.get('im_draft' + vk.id + '_' + peer);
- 197. - if (draft) {
- 198. - if (!WriteBox.editableHasVal(cur.mbField)) {
- 199. - if (cur.mbEditable) {
- 200. - val(cur.mbField, Emoji.emojiToHTML(clean(draft.txt || ''), true).replace(/\n/g, '<br/>'));
- 201. - } else {
- 202. - val(cur.mbField, draft.txt || '');
- 203. - }
- 204. - }
- 205. - if ((draft.medias || []).length && !(cur.mbMedia.chosenMedias || []).length) {
- 206. - var m = [];
- 207. - for (var i in draft.medias) {
- 208. - if (!draft.medias[i]) continue;
- 209. - m.push(draft.medias[i].slice(0, 2).join(','));
- 210. - }
- 211. - ajax.post('al_im.php', {act: 'draft_medias', media: m.join('*')}, {onDone: function(resp) {
- 212. - if (!cur.mbField || WriteBox.getPeer() != peer || !(resp || []).length) return;
- 213. - each(resp, function() {
- 214. - var args = [this[0], this[1], this[2], this[3], true];
- 215. - cur.mbMedia.chooseMedia.apply(cur.mbMedia, args);
- 216. - });
- 217. - }});
- 218. - }
- 219. - }
- 220. - WriteBox.checkEditable(cur.emojiWId, cur.mbField);
- 221. - WriteBox.checkLen(cur.mbField);
- 222. - },
- 223. - saveDraft: function() {
- 224. - var peer = WriteBox.getPeer();
- 225. - if (!peer) return;
- 226. -
- 227. - var data = {
- 228. - txt: trim(Emoji.editableVal(cur.mbField)),
- 229. - medias: []
- 230. - }, m = cur.mbMedia.getMedias();
- 231. - for (var i = 0, l = m.length; i < l; ++i) {
- 232. - if (m[i]) data.medias.push([m[i][0], m[i][1]]);
- 233. - }
- 234. - if (!data.medias.length && !data.txt.length) {
- 235. - data = false;
- 236. - };
- 237. - ls.set('im_draft' + vk.id + '_' + intval(peer), data);
- 238. - },
- 239. - toFull: function(ev, peer) {
- 240. - if (checkEvent(ev)) return;
- 241. -
- 242. - val('mail_box_to_full', '<div class="progress" style="display: block"></div>');
- 243. - var query = {'0': 'im', sel: peer};
- 244. - var msg = trim(Emoji.editableVal(cur.mbField));
- 245. - if (msg) {
- 246. - query.message = msg;
- 247. - }
- 248. - if (cur.mbMedia.chosenMedias) {
- 249. - var meds = cur.mbMedia.getMedias(), media = [];
- 250. - for (var i = 0, l = meds.length; i < l; ++i) {
- 251. - var el = meds[i], row = [];
- 252. - for (var k in el) {
- 253. - if (typeof(el[k]) != 'object') {
- 254. - row.push(el[k]);
- 255. - }
- 256. - }
- 257. - media.push(row.join(','))
- 258. - }
- 259. - query.media = media.join('*');
- 260. - }
- 261. - nav.go(query, null, {noframe: 1});
- 262. - return false;
- 263. - },
- 264. -
- 265. - showToFull: function() {
- 266. - hide('mail_box_to_full');
- 267. - var mid = false, dd = cur.wdd && cur.wdd['mail_box_dd'], sex = 0, text = '', sel;
- 268. - for (var i in dd.selected) {
- 269. - sel = dd.selected[i];
- 270. - if (mid) return;
- 271. - mid = sel[0];
- 272. - if (mid != intval(mid)) return;
- 273. - sex = sel[6];
- 274. - text = sel[7];
- 275. - }
- 276. - if (mid > 2e9) {
- 277. - val('mail_box_to_full', '<a href="/im?sel=c' + (mid - 2e9) + '" onclick="return WriteBox.toFull(event, ' + mid + ')">' + getLang('mail_im_to_multidialog') + '</a>');
- 278. - show('mail_box_to_full');
- 279. - } else {
- 280. - if (!mid || !sex || !text) return;
- 281. - val('mail_box_to_full', ('<a href="/im?sel=' + mid + '" onclick="return WriteBox.toFull(event, ' + mid + ')">' + getLang('mail_go_to_dialog') + '</a>').replace('%s', text));
- 282. - show('mail_box_to_full');
- 283. - }
- 284. - },
- 285. - send: function(sure) {
- 286. - if (buttonLocked('mail_box_send')) return;
- 287. -
- 288. - var text = trim(Emoji.editableVal(cur.mbField)), media = cur.mbMedia.getMedias(), dd = cur.wdd && cur.wdd['mail_box_dd'];
- 289. - if (!dd || !dd.selCount) return elfocus('mail_box_inp');
- 290. -
- 291. - if (cur.mbEditable) {
- 292. - WriteBox.extractEmoji();
- 293. - }
- 294. -
- 295. - var params = {
- 296. - act: 'a_send',
- 297. - chas: cur.mbHash,
- 298. - message: text,
- 299. - title: (isVisible('mail_box_title_wrap') && val('mail_box_title') || ''),
- 300. - from: 'box',
- 301. - media: [],
- 302. - to_ids: []
- 303. - };
- 304. - for (var i = 0, l = media.length, v; i < l; ++i) {
- 305. - if (v = media[i]) {
- 306. - params.media.push(v[0] + ':' + v[1]);
- 307. - }
- 308. - }
- 309. - params.media = params.media.join(',');
- 310. -
- 311. - if (!text && !params.media) {
- 312. - return cur.mbEditable ? Emoji.editableFocus(cur.mbField) : elfocus(cur.mbField);
- 313. - }
- 314. -
- 315. - for (var i in dd.selected) {
- 316. - params.to_ids.push(i.replace(/_$/, ''));
- 317. - }
- 318. - params.to_ids = params.to_ids.join(',');
- 319. -
- 320. - if (cur.mbBannedHim == params.to_ids && sure !== true) {
- 321. - showBox('al_profile.php', {act: 'banned_him', action: 'mail', mid: cur.mbBannedHim}).onContinue = WriteBox.send.pbind(true);
- 322. - return;
- 323. - }
- 324. -
- 325. - ajax.post('al_mail.php', params, {onDone: function(text, peer) {
- 326. - if (peer) {
- 327. - ls.set('im_draft' + vk.id + '_' + peer, false);
- 328. - }
- 329. - curBox().hide();
- 330. - showDoneBox(text);
- 331. - }, showProgress: lockButton.pbind('mail_box_send'), hideProgress: unlockButton.pbind('mail_box_send')});
- 332. - },
- 333. - checkLen: function(inp) {
- 334. - cur.mbTxtInp.value = Emoji.editableVal(inp);
- 335. - checkTextLength(4096, cur.mbTxtInp, 'mail_box_warn');
- 336. - var dd = cur.wdd && cur.wdd['mail_box_dd'], mchat = dd.full && (dd.selCount == 1);
- 337. - if (!dd) return;
- 338. - toggle('mail_box_title_wrap', (cur.mbTxtInp.lastLen > 200 && !mchat || dd.selCount > 1 || val('mail_box_title')));
- 339. - },
- 340. -
- 341. - codeToChr: function(code) {
- 342. - var len = code.length / 4;
- 343. - var chr = '';
- 344. - var i = 0;
- 345. - while(len--) {
- 346. - chr += String.fromCharCode(parseInt(code.substr(i, 4), 16))
- 347. - i += 4;
- 348. - }
- 349. - return chr;
- 350. - },
- 351. - editableHasVal: function(cont) {
- 352. - if (!cont) return false;
- 353. - if (cont.tagName == 'TEXTAREA') return !!val(cont);
- 354. - return !!(geByTag1('IMG', cont) || stripHTML(val(cont)).replace(/[\s\xa0]/g, '').length);
- 355. - },
- 356. -
- 357. - checkEditable: function(optId, obj) {
- 358. - if (!cur.mbEditable) return;
- 359. -
- 360. - /*var diff = (cur.mbField.scrollHeight > cur.mbField.offsetHeight) ? sbWidth() : 0;
- 361. - var bl = ge('mbe_emoji_block');
- 362. - setStyle(ge('mbe_smile'), vk.rtl ? {marginRight: 425 - diff} : {marginLeft: 425 - diff});
- 363. - if (bl) setStyle(bl, vk.rtl ? {marginRight: 335 - diff} : {marginLeft: 335 - diff});*/
- 364. -
- 365. - Emoji.checkEditable(optId, obj, {height: 180});
- 366. - },
- 367. -
- 368. - cssAnimation: function() {
- 369. - var v = intval(browser.version);
- 370. - if ((browser.chrome && v > 14) || (browser.mozilla && v > 13) || (browser.opera && v > 2)) {
- 371. - return true;
- 372. - }
- 373. - return false;
- 374. - },
- 375. -
- 376. -
- 377. - onKey: function (e) {
- 378. - var inputActive = (e.target.tagName == 'INPUT' || e.target.tagName == 'TEXTAREA' || e.target.id == 'mail_box_editable');
- 379. -
- 380. - if (e.keyCode > 40 && !e.ctrlKey && !e.metaKey && !inputActive) {
- 381. - if (cur.mbEditable) {
- 382. - Emoji.editableFocus(cur.mbField, false, true);
- 383. - } else {
- 384. - var el = cur.mbField;
- 385. - !el.active && elfocus(el);
- 386. - }
- 387. - }
- 388. - return true;
- 389. - },
- 390. -
- 391. - extractEmoji: function() {
- 392. - var emjs = geByClass('emoji', cur.mbField);
- 393. - var newRc = {};
- 394. - for(var i in emjs) {
- 395. - newRc[Emoji.getCode(emjs[i])] = 1;
- 396. - }
- 397. - var rcCont = ge('mbe_rcemoji');
- 398. - var rchtml = '';
- 399. - var ml = 0;
- 400. - for (var code in newRc) {
- 401. - if (ge('mbe_rc_em_'+code)) continue;
- 402. - rchtml += '<a id="mbe_rc_em_'+code+'" class="mbe_rc_emojibtn" onmousedown="Emoji.addEmoji(cur.emojiWId, \''+code+'\', this); return cancelEvent(event);">'+Emoji.getEmojiHTML(code, false, true)+'</a>';
- 403. - ml -= 22;
- 404. - }
- 405. - cur.mbRcntEmoji = (rchtml + val(rcCont)).split('a><a').slice(0, 7).join('a><a');
- 406. - if (cur.mbRcntEmoji.match(/<\/$/)) cur.mbRcntEmoji += 'a>';
- 407. - rcCont.insertBefore(cf(rchtml), rcCont.firstChild);
- 408. - setStyle(rcCont, {marginLeft: ml});
- 409. - animate(rcCont, {marginLeft: 0}, {duration: 150, transition: Fx.Transitions.easeOutCubic, onComplete: function() {
- 410. - var emjs = geByClass('mbe_rc_emojibtn', rcCont).slice(7);
- 411. - for(var i in emjs) {
- 412. - re(emjs[i]);
- 413. - }
- 414. - }});
- 415. - }
- 416. -
- 417. - }
- 418. -
- 419. - try{stManager.done('writebox.js');}catch(e){}
- ------
Advertisement
Add Comment
Please, Sign In to add comment