common.js 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784
  1. function drop_confirm(msg, url){
  2. if(confirm(msg)){
  3. window.location = url;
  4. }
  5. }
  6. function go(url){
  7. window.location = url;
  8. }
  9. /* 格式化金额 */
  10. function price_format(price){
  11. if(typeof(PRICE_FORMAT) == 'undefined'){
  12. PRICE_FORMAT = '¥%s';
  13. }
  14. price = number_format(price, 2);
  15. return PRICE_FORMAT.replace('%s', price);
  16. }
  17. function number_format(num, ext){
  18. if(ext < 0){
  19. return num;
  20. }
  21. num = Number(num);
  22. if(isNaN(num)){
  23. num = 0;
  24. }
  25. var _str = num.toString();
  26. var _arr = _str.split('.');
  27. var _int = _arr[0];
  28. var _flt = _arr[1];
  29. if(_str.indexOf('.') == -1){
  30. /* 找不到小数点,则添加 */
  31. if(ext == 0){
  32. return _str;
  33. }
  34. var _tmp = '';
  35. for(var i = 0; i < ext; i++){
  36. _tmp += '0';
  37. }
  38. _str = _str + '.' + _tmp;
  39. }else{
  40. if(_flt.length == ext){
  41. return _str;
  42. }
  43. /* 找得到小数点,则截取 */
  44. if(_flt.length > ext){
  45. _str = _str.substr(0, _str.length - (_flt.length - ext));
  46. if(ext == 0){
  47. _str = _int;
  48. }
  49. }else{
  50. for(var i = 0; i < ext - _flt.length; i++){
  51. _str += '0';
  52. }
  53. }
  54. }
  55. return _str;
  56. }
  57. /* 火狐下取本地全路径 */
  58. function getFullPath(obj)
  59. {
  60. if(obj)
  61. {
  62. //ie
  63. if (window.navigator.userAgent.indexOf("MSIE")>=1)
  64. {
  65. obj.select();
  66. if(window.navigator.userAgent.indexOf("MSIE") == 25){
  67. obj.blur();
  68. }
  69. return document.selection.createRange().text;
  70. }
  71. //firefox
  72. else if(window.navigator.userAgent.indexOf("Firefox")>=1)
  73. {
  74. if(obj.files)
  75. {
  76. //return obj.files.item(0).getAsDataURL();
  77. return window.URL.createObjectURL(obj.files.item(0));
  78. }
  79. return obj.value;
  80. }
  81. return obj.value;
  82. }
  83. }
  84. /* 转化JS跳转中的 & */
  85. function transform_char(str)
  86. {
  87. if(str.indexOf('&'))
  88. {
  89. str = str.replace(/&/g, "%26");
  90. }
  91. return str;
  92. }
  93. //图片垂直水平缩放裁切显示
  94. (function($){
  95. $.fn.VMiddleImg = function(options) {
  96. var defaults={
  97. "width":null,
  98. "height":null
  99. };
  100. var opts = $.extend({},defaults,options);
  101. return $(this).each(function() {
  102. var $this = $(this);
  103. var objHeight = $this.height(); //图片高度
  104. var objWidth = $this.width(); //图片宽度
  105. var parentHeight = opts.height||$this.parent().height(); //图片父容器高度
  106. var parentWidth = opts.width||$this.parent().width(); //图片父容器宽度
  107. var ratio = objHeight / objWidth;
  108. if (objHeight > parentHeight && objWidth > parentWidth) {
  109. if (objHeight > objWidth) { //赋值宽高
  110. $this.width(parentWidth);
  111. $this.height(parentWidth * ratio);
  112. } else {
  113. $this.height(parentHeight);
  114. $this.width(parentHeight / ratio);
  115. }
  116. objHeight = $this.height(); //重新获取宽高
  117. objWidth = $this.width();
  118. if (objHeight > objWidth) {
  119. $this.css("top", (parentHeight - objHeight) / 2);
  120. //定义top属性
  121. } else {
  122. //定义left属性
  123. $this.css("left", (parentWidth - objWidth) / 2);
  124. }
  125. }
  126. else {
  127. if (objWidth > parentWidth) {
  128. $this.css("left", (parentWidth - objWidth) / 2);
  129. }
  130. $this.css("top", (parentHeight - objHeight) / 2);
  131. }
  132. });
  133. };
  134. })(jQuery);
  135. function DrawImage(ImgD,FitWidth,FitHeight){
  136. var image=new Image();
  137. image.src=ImgD.src;
  138. if(image.width>0 && image.height>0)
  139. {
  140. if(image.width/image.height>= FitWidth/FitHeight)
  141. {
  142. if(image.width>FitWidth)
  143. {
  144. ImgD.width=FitWidth;
  145. ImgD.height=(image.height*FitWidth)/image.width;
  146. }
  147. else
  148. {
  149. ImgD.width=image.width;
  150. ImgD.height=image.height;
  151. }
  152. }
  153. else
  154. {
  155. if(image.height>FitHeight)
  156. {
  157. ImgD.height=FitHeight;
  158. ImgD.width=(image.width*FitHeight)/image.height;
  159. }
  160. else
  161. {
  162. ImgD.width=image.width;
  163. ImgD.height=image.height;
  164. }
  165. }
  166. }
  167. }
  168. /**
  169. * 浮动DIV定时显示提示信息,如操作成功, 失败等
  170. * @param string tips (提示的内容)
  171. * @param int height 显示的信息距离浏览器顶部的高度
  172. * @param int time 显示的时间(按秒算), time > 0
  173. * @sample <a href="javascript:void(0);" onclick="showTips( '操作成功', 100, 3 );">点击</a>
  174. * @sample 上面代码表示点击后显示操作成功3秒钟, 距离顶部100px
  175. * @copyright ZhouHr 2010-08-27
  176. */
  177. function showTips( tips, height, time ){
  178. var windowWidth = document.documentElement.clientWidth;
  179. var tipsDiv = '<div class="tipsClass">' + tips + '</div>';
  180. $( 'body' ).append( tipsDiv );
  181. $( 'div.tipsClass' ).css({
  182. 'top' : 200 + 'px',
  183. 'left' : ( windowWidth / 2 ) - ( tips.length * 13 / 2 ) + 'px',
  184. 'position' : 'fixed',
  185. 'padding' : '20px 50px',
  186. 'background': '#EAF2FB',
  187. 'font-size' : 14 + 'px',
  188. 'margin' : '0 auto',
  189. 'text-align': 'center',
  190. 'width' : 'auto',
  191. 'color' : '#333',
  192. 'border' : 'solid 1px #A8CAED',
  193. 'opacity' : '0.90',
  194. 'z-index' : '9999'
  195. }).show();
  196. setTimeout( function(){$( 'div.tipsClass' ).fadeOut().remove();}, ( time * 1000 ) );
  197. }
  198. function trim(str) {
  199. return (str + '').replace(/(\s+)$/g, '').replace(/^\s+/g, '');
  200. }
  201. //弹出框登录
  202. function login_dialog(){
  203. CUR_DIALOG = ajax_form('login','登录',SITEURL+'/index.php?act=login&inajax=1',360,1);
  204. }
  205. /* 显示Ajax表单 */
  206. function ajax_form(id, title, url, width, model)
  207. {
  208. if (!width) width = 480;
  209. if (!model) model = 1;
  210. var d = DialogManager.create(id);
  211. d.setTitle(title);
  212. d.setContents('ajax', url);
  213. d.setWidth(width);
  214. d.show('center',model);
  215. return d;
  216. }
  217. //显示一个内容为自定义HTML内容的消息
  218. function html_form(id, title, _html, width, model) {
  219. if (!width) width = 480;
  220. if (!model) model = 0;
  221. var d = DialogManager.create(id);
  222. d.setTitle(title);
  223. d.setContents(_html);
  224. d.setWidth(width);
  225. d.show('center',model);
  226. return d;
  227. }
  228. //收藏店铺js
  229. function collect_store(fav_id,jstype,jsobj){
  230. $.get('index.php?act=index&op=login', function(result){
  231. if(result=='0'){
  232. login_dialog();
  233. }else{
  234. var url = 'index.php?act=member_favorites&op=favoritesstore';
  235. $.getJSON(url, {'fid':fav_id}, function(data){
  236. if (data.done){
  237. showDialog(data.msg, 'succ','','','','','','','','',2);
  238. if(jstype == 'count'){
  239. $('[nctype="'+jsobj+'"]').each(function(){
  240. $(this).html(parseInt($(this).text())+1);
  241. });
  242. }
  243. if(jstype == 'succ'){
  244. $('[nctype="'+jsobj+'"]').each(function(){
  245. $(this).html("收藏成功");
  246. });
  247. }
  248. if(jstype == 'store'){
  249. $('[nc_store="'+fav_id+'"]').each(function(){
  250. $(this).before('<span class="goods-favorite" title="该店铺已收藏"><i class="have">&nbsp;</i></span>');
  251. $(this).remove();
  252. });
  253. }
  254. }
  255. else
  256. {
  257. showDialog(data.msg, 'notice');
  258. }
  259. });
  260. }
  261. });
  262. }
  263. //收藏商品js
  264. function collect_goods(fav_id,jstype,jsobj){
  265. $.get('index.php?act=index&op=login', function(result){
  266. if(result=='0'){
  267. login_dialog();
  268. }else{
  269. var url = 'index.php?act=member_favorites&op=favoritesgoods';
  270. $.getJSON(url, {'fid':fav_id}, function(data){
  271. if (data.done)
  272. {
  273. showDialog(data.msg, 'succ','','','','','','','','',2);
  274. if(jstype == 'count'){
  275. $('[nctype="'+jsobj+'"]').each(function(){
  276. $(this).html(parseInt($(this).text())+1);
  277. });
  278. }
  279. if(jstype == 'succ'){
  280. $('[nctype="'+jsobj+'"]').each(function(){
  281. $(this).html("收藏成功");
  282. });
  283. }
  284. }
  285. else
  286. {
  287. showDialog(data.msg, 'notice');
  288. }
  289. });
  290. }
  291. });
  292. }
  293. //加载购物车信息
  294. function load_cart_information(){
  295. $.getJSON(SITEURL+'/index.php?act=cart&op=ajax_load&callback=?', function(result){
  296. var obj = $('.head-user-menu .my-cart');
  297. if(result){
  298. var html = '';
  299. if(result.cart_goods_num >0){
  300. for (var i = 0; i < result['list'].length; i++){
  301. var goods = result['list'][i];
  302. html+='<dl id="cart_item_'+goods['goods_id']+'"><dt class="goods-name"><a href="'+goods['goods_url']+'">'+goods['goods_name']+'</a></dt>';
  303. html+='<dd class="goods-thumb"><a href="'+goods['goods_url']+'" title="'+goods['goods_name']+'"><img src="'+goods['goods_image']+'"></a></dd>';
  304. html+='<dd class="goods-sales"></dd>';
  305. html+='<dd class="goods-price"><em>&yen;'+goods['goods_price']+'×'+goods['goods_num']+'</dd>';
  306. html+='<dd class="handle"><a href="javascript:void(0);" onClick="drop_topcart_item('+goods['cart_id']+','+goods['goods_id']+');">删除</a></dd>';
  307. html+="</dl>";
  308. }
  309. obj.find('.incart-goods').html(html);
  310. obj.find('.incart-goods-box').perfectScrollbar('destroy');
  311. obj.find('.incart-goods-box').perfectScrollbar();
  312. html = "共<i>"+result.cart_goods_num+"</i>种商品&nbsp;&nbsp;总计金额:<em>&yen;"+result.cart_all_price+"</em>";
  313. obj.find('.total-price').html(html);
  314. if (obj.find('.addcart-goods-num').size()==0) {
  315. obj.append('<div class="addcart-goods-num">0</div>');
  316. }
  317. obj.find('.addcart-goods-num').html(result.cart_goods_num);
  318. $('#rtoobar_cart_count').html(result.cart_goods_num).show();
  319. } else {
  320. html="<div class='no-order'><span>您的购物车中暂无商品,赶快选择心爱的商品吧!</span></div>";
  321. obj.find('.incart-goods').html(html);
  322. obj.find('.total-price').html('');
  323. $('.addcart-goods-num').remove();
  324. $('#rtoobar_cart_count').html("").hide()
  325. }
  326. }
  327. });
  328. }
  329. //头部删除购物车信息,登录前使用goods_id,登录后使用cart_id
  330. function drop_topcart_item(cart_id,goods_id){
  331. $.getJSON(SITEURL+'/index.php?act=cart&op=del&cart_id='+cart_id+'&goods_id='+goods_id+'&callback=?', function(result){
  332. if(result.state){
  333. var obj = $('.head-user-menu .my-cart');
  334. //删除成功
  335. if(result.quantity == 0){
  336. html="<div class='no-order'><span>您的购物车中暂无商品,赶快选择心爱的商品吧!</span></div>";
  337. obj.find('.incart-goods').html(html);
  338. obj.find('.total-price').html('');
  339. obj.find('.addcart-goods-num').remove();
  340. $('.cart-list').html('<li><dl><dd style="text-align: center; ">暂无商品</dd></dl></li>');
  341. $('div[ncType="rtoolbar_total_price"]').html("");
  342. $('#rtoobar_cart_count').html("").hide()
  343. }else{
  344. $('#cart_item_' + goods_id).remove(); //移除
  345. html="共<i>"+result.quantity+"</i>种商品&nbsp;&nbsp;总计金额:<em>&yen;"+result.amount+"</em>";
  346. obj.find('.total-price').html(html);
  347. obj.find('.addcart-goods-num').html(result.quantity);
  348. obj.find('.incart-goods-box').perfectScrollbar('destroy');
  349. obj.find('.incart-goods-box').perfectScrollbar();
  350. $('div[ncType="rtoolbar_total_price"]').html("共计金额:<em class='goods-price'>&yen;" + result.amount + "</em>");
  351. $("#rtoobar_cart_count").html(result.quantity);
  352. if ($("#rtoolbar_cartlist > ul").children().size() != result.quantity) {
  353. $("#rtoolbar_cartlist").load("index.php?act=cart&op=ajax_load&type=html");
  354. return
  355. }
  356. }
  357. }else{
  358. alert(result.msg);
  359. }
  360. });
  361. }
  362. //加载最近浏览的商品
  363. function load_history_information(){
  364. $.getJSON(SITEURL+'/index.php?act=index&op=viewed_info', function(result){
  365. var obj = $('.head-user-menu .my-mall');
  366. if(result['m_id'] >0){
  367. if (typeof result['consult'] !== 'undefined') obj.find('#member_consult').html(result['consult']);
  368. if (typeof result['consult'] !== 'undefined') obj.find('#member_voucher').html(result['voucher']);
  369. }
  370. var goods_id = 0;
  371. var text_append = '';
  372. var n = 0;
  373. if (typeof result['viewed_goods'] !== 'undefined') {
  374. for (goods_id in result['viewed_goods']) {
  375. var goods = result['viewed_goods'][goods_id];
  376. text_append += '<li class="goods-thumb"><a href="'+goods['url']+'" title="'+goods['goods_name']+
  377. '" target="_blank"><img src="'+goods['goods_image']+'" alt="'+goods['goods_name']+'"></a>';
  378. text_append += '</li>';
  379. n++;
  380. if (n > 4) break;
  381. }
  382. }
  383. if (text_append == '') text_append = '<li class="no-goods">暂无商品</li>';;
  384. obj.find('.browse-history ul').html(text_append);
  385. });
  386. }
  387. /*
  388. * 登录窗口
  389. *
  390. * 事件绑定调用范例
  391. * $("#btn_login").nc_login({
  392. * nchash:'<?php echo getNchash();?>',
  393. * formhash:'<?php echo Security::getTokenValue();?>',
  394. * anchor:'cms_comment_flag'
  395. * });
  396. *
  397. * 直接调用范例
  398. * $.show_nc_login({
  399. * nchash:'<?php echo getNchash();?>',
  400. * formhash:'<?php echo Security::getTokenValue();?>',
  401. * anchor:'cms_comment_flag'
  402. * });
  403. */
  404. (function($) {
  405. $.show_nc_login = function(options) {
  406. var settings = $.extend({}, {action:'/index.php?act=login&op=login&inajax=1', nchash:'', formhash:'' ,anchor:''}, options);
  407. var login_dialog_html = $('<div class="quick-login"></div>');
  408. var ref_url = document.location.href;
  409. login_dialog_html.append('<form class="bg" method="post" id="ajax_login" action="'+APP_SITE_URL+settings.action+'"></form>').find('form')
  410. .append('<input type="hidden" value="ok" name="form_submit">')
  411. .append('<input type="hidden" value="'+settings.formhash+'" name="formhash">')
  412. .append('<input type="hidden" value="'+settings.nchash+'" name="nchash">')
  413. .append('<dl><dt>用户名</dt><dd><input type="text" name="user_name" autocomplete="off" class="text"></dd></dl>')
  414. .append('<dl><dt>密&nbsp;&nbsp;&nbsp;码</dt><dd><input type="password" autocomplete="off" name="password" class="text"></dd></dl>')
  415. .append('<dl><dt>验证码</dt><dd><input type="text" size="10" maxlength="4" class="text fl w60" name="captcha"><img border="0" onclick="this.src=\''+APP_SITE_URL+'/index.php?act=seccode&amp;op=makecode&amp;nchash='+settings.nchash+'&amp;t=\' + Math.random()" name="codeimage" title="看不清,换一张" src="'+APP_SITE_URL+'/index.php?act=seccode&amp;op=makecode&amp;nchash='+settings.nchash+'" class="fl ml10"><span>不区分大小写</span></dd></dl>')
  416. .append('<ul><li>›&nbsp;如果您没有登录帐号,请先<a class="register" href="'+SHOP_SITE_URL+'/index.php?act=login&amp;op=register">注册会员</a>然后登录</li><li>›&nbsp;如果您<a class="forget" href="'+SHOP_SITE_URL+'/index.php?act=login&amp;op=forget_password">忘记密码</a>?,申请找回密码</li></ul>')
  417. .append('<div class="enter"><input type="submit" name="Submit" value="&nbsp;" class="submit"></div><input type="hidden" name="ref_url" value="'+ref_url+'">');
  418. login_dialog_html.find('input[type="submit"]').click(function(){
  419. ajaxpost('ajax_login', '', '', 'onerror');
  420. });
  421. html_form("form_dialog_login", "登录", login_dialog_html, 360);
  422. };
  423. $.fn.nc_login = function(options) {
  424. return this.each(function() {
  425. $(this).on('click',function(){
  426. $.show_nc_login(options);
  427. return false;
  428. });
  429. });
  430. };
  431. })(jQuery);
  432. /*
  433. * 为低版本IE添加placeholder效果
  434. *
  435. * 使用范例:
  436. * [html]
  437. * <input id="captcha" name="captcha" type="text" placeholder="验证码" value="" >
  438. * [javascrpt]
  439. * $("#captcha").nc_placeholder();
  440. *
  441. * 生效后提交表单时,placeholder的内容会被提交到服务器,提交前需要把值清空
  442. * 范例:
  443. * $('[data-placeholder="placeholder"]').val("");
  444. * $("#form").submit();
  445. *
  446. */
  447. (function($) {
  448. $.fn.nc_placeholder = function() {
  449. var isPlaceholder = 'placeholder' in document.createElement('input');
  450. return this.each(function() {
  451. if(!isPlaceholder) {
  452. $el = $(this);
  453. $el.focus(function() {
  454. if($el.attr("placeholder") === $el.val()) {
  455. $el.val("");
  456. $el.attr("data-placeholder", "");
  457. }
  458. }).blur(function() {
  459. if($el.val() === "") {
  460. $el.val($el.attr("placeholder"));
  461. $el.attr("data-placeholder", "placeholder");
  462. }
  463. }).blur();
  464. }
  465. });
  466. };
  467. })(jQuery);
  468. /*
  469. * 弹出窗口
  470. */
  471. (function($) {
  472. $.fn.nc_show_dialog = function(options) {
  473. var that = $(this);
  474. var settings = $.extend({}, {width: 480, title: '', close_callback: function() {}}, options);
  475. var init_dialog = function(title) {
  476. var _div = that;
  477. that.addClass("dialog_wrapper");
  478. that.wrapInner(function(){
  479. return '<div class="dialog_content">';
  480. });
  481. that.wrapInner(function(){
  482. return '<div class="dialog_body" style="position: relative;">';
  483. });
  484. that.find('.dialog_body').prepend('<h3 class="dialog_head" style="cursor: move;"><span class="dialog_title"><span class="dialog_title_icon">'+settings.title+'</span></span><span class="dialog_close_button">X</span></h3>');
  485. that.append('<div style="clear:both;"></div>');
  486. $(".dialog_close_button").click(function(){
  487. settings.close_callback();
  488. _div.hide();
  489. });
  490. that.draggable({handle: ".dialog_head"});
  491. };
  492. if(!$(this).hasClass("dialog_wrapper")) {
  493. init_dialog(settings.title);
  494. }
  495. settings.left = $(window).scrollLeft() + ($(window).width() - settings.width) / 2;
  496. settings.top = 10;
  497. $(this).attr("style","display:none; z-index: 1100; position: fixed; width: "+settings.width+"px; left: "+settings.left+"px; top: "+settings.top+"px;");
  498. $(this).show();
  499. };
  500. })(jQuery);
  501. /**
  502. * Membership card
  503. *
  504. *
  505. * Example:
  506. *
  507. * HTML part
  508. * <a href="javascript" nctype="mcard" data-param="{'id':5}"></a>
  509. *
  510. * JAVASCRIPT part
  511. * <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL;?>/js/qtip/jquery.qtip.min.js"></script>
  512. * <link href="<?php echo RESOURCE_SITE_URL;?>/js/qtip/jquery.qtip.min.css" rel="stylesheet" type="text/css">
  513. * $('a[nctype="mcard"]').membershipCard();
  514. */
  515. (function($){
  516. $.fn.membershipCard = function(options){
  517. var defaults = {
  518. type:'' // params shop/circle/cms/micorshop
  519. };
  520. options = $.extend(defaults,options);
  521. return this.each(function(){
  522. var $this = $(this);
  523. var data_str = $(this).attr('data-param');eval('data_str = '+data_str);
  524. var _uri = SITEURL+'/index.php?act=member_card&callback=?&uid='+data_str.id+'&from='+options.type;
  525. $this.qtip({
  526. content: {
  527. text: 'Loading...',
  528. ajax: {
  529. url: _uri,
  530. type: 'GET',
  531. dataType: 'jsonp',
  532. success: function(data) {
  533. if(data){
  534. var _dl = $('<dl></dl>');
  535. // sex
  536. $('<dt class="member-id"></dt>').append('<i class="sex'+data.sex+'"></i>')
  537. .append('<a href="'+SHOP_SITE_URL+'/index.php?act=member_snshome&mid='+data.id+'" target="_blank">'+data.name+'</a>'+(data.truename != ''?'('+data.truename+')':''))
  538. .appendTo(_dl);
  539. // avatar
  540. $('<dd class="avatar"><a href="'+SHOP_SITE_URL+'/index.php?act=member_snshome&mid='+data.id+'" target="_blank"><img src="'+data.avatar+'" /></a><dd>')
  541. .appendTo(_dl);
  542. // info
  543. var _info = '';
  544. if(typeof connect !== 'undefined' && connect === 1 && data.follow != 2){
  545. var class_html = 'chat_offline';
  546. var text_html = '离线';
  547. if (typeof user_list[data.id] !== 'undefined' && user_list[data.id]['online'] > 0 ) {
  548. class_html = 'chat_online';
  549. text_html = '在线';
  550. }
  551. _info += '<a class="chat '+class_html+'" title="点击这里给我发消息" href="JavaScript:chat('+data.id+');">'+text_html+'</a>';
  552. }
  553. if(data.qq != ''){
  554. _info += '<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin='+data.qq+'&site=qq&menu=yes" title="QQ: '+data.qq+'"><img border="0" src="http://wpa.qq.com/pa?p=2:'+data.qq+':52" style=" vertical-align: middle;"/></a>';
  555. }
  556. if(data.ww != ''){
  557. _info += '<a target="_blank" href="http://amos.im.alisoft.com/msg.aw?v=2&amp;uid='+data.ww+'&site=cntaobao&s=1&charset='+_CHARSET+'" ><img border="0" src="http://amos.im.alisoft.com/online.aw?v=2&uid='+data.ww+'&site=cntaobao&s=2&charset='+_CHARSET+'" alt="点击这里给我发消息" style=" vertical-align: middle;"/></a>';
  558. }
  559. if(_info == ''){
  560. _info = '--';
  561. }
  562. var _ul = $('<ul></ul>').append('<li>城市:'+((data.areainfo != null)?data.areainfo:'--')+'</li>')
  563. .append('<li>生日:'+((data.birthday != null)?data.birthday:'--')+'</li>')
  564. .append('<li>联系:'+_info+'</li>').appendTo('<dd class="info"></dd>').parent().appendTo(_dl);
  565. // ajax info
  566. if(data.url != ''){
  567. $.getJSON(data.url+'/index.php?act=member_card&op=mcard_info&uid='+data.id, function(d){
  568. if(d){
  569. eval('var msg = '+options.type+'_function(d);');
  570. msg.appendTo(_dl);
  571. }
  572. });
  573. data.url = '';
  574. }
  575. // bottom
  576. var _bottom;
  577. if(data.follow != 2){
  578. _bottom = $('<div class="bottom"></div>');
  579. var _a;
  580. if(data.follow == 1){
  581. $('<div class="follow-handle" nctype="follow-handle'+data.id+'" data-param="{\'mid\':'+data.id+'}"></div>')
  582. .append('<a href="javascript:void(0);" >已关注</a>')
  583. .append('<a href="javascript:void(0);" nctype="nofollow">取消关注</a>').find('a[nctype="nofollow"]').click(function(){
  584. onfollow($(this));
  585. }).end().appendTo(_bottom);
  586. }else{
  587. $('<div class="follow-handle" nctype="follow-handle'+data.id+'" data-param="{\'mid\':'+data.id+'}"></div>')
  588. .append('<a href="javascript:void(0);" nctype="follow">加关注</a>').find('a[nctype="follow"]').click(function(){
  589. follow($(this));
  590. }).end().appendTo(_bottom);
  591. }
  592. $('<div class="send-msg"> <a href="'+SHOP_SITE_URL+'/index.php?act=member_message&op=sendmsg&member_id='+data.id+'" target="_blank"><i></i>站内信</a> </div>').appendTo(_bottom);
  593. }
  594. var _content = $('<div class="member-card"></div>').append(_dl).append(_bottom);
  595. this.set('content.text', ' ');this.set('content.text', _content);
  596. }
  597. }
  598. }
  599. },
  600. position: {
  601. viewport: $(window)
  602. },
  603. hide: {
  604. fixed: true,
  605. delay: 300
  606. },
  607. style: 'qtip-wiki'
  608. });
  609. });
  610. function follow(o){
  611. var data_str = o.parent().attr('data-param');
  612. eval( "data_str = "+data_str);
  613. $.getJSON(SHOP_SITE_URL+'/index.php?act=member_snsfriend&op=addfollow&callback=?&mid='+data_str.mid, function(data){
  614. if(data){
  615. $('[nctype="follow-handle'+data_str.mid+'"]').html('<a href="javascript:void(0);" >已关注</a> <a href="javascript:void(0);" nctype="nofollow">取消关注</a>').find('a[nctype="nofollow"]').click(function(){
  616. onfollow($(this));
  617. });
  618. }
  619. });
  620. }
  621. function onfollow(o){
  622. var data_str = o.parent().attr('data-param');
  623. eval( "data_str = "+data_str);
  624. $.getJSON(SHOP_SITE_URL+'/index.php?act=member_snsfriend&op=delfollow&callback=?&mid='+data_str.mid, function(data){
  625. if(data){
  626. $('[nctype="follow-handle'+data_str.mid+'"]').html('<a href="javascript:void(0);" nctype="follow">加关注</a>').find('a[nctype="follow"]').click(function(){
  627. follow($(this));
  628. });
  629. }
  630. });
  631. }
  632. function shop_function(d){
  633. return $('<dd class="ajax-info">买家信用:'+((d.member_credit == 0)?'暂无信用':d.member_credit)+'</dd>');
  634. }
  635. function circle_function(d){
  636. var rs = $('<dd class="ajax-info"></dd>');
  637. $.each(d,function(i, n){
  638. rs.append('<div class="rank-div" title="'+n.circle_name+'圈等级'+n.cm_level+',经验值'+n.cm_exp+'"><a href="'+CIRCLE_SITE_URL+'/index.php?act=group&c_id='+n.circle_id+'" target="_blank">'+n.circle_name+'</a><i></i><em class="rank-em rank-'+n.cm_level+'">'+n.cm_level+'</em></div>');
  639. });
  640. return rs;
  641. }
  642. function microshop_function(d){
  643. var rs = $('<dd class="ajax-info"></dd>');
  644. rs.append('<span class="ajax-info-microshop">随心看:' + d.goods_count + '</span>');
  645. rs.append('<span class="ajax-info-microshop">个人秀:' + d.personal_count + '</span>');
  646. return rs;
  647. }
  648. };
  649. })(jQuery);
  650. /*
  651. * 地址联动选择
  652. * input不为空时出现编辑按钮,点击按钮进行联动选择
  653. *
  654. * 使用范例:
  655. * [html]
  656. * <input id="region" name="region" type="hidden" value="" >
  657. * [javascrpt]
  658. * $("#region").nc_region();
  659. *
  660. */
  661. (function($) {
  662. $.fn.nc_region = function(options) {
  663. var $region = $(this);
  664. var settings = $.extend({}, {area_id: 0, region_span_class: "_region_value"}, options);
  665. return this.each(function() {
  666. var $inputArea = $(this);
  667. if($inputArea.val() === '') {
  668. initArea($inputArea);
  669. } else {
  670. var $region_span = $('<span class="' + settings.region_span_class + '">' + $inputArea.val() + '</span>');
  671. var $region_btn = $('<input type="button" value="编辑" />');
  672. $inputArea.after($region_span);
  673. $region_span.after($region_btn);
  674. $region_btn.on("click", function() {
  675. $region_span.hide();
  676. $region_btn.hide();
  677. initArea($inputArea);
  678. });
  679. }
  680. });
  681. function initArea($inputArea) {
  682. settings.$area = $('<select></select>');
  683. $inputArea.after(settings.$area);
  684. loadAreaArray(function() {
  685. loadArea(settings.$area, settings.area_id);
  686. });
  687. }
  688. function loadArea($area, area_id){
  689. if($area && nc_a[area_id].length > 0){
  690. var areas = [];
  691. areas = nc_a[area_id];
  692. $area.append("<option>-请选择-</option>");
  693. for (i = 0; i <areas.length; i++){
  694. $area.append("<option value='" + areas[i][0] + "'>" + areas[i][1] + "</option>");
  695. }
  696. }
  697. $area.on('change', function() {
  698. $(this).nextAll("select").remove();
  699. var region_value = '';
  700. $region.nextAll("select").each(function() {
  701. region_value += $(this).find("option:selected").text() + ' ';
  702. });
  703. $region.val(region_value);
  704. var area_id = $(this).val();
  705. if(area_id > 0) {
  706. if(nc_a[area_id] && nc_a[area_id].length > 0) {
  707. var $newArea = $('<select></select>');
  708. $(this).after($newArea);
  709. loadArea($newArea, area_id);
  710. }
  711. }
  712. });
  713. }
  714. function loadAreaArray(callback) {
  715. if(typeof nc_a === 'undefined') {
  716. //取JS目录的地址
  717. var area_scripts_src = '';
  718. area_scripts_src = $("script[src*='jquery.js']").attr("src");
  719. area_scripts_src = area_scripts_src.replace('jquery.js', 'area_array.js');
  720. $.ajax({
  721. url: area_scripts_src,
  722. async: false,
  723. dataType: "script"
  724. }).done(function(){
  725. callback();
  726. });
  727. } else {
  728. callback();
  729. }
  730. }
  731. };
  732. })(jQuery);
  733. /* 加入购物车 */
  734. function addcart(goods_id,quantity,callbackfunc) {
  735. var url = 'index.php?act=cart&op=add';
  736. quantity = parseInt(quantity);
  737. $.getJSON(url, {'goods_id':goods_id, 'quantity':quantity}, function(data) {
  738. if (data != null) {
  739. if (data.state) {
  740. if(callbackfunc){
  741. eval(callbackfunc + "(data)");
  742. }
  743. // 头部加载购物车信息
  744. load_cart_information();
  745. $('#rtoolbar_cartlist').load('index.php?act=cart&op=ajax_load&type=html')
  746. } else {
  747. alert(data.msg);
  748. }
  749. }
  750. });
  751. }