/**
 TaoLer社区修改 www.aieok.com
 @Name: Fly社区主入口
 2021-5.21
 */

layui.define(['layer', 'laytpl', 'form', 'element', 'upload', 'util', 'imgcom'], function(exports){
  
  var $ = layui.jquery
  ,layer = layui.layer
  ,laytpl = layui.laytpl
  ,form = layui.form
  ,element = layui.element
  ,upload = layui.upload
  ,util = layui.util
  ,imgcom = layui.imgcom
  ,device = layui.device()
  ,DISABLED = 'layui-btn-disabled';
  var uid = layui.cache.user.uid;
  var login = $('.fly-nav-user').attr('userlogin');

  //阻止IE7以下访问
  if(device.ie && device.ie < 8){
    layer.alert('如果您非得使用 IE 浏览器访问Fly社区，那么请使用 IE8+');
  }
  
  layui.focusInsert = function(obj, str){
    var result, val = obj.value;
    obj.focus();
    if(document.selection){ //ie
      result = document.selection.createRange(); 
      document.selection.empty(); 
      result.text = str; 
    } else {
      result = [val.substring(0, obj.selectionStart), str, val.substr(obj.selectionEnd)];
      obj.focus();
      obj.value = result.join('');
    }
  };

  //数字前置补零
  layui.laytpl.digit = function(num, length, end){
    var str = '';
    num = String(num);
    length = length || 2;
    for(var i = num.length; i < length; i++){
      str += '0';
    }
    return num < Math.pow(10, length) ? str + (num|0) : num;
  };
  
  var fly = {
	dir: layui.cache.host + 'static/res/mods/' //模块路径
    //Ajax
    ,json: function(url, data, success, options){
      var that = this, type = typeof data === 'function';
      
      if(type){
        options = success
        success = data;
        data = {};
      }

      options = options || {};

      return $.ajax({
        type: options.type || 'post',
        dataType: options.dataType || 'json',
        data: data,
        url: url,
        success: function(res){
          if(res.status === 0) {
            success && success(res);
          } else {
            layer.msg(res.msg || res.code, {shift: 6});
            options.error && options.error();
          }
        }, error: function(e){
          layer.msg('请求异常，请重试', {shift: 6});
          options.error && options.error(e);
        }
      });
    }

    //计算字符长度
    ,charLen: function(val){
      var arr = val.split(''), len = 0;
      for(var i = 0; i <  val.length ; i++){
        arr[i].charCodeAt(0) < 299 ? len++ : len += 2;
      }
      return len;
    }
    
    ,form: {}

    //简易编辑器
    ,layEditor: function(options){
      var html = ['<div class="layui-unselect fly-edit">'
          ,'<span type="strong" title="加粗"><i class="layui-icon layedit-tool-b layedit-tool-active" title="加粗" lay-command="Bold" layedit-event="b" "=""></i></span>'
          ,'<span type="face" title="表情"><i class="iconfont icon-yxj-expression" style="top: 1px;"></i></span>'
          ,'<span type="picture" title="图片：img[src]"><i class="iconfont icon-tupian"></i></span>'
          ,'<span type="video" title="视频"><i class="layui-icon layui-icon-video"></i></span>'
          ,'<span type="audio" title="音频"><i class="layui-icon layui-icon-headset"></i></span>'
          ,'<span type="href" title="超链接格式：a(href)[text]"><i class="iconfont icon-lianjie"></i></span>'
          ,'<span type="quote" title="引用"><i class="iconfont icon-yinyong" style="top: 1px;"></i></span>'
          ,'<span type="code" title="插入代码" class="layui-hide-xs"><i class="iconfont icon-emwdaima" style="top: 1px;"></i></span>'
          ,'<span type="hr" title="水平线">hr</span>'
          ,'<span type="preview" title="预览"><i class="iconfont icon-yulan1"></i></span>'
          ,'</div>'].join('');

      var closeTips = function(){
          layer.close(mod.face.index);
      };

      var log = {}, mod = {
      //加粗
      strong: function(editor){
        var str = window.getSelection().toString();
        if(!str == ''){
          //var strB = '<b>'+ str + '</b>';
          layui.focusInsert(editor[0], '[strong]'+ str + '[/strong]');
          //console.log(str);
          // console.log(strB);
        }
      },
      face: function(editor, self){ //插入表情
          var str = '', ul, face = fly.faces;
          for(var key in face){
              str += '<li title="'+ key +'"><img src="'+ face[key] +'"></li>';
          }
          str = '<ul id="LAY-editface" class="layui-clear" style="margin: -10px 0 0 -1px;">'+ str +'</ul>';

          layer.close(mod.face.index);
          mod.face.index = layer.tips(str, self, {
              tips: 3
              ,time: 0
              ,skin: 'layui-edit-face'
              ,tipsMore: true
          });

          $(document).off('click', closeTips).on('click', closeTips);

          $('#LAY-editface li').on('click', function(){
              var title = $(this).attr('title') + ' ';
              layui.focusInsert(editor[0], 'face' + title);
              editor.trigger('keyup');
          });
      }
      ,picture: function(editor){ //插入图片
        //判断登陆
        if(uid == -1){
          layer.msg('请登录再发图', {icon: 6}, function(){
            location.href = login;
          })
          return false;
        }
      
        layer.open({
          type: 1
          ,id: 'fly-jie-upload'
          ,title: '插入图片'
          ,area: 'auto'
          ,shade: false
          //,area: '465px'
          ,fixed: false
          ,offset: [
              editor.offset().top - $(window).scrollTop() + 'px'
              ,editor.offset().left + 'px'
          ]
          ,skin: 'layui-layer-border'
          ,content: ['<ul class="layui-form layui-form-pane" style="margin: 20px;">'
              ,'<li class="layui-form-item">'
              ,'<label class="layui-form-label">URL</label>'
              ,'<div class="layui-input-inline">'
              ,'<input required name="image" placeholder="支持粘贴远程图片地址" value="" class="layui-input">'
              ,'</div>'
              ,'<button type="button" class="layui-btn layui-btn-primary" id="uploadImg"><i class="layui-icon">&#xe67c;</i>上传图片</button>'
              ,'</li>'
              ,'<li class="layui-form-item" style="text-align: center;">'
              ,'<button type="button" lay-submit lay-filter="uploadImages" class="layui-btn" id="img-button">确认</button>'
              ,'</li>'
              ,'</ul>'].join('')
              ,success: function(layero, index){
              var image =  layero.find('input[name="image"]');
              
              //执行上传实例
              upload.render({
                  elem: '#uploadImg'
                  ,accept: 'images'
                  ,acceptMime: 'image/*'
                  ,exts: 'jpg|png|gif|bmp|jpeg'
                  ,url: uploads
                  ,data: {type:'image'}
                  ,auto: false
                  //,bindAction: '#img-button' //指向一个按钮触发上传
                  //,field: 'image'
                  ,size: 10240
                  ,choose: function (obj) { //选择文件后的回调
                    imgcom.uploads(obj);
                  }
                  ,done: function(res){
                      if(res.status == 0){
                      //console.log(res.url);
                          image.val(res.url);
                      } else {
                          layer.msg(res.msg, {icon: 5});
                      }
                  }
                  ,error: function(){
                    layer.msg('系统错误，请联系管理员');
                  }
              });

              form.on('submit(uploadImages)', function(data){
                  var field = data.field;							  
                  if(!field.image) return image.focus();
                  layui.focusInsert(editor[0], 'img['+ field.image + '] ');
                  layer.close(index);
                  editor.trigger('keyup');
              });
          }
      });
    }
    ,href: function(editor){ //超链接
        layer.prompt({
            title: '请输入合法链接'
            ,shade: false
            ,fixed: false
            ,id: 'LAY_flyedit_href'
            ,offset: [
                editor.offset().top - $(window).scrollTop() + 1 + 'px'
                ,editor.offset().left + 1 + 'px'
            ]
        }, function(val, index, elem){
            if(!/^http(s*):\/\/[\S]/.test(val)){
                layer.tips('请务必 http 或 https 开头', elem, {tips:1})
                return;
            }
            layui.focusInsert(editor[0], ' a('+ val +')['+ val + '] ');
            layer.close(index);
            editor.trigger('keyup');
        });
    }
    ,quote: function(editor){ //引用
        layer.prompt({
            title: '请输入引用内容'
            ,formType: 2
            ,maxlength: 10000
            ,shade: false
            ,id: 'LAY_flyedit_quote'
            ,offset: [
                editor.offset().top - $(window).scrollTop() + 1 + 'px'
                ,editor.offset().left + 1 + 'px'
            ]
            ,area: ['300px', '100px']
        }, function(val, index, elem){
            layui.focusInsert(editor[0], '[quote]\n  '+ val + '\n[/quote]\n');
            layer.close(index);
            editor.trigger('keyup');
        });
    }
    ,code: function(editor){ //插入代码
        layer.prompt({
            title: '请贴入代码'
            ,formType: 2
            ,maxlength: 10000
            ,shade: false
            ,id: 'LAY_flyedit_code'
            ,area: ['800px', '360px']
        }, function(val, index, elem){
            layui.focusInsert(editor[0], '[pre]\n'+ val + '\n[/pre]\n');
            layer.close(index);
            editor.trigger('keyup');
        });
    }
    ,hr: function(editor){ //插入水平分割线
        layui.focusInsert(editor[0], '[hr]\n');
        editor.trigger('keyup');
    }
    ,video: function(editor){ //插入视频
      //判断登陆
      if(uid == -1){
        layer.msg('请登录再发视频', {icon: 6}, function(){
          location.href = login;
        })
        return false;
      }
      layer.open({
        type: 1
        ,id: 'fly-jie-video-upload'
        ,title: '插入视频'
        ,area: 'auto'
        ,shade: false
        //,area: '465px'
        ,fixed: false
        ,offset: [
            editor.offset().top - $(window).scrollTop() + 'px'
            ,editor.offset().left + 'px'
        ]
        ,skin: 'layui-layer-border'
        ,content: ['<ul class="layui-form layui-form-pane" style="margin: 20px;">'
            ,'<li class="layui-form-item">'
            ,'<label class="layui-form-label">封面</label>'
            ,'<div class="layui-input-inline">'
            ,'<input type="text" required name="cover" placeholder="支持粘贴远程图片地址" value="" class="layui-input">'
            ,'</div>'
            ,'<button type="button" lay-type="image" class="layui-btn" id="video-img"><i class="layui-icon">&#xe67c;</i>上传封图</button>'
            ,'</li>'
            ,'<li class="layui-form-item">'
            ,'<label class="layui-form-label">URL</label>'
            ,'<div class="layui-input-inline">'
            ,'<input type="text" required name="video" placeholder="支持粘贴远程视频地址" value="" class="layui-input">'
            ,'</div>'
            ,'<button type="button" lay-type="video" class="layui-btn" id="layedit-video"><i class="layui-icon layui-icon-video"></i>上传视频</button>'
            ,'</li>'
            ,'<li class="layui-form-item" style="text-align: center;">'
            ,'<button type="button" lay-submit lay-filter="uploadImages" class="layui-btn">确认</button>'
            ,'</li>'
            ,'</ul>'].join('')
            ,success: function(layero, index){
              var video =  layero.find('input[name="video"]'), cover =  layero.find('input[name="cover"]');

              //上传视频
              upload.render({
                url: uploads
                ,data: {type:'video'}
                ,accept: 'video'
                ,acceptMime: 'video/mp4'
                ,exts: 'mp4'
                ,elem: '#layedit-video'
                ,before: function(obj){ //obj参数包含的信息，跟 choose回调完全一致，可参见上文。
                layer.load(2); //上传loading
                }
                ,done: function(res){
                    if(res.status == 0){
                        video.val(res.url); 
                    } else {
                        layer.msg(res.msg, {icon: 5});
                    }
                    layer.closeAll('loading');
                  }
              });
          //上传图片
          upload.render({
            elem: '#video-img'
            ,accept: 'images'
            ,acceptMime: 'image/*'
            ,exts: 'jpg|png|gif|bmp|jpeg'
            ,url: uploads
            ,data: {type:'image'}
            ,auto: false
            //,bindAction: '#img-button' //指向一个按钮触发上传
            //,field: 'image'
            ,size: 10240
            ,choose: function (obj) { //选择文件后的回调
              imgcom.uploads(obj);
            }
            ,done: function(res){
                if(res.status == 0){
                    cover.val(res.url);
                } else {
                    layer.msg(res.msg, {icon: 5});
                }
            }
            ,error: function(){
              layer.msg('系统错误，请联系管理员');
            }
          });
          form.on('submit(uploadImages)', function(data){
              var field = data.field;
              if(!field.video) return video.focus();
              layui.focusInsert(editor[0], 'video('+field.cover+')['+ field.video + '] ');
              layer.close(index);
          });
              }
      });
    }
    ,audio: function(editor){ //插入音频
      //判断登陆
      if(uid == -1){
        layer.msg('请登录再发布', {icon: 6}, function(){
          location.href = login;
        })
        return false;
      }
        layer.open({
            type: 1
            ,id: 'fly-jie-audio-upload'
            ,title: '插入音频'
            ,area: 'auto'
            ,shade: false
            //,area: '465px'
            ,fixed: false
            ,offset: [
                editor.offset().top - $(window).scrollTop() + 'px'
                ,editor.offset().left + 'px'
            ]
            ,skin: 'layui-layer-border'
            ,content: ['<ul class="layui-form layui-form-pane" style="margin: 20px;">'
                ,'<li class="layui-form-item">'
                ,'<label class="layui-form-label">URL</label>'
                ,'<div class="layui-input-inline">'
                ,'<input required name="audio" placeholder="支持直接粘贴远程音频地址" value="" class="layui-input">'
                ,'</div>'
                ,'<button required type="button" name="file" lay-type="audio" class="layui-btn upload-audio"><i class="layui-icon layui-icon-headset"></i>上传音频</button>'
                ,'</li>'
                ,'<li class="layui-form-item" style="text-align: center;">'
                ,'<button type="button" lay-submit lay-filter="uploadImages" class="layui-btn">确认</button>'
                ,'</li>'
                ,'</ul>'].join('')
                ,success: function(layero, index){
                var loding,audio =  layero.find('input[name="audio"]');

                upload.render({
                    url: uploads
                    ,data: {type:'audio'}
                    ,elem: '#fly-jie-audio-upload .upload-audio'
                    ,accept: 'audio'
                    ,acceptMime: 'audio/*'
                    ,exts: 'mp3|m4a'
                    ,before: function(obj){   
                    //loding = layer.msg('文件上传中,请稍等哦', { icon: 16 ,shade:0.3,time:0 });
                    layer.load(2); //上传loading
                    }
                    ,done: function(res){
        
                        if(res.status == 0){
                            audio.val(res.url);
                        } else {
                            layer.msg(res.msg, {icon: 5});
                        }
                    layer.closeAll('loading');
                    }
                });
                form.on('submit(uploadImages)', function(data){
                    var field = data.field;
                    if(!field.audio) return audio.focus();
                    layui.focusInsert(editor[0], 'audio['+ field.audio + '] ');
                    layer.close(index);
                });
            }
        });
    }
    ,preview: function(editor, span){ //预览
        var othis = $(span), getContent = function(){
            var content = editor.val();
            return /^\{html\}/.test(content) ? content.replace(/^\{html\}/, '') : fly.content(content)
        }, isMobile = device.ios || device.android;

        if(mod.preview.isOpen) return layer.close(mod.preview.index);

        mod.preview.index = layer.open({
            type: 1
            ,title: '预览'
            ,shade: false
            ,offset: 'r'
            ,id: 'LAY_flyedit_preview'
            ,area: [
                isMobile ? '100%' : '775px'
                ,'100%'
            ]
            ,scrollbar: isMobile ? false : true
            ,anim: -1
            ,isOutAnim: false
            ,content: '<div class="detail-body layui-text" style="margin:20px;">'+ getContent() +'</div>'
            ,success: function(layero){
                editor.on('keyup', function(val){
                    layero.find('.detail-body').html(getContent());
                });
                mod.preview.isOpen = true;
                othis.addClass('layui-this');
            }
            ,end: function(){
                delete mod.preview.isOpen;
                othis.removeClass('layui-this');
            }
        });
    }
};

    layui.use('face', function(face){
        options = options || {};
        fly.faces = face;
        $(options.elem).each(function(index){
            var that = this, othis = $(that), parent = othis.parent();
            parent.prepend(html);
            parent.find('.fly-edit span').on('click', function(event){
                var type = $(this).attr('type');
                mod[type].call(that, othis, this);
                if(type === 'face'){
                    event.stopPropagation()
                }
            });
        });
    });

    }

    ,escape: function(html){
        return String(html||'').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&amp;')
            .replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/'/g, '&#39;').replace(/"/g, '&quot;');
    }

      //内容转义
    ,content: function(content){
        var util = fly
        ,item = fly.faces;

        //支持的html标签
        var html = function(end){
            return new RegExp('\\n*\\|\\-'+ (end||'') +'(div|span|p|button|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)\\-\\|\\n*', 'g');
        };


        //XSS
        content = util.escape(content||'')

            //转义图片
            .replace(/img\[([^\s]+?)\]/g, function(img){
                return '<div><img src="' + img.replace(/(^img\[)|(\]$)/g, '') + '"></div>';
            })

            //转义@
            .replace(/@(\S+)(\s+?|$)/g, '@<a href="javascript:;" class="fly-aite">$1</a>$2')

            //转义表情
            .replace(/face\[([^\s\[\]]+?)\]/g, function(face){
                var alt = face.replace(/^face/g, '');
                return '<img alt="'+ alt +'" title="'+ alt +'" src="' + item[alt] + '">';
            })

            //转义脚本
            .replace(/a(\(javascript:)(.+)(;*\))/g, 'a(javascript:layer.msg(\'非法脚本\');)')

            //转义链接
            .replace(/a\([\s\S]+?\)\[[\s\S]*?\]/g, function(str){
                var href = (str.match(/a\(([\s\S]+?)\)\[/)||[])[1];
                var text = (str.match(/\)\[([\s\S]*?)\]/)||[])[1];
                if(!href) return str;
                var rel =  /^(http(s)*:\/\/)\b(?!(\w+\.)*(sentsin.com|layui.com))\b/.test(href.replace(/\s/g, ''));
                return '<a href="'+ href +'" style="color: red;" target="_blank"'+ (rel ? ' rel="nofollow"' : '') +'>'+ (text||href) +'</a>';
            })

            //转义横线
            .replace(/\[hr\]\n*/g, '<hr>')

            //转义表格
            .replace(/\[table\]([\s\S]*)\[\/table\]\n*/g, function(str){
                return str.replace(/\[(thead|th|tbody|tr|td)\]\n*/g, '<$1>')
                    .replace(/\n*\[\/(thead|th|tbody|tr|td)\]\n*/g, '</$1>')

                    .replace(/\[table\]\n*/g, '<table class="layui-table">')
                    .replace(/\n*\[\/table\]\n*/g, '</table>');
            })

            //转义 div/span
            .replace(/\n*\[(div|span)([\s\S]*?)\]([\s\S]*?)\[\/(div|span)\]\n*/g, function(str){
                return str.replace(/\[(div|span)([\s\S]*?)\]\n*/g, '<$1 $2>')
                    .replace(/\n*\[\/(div|span)\]\n*/g, '</$1>');
            })

            //转义列表
            .replace(/\[ul\]([\s\S]*)\[\/ul\]\n*/g, function(str){
                return str.replace(/\[li\]\n*/g, '<li>')
                    .replace(/\n*\[\/li\]\n*/g, '</li>')

                    .replace(/\[ul\]\n*/g, '<ul>')
                    .replace(/\n*\[\/ul\]\n*/g, '</ul>');
            })

            //转义代码
            .replace(/\[pre\]([\s\S]*)\[\/pre\]\n*/g, function(str){
                return str.replace(/\[pre\]\n*/g, '<pre>')
                    .replace(/\n*\[\/pre\]\n*/g, '</pre>');
            })

            //转义引用
            .replace(/\[quote\]([\s\S]*)\[\/quote\]\n*/g, function(str){
                return str.replace(/\[quote\]\n*/g, '<div class="layui-elem-quote">')
                    .replace(/\n*\[\/quote\]\n*/g, '</div>');
            })

            //转义加粗
            .replace(/\[strong\]([\s\S]*)\[\/strong\]\n*/g, function(str){
              return str.replace(/\[strong\]\n*/g,'<b>')
              .replace(/\n*\[\/strong\]\n*/g, '</b>');
            })

            //转义换行
            .replace(/\n/g, '<br>')

            //转义视频
            .replace(/video\(.*?\)\[([^\s]+?)\]/g, function(str){
                var cover = (str.match(/video\(([\s\S]+?)\)\[/)||[])[1];
                var video = (str.match(/\)\[([^\s]+?)\]/)||[])[1];
                cover = cover ? cover : '/static/res/images/video_cover.jpg';
                return  '<video poster="'+ cover + '" controls crossorigin><source src="'+ video + '" type="video/mp4"></video>';
            })
            //转义音频
            .replace(/audio\[([^\s]+?)\]/g, function(audio){
                return  '<audio controls><source src="'+ audio.replace(/(^audio\[)|(\]$)/g, '')+ '" type="audio/mp3"></audio>';
            })

        return content;
    }
    
    //新消息通知
    ,newmsg: function(){
      var elemUser = $('.fly-nav-user');
      var messageNums = elemUser.attr('msg-url'),
      messageRead = elemUser.attr('readMsg-url');
      if(uid != -1 && elemUser[0]){
        fly.json(messageNums, {
          _: new Date().getTime()
        }, function(res){
          if(res.status === 0 && res.count > 0){
            var msg = $('<a class="fly-nav-msg" href="javascript:;">'+ res.count +'</a>');
            elemUser.append(msg);
            msg.on('click', function(){
              fly.json(messageRead, {}, function(res){
                if(res.status === 0){
                  location.href = res.url;
                }
              });
            });
            layer.tips('你有 '+ res.count +' 条未读消息', msg, {
              tips: 3
              ,tipsMore: true
              ,fixed: true
            });
            msg.on('mouseenter', function(){
              layer.closeAll('tips');
            })
          }
        });
      }
      return arguments.callee;
    }

	//手机绑定弹窗
    ,setPhoneNotice: function(){
      layer.open({
        type: 1
        ,id: 'LAY_Notice_add'
        ,title: '手机号绑定通知'
        ,content: '<div class="layui-text" style="padding: 20px;">您需要绑定手机号后，才可进行发帖/回帖等操作。</div>'
        ,btnAlign: 'c'
        ,btn: ['立即绑定', '朕偏不！']
        ,yes: function(){
          location.href = '/user/set'
        }
        ,btn2: function(){
          layer.msg('少年，我看好你！');
        }
      });
    }

    //邮箱激活提示
    ,setEmailNotice: function(){
      layer.open({
        type: 1
        ,id: 'LAY_Notice_add'
        ,title: '邮箱激活通知'
        ,content: '<div class="layui-text" style="padding: 20px;">您需要激活邮箱后，才可进行发帖/回帖等操作。</div>'
        ,btnAlign: 'c'
        ,btn: ['前往激活', '朕偏不！']
        ,yes: function(){
          location.href = '/user/set'
        }
        ,btn2: function(){
          layer.msg('少年，我看好你！');
        }
      });
    }
  }; 

  //加载扩展模块
  // layui.config({
  //   base: fly.dir
  // }).extend({
  //   im: 'im'
  //   ,face: 'face'
  // });

  //头像
  if(device.android || device.ios){
    $('#LAY_header_avatar').on('click', function(){
      return false;
    })
  }

  //刷新图形验证码
  $('body').on('click', '#captcha111', function(){
      var othis = $(this);
      othis.attr('src', othis.attr('src')+'?'+ new Date().getTime());
      //console.log(othis.attr('src'));
  });

  //头条轮播
  if($('#FLY_topline')[0]){
    layui.use('carousel', function(){
      var carousel = layui.carousel;
      
      var ins = carousel.render({
        elem: '#FLY_topline'
        ,width: '100%'
        ,height: '172px'
        ,anim: 'fade'
      });

      var resizeTopline = function(){
        var width = $(this).prop('innerWidth');
        if(width >= 1200){
          ins.reload({
            height: '172px'
          });
        } else if(width >= 992){
          ins.reload({
            height: '141px'
          });
        } else if(width >= 768){
          ins.reload({
            height: '166px'
          });
        }
      };

      resizeTopline()

      $(window).on('resize', resizeTopline);

    });
  }

  //签到

  //活跃榜
  var tplReply = ['{{# layui.each(d.data, function(index, item){ }}'
    ,'<dd>'
      ,'<a href="{{item.uid}}">'
        ,'<img src="{{item.user.avatar}}">'
        ,'<cite>{{item.user.username}}</cite>'
        ,'<i>{{item["count"]}}' + replyNum + '</i>'
      ,'</a>'
    ,'</dd>'
  ,'{{# }); }}'].join('')
  ,elemReply = $('#LAY_replyRank');

  var replyUrl = elemReply.attr('data-url');
  if(elemReply[0]){
    fly.json(replyUrl, {
      limit: 20
    }, function(res){
      var html = laytpl(tplReply).render(res);
      elemReply.find('dl').html(html);
    });
  };

  //相册
  if($(window).width() > 750){
    layer.photos({
      photos: '.photos'
      ,zIndex: 9999999999
      ,anim: -1
    });
  } else {
    $('body').on('click', '.photos img', function(){
      window.open(this.src);
    });
  }


  //搜索
  $('.fly-search').on('click', function(data){
    var searchUrl = $('.fly-search').attr('data-url');
    var forms = '<form action='+ searchUrl + '>';
    layer.open({
      type: 1
      ,title: false
      ,closeBtn: false
      ,shade: [0.1, '#fff']
      ,shadeClose: true
      ,maxWidth: 10000
      ,skin: 'fly-layer-search'
      ,content: [forms
        ,'<input autocomplete="off" placeholder="搜索内容，回车跳转" type="text" name="keywords">'
      ,'</form>'].join('')
      ,success: function(layero){
        var input = layero.find('input');
        input.focus();

        layero.find('form').submit(function(){
          var val = input.val();
          if(val.replace(/\s/g, '') === ''){
            return false;
          }
          input.val();
      });
      }
    })
  });
  
  //移动端搜索
  

  //新消息通知
  fly.newmsg();

  //发送激活邮件
  fly.activate = function(email){
    fly.json(actvateEmaiUrl, {"email":email}, function(res){
      if(res.status === 0){
        layer.alert('已成功将激活链接发送到了您的邮箱，接受可能会稍有延迟，请注意查收。', {
          icon: 1
        });
      };
    });
  };
  $('#LAY-activate').on('click', function(){
    fly.activate($(this).attr('email'));
  });

  //点击@
  $('body').on('click', '.fly-aite', function(){
    var othis = $(this), text = othis.text();
    if(othis.attr('href') !== 'javascript:;'){
      return;
    }
    text = text.replace(/^@|（[\s\S]+?）/g, '');
    othis.attr({
      href: jumpUrl + '?name=' + text
      ,target: '_blank'
    });
  });

  //表单提交
  form.on('submit(*)', function(data){
    var action = $(data.form).attr('action'), button = $(data.elem);
    fly.json(action, data.field, function(res){
      var end = function(){
        if(res.action){
          location.href = res.action;
        } else {
          fly.form[action||button.attr('key')](data.field, data.form);
        }
      };
      if(res.status == 0){
        button.attr('alert') ? layer.alert(res.msg, {
          icon: 1,
          time: 10*1000,
          end: end
        }) : end();
      };
    });
    //return false;
  });

  //加载特定模块
  if(layui.cache.page && layui.cache.page !== 'index'){
    var extend = {};
    extend[layui.cache.page] = layui.cache.page;
    layui.extend(extend);
    layui.use(layui.cache.page);
  }
  
  //加载IM
  if(!device.android && !device.ios){
    //layui.use('im');
  }

  //加载编辑器
  fly.layEditor({
    elem: '.fly-editor'
  });
  
  //手机设备的简单适配 用户中心底部左侧栏导航
  var treeMobile = $('.site-tree-mobile')
  ,shadeMobile = $('.site-mobile-shade')

  treeMobile.on('click', function(){
    $('body').addClass('site-mobile');
  });

  shadeMobile.on('click', function(){
    $('body').removeClass('site-mobile');
  });
  
  //手机设备的简单适配 头部左侧栏导航
  var treeMobileTop = $('.site-tree-mobile-top')
  ,shadeMobileTop = $('.site-mobile-shade-top')

  treeMobileTop.on('click', function(){
    $('body').addClass('site-mobile');
  });

  shadeMobileTop.on('click', function(){
    $('body').removeClass('site-mobile');
  });
  
  //导航窗口scroll
  ;!function(){
    var main = $('.site-menu'), scroll = function(){
      var stop = $(window).scrollTop();

      if($(window).width() <= 992) return;
      var bottom = $('.footer').offset().top - $(window).height();

      if(stop > 60){ //211
        if(!main.hasClass('site-fix')){
          main.addClass('site-fix').css({
            width: main.parent().width()
          });
        }
      }else {     
        if(main.hasClass('site-fix')){
          main.removeClass('site-fix').css({
            width: 'auto'
          });
        }
      }
      stop = null;
    };
    scroll();
    $(window).on('scroll', scroll);
  }();

  //获取统计数据
  $('.fly-handles').each(function(){
    var othis = $(this);
    $.get('/api/handle?alias='+ othis.data('alias'), function(res){
      othis.html('（下载量：'+ res.number +'）');
    })
  });
  
  //添加文章
  $('#add_post').click(function() {
	  if (layui.cache.user.uid !== -1) {
		  loading = layer.load(2, {
            shade: [0.2, '#000']
      });
		  location.href = articleAdd;
		} else {
			layer.msg('请先登陆',{
				icon:5,
				time:2000
			},function () {
				location.href = login;
			});
		}
		return false;
  });
  
  //退出登录
    $('.logi_logout').click(function() {
        loading = layer.load(2, {
            shade: [0.2, '#000']
        });
        var url = $(this).data('url');
        $.getJSON(url, function(data) {
            if (data.code == 200) {
                layer.close(loading);
                layer.msg(data.msg, { icon: 1, time: 1000 }, function() {
                    location.href = data.url;
                });
            } else {
                layer.close(loading);
                layer.msg(data.msg, { icon: 2, anim: 6, time: 1000 });
            }
        });
    });
	
  //pc端监听多语言切换
	$('#language').on('change',function(){
	  var data = $(this).val();
		$.post(langUrl,{language:data},function(res){
			if(res.code == 0){
				location.reload();
			}
		});
		return false;
	});

	//移动端左侧栏监听多语言切换
	$('#language1').on('change',function(){
	  var data = $(this).val();
		$.post(langUrl,{language:data},function(res){
			if(res.code == 0){
				location.reload();
			}
		});
		return false;
	});
  
  //固定Bar
  util.fixbar({
    bar1: '&#xe642;'
    ,bgcolor: '#009688'
    ,css: {right: 10, bottom: 50}
    ,click: function(type){
		//添加文章
      if(type === 'bar1'){
        //slayer.msg('打开 index.js，开启发表新帖的路径');
        location.href = articleAdd;
      }
    }
  });

  exports('fly', fly);
});

