popjobarea.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558
  1. var getAreaHtml = {
  2. getContent: function () {
  3. var b = "";
  4. var a = areaPopDeal.popType;
  5. var c = areaPopDeal.selectedArea;
  6. if ($("#barea").length > 0) {
  7. return ""
  8. }
  9. if (a == "multi") {
  10. b += '<div id="barea" class="cover c2 cover_fix2"><div class="top on" style="z-index:9;"><a href="javascript:void(0);" onclick="areaPopDeal.hidePop();" class="back"></a><a href="javascript:void(0);" onclick="areaPopDeal.confirmArea();" class="ok">确定</a><span>地区选择</span>';
  11. b += '<div class="all off">';
  12. b += '<div class="tit" id="selectareanum" onclick="areaPopDeal.changeMultiTab(this);">已选地区(' + c.areacode.length + "/5)<span>收起</span></div>";
  13. b += '<div class="con" id="selectarealist" style="display:block">';
  14. $.each(c.areacode, function (e, f) {
  15. b += '<div class="e" value="' + f + '"><em onclick="areaPopDeal.delMultiArea(this);"></em>' + c.areaname[e] + "</div>"
  16. });
  17. b += "</div></div></div>"
  18. } else {
  19. var d = a == "hukou" ? "国籍/户口选择" : "地区选择";
  20. b += '<div id="barea" class="cover c2 fixtop"><div class="top"><a href="javascript:void(0);" onclick="areaPopDeal.hidePop();" class="back"></a>' + d + "</div>"
  21. }
  22. b += this.getTabBar();
  23. b += this.getCurArea();
  24. b += this.getHotcity();
  25. b += this.getAllCityByCharacter();
  26. b += this.getProvince();
  27. b += this.getAbroad();
  28. b += "</div>";
  29. return b
  30. },
  31. getHotcity: function (f) {
  32. var c = ["salary/index", "resume/baseinfo", "resume/guide1", "resume/pastebaseinfo"];
  33. var e = "";
  34. var b = "";
  35. var d = areaPopDeal.popType;
  36. var g = (d == "hukou" || d == "livingarea") ? areaPopDeal.selectedArea.areacodedeal : areaPopDeal.selectedArea.areacode;
  37. e += '<div class="ptit" id="tag_hot"><div class="e"><span>热门城市</span></div></div>';
  38. e += '<div class="elist">';
  39. var a = 1;
  40. $.each(hotcity, function (h, i) {
  41. if (i.k == "000000") {
  42. if (d == "multi") {
  43. return true
  44. } else {
  45. if (d != "top" && $.inArray($_CONFIG.template, c) != "-1") {
  46. return true
  47. }
  48. }
  49. }
  50. b = $.inArray(i.k, g) != "-1" ? "mk" : "";
  51. e += '<div class="e hotcity ' + b + '" value="' + i.k + '"><div class="tit">' + i.v + "</div></div>";
  52. if (a % 3 == 0) {
  53. e += '<div class="clist"></div>';
  54. a = 0
  55. }
  56. a++
  57. });
  58. if (a > 1 && a <= 3) {
  59. e += '<div class="clist"></div>'
  60. }
  61. e += "</div>";
  62. return e
  63. },
  64. getCurArea: function () {
  65. var b = $_CONFIG.jobarea;
  66. var c = $_CONFIG.jobareaname;
  67. var a = "";
  68. if (b != "000000") {
  69. a += '<div class="ptit" id="tag_now"><div class="e"><span>当前地区</span></div></div>';
  70. a += '<div class="ncity" value="' + b + '" onclick="areaPopDeal.setArea(this, \'curr\');"><span>' + c + "</span></div>"
  71. }
  72. return a
  73. },
  74. getAllCityByCharacter: function () {
  75. var c = "";
  76. var a = 1;
  77. var b = areaPopDeal.popType;
  78. var d = (b == "hukou" || b == "livingarea") ? areaPopDeal.selectedArea.areacodedeal : areaPopDeal.selectedArea.areacode;
  79. $.each(allCityByCharacter, function (e, f) {
  80. c += '<div class="ptit" id="tag_' + e + '"><div class="e"><span>' + e + "</span></div></div>";
  81. c += '<div class="elist">';
  82. a = 1;
  83. $.each(f, function (g, h) {
  84. isselect = $.inArray(h.k, d) != "-1" ? "mk" : "";
  85. c += '<div class="e character ' + isselect + '" value="' + h.k + '"><div class="tit">' + h.v + "</div></div>";
  86. if (a % 3 == 0) {
  87. c += '<div class="clist"></div>';
  88. a = 0
  89. }
  90. a++
  91. });
  92. if (a > 1 && a <= 3) {
  93. c += '<div class="clist"></div>'
  94. }
  95. c += "</div>"
  96. });
  97. return c
  98. },
  99. getProvince: function () {
  100. var a = 1;
  101. var c = areaPopDeal.popType;
  102. var d = (c == "hukou" || c == "livingarea") ? areaPopDeal.selectedArea.areacodedeal : areaPopDeal.selectedArea.areacode;
  103. var b = "";
  104. b += '<div class="ptit" id="tag_province"><div class="e"><span>省份</span></div></div>';
  105. b += '<div class="elist">';
  106. $.each(allProvince, function (e, f) {
  107. if (f.k == "360000") {
  108. return true
  109. }
  110. isselect = $.inArray(f.k, d) != "-1" ? "mk" : "";
  111. b += '<div class="e province ' + isselect + '" value="' + f.k + '"><div class="tit">' + f.v + "</div></div>";
  112. if (a % 3 == 0) {
  113. b += '<div class="clist"></div>';
  114. a = 0
  115. }
  116. a++
  117. });
  118. if (a > 1 && a <= 3) {
  119. b += '<div class="clist"></div>'
  120. }
  121. b += "</div>";
  122. return b
  123. },
  124. getAbroad: function () {
  125. var c = "";
  126. c += '<div class="ptit" id="tag_abroad"><div class="e"><span>国外</span></div></div>';
  127. c += '<div class="elist">';
  128. var b = areaPopDeal.popType;
  129. var a = 1;
  130. var d = (b == "hukou" || b == "livingarea") ? areaPopDeal.selectedArea.areacodedeal : areaPopDeal.selectedArea.areacode;
  131. if (b == "hukou") {
  132. $.each(continent, function (e, f) {
  133. isselect = $.inArray(f.k, d) != "-1" ? "mk" : "";
  134. c += '<div class="e abroad ' + isselect + '" value="' + f.k + '"><div class="tit">' + f.v + "</div></div>";
  135. if (a % 3 == 0) {
  136. c += '<div class="clist"></div>';
  137. a = 0
  138. }
  139. a++
  140. })
  141. } else {
  142. isselect = $.inArray("360000", d) != "-1" ? "mk" : "";
  143. c += '<div class="e abroad ' + isselect + '" value="360000"><div class="tit">国外</div></div>'
  144. }
  145. if (a > 1 && a <= 3) {
  146. c += '<div class="clist"></div>'
  147. }
  148. return c
  149. },
  150. getTabBar: function () {
  151. var b = "";
  152. var a = $_CONFIG.jobarea;
  153. b += '<div class="bar">';
  154. if (a != "000000") {
  155. b += '<span value="now" id="now" style="color:#2d86d7;">当前</span><span value="hot" id="hot">热门</span>'
  156. } else {
  157. b += '<span value="hot" id="hot" style="color:#2d86d7;">热门</span>'
  158. }
  159. $.each(allCityByCharacter, function (c, d) {
  160. b += '<span value="' + c + '" id="' + c + '">' + c + "</span>"
  161. });
  162. b += '<span value="province" id="province">省份</span><span value="abroad" id="abroad">国外</span>';
  163. b += "</div>";
  164. return b
  165. }
  166. };
  167. var areaPopDeal = {
  168. popType: "",
  169. tabObj: {},
  170. selectedArea: {},
  171. setConfig: function (b, a, c) {
  172. this.popType = a, this.tabObj = b;
  173. this.selectedArea = c;
  174. return true
  175. },
  176. setArea: function (e, a) {
  177. a = (typeof (a) == "undefined" || a == "") ? "" : a;
  178. var c = this.popType;
  179. var d = a == "curr" ? $_CONFIG.jobarea : $(e).attr("value");
  180. var b = a == "curr" ? $_CONFIG.jobareaname : $(e).children(".tit").text();
  181. switch (c) {
  182. case "top":
  183. this.changeLocation(d, b);
  184. break;
  185. case "single":
  186. $(this.tabObj).text(b).removeClass("c_default");
  187. $(this.tabObj).next().val(d);
  188. this.hidePop();
  189. break;
  190. case "multi":
  191. this.selectArea(e);
  192. break;
  193. case "hukou":
  194. case "livingarea":
  195. if (a == "curr") {
  196. $(this.tabObj).text(b).removeClass("c_default");
  197. $(this.tabObj).next().val(d);
  198. this.hidePop();
  199. return false
  200. }
  201. if (d.substr(0, 2) == "36") {
  202. var f = abroad[d]
  203. } else {
  204. var f = allCityHasDistrict[d]
  205. }
  206. if (typeof (f) == "undefined") {
  207. $(this.tabObj).text(b).removeClass("c_default");
  208. $(this.tabObj).next().val(d);
  209. this.hidePop()
  210. } else {
  211. if (c == "hukou" && d.substr(0, 2) != "36") {
  212. $(this.tabObj).text(b).removeClass("c_default");
  213. $(this.tabObj).next().val(d);
  214. this.hidePop()
  215. } else {
  216. this.showChildrenArea(e)
  217. }
  218. }
  219. break
  220. }
  221. return false
  222. },
  223. selectArea: function (h) {
  224. var g = this.selectedArea;
  225. var e = $(h).attr("value");
  226. var c = $(h).children(".tit").length > 0 ? $(h).children(".tit").text() : $(h).children("span").text();
  227. var d = "";
  228. var b = [];
  229. if ($.inArray(e, g.areacode) != "-1") {
  230. $.each(g.areacode, function (i, j) {
  231. if (j == e) {
  232. g.areacode.splice(i, 1);
  233. g.areaname.splice(i, 1);
  234. return false
  235. }
  236. });
  237. $(".elist .e").each(function (i) {
  238. if ($(this).attr("value") == e) {
  239. $(this).removeClass("mk")
  240. }
  241. });
  242. $("#selectarealist .e").each(function (i) {
  243. if ($(this).attr("value") == e) {
  244. $(this).remove();
  245. return false
  246. }
  247. })
  248. } else {
  249. var a = e.substr(0, 2);
  250. if ($.inArray(a, ["01", "02", "04", "05", "06"]) == "-1") {
  251. if (e.substr(2, 2) != "00" && e.substr(4, 2) == "00") {
  252. $.each(g.areacode, function (i, j) {
  253. if (a == j.substr(0, 2) && j.substr(2, 4) == "0000") {
  254. b.push(j)
  255. }
  256. })
  257. } else {
  258. if (e.substr(2, 4) == "0000") {
  259. $.each(g.areacode, function (i, j) {
  260. if (a == j.substr(0, 2) && j.substr(2, 2) != "00" && j.substr(4, 2) == "00") {
  261. b.push(j)
  262. }
  263. })
  264. }
  265. }
  266. if (b.length <= 0 && g.areacode.length >= 5) {
  267. pop.ini([
  268. ["您已经选择了5个地区,如需更换,请取消后重新选择!", "warn"]
  269. ], ["确定"]);
  270. return false
  271. }
  272. $.each(b, function (i, j) {
  273. $.each(g.areacode, function (m, l) {
  274. if (j == l) {
  275. g.areacode.splice(m, 1);
  276. g.areaname.splice(m, 1);
  277. return false
  278. }
  279. });
  280. $(".elist .e").each(function (k) {
  281. if ($(this).attr("value") == j) {
  282. $(this).removeClass("mk")
  283. }
  284. });
  285. $("#selectarealist .e").each(function (k) {
  286. if ($(this).attr("value") == j) {
  287. $(this).remove()
  288. }
  289. })
  290. })
  291. } else {
  292. if (g.areacode.length >= 5) {
  293. pop.ini([
  294. ["您已经选择了5个地区,如需更换,请取消后重新选择!", "warn"]
  295. ], ["确定"]);
  296. return false
  297. }
  298. }
  299. g.areacode.push(e);
  300. g.areaname.push(c);
  301. $(".elist .e").each(function (i) {
  302. if ($(this).attr("value") == e) {
  303. $(this).addClass("mk")
  304. }
  305. });
  306. d += '<div class="e" value="' + e + '"><em onclick="areaPopDeal.delMultiArea(this);"></em>' + c + "</div>";
  307. $("#selectarealist").append(d)
  308. }
  309. var f = $("#selectareanum").parent().hasClass("off") ? "收起" : "展开";
  310. $("#selectareanum").html("已选地区(" + g.areacode.length + "/5)<span>" + f + "</span>");
  311. this.selectedArea = g;
  312. return false
  313. },
  314. changeLocation: function (c, b) {
  315. var a = {
  316. areacode: c,
  317. areaname: b
  318. };
  319. ajaxRequest($_CONFIG.domain + "ajax/in/location.ajax.php/?areacode=" + c + "&areaname=" + b);
  320. storage.json_set("location", a);
  321. if ("search/joblist" == $_CONFIG.template || "company/joblist" == $_CONFIG.template) {
  322. $("input[name='jobarea']").val(c);
  323. $("input[name='landmark']").val("");
  324. $("input[name='lonlat']").val("");
  325. $("input[name='tubename']").val("");
  326. $("input[name='tubeline']").val("");
  327. $("input[name='radius']").val("");
  328. $("form[name='jobform']").submit();
  329. return false
  330. } else {
  331. window.location.reload();
  332. scrollTo(0, 0)
  333. }
  334. },
  335. showAreaPop: function (c, b) {
  336. b = (typeof (b) == "undefined" || b == "") ? "single" : b;
  337. var d = this.areaDeal(c, b);
  338. this.setConfig(c, b, d);
  339. var a = getAreaHtml.getContent();
  340. if (b == "multi") {
  341. $("#shadow").before(a)
  342. } else {
  343. $("body").append(a)
  344. }
  345. this.showPop();
  346. $(".hotcity, .character, .province, .abroad").click(function () {
  347. areaPopDeal.setArea(this);
  348. return false
  349. });
  350. return false
  351. },
  352. areaDeal: function (e, c) {
  353. var b = (c == "top") ? $_CONFIG.jobarea : $(e).next().val();
  354. var d = b.length > 0 ? b.split(",") : [];
  355. var f = (c == "top") ? $_CONFIG.jobareaname : (b.length > 0 ? $(e).text().split(",") : []);
  356. var a = {
  357. areacode: d,
  358. areacodedeal: [],
  359. areaname: f
  360. };
  361. if (c == "hukou" || c == "livingarea") {
  362. $.each(d, function (h, i) {
  363. var g = i.substr(0, 2);
  364. if ($.inArray(g, ["01", "02", "04", "05", "06"]) != "-1") {
  365. if (i.substr(2, 2) != "00") {
  366. a.areacodedeal.push(g + "0000")
  367. } else {
  368. a.areacodedeal.push(i)
  369. }
  370. } else {
  371. if (i.substr(4, 2) != "00") {
  372. a.areacodedeal.push(i.substr(0, 4) + "00")
  373. } else {
  374. a.areacodedeal.push(i)
  375. }
  376. }
  377. })
  378. }
  379. return a
  380. },
  381. showPop: function () {
  382. $(".calendar ").hide();
  383. $("#pageContent").hide();
  384. $("#pageWp").hide();
  385. $("#barea").show();
  386. scrollTo(0, 0);
  387. rightChange();
  388. return false
  389. },
  390. hidePop: function () {
  391. $("#pageContent").show();
  392. $("#pageWp").show();
  393. $("#barea").remove();
  394. scrollTo(0, 0);
  395. return false
  396. },
  397. changeMultiTab: function (a) {
  398. if ($(a).parent().hasClass("on")) {
  399. $(a).parent().removeClass("on").addClass("off");
  400. $(a).next().show();
  401. $(a).children("span").text("收起");
  402. $("#barea .top").css("z-index", 9)
  403. } else {
  404. $(a).parent().removeClass("off").addClass("on");
  405. $(a).next().hide();
  406. $(a).children("span").text("展开");
  407. $("#barea .top").css("z-index", 3)
  408. }
  409. return true
  410. },
  411. delMultiArea: function (c) {
  412. var d = $(c).parent();
  413. var a = d.attr("value");
  414. var e = this.selectedArea;
  415. $.each(e.areacode, function (f, g) {
  416. if (a == g) {
  417. e.areacode.splice(f, 1);
  418. e.areaname.splice(f, 1);
  419. return false
  420. }
  421. });
  422. $(".elist .e").each(function (f) {
  423. if ($(this).attr("value") == a) {
  424. $(this).removeClass("mk")
  425. }
  426. });
  427. d.remove();
  428. var b = $("#selectareanum").parent().hasClass("off") ? "收起" : "展开";
  429. $("#selectareanum").html("已选地区(" + e.areacode.length + "/5)<span>" + b + "</span>");
  430. this.selectedArea = e;
  431. return true
  432. },
  433. confirmArea: function () {
  434. var a = this.selectedArea;
  435. if (a.areacode.length > 0) {
  436. $(this.tabObj).text(a.areaname).removeClass("c_default")
  437. } else {
  438. $(this.tabObj).text("请选择").addClass("c_default")
  439. }
  440. $(this.tabObj).next().val(a.areacode);
  441. this.hidePop();
  442. return true
  443. },
  444. showChildrenArea: function (f) {
  445. var c = findNextTab(f, "clist");
  446. if ($(f).hasClass("on")) {
  447. $(f).removeClass("on");
  448. $(c).hide();
  449. return true
  450. } else {
  451. $(".hotcity,.character,.province,.abroad").removeClass("on");
  452. $(".clist").hide();
  453. $(f).addClass("on")
  454. }
  455. var e = $(f).attr("value");
  456. var b = $(f).children(".tit").text();
  457. var d = "";
  458. var a = "";
  459. var h = areaPopDeal.selectedArea.areacode;
  460. if (e.substr(0, 2) == "36") {
  461. var g = abroad[e]
  462. } else {
  463. var g = allCityHasDistrict[e]
  464. }
  465. $.each(g, function (i, j) {
  466. a = $.inArray(j.k, h) != "-1" ? "ok" : "";
  467. d += '<a href="javascript:void(0);" class="region ' + a + '" value="' + j.k + '">' + (e == j.k ? "所有" : j.v) + "</a>"
  468. });
  469. $(c).empty().append(d).show();
  470. $(".region").click(function () {
  471. areaPopDeal.setRegionArea(this);
  472. return false
  473. });
  474. return true
  475. },
  476. setRegionArea: function (c) {
  477. var b = $(c).attr("value");
  478. var a = $(c).text();
  479. if (a == "所有") {
  480. if (b.substr(0, 2) == "36") {
  481. var d = abroad[b]
  482. } else {
  483. var d = allCityHasDistrict[b]
  484. }
  485. a = d[0]["v"]
  486. }
  487. $(this.tabObj).text(a).removeClass("c_default");
  488. $(this.tabObj).next().val(b);
  489. this.hidePop();
  490. return true
  491. }
  492. };
  493. var findNextTab = function (d, a) {
  494. var b = $(d).next();
  495. var c = 1;
  496. while (b.length) {
  497. if (b.hasClass(a)) {
  498. break
  499. } else {
  500. b = b.next()
  501. }
  502. }
  503. return b
  504. };
  505. var rightChange = function () {
  506. if ($(".bar").length < 1) {
  507. return false
  508. }
  509. var a = "";
  510. var d = "";
  511. var b = "";
  512. var c = $(window).height() - $(".ptit").position().top - 24;
  513. $(".bar span").css("line-height", Math.floor(c / $(".bar span").length) + "px");
  514. $(".bar .on").attr("data-attr", $(".bar .on").html());
  515. clearSpanStyle();
  516. $(".bar span").click(function () {
  517. a = $(this).html();
  518. d = $(this).attr("value");
  519. b = $("#barea .top").height();
  520. $(this).addClass("on").siblings("span").removeClass("on").css("color", "");
  521. $(this).attr("data-attr", a);
  522. $(window).scrollTop($("#tag_" + d).offset().top - b);
  523. clearSpanStyle()
  524. });
  525. return true
  526. };
  527. var clearSpanStyle = function () {
  528. setTimeout(function () {
  529. $(".bar span").siblings(".on").css("color", "#2d86d7").removeClass("on")
  530. }, 500)
  531. };
  532. $(window).scroll(function () {
  533. if ($("#barea").length <= 0) {
  534. return false
  535. }
  536. var d = $(window).scrollTop();
  537. var b = "";
  538. var c = "";
  539. var a = $("#barea .top").length > 0 ? $("#barea .top").height() : 0;
  540. $(".ptit").each(function (i) {
  541. b = $(this).offset().top;
  542. c = $(this).next().offset().top;
  543. if (d >= (b - a) && d <= c) {
  544. var h = $(this).attr("id");
  545. var g = h.split("_")[1];
  546. var f = $("#" + g).html();
  547. $(".bar span").removeClass("on").css("color", "");
  548. $("#" + g).addClass("on").attr("data-attr", f);
  549. return false
  550. }
  551. });
  552. setTimeout(function () {
  553. if (d == $(window).scrollTop()) {
  554. clearSpanStyle()
  555. }
  556. }, 500);
  557. return false
  558. });