common.js 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319
  1. /* $Id : common.js 4865 2007-01-31 14:04:10Z paulgao $ */
  2. function goTop() {
  3. $('html,body').animate({
  4. 'scrollTop': 0
  5. }, 600);
  6. }
  7. /* *
  8. * 添加商品到购物车
  9. */
  10. function addToCart1(goodsId, parentId)
  11. {
  12. var goods = new Object();
  13. var spec_arr = new Array();
  14. var fittings_arr = new Array();
  15. var number = 1;
  16. var formBuy = document.forms['ECS_FORMBUY'];
  17. var quick = 0;
  18. // 检查是否有商品规格
  19. if (formBuy)
  20. {
  21. spec_arr = getSelectedAttributes(formBuy);
  22. if (formBuy.elements['number'])
  23. {
  24. number = formBuy.elements['number'].value;
  25. }
  26. }
  27. quick = 1;
  28. goods.quick = quick;
  29. goods.spec = spec_arr;
  30. goods.goods_id = goodsId;
  31. goods.number = number;
  32. goods.parent = (typeof(parentId) == "undefined") ? 0 : parseInt(parentId);
  33. Ajax.call('flow.php?step=add_to_cart1', 'goods=' + $.toJSON(goods), addToCartResponse1, 'POST', 'JSON');
  34. }
  35. function addToCartResponse1(result)
  36. {
  37. if (result.error > 0)
  38. {
  39. // 如果需要缺货登记,跳转
  40. if (result.error == 2)
  41. {
  42. alert(result.message);
  43. }
  44. // 没选规格,弹出属性选择框
  45. else if (result.error == 6)
  46. {
  47. openSpeDiv(result.message, result.goods_id, result.parent);
  48. } else
  49. {
  50. alert(result.message);
  51. }
  52. } else
  53. {
  54. var cartInfo = document.getElementById('ECS_CARTINFO');
  55. var cartInfo1 = document.getElementById('ECS_CARTINFO1');
  56. var cart_url = 'flow.php?step=cart';
  57. if (cartInfo)
  58. {
  59. cartInfo.innerHTML = result.content;
  60. }
  61. if (cartInfo1)
  62. {
  63. cartInfo1.innerHTML = result.content;
  64. }
  65. location.href = cart_url;
  66. }
  67. }
  68. function addToCart(goodsId, parentId)
  69. {
  70. var goods = new Object();
  71. var spec_arr = new Array();
  72. var fittings_arr = new Array();
  73. var number = 1;
  74. var formBuy = document.forms['ECS_FORMBUY'];
  75. var quick = 0;
  76. var fid = "number_" + goodsId;
  77. if (document.getElementById(fid)) {
  78. number = document.getElementById(fid).value;
  79. } else
  80. {
  81. number = 1;
  82. }
  83. // 检查是否有商品规格
  84. if (formBuy)
  85. {
  86. spec_arr = getSelectedAttributes(formBuy);
  87. if (formBuy.elements['number'])
  88. {
  89. number = formBuy.elements['number'].value;
  90. }
  91. var fid = "number_" + goodsId;
  92. if (document.getElementById(fid)) {
  93. number = document.getElementById(fid).value;
  94. }
  95. }
  96. goods.quick = quick;
  97. goods.spec = spec_arr;
  98. goods.goods_id = goodsId;
  99. goods.number = number;
  100. goods.parent = (typeof(parentId) == "undefined") ? 0 : parseInt(parentId);
  101. Ajax.call('flow.php?step=add_to_cart', 'goods=' + $.toJSON(goods), addToCartResponse, 'POST', 'JSON');
  102. }
  103. /**
  104. * 获得选定的商品属性
  105. */
  106. function getSelectedAttributes(formBuy)
  107. {
  108. var spec_arr = new Array();
  109. var j = 0;
  110. for (i = 0; i < formBuy.elements.length; i++)
  111. {
  112. var prefix = formBuy.elements[i].name.substr(0, 5);
  113. if (prefix == 'spec_' && (
  114. ((formBuy.elements[i].type == 'radio' || formBuy.elements[i].type == 'checkbox') && formBuy.elements[i].checked) ||
  115. formBuy.elements[i].tagName == 'SELECT'))
  116. {
  117. spec_arr[j] = formBuy.elements[i].value;
  118. j++;
  119. }
  120. }
  121. return spec_arr;
  122. }
  123. /* *
  124. * 处理添加商品到购物车的反馈信息
  125. */
  126. function addToCartResponse(result)
  127. {
  128. if (result.error > 0)
  129. {
  130. // 如果需要缺货登记,跳转
  131. if (result.error == 2)
  132. {
  133. alert(result.message);
  134. }
  135. // 没选规格,弹出属性选择框
  136. else if (result.error == 6)
  137. {
  138. openSpeDiv(result.message, result.goods_id, result.parent);
  139. } else
  140. {
  141. alert(result.message);
  142. }
  143. } else
  144. {
  145. var cartInfo = document.getElementById('ECS_CARTINFO');
  146. var cartInfo1 = document.getElementById('ECS_CARTINFO1');
  147. var cart_url = 'flow.php?step=cart';
  148. if (cartInfo)
  149. {
  150. cartInfo.innerHTML = result.content;
  151. }
  152. if (cartInfo1)
  153. {
  154. cartInfo1.innerHTML = result.content;
  155. }
  156. switch (result.confirm_type)
  157. {
  158. case '1':
  159. opencartDiv(result.shop_price, result.goods_name, result.goods_thumb, result.goods_brief, result.goods_id, result.goods_price, result.goods_number);
  160. break;
  161. default:
  162. opencartDiv(result.shop_price, result.goods_name, result.goods_thumb, result.goods_brief, result.goods_id, result.goods_price, result.goods_number);
  163. break;
  164. }
  165. }
  166. }
  167. /* *
  168. * 添加商品到收藏夹
  169. */
  170. function collect(goodsId)
  171. {
  172. Ajax.call('user.php?act=collect', 'id=' + goodsId, collectResponse, 'GET', 'JSON');
  173. }
  174. /* *
  175. * 处理收藏商品的反馈信息
  176. */
  177. function collectResponse(result)
  178. {
  179. alert(result.message);
  180. }
  181. /* *
  182. * 处理会员登录的反馈信息
  183. */
  184. function signInResponse(result)
  185. {
  186. toggleLoader(false);
  187. var done = result.substr(0, 1);
  188. var content = result.substr(2);
  189. if (done == 1)
  190. {
  191. document.getElementById('member-zone').innerHTML = content;
  192. } else
  193. {
  194. alert(content);
  195. }
  196. }
  197. /* *
  198. * 评论的翻页函数
  199. */
  200. function gotoPage(page, id, type)
  201. {
  202. Ajax.call('comment.php?act=gotopage', 'page=' + page + '&id=' + id + '&type=' + type, gotoPageResponse, 'GET', 'JSON');
  203. }
  204. function gotoPageResponse(result)
  205. {
  206. document.getElementById("ECS_COMMENT").innerHTML = result.content;
  207. }
  208. /* *
  209. * 商品购买记录的翻页函数
  210. */
  211. function gotoBuyPage(page, id)
  212. {
  213. Ajax.call('goods.php?act=gotopage', 'page=' + page + '&id=' + id, gotoBuyPageResponse, 'GET', 'JSON');
  214. }
  215. function gotoBuyPageResponse(result)
  216. {
  217. document.getElementById("ECS_BOUGHT").innerHTML = result.result;
  218. }
  219. /* *
  220. * 取得格式化后的价格
  221. * @param : float price
  222. */
  223. function getFormatedPrice(price)
  224. {
  225. if (currencyFormat.indexOf("%s") > -1)
  226. {
  227. return currencyFormat.replace('%s', advFormatNumber(price, 2));
  228. } else if (currencyFormat.indexOf("%d") > -1)
  229. {
  230. return currencyFormat.replace('%d', advFormatNumber(price, 0));
  231. } else
  232. {
  233. return price;
  234. }
  235. }
  236. /* *
  237. * 夺宝奇兵会员出价
  238. */
  239. function bid(step)
  240. {
  241. var price = '';
  242. var msg = '';
  243. if (step != -1)
  244. {
  245. var frm = document.forms['formBid'];
  246. price = frm.elements['price'].value;
  247. id = frm.elements['snatch_id'].value;
  248. if (price.length == 0)
  249. {
  250. msg += price_not_null + '\n';
  251. } else
  252. {
  253. var reg = /^[\.0-9]+/;
  254. if (!reg.test(price))
  255. {
  256. msg += price_not_number + '\n';
  257. }
  258. }
  259. } else
  260. {
  261. price = step;
  262. }
  263. if (msg.length > 0)
  264. {
  265. alert(msg);
  266. return;
  267. }
  268. Ajax.call('snatch.php?act=bid&id=' + id, 'price=' + price, bidResponse, 'POST', 'JSON')
  269. }
  270. /* *
  271. * 夺宝奇兵会员出价反馈
  272. */
  273. function bidResponse(result)
  274. {
  275. if (result.error == 0)
  276. {
  277. document.getElementById('ECS_SNATCH').innerHTML = result.content;
  278. if (document.forms['formBid'])
  279. {
  280. document.forms['formBid'].elements['price'].focus();
  281. }
  282. newPrice(); //刷新价格列表
  283. } else
  284. {
  285. alert(result.content);
  286. }
  287. }
  288. /* *
  289. * 夺宝奇兵最新出价
  290. */
  291. function newPrice(id)
  292. {
  293. Ajax.call('snatch.php?act=new_price_list&id=' + id, '', newPriceResponse, 'GET', 'TEXT');
  294. }
  295. /* *
  296. * 夺宝奇兵最新出价反馈
  297. */
  298. function newPriceResponse(result)
  299. {
  300. document.getElementById('ECS_PRICE_LIST').innerHTML = result;
  301. }
  302. /* *
  303. * 返回属性列表
  304. */
  305. function getAttr(cat_id)
  306. {
  307. var tbodies = document.getElementsByTagName('tbody');
  308. for (i = 0; i < tbodies.length; i++)
  309. {
  310. if (tbodies[i].id.substr(0, 10) == 'goods_type') tbodies[i].style.display = 'none';
  311. }
  312. var type_body = 'goods_type_' + cat_id;
  313. try
  314. {
  315. document.getElementById(type_body).style.display = '';
  316. } catch (e)
  317. {
  318. }
  319. }
  320. /* *
  321. * 截取小数位数
  322. */
  323. function advFormatNumber(value, num) // 四舍五入
  324. {
  325. var a_str = formatNumber(value, num);
  326. var a_int = parseFloat(a_str);
  327. if (value.toString().length > a_str.length)
  328. {
  329. var b_str = value.toString().substring(a_str.length, a_str.length + 1);
  330. var b_int = parseFloat(b_str);
  331. if (b_int < 5)
  332. {
  333. return a_str;
  334. } else
  335. {
  336. var bonus_str, bonus_int;
  337. if (num == 0)
  338. {
  339. bonus_int = 1;
  340. } else
  341. {
  342. bonus_str = "0."
  343. for (var i = 1; i < num; i++)
  344. bonus_str += "0";
  345. bonus_str += "1";
  346. bonus_int = parseFloat(bonus_str);
  347. }
  348. a_str = formatNumber(a_int + bonus_int, num)
  349. }
  350. }
  351. return a_str;
  352. }
  353. function formatNumber(value, num) // 直接去尾
  354. {
  355. var a, b, c, i;
  356. a = value.toString();
  357. b = a.indexOf('.');
  358. c = a.length;
  359. if (num == 0)
  360. {
  361. if (b != -1)
  362. {
  363. a = a.substring(0, b);
  364. }
  365. } else
  366. {
  367. if (b == -1)
  368. {
  369. a = a + ".";
  370. for (i = 1; i <= num; i++)
  371. {
  372. a = a + "0";
  373. }
  374. } else
  375. {
  376. a = a.substring(0, b + num + 1);
  377. for (i = c; i <= b + num; i++)
  378. {
  379. a = a + "0";
  380. }
  381. }
  382. }
  383. return a;
  384. }
  385. /* *
  386. * 根据当前shiping_id设置当前配送的的保价费用,如果保价费用为0,则隐藏保价费用
  387. *
  388. * return void
  389. */
  390. function set_insure_status()
  391. {
  392. // 取得保价费用,取不到默认为0
  393. var shippingId = getRadioValue('shipping');
  394. var insure_fee = 0;
  395. if (shippingId > 0)
  396. {
  397. if (document.forms['theForm'].elements['insure_' + shippingId])
  398. {
  399. insure_fee = document.forms['theForm'].elements['insure_' + shippingId].value;
  400. }
  401. // 每次取消保价选择
  402. if (document.forms['theForm'].elements['need_insure'])
  403. {
  404. document.forms['theForm'].elements['need_insure'].checked = false;
  405. }
  406. // 设置配送保价,为0隐藏
  407. if (document.getElementById("ecs_insure_cell"))
  408. {
  409. if (insure_fee > 0)
  410. {
  411. document.getElementById("ecs_insure_cell").style.display = '';
  412. setValue(document.getElementById("ecs_insure_fee_cell"), getFormatedPrice(insure_fee));
  413. } else
  414. {
  415. document.getElementById("ecs_insure_cell").style.display = "none";
  416. setValue(document.getElementById("ecs_insure_fee_cell"), '');
  417. }
  418. }
  419. }
  420. }
  421. /* *
  422. * 当支付方式改变时出发该事件
  423. * @param pay_id 支付方式的id
  424. * return void
  425. */
  426. function changePayment(pay_id)
  427. {
  428. // 计算订单费用
  429. calculateOrderFee();
  430. }
  431. function getCoordinate(obj)
  432. {
  433. var pos =
  434. {
  435. "x": 0,
  436. "y": 0
  437. }
  438. pos.x = document.body.offsetLeft;
  439. pos.y = document.body.offsetTop;
  440. do
  441. {
  442. pos.x += obj.offsetLeft;
  443. pos.y += obj.offsetTop;
  444. obj = obj.offsetParent;
  445. }
  446. while (obj.tagName.toUpperCase() != 'BODY')
  447. return pos;
  448. }
  449. function showCatalog(obj)
  450. {
  451. var pos = getCoordinate(obj);
  452. var div = document.getElementById('ECS_CATALOG');
  453. if (div && div.style.display != 'block')
  454. {
  455. div.style.display = 'block';
  456. div.style.left = pos.x + "px";
  457. div.style.top = (pos.y + obj.offsetHeight - 1) + "px";
  458. }
  459. }
  460. function hideCatalog(obj)
  461. {
  462. var div = document.getElementById('ECS_CATALOG');
  463. if (div && div.style.display != 'none') div.style.display = "none";
  464. }
  465. function sendHashMail()
  466. {
  467. Ajax.call('user.php?act=send_hash_mail', '', sendHashMailResponse, 'GET', 'JSON')
  468. }
  469. function sendHashMailResponse(result)
  470. {
  471. alert(result.message);
  472. }
  473. /* 订单查询 */
  474. function orderQuery()
  475. {
  476. var order_sn = document.forms['ecsOrderQuery']['order_sn'].value;
  477. var reg = /^[\.0-9]+/;
  478. if (order_sn.length < 10 || !reg.test(order_sn))
  479. {
  480. alert(invalid_order_sn);
  481. return;
  482. }
  483. Ajax.call('user.php?act=order_query&order_sn=s' + order_sn, '', orderQueryResponse, 'GET', 'JSON');
  484. }
  485. function orderQueryResponse(result)
  486. {
  487. if (result.message.length > 0)
  488. {
  489. alert(result.message);
  490. }
  491. if (result.error == 0)
  492. {
  493. var div = document.getElementById('ECS_ORDER_QUERY');
  494. div.innerHTML = result.content;
  495. }
  496. }
  497. function display_mode(str)
  498. {
  499. document.getElementById('display').value = str;
  500. setTimeout(doSubmit, 0);
  501. function doSubmit() {
  502. document.forms['listform'].submit();
  503. }
  504. }
  505. function display_mode_wholesale(str)
  506. {
  507. document.getElementById('display').value = str;
  508. setTimeout(doSubmit, 0);
  509. function doSubmit()
  510. {
  511. document.forms['wholesale_goods'].action = "wholesale.php";
  512. document.forms['wholesale_goods'].submit();
  513. }
  514. }
  515. /* 修复IE6以下版本PNG图片Alpha */
  516. function fixpng()
  517. {
  518. var arVersion = navigator.appVersion.split("MSIE")
  519. var version = parseFloat(arVersion[1])
  520. if ((version >= 5.5) && (document.body.filters))
  521. {
  522. for (var i = 0; i < document.images.length; i++)
  523. {
  524. var img = document.images[i]
  525. var imgName = img.src.toUpperCase()
  526. if (imgName.substring(imgName.length - 3, imgName.length) == "PNG")
  527. {
  528. var imgID = (img.id) ? "id='" + img.id + "' " : ""
  529. var imgClass = (img.className) ? "class='" + img.className + "' " : ""
  530. var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
  531. var imgStyle = "display:inline-block;" + img.style.cssText
  532. if (img.align == "left") imgStyle = "float:left;" + imgStyle
  533. if (img.align == "right") imgStyle = "float:right;" + imgStyle
  534. if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
  535. var strNewHTML = "<span " + imgID + imgClass + imgTitle
  536. +" style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
  537. +"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
  538. + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
  539. img.outerHTML = strNewHTML
  540. i = i - 1
  541. }
  542. }
  543. }
  544. }
  545. function hash(string, length)
  546. {
  547. var length = length ? length : 32;
  548. var start = 0;
  549. var i = 0;
  550. var result = '';
  551. filllen = length - string.length % length;
  552. for (i = 0; i < filllen; i++)
  553. {
  554. string += "0";
  555. }
  556. while (start < string.length)
  557. {
  558. result = stringxor(result, string.substr(start, length));
  559. start += length;
  560. }
  561. return result;
  562. }
  563. function stringxor(s1, s2)
  564. {
  565. var s = '';
  566. var hash = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  567. var max = Math.max(s1.length, s2.length);
  568. for (var i = 0; i < max; i++)
  569. {
  570. var k = s1.charCodeAt(i) ^ s2.charCodeAt(i);
  571. s += hash.charAt(k % 52);
  572. }
  573. return s;
  574. }
  575. var evalscripts = new Array();
  576. function evalscript(s)
  577. {
  578. if (s.indexOf('<script') == -1) return s;
  579. var p = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/ig;
  580. var arr = new Array();
  581. while (arr = p.exec(s)) appendscript(arr[1], '', arr[2], arr[3]);
  582. return s;
  583. }
  584. function $$(id)
  585. {
  586. return document.getElementById(id);
  587. }
  588. function appendscript(src, text, reload, charset)
  589. {
  590. var id = hash(src + text);
  591. if (!reload && in_array(id, evalscripts)) return;
  592. if (reload && $$(id))
  593. {
  594. $$(id).parentNode.removeChild($$(id));
  595. }
  596. evalscripts.push(id);
  597. var scriptNode = document.createElement("script");
  598. scriptNode.type = "text/javascript";
  599. scriptNode.id = id;
  600. //scriptNode.charset = charset;
  601. try
  602. {
  603. if (src)
  604. {
  605. scriptNode.src = src;
  606. } else if (text)
  607. {
  608. scriptNode.text = text;
  609. }
  610. $$('append_parent').appendChild(scriptNode);
  611. } catch (e)
  612. {}
  613. }
  614. function in_array(needle, haystack)
  615. {
  616. if (typeof needle == 'string' || typeof needle == 'number')
  617. {
  618. for (var i in haystack)
  619. {
  620. if (haystack[i] == needle)
  621. {
  622. return true;
  623. }
  624. }
  625. }
  626. return false;
  627. }
  628. var pmwinposition = new Array();
  629. var userAgent = navigator.userAgent.toLowerCase();
  630. var is_opera = userAgent.indexOf('opera') != -1 && opera.version();
  631. var is_moz = (navigator.product == 'Gecko') && userAgent.substr(userAgent.indexOf('firefox') + 8, 3);
  632. var is_ie = (userAgent.indexOf('msie') != -1 && !is_opera) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);
  633. function pmwin(action, param)
  634. {
  635. var objs = document.getElementsByTagName("OBJECT");
  636. if (action == 'open')
  637. {
  638. for (i = 0; i < objs.length; i++)
  639. {
  640. if (objs[i].style.visibility != 'hidden')
  641. {
  642. objs[i].setAttribute("oldvisibility", objs[i].style.visibility);
  643. objs[i].style.visibility = 'hidden';
  644. }
  645. }
  646. var clientWidth = document.body.clientWidth;
  647. var clientHeight = document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
  648. var scrollTop = document.body.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop;
  649. var pmwidth = 800;
  650. var pmheight = clientHeight * 0.9;
  651. if (!$$('pmlayer'))
  652. {
  653. div = document.createElement('div');
  654. div.id = 'pmlayer';
  655. div.style.width = pmwidth + 'px';
  656. div.style.height = pmheight + 'px';
  657. div.style.left = ((clientWidth - pmwidth) / 2) + 'px';
  658. div.style.position = 'absolute';
  659. div.style.zIndex = '999';
  660. $$('append_parent').appendChild(div);
  661. $$('pmlayer').innerHTML = '<div style="width: 800px; background: #666666; margin: 5px auto; text-align: left">' +
  662. '<div style="width: 800px; height: ' + pmheight + 'px; padding: 1px; background: #FFFFFF; border: 1px solid #7597B8; position: relative; left: -6px; top: -3px">' +
  663. '<div onmousedown="pmwindrag(event, 1)" onmousemove="pmwindrag(event, 2)" onmouseup="pmwindrag(event, 3)" style="cursor: move; position: relative; left: 0px; top: 0px; width: 800px; height: 30px; margin-bottom: -30px;"></div>' +
  664. '<a href="###" onclick="pmwin(\'close\')"><img style="position: absolute; right: 20px; top: 15px" src="images/close.gif" title="关闭" /></a>' +
  665. '<iframe id="pmframe" name="pmframe" style="width:' + pmwidth + 'px;height:100%" allowTransparency="true" frameborder="0"></iframe></div></div>';
  666. }
  667. $$('pmlayer').style.display = '';
  668. $$('pmlayer').style.top = ((clientHeight - pmheight) / 2 + scrollTop) + 'px';
  669. if (!param)
  670. {
  671. pmframe.location = 'pm.php';
  672. } else
  673. {
  674. pmframe.location = 'pm.php?' + param;
  675. }
  676. } else if (action == 'close')
  677. {
  678. for (i = 0; i < objs.length; i++)
  679. {
  680. if (objs[i].attributes['oldvisibility'])
  681. {
  682. objs[i].style.visibility = objs[i].attributes['oldvisibility'].nodeValue;
  683. objs[i].removeAttribute('oldvisibility');
  684. }
  685. }
  686. hiddenobj = new Array();
  687. $$('pmlayer').style.display = 'none';
  688. }
  689. }
  690. var pmwindragstart = new Array();
  691. function pmwindrag(e, op)
  692. {
  693. if (op == 1)
  694. {
  695. pmwindragstart = is_ie ? [event.clientX, event.clientY] : [e.clientX, e.clientY];
  696. pmwindragstart[2] = parseInt($$('pmlayer').style.left);
  697. pmwindragstart[3] = parseInt($$('pmlayer').style.top);
  698. doane(e);
  699. } else if (op == 2 && pmwindragstart[0])
  700. {
  701. var pmwindragnow = is_ie ? [event.clientX, event.clientY] : [e.clientX, e.clientY];
  702. $$('pmlayer').style.left = (pmwindragstart[2] + pmwindragnow[0] - pmwindragstart[0]) + 'px';
  703. $$('pmlayer').style.top = (pmwindragstart[3] + pmwindragnow[1] - pmwindragstart[1]) + 'px';
  704. doane(e);
  705. } else if (op == 3)
  706. {
  707. pmwindragstart = [];
  708. doane(e);
  709. }
  710. }
  711. function doane(event)
  712. {
  713. e = event ? event : window.event;
  714. if (is_ie)
  715. {
  716. e.returnValue = false;
  717. e.cancelBubble = true;
  718. } else if (e)
  719. {
  720. e.stopPropagation();
  721. e.preventDefault();
  722. }
  723. }
  724. /* *
  725. * 添加礼包到购物车
  726. */
  727. function addPackageToCart(packageId) {
  728. var package_info = new Object();
  729. var number = 1;
  730. package_info.package_id = packageId
  731. package_info.number = number;
  732. Ajax.call('flow.php?step=add_package_to_cart', 'package_info=' + $.toJSON(package_info), addPackageToCartResponse, 'POST', 'JSON');
  733. }
  734. /* *
  735. * 处理添加礼包到购物车的反馈信息
  736. */
  737. function addPackageToCartResponse(result)
  738. {
  739. if (result.error > 0)
  740. {
  741. if (result.error == 2)
  742. {
  743. if (confirm(result.message))
  744. {
  745. location.href = 'user.php?act=add_booking&id=' + result.goods_id;
  746. }
  747. } else
  748. {
  749. alert(result.message);
  750. }
  751. } else
  752. {
  753. var cartInfo = document.getElementById('ECS_CARTINFO');
  754. var cart_url = 'flow.php?step=cart';
  755. if (cartInfo)
  756. {
  757. cartInfo.innerHTML = result.content;
  758. }
  759. if (result.one_step_buy == '1')
  760. {
  761. location.href = cart_url;
  762. } else
  763. {
  764. switch (result.confirm_type)
  765. {
  766. case '1':
  767. if (confirm(result.message)) location.href = cart_url;
  768. break;
  769. case '2':
  770. if (!confirm(result.message)) location.href = cart_url;
  771. break;
  772. case '3':
  773. location.href = cart_url;
  774. break;
  775. default:
  776. break;
  777. }
  778. }
  779. }
  780. }
  781. function setSuitShow(suitId)
  782. {
  783. var suit = $('#suit_' + suitId);
  784. if (suit == null) {
  785. return;
  786. }
  787. suit.animate({
  788. height: '80%'
  789. }, [10000]);
  790. var total = 0,
  791. h = $(window).height(),
  792. top = $('#suit_' + suitId).find('.f_title').height() || 0,
  793. con = $('#suit_' + suitId).find('.f_content');
  794. total = 0.8 * h;
  795. con.height(total - top + 'px');
  796. $('.f_mask').show();
  797. }
  798. function close_gift(suitId) {
  799. $('.f_mask').hide();
  800. var suit = $('#suit_' + suitId);
  801. suit.animate({
  802. height: '0'
  803. }, [10000]);
  804. }
  805. /* 以下四个函数为属性选择弹出框的功能函数部分 */
  806. //检测层是否已经存在
  807. function docEle()
  808. {
  809. return document.getElementById(arguments[0]) || false;
  810. }
  811. //生成属性选择层
  812. function openSpeDiv(message, goods_id, parent)
  813. {
  814. var _id = "speDiv";
  815. var m = "mask";
  816. if (docEle(_id)) document.removeChild(docEle(_id));
  817. if (docEle(m)) document.removeChild(docEle(m));
  818. //计算上卷元素值
  819. var scrollPos;
  820. if (typeof window.pageYOffset != 'undefined')
  821. {
  822. scrollPos = window.pageYOffset;
  823. } else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat')
  824. {
  825. scrollPos = document.documentElement.scrollTop;
  826. } else if (typeof document.body != 'undefined')
  827. {
  828. scrollPos = document.body.scrollTop;
  829. }
  830. var i = 0;
  831. var sel_obj = document.getElementsByTagName('select');
  832. while (sel_obj[i])
  833. {
  834. sel_obj[i].style.visibility = "hidden";
  835. i++;
  836. }
  837. // 新激活图层
  838. var newDiv = document.createElement("div");
  839. newDiv.id = _id;
  840. newDiv.style.position = "absolute";
  841. newDiv.style.zIndex = "10000";
  842. newDiv.style.width = "88%";
  843. newDiv.style.height = "auto";
  844. newDiv.style.margin = "0 6%";
  845. newDiv.style.top = (parseInt(scrollPos + 200)) + "px";
  846. newDiv.style.left = "0px"; // 屏幕居中
  847. newDiv.style.overflow = "auto";
  848. newDiv.style.background = "#FFF";
  849. newDiv.className = "shopdiv";
  850. //生成层内内容
  851. newDiv.innerHTML = '<div class="cartitle">' + select_spe + "</div>";
  852. for (var spec = 0; spec < message.length; spec++)
  853. {
  854. newDiv.innerHTML += '<div style="text-align:left; background:#ffffff; margin-left:15px;font-weight:600;margin-top: 10px;font-size: 16px; clear:both">' + message[spec]['name'] + '</div>';
  855. if (message[spec]['attr_type'] == 1)
  856. {
  857. for (var val_arr = 0; val_arr < message[spec]['values'].length; val_arr++)
  858. {
  859. if (val_arr == 0)
  860. {
  861. newDiv.innerHTML += "<div style='line-height:40px; font-size: 14px; float:left; '><input style='margin-left:15px;' type='radio' name='spec_" + message[spec]['attr_id'] + "' value='" + message[spec]['values'][val_arr]['id'] + "' id='spec_value_" + message[spec]['values'][val_arr]['id'] + "' checked /> <font color=#555555>" + message[spec]['values'][val_arr]['label'] + '</font> [' + message[spec]['values'][val_arr]['format_price'] + ']</font><br /></div>';
  862. } else
  863. {
  864. newDiv.innerHTML += "<div style='line-height:40px;font-size: 14px; float:left; '><input style='margin-left:15px;' type='radio' name='spec_" + message[spec]['attr_id'] + "' value='" + message[spec]['values'][val_arr]['id'] + "' id='spec_value_" + message[spec]['values'][val_arr]['id'] + "' /> <font color=#555555>" + message[spec]['values'][val_arr]['label'] + '</font> [' + message[spec]['values'][val_arr]['format_price'] + ']</font><br /></div>';
  865. }
  866. }
  867. newDiv.innerHTML += "<input type='hidden' name='spec_list' value='" + val_arr + "' />";
  868. } else
  869. {
  870. for (var val_arr = 0; val_arr < message[spec]['values'].length; val_arr++)
  871. {
  872. newDiv.innerHTML += "<div style='line-height:40px;font-size: 14px;'><input style='margin-left:15px;' type='checkbox' name='spec_" + message[spec]['attr_id'] + "' value='" + message[spec]['values'][val_arr]['id'] + "' id='spec_value_" + message[spec]['values'][val_arr]['id'] + "' /><font color=#555555>" + message[spec]['values'][val_arr]['label'] + ' [' + message[spec]['values'][val_arr]['format_price'] + ']</font><br /></div>';
  873. }
  874. newDiv.innerHTML += "<input type='hidden' name='spec_list' value='" + val_arr + "' />";
  875. }
  876. }
  877. newDiv.innerHTML += "<div class=cartbntfloat clearfix ><a href='javascript:submit_div(" + goods_id + "," + parent + ")' class='redBtn' >" + btn_buy + "</a><a href='javascript:cancel_div()' class='greyBtn' >" + is_cancel + "</a></div>";
  878. document.body.appendChild(newDiv);
  879. // mask图层
  880. var newMask = document.createElement("div");
  881. newMask.id = m;
  882. newMask.style.position = "absolute";
  883. newMask.style.zIndex = "9999";
  884. newMask.style.width = document.body.scrollWidth + "px";
  885. newMask.style.height = document.body.scrollHeight + "px";
  886. newMask.style.top = "0px";
  887. newMask.style.left = "0px";
  888. newMask.style.background = "#FFF";
  889. newMask.style.filter = "alpha(opacity=30)";
  890. newMask.style.opacity = "0.40";
  891. document.body.appendChild(newMask);
  892. }
  893. //获取选择属性后,再次提交到购物车
  894. function submit_div(goods_id, parentId)
  895. {
  896. var goods = new Object();
  897. var spec_arr = new Array();
  898. var fittings_arr = new Array();
  899. var number = 1;
  900. var input_arr = document.getElementsByTagName('input');
  901. var quick = 1;
  902. var fid = "number_" + goods_id;
  903. if (document.getElementById(fid)) {
  904. number = document.getElementById(fid).value;
  905. }
  906. var spec_arr = new Array();
  907. var j = 0;
  908. for (i = 0; i < input_arr.length; i++)
  909. {
  910. var prefix = input_arr[i].name.substr(0, 5);
  911. if (prefix == 'spec_' && (
  912. ((input_arr[i].type == 'radio' || input_arr[i].type == 'checkbox') && input_arr[i].checked)))
  913. {
  914. spec_arr[j] = input_arr[i].value;
  915. j++;
  916. }
  917. }
  918. goods.quick = quick;
  919. goods.spec = spec_arr;
  920. goods.goods_id = goods_id;
  921. goods.number = number;
  922. goods.parent = (typeof(parentId) == "undefined") ? 0 : parseInt(parentId);
  923. Ajax.call('flow.php?step=add_to_cart', 'goods=' + $.toJSON(goods), addToCartResponse, 'POST', 'JSON');
  924. document.body.removeChild(docEle('speDiv'));
  925. document.body.removeChild(docEle('mask'));
  926. var i = 0;
  927. var sel_obj = document.getElementsByTagName('select');
  928. while (sel_obj[i])
  929. {
  930. sel_obj[i].style.visibility = "";
  931. i++;
  932. }
  933. }
  934. // 关闭mask和新图层
  935. function cancel_div()
  936. {
  937. document.body.removeChild(docEle('speDiv'));
  938. document.body.removeChild(docEle('mask'));
  939. var i = 0;
  940. var sel_obj = document.getElementsByTagName('select');
  941. while (sel_obj[i])
  942. {
  943. sel_obj[i].style.visibility = "";
  944. i++;
  945. }
  946. }
  947. function opencartDiv(price, name, pic, goods_brief, goods_id, total, number)
  948. {
  949. var _id = "speDiv";
  950. var m = "mask";
  951. if (docEle(_id)) document.removeChild(docEle(_id));
  952. if (docEle(m)) document.removeChild(docEle(m));
  953. //计算上卷元素值
  954. var scrollPos;
  955. if (typeof window.pageYOffset != 'undefined')
  956. {
  957. scrollPos = window.pageYOffset;
  958. } else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat')
  959. {
  960. scrollPos = document.documentElement.scrollTop;
  961. } else if (typeof document.body != 'undefined')
  962. {
  963. scrollPos = document.body.scrollTop;
  964. }
  965. var i = 0;
  966. var sel_obj = document.getElementsByTagName('select');
  967. while (sel_obj[i])
  968. {
  969. sel_obj[i].style.visibility = "hidden";
  970. i++;
  971. }
  972. // 新激活图层
  973. var newDiv = document.createElement("div");
  974. newDiv.id = _id;
  975. var html = '';
  976. //生成层内内容
  977. html = '<div class="touchweb_com-indexPop pop_add-cart show" ><div class="inner"><div class="content_name"><p>添加成功!<br>商品已成功加入购物车</p></div><div id="mcart_confirm_popup_btns" class="btn_box"><a href="javascript:cancel_div()" class="btn btn_cancel">再逛逛</a><a href="flow.php" class="btn btn_confirm">去购物车</a></div></div></div>';
  978. newDiv.innerHTML = html;
  979. document.body.appendChild(newDiv);
  980. // mask图层
  981. var newMask = document.createElement("div");
  982. newMask.id = m;
  983. document.body.appendChild(newMask);
  984. }
  985. function opencartDivflow(price, name, pic, goods_brief, goods_id, total, number)
  986. {
  987. var _id = "speDiv";
  988. var m = "mask";
  989. if (docEle(_id)) document.removeChild(docEle(_id));
  990. if (docEle(m)) document.removeChild(docEle(m));
  991. //计算上卷元素值
  992. var scrollPos;
  993. if (typeof window.pageYOffset != 'undefined')
  994. {
  995. scrollPos = window.pageYOffset;
  996. } else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat')
  997. {
  998. scrollPos = document.documentElement.scrollTop;
  999. } else if (typeof document.body != 'undefined')
  1000. {
  1001. scrollPos = document.body.scrollTop;
  1002. }
  1003. var i = 0;
  1004. var sel_obj = document.getElementsByTagName('select');
  1005. while (sel_obj[i])
  1006. {
  1007. sel_obj[i].style.visibility = "hidden";
  1008. i++;
  1009. }
  1010. // 新激活图层
  1011. var newDiv = document.createElement("div");
  1012. newDiv.id = _id;
  1013. var html = '';
  1014. //生成层内内容
  1015. html = '<div class="touchweb_com-indexPop pop_add-cart show" ><div class="inner"><div class="content_name"><p>添加成功!<br>商品已成功加入购物车</p></div><div id="mcart_confirm_popup_btns" class="btn_box"><a href="flow.php" class="btn btn_cancel">再逛逛</a><a href="flow.php" class="btn btn_confirm">去购物车</a></div></div></div>';
  1016. newDiv.innerHTML = html;
  1017. document.body.appendChild(newDiv);
  1018. // mask图层
  1019. var newMask = document.createElement("div");
  1020. newMask.id = m;
  1021. document.body.appendChild(newMask);
  1022. }