Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Файл - profile_edit_job.js (Старый размер - 12385 | Новый - 0):
- 0. - var ProfileEditorJob = {
- 1. -
- 2. - init: function() {
- 3. - cur.globalCounter = 0;
- 4. - cur.worksCount = 0;
- 5. -
- 6. - selectsData.setCountries(cur.selData.countries_list);
- 7. - for (var i in cur.selData.countries) {
- 8. - selectsData.setCities(i, cur.selData.countries[i]);
- 9. - }
- 10. -
- 11. - if (!isVisible('works')) {
- 12. - cur.worksCount = cur.works.length;
- 13. - if (cur.worksCount) {
- 14. - for (var i = 0; i < cur.works.length; ++i) {
- 15. - ge('works').appendChild(this.genWorkRow(cur.works[i].id));
- 16. - cur.works[i] = this.initWorkRow(cur.works[i]);
- 17. - }
- 18. - } else {
- 19. - this.addWork();
- 20. - }
- 21. - show('works');
- 22. - }
- 23. -
- 24. - if (cur.worksCount >= 7) {
- 25. - hide('add_work_link');
- 26. - } else {
- 27. - show('add_work_link');
- 28. - }
- 29. - },
- 30. -
- 31. - genOneRow: function(field, id, label, params, additional) {
- 32. - var key = field + id;
- 33. - if (!params) {
- 34. - params = '';
- 35. - }
- 36. - if (!additional) {
- 37. - additional = '';
- 38. - }
- 39. - return '<div class="pedit_edu_row" id="row_' + key + '">' +
- 40. - '<div class="label fl_l ta_r">' + label + '</div>' +
- 41. - '<div class="labeled fl_l"><input id="' + key + '" name="' + key + '" ' + params + '/></div>' +
- 42. - additional + '</div>';
- 43. - },
- 44. -
- 45. - genWorkRow: function(work_id) {
- 46. - return ce('div', {
- 47. - className: 'pedit_edu_big_row',
- 48. - id: 'work' + work_id,
- 49. - innerHTML: '<div id="content' + work_id + '">' +
- 50. - this.genOneRow('country', work_id, getLang('select_country'), '',
- 51. - '<img src="/images/upload.gif" id="progress' + work_id + '" />' +
- 52. - '<a class="fl_r" onclick="ProfileEditorJob.deleteWork(' + work_id + ')">' + getLang('global_delete') + '</a>') +
- 53. - this.genOneRow('city', work_id, getLang('select_city')) +
- 54. - '<div id="details' + work_id + '" style="display: none">' +
- 55. - this.genOneRow('company', work_id, getLang('select_company'), 'type="text" class="text"') +
- 56. - this.genOneRow('start', work_id, getLang('select_work_start')) +
- 57. - this.genOneRow('finish', work_id, getLang('select_work_finish')) +
- 58. - this.genOneRow('position', work_id, getLang('select_work_position'), 'id="position' + work_id + '_name"') +
- 59. - '</div></div>' +
- 60. - '<div class="deleted" id="deleted' + work_id + '"><div></div>' +
- 61. - '<a class="fl_r" onclick="ProfileEditorJob.restoreWork(' + work_id + ')">' + getLang('global_dont_delete') + '</a>' +
- 62. - '</div><div class="separator"><div></div></div>'
- 63. - }, {display: 'none'});
- 64. - },
- 65. -
- 66. - get_by_id: function(elem, id) {
- 67. - if (elem.id == id) {
- 68. - return elem;
- 69. - }
- 70. - for (var i = 0; i < elem.childNodes.length; ++i) {
- 71. - var result = this.get_by_id(elem.childNodes[i], id);
- 72. - if (result) {
- 73. - return result;
- 74. - }
- 75. - }
- 76. - return false;
- 77. - },
- 78. -
- 79. - initWorkRow: function(work, elem) {
- 80. - var g = elem ? function(id) { return ProfileEditorJob.get_by_id(elem, id); } : ge;
- 81. - work.uiStart = new Dropdown(g('start' + work.id), [[0, getLang('select_year_not_selected')]].concat(cur.selData.years), {
- 82. - width: 200,
- 83. - autocomplete: true,
- 84. - placeholder: getLang('select_year_not_selected'),
- 85. - placeholderColor: '#000',
- 86. - noResult: getLang('select_year_not_found'),
- 87. - onChange: function(value) {
- 88. - value = intval(value);
- 89. - var new_finish_data = [];
- 90. - if (!value) {
- 91. - work.uiStart.clear();
- 92. - new_finish_data = cur.selData.years;
- 93. - } else {
- 94. - var finish_value = intval(work.uiFinish.val());
- 95. - if (finish_value && finish_value < value) {
- 96. - work.uiFinish.val(value);
- 97. - }
- 98. - for (var i = 0; i < cur.selData.years.length; ++i) {
- 99. - if (cur.selData.years[i][0] >= value) {
- 100. - new_finish_data.push(cur.selData.years[i]);
- 101. - }
- 102. - }
- 103. - }
- 104. - work.uiFinish.setOptions({defaultItems: [[0, getLang('select_year_not_selected')]].concat(new_finish_data)});
- 105. - work.uiFinish.setData(new_finish_data);
- 106. - }
- 107. - });
- 108. - work.uiStart.setData(cur.selData.years);
- 109. - work.uiFinish = new Dropdown(g('finish' + work.id), [[0, getLang('select_year_not_selected')]].concat(cur.selData.years), {
- 110. - width: 200,
- 111. - autocomplete: true,
- 112. - placeholder: getLang('select_year_not_selected'),
- 113. - placeholderColor: '#000',
- 114. - noResult: getLang('select_year_not_found'),
- 115. - onChange: function(value) {
- 116. - value = intval(value);
- 117. - var new_start_data = [];
- 118. - if (!value) {
- 119. - work.uiFinish.clear();
- 120. - new_start_data = cur.selData.years;
- 121. - } else {
- 122. - var start_value = intval(work.uiStart.val());
- 123. - if (start_value && start_value > value) {
- 124. - work.uiStart.val(value);
- 125. - }
- 126. - for (var i = 0; i < cur.selData.years.length; ++i) {
- 127. - if (cur.selData.years[i][0] <= value) {
- 128. - new_start_data.push(cur.selData.years[i]);
- 129. - }
- 130. - }
- 131. - }
- 132. - work.uiStart.setOptions({defaultItems: [[0, getLang('select_year_not_selected')]].concat(new_start_data)});
- 133. - work.uiStart.setData(new_start_data);
- 134. - }
- 135. - });
- 136. - work.uiFinish.setData(cur.selData.years);
- 137. -
- 138. - work.uiStart.val(work.start, true);
- 139. - work.uiFinish.val(work.finish, true);
- 140. -
- 141. - work.uiPosition = new Selector(g('position' + work.id), 'select.php?act=apositions', {
- 142. - width: 200,
- 143. - multiselect: false,
- 144. - noResult: getLang('select_work_position_select'),
- 145. - introText: getLang('select_work_position_select'),
- 146. - selectedItems: [work.position_val],
- 147. - dropdown: false,
- 148. - enableCustom: true,
- 149. - progressBar: 'progress' + work.id,
- 150. - onChange: function(value) {
- 151. - var val = intval(value);
- 152. - if (!val) {
- 153. - work.uiPosition.clear();
- 154. - }
- 155. - }
- 156. - });
- 157. -
- 158. - work.uiCity = new CitySelect(g('city' + work.id), g('row_city' + work.id), {
- 159. - width: 200,
- 160. - progressBar: 'progress' + work.id,
- 161. - country: work.country,
- 162. - city: work.city_val,
- 163. - onChange: function(value) {
- 164. - if (intval(value)) {
- 165. - show('details' + work.id);
- 166. - } else {
- 167. - hide('details' + work.id);
- 168. - }
- 169. - }
- 170. - });
- 171. - work.uiCountry = new CountrySelect(g('country' + work.id), g('row_country' + work.id), {
- 172. - width: 200,
- 173. - progressBar: 'progress' + work.id,
- 174. - country: work.country_val,
- 175. - citySelect: work.uiCity
- 176. - });
- 177. -
- 178. - g('company' + work.id).value = winToUtf(work.company_name);
- 179. - //g('position' + work.id).value = winToUtf(work.position);
- 180. -
- 181. - g('work' + work.id).style.display = 'block';
- 182. - if (work.city) {
- 183. - g('details' + work.id).style.display = 'block';
- 184. - }
- 185. -
- 186. - return work;
- 187. - },
- 188. -
- 189. - addWork: function() {
- 190. - if (cur.worksCount >= 7) {
- 191. - return false;
- 192. - }
- 193. - var new_work = {
- 194. - id: -(++cur.globalCounter),
- 195. - country: cur.selData.mem.country,
- 196. - country_val: cur.selData.mem.country_val,
- 197. - city: cur.selData.mem.city,
- 198. - city_val: cur.selData.mem.city_val,
- 199. - company_name: '',
- 200. - start: 0,
- 201. - finish: 0,
- 202. - position: 0,
- 203. - position_val: ''
- 204. - };
- 205. - ge('works').appendChild(this.genWorkRow(new_work.id));
- 206. - new_work = this.initWorkRow(new_work);
- 207. - if (!cur.works.length) {
- 208. - cur.works = new Array();
- 209. - }
- 210. - cur.works.push(new_work);
- 211. - ++cur.worksCount;
- 212. - if (cur.worksCount >= 7) {
- 213. - hide('add_work_link');
- 214. - }
- 215. - return false;
- 216. - },
- 217. -
- 218. - getIndex: function(data, id) {
- 219. - for (var i = 0; i < data.length; ++i) {
- 220. - if (data[i].id == id) {
- 221. - return i;
- 222. - }
- 223. - }
- 224. - return false;
- 225. - },
- 226. -
- 227. - deleteWork: function(id) {
- 228. - --cur.worksCount;
- 229. - show('add_work_link');
- 230. - if ((ge('company' + id).value.length) || (ge('position' + id).value.length) || (id > 0)) {
- 231. - hide('content' + id);
- 232. - ge('deleted' + id).firstChild.innerHTML = getLang('profileEdit_work_will_be_deleted');
- 233. - show('deleted' + id);
- 234. - } else {
- 235. - var index = this.getIndex(cur.works, id);
- 236. - cur.works[index] = cur.works[cur.works.length - 1];
- 237. - cur.works.pop();
- 238. - ge('work' + id).parentNode.removeChild(ge('work' + id));
- 239. - if (cur.works.length == 0) {
- 240. - this.addWork();
- 241. - }
- 242. - }
- 243. - return false;
- 244. - },
- 245. -
- 246. - restoreWork: function(id) {
- 247. - if (cur.worksCount >= 7) {
- 248. - return false;
- 249. - }
- 250. - hide('deleted' + id);
- 251. - show('content' + id);
- 252. - ++cur.worksCount;
- 253. - if (cur.worksCount >= 7) {
- 254. - hide('add_work_link');
- 255. - }
- 256. - return false;
- 257. - },
- 258. -
- 259. - addFields: function() {
- 260. - var params = arguments[0];
- 261. - var id = arguments[1];
- 262. - var index = arguments[2];
- 263. - for (var i = 3; i < arguments.length; ++i) {
- 264. - if (intval(ge(arguments[i] + id).value)) {
- 265. - params[arguments[i] + index] = ge(arguments[i] + id).value;
- 266. - }
- 267. - }
- 268. - return params;
- 269. - },
- 270. -
- 271. - addTextFields: function() {
- 272. - var params = arguments[0];
- 273. - var id = arguments[1];
- 274. - var index = arguments[2];
- 275. - for (var i = 3; i < arguments.length; ++i) {
- 276. - if (ge(arguments[i] + id).value.length) {
- 277. - params[arguments[i] + index] = ge(arguments[i] + id).value;
- 278. - }
- 279. - }
- 280. - return params;
- 281. - },
- 282. -
- 283. - saveWorks: function(btn) {
- 284. - var params = {act: 'a_save_career', hash: ge('hash').value};
- 285. - for (var i = 0; i < cur.works.length; ++i) {
- 286. - var id = cur.works[i].id;
- 287. - params['id' + i] = id;
- 288. - if (isVisible('content' + id) && (ge('company' + id).value.length || ge('position' + id).value.length)) {
- 289. - params = this.addFields(params, id, i, 'country', 'city', 'start', 'finish');
- 290. - params = this.addTextFields(params, id, i, 'company');
- 291. - var position_val = cur.works[i].uiPosition.val_full(), position = position_val[1] || '';
- 292. - if (position.length) {
- 293. - params['position' + i] = position;
- 294. - }
- 295. - } else {
- 296. - params['deleted' + i] = 1;
- 297. - }
- 298. - }
- 299. -
- 300. - var doneHandler = function(response) {
- 301. - var to_remove = [];
- 302. - for (var i = 0; i < cur.works.length; ++i) {
- 303. - var new_work_id = response['res' + i];
- 304. - if (intval(new_work_id)) {
- 305. - cur.works[i] = this.updateWork(cur.works[i], new_work_id, ge('works'));
- 306. - } else {
- 307. - to_remove.push(i);
- 308. - }
- 309. - }
- 310. - for (var i = 0; i < to_remove.length; ++i) {
- 311. - var index = to_remove[i];
- 312. - ge('work' + cur.works[index].id).parentNode.removeChild(ge('work' + cur.works[index].id));
- 313. - cur.works[index] = cur.works[cur.works.length - 1];
- 314. - for (var j = i + 1; j < to_remove.length; ++j) {
- 315. - if (to_remove[j] == cur.works.length - 1) {
- 316. - to_remove[j] = index;
- 317. - }
- 318. - }
- 319. - cur.works.pop();
- 320. - }
- 321. - cur.worksCount = cur.works.length;
- 322. - if (cur.worksCount >= 7) {
- 323. - hide('add_work_link');
- 324. - } else {
- 325. - show('add_work_link');
- 326. - }
- 327. - if (!cur.worksCount) {
- 328. - this.addWork();
- 329. - }
- 330. - }
- 331. -
- 332. - ajax.post('al_profileEdit.php', params, {
- 333. - onDone: function (job_data) {
- 334. - doneHandler.call(ProfileEditorJob, job_data);
- 335. - ProfileEditor.showMsg(getLang('profileEdit_works_saved'));
- 336. - },
- 337. - showProgress: lockButton.pbind(btn),
- 338. - hideProgress: unlockButton.pbind(btn)
- 339. - });
- 340. - return false;
- 341. - },
- 342. -
- 343. - updateWork: function(old_work, new_work_id, parent) {
- 344. - old_work.country = old_work.uiCountry.val();
- 345. - old_work.country_val = old_work.uiCountry.val_full();
- 346. - old_work.city = old_work.uiCity.val();
- 347. - old_work.city_val = old_work.uiCity.val_full();
- 348. - old_work.company_name = ge('company' + old_work.id).value;
- 349. - old_work.start = old_work.uiStart.val();
- 350. - old_work.finish = old_work.uiFinish.val();
- 351. - old_work.position = old_work.uiPosition.val();
- 352. - old_work.position_val = old_work.uiPosition.val_full();
- 353. -
- 354. - var new_elem = this.genWorkRow(new_work_id);
- 355. - var old_elem = ge('work' + old_work.id);
- 356. - old_work.id = new_work_id;
- 357. - new_work = this.initWorkRow(old_work, new_elem);
- 358. - parent.replaceChild(new_elem, old_elem);
- 359. -
- 360. - return new_work;
- 361. - },
- 362. -
- 363. - workChanged: function(work) {
- 364. - var old_position = work.position_val[1] || '', position = (work.uiPosition.val_full() || [])[1] || '';
- 365. - return !isVisible('content' + work.id) ||
- 366. - work.country != work.uiCountry.val() || work.city != work.uiCity.val() ||
- 367. - winToUtf(work.company_name) != ge('company' + work.id).value || winToUtf(old_position) != winToUtf(position) ||
- 368. - work.start != work.uiStart.val() || work.finish != work.uiFinish.val();
- 369. - }
- 370. - };
- 372. - try{stManager.done('profile_edit_job.js');}catch(e){}
- ------
Advertisement
Add Comment
Please, Sign In to add comment