text: ﻿/**
   
   @Name: layer拓展类，依赖于layer
   @Date: 2014.05.16
   @Author: 贤心
   @Versions：1.3
   @Api：http://www.sucaijiayuan.com
   @Desc: 本拓展会持续更新
  
   **/
   
  layer.use('skin/layer.ext.css', function(){
      layer.ext && layer.ext();
  });
  
  layer.extv = '1.3';
  
  
  /**
  
   系统prompt
   2014.5.11
   By 贤心
   
  **/
  
  layer.prompt = function(parme, yes, no){
      var log = {}, parme = parme || {}, conf = {
          area: ['auto', 'auto'],
          offset: [parme.top || '200px', ''],
          title: parme.title || '信息',
          dialog: {
              btns: 2,
              type: -1,
              msg: '<input type="'+ function(){
                  if(parme.type === 1){ //密码
                      return 'password';
                  } else if(parme.type === 2) {
                      return 'file';
                  } else {
                      return 'text';
                  }
              }() +'" class="xubox_prompt xubox_form" id="xubox_prompt" value="" />',
              yes: function(index){
                  var val = log.prompt.val();
                  if(val === ''){
                      log.prompt.focus();
                  } else if(val.replace(/\s/g, '').length > (parme.length || 1000)) {
                      layer.tips('最多输入'+ (parme.length || 1000) +'个字数', '#xubox_prompt', 2);
                  } else {
                      layer.close(index);
                      yes && yes(val);
                  }
                  
              }, no: no
          }, success: function(){
              log.prompt = $('#xubox_prompt');
          }
      };
      if(parme.type === 3){
          conf.dialog.msg = '<textarea class="xubox_prompt xubox_form xubox_formArea" id="xubox_prompt"></textarea>'
      }
      return $.layer(conf);
  };
  
  
  /**
  
   tab层 v1.0.0
   2014.5.11
   By 贤心
   
  **/
  
  layer.tab = function(parme){
      var log = {}, parme = parme || {}, data = parme.data || [], conf = {
          type: 1,
          border: [0],
          area: ['auto', 'auto'],
          title: false,
          shade : parme.shade,
          offset: parme.offset,
          move: '.xubox_tabmove',
          closeBtn: false,
          page: {html: '<div class="xubox_tab" style="'+ function(){
              parme.area = parme.area || [];
              return 'width:'+ (parme.area[0] || '500px') +'; height:'+ (parme.area[1] || '300px') +'">';
          }()
          +'<span class="xubox_tabmove"></span>'
          +'<div class="xubox_tabtit">'
          +function(){
              var len = data.length, ii = 1, str = '';
              if(len > 0){
                  str = '<span class="xubox_tabnow">'+ data[0].title +'</span>';
                  for(; ii < len; ii++){
                      str += '<span>'+ data[ii].title +'</span>';
                  }
              }
              return str;
          }() +'</div>'
          +'<ul class="xubox_tab_main">'+ function(){
              var len = data.length, ii = 1, str = '';
              if(len > 0){
                  str = '<li class="xubox_tabli xubox_tab_layer">'+ (data[0].content || 'content未传入') +'</li>';
                  for(; ii < len; ii++){
                      str += '<li class="xubox_tabli">'+ (data[ii].content || 'content未传入') +'</li>';
                  }
              }
              return str;
          }() +'</ul>'
          +'<span class="xubox_tabclose" title="关闭">X</span>'
          +'</div>'
          }, success: function(layerE){
              //切换事件
              var btn = $('.xubox_tabtit').children(), main = $('.xubox_tab_main').children(), close = $('.xubox_tabclose');
              btn.on('click', function(){
                  var othis = $(this), index = othis.index();
                  othis.addClass('xubox_tabnow').siblings().removeClass('xubox_tabnow');
                  main.eq(index).show().siblings().hide();
              });
              //关闭层
              close.on('click', function(){
                  layer.close(layerE.attr('times'));
              });
          }
      };
      return $.layer(conf);
  };
  
  
  
  /**
  
   相册层 v1.0.0
   2014.5.11
   By 贤心
   
  **/
  
  
  layer.photos = function(options){
      options = options || {};
      var log = {
          imgIndex: 1,
          end: null,
          html: $('html')
      }, win = $(window), json = options.json, page = options.page;
      
      if(json){
          var data = json.data;
          if(json.status === 1){
              log.imgLen = data.length;
              if(data.length > 0){
                  log.thissrc = data[json.start].src;
                  log.pid = data[json.start].pid;
                  log.imgsname = (json.title || '');
                  log.name = data[json.start].name;
                  log.imgIndex = json.start + 1;
              } else {
                  layer.msg('没有任何图片', 2, 8);
                  return;
              }
              
          } else {
              layer.msg('未请求到数据', 2, 8);
              return;
          }
      } else {
          var imgs = $(page.parent).find('img'), nowimg = imgs.eq(page.start);
          log.thissrc = (nowimg.attr('layer-img') || nowimg.attr('src'));
          log.pid = nowimg.attr('pid');
          log.imgLen = imgs.length;
          log.imgsname = (page.title || '');
          log.name = nowimg.attr('layer-pname');
          log.imgIndex = page.start + 1;
      }
      
      var conf = {
          type: 1,
          border: [0],
          area: [(options.html ? 915 : 600) + 'px', 'auto'],
          title: false,
          shade: [.9, '#000', true],
          shadeClose: true,
          offset: ['25px', ''],
          bgcolor: '',
          page: {
              html: '<div class="xubox_bigimg"><img src="'+ log.thissrc +'" alt="'+ (log.name || '') +'" layer-pid="'+ (log.pid || '') +'"><div class="xubox_imgsee">'+ function(){
                  if(log.imgLen > 1){
                      return '<a href="" class="xubox_iconext xubox_prev"></a><a href="" class="xubox_iconext xubox_next"></a>'
                  } else {
                      return '';
                  }   
              }() +'<div class="xubox_imgbar"><span class="xubox_imgtit"><a href="javascript:;">'+ log.imgsname +' </a><em>'+ log.imgIndex +'/'+ log.imgLen +'</em></span></div></div></div>'+ function(){
                  if(options.html){
                      return '<div class="xubox_intro">'+ options.html +'</div>';
                  } else {
                      return '';
                  }
              }()
          }, success: function(layero){
              log.bigimg = layero.find('.xubox_bigimg');
              log.imgsee = log.bigimg.find('.xubox_imgsee');
              log.imgbar = log.imgsee.find('.xubox_imgbar');
              log.imgtit = log.imgbar.find('.xubox_imgtit');
              log.layero = layero;
              
              var img = log.imgs = log.bigimg.find('img');
              
              clearTimeout(log.timerr);
              log.timerr = setTimeout(function(){
                  $('html').css('overflow', 'hidden').attr('layer-full', log.index);
              }, 10);
              
              img.load(function(){
                  log.imgarea = [img.outerWidth(), img.outerHeight()];
                  log.resize(layero);
                  options.success && options.success(json || page);
              });
              
              log.event();
              
          }, end: function(){
              layer.closeAll();
              log.end = true;
          }
      };
      
      //一些动作
      log.event = function(){
          log.bigimg.hover(function(){
              log.imgsee.show();
          }, function(){
              log.imgsee.hide();
          });
          
          //上一张
          conf.imgprev = function(){
              log.imgIndex--;
              if(log.imgIndex < 1){
                  log.imgIndex = log.imgLen;
              }
              log.tabimg();
          };
          log.bigimg.find('.xubox_prev').on('click', function(event){
              event.preventDefault();
              conf.imgprev();
          });
          
          //下一张
          conf.imgnext = function(){
              log.imgIndex++;
              if(log.imgIndex > log.imgLen){
                  log.imgIndex = 1;
              }
              log.tabimg()
          };
          log.bigimg.find('.xubox_next').on('click', function(event){         
              event.preventDefault();
              conf.imgnext();
          });
          
          //方向键
          $(document).keyup(function(event){
              if(!log.end){
                  var code = event.keyCode;
                  event.preventDefault();
                  if(code === 37){
                      conf.imgprev();
                  } else if(code === 39) {
                      conf.imgnext();
                  } else if(code === 27) {
                      layer.close(log.index);
                  }
              }
          });
          
          
          log.tabimg = function(){
              var timer, src, pid, name;
              log.imgs.removeAttr('style');
              if(json){
                  var nowdata = data[log.imgIndex - 1];
                  src = nowdata.src;
                  pid = nowdata.pid;
                  name = nowdata.name;
              } else {
                  var thisimg = imgs.eq(log.imgIndex - 1);
                  src = thisimg.attr('layer-img') || thisimg.attr('src');
                  pid = thisimg.attr('layer-pid') || '';
                  name = thisimg.attr('layer-pname') || '';
              }
              log.imgs.attr({
                  src: src,
                  'layer-pid': pid,
                  alt: name
              });
              log.imgtit.find('em').text(log.imgIndex + '/' + log.imgLen);
              log.imgsee.show();
          }
      };
      
      //相册响应式
      log.resize = function(layero){
          var relog = {}, wa = [win.width(), win.height()];
          relog.limit = wa[0] - wa[0]/wa[1]*(60*wa[0]/wa[1]);
          if(relog.limit < 600){
              relog.limit = 600;
          }
          var area = [relog.limit,  wa[1] > 400 ? wa[1] - 50 : 400];
          area[0] = options.html ? area[0] : (area[0] - 300);
          layer.area(log.index, {
              width: area[0] + (options.html ? 15 : 0),
              height: area[1]
          });
          relog.flwidth = area[0] - (options.html ? 300 : 0);
          if(log.imgarea[0] > relog.flwidth){
              log.imgs.css({width: relog.flwidth});
          } else {
              log.imgs.css({width: log.imgarea[0]});
          }
          if(log.imgs.outerHeight() < area[1]){
              log.imgs.css({top: (area[1] - log.imgs.outerHeight())/2});
          }
          log.imgs.css({visibility: 'visible'});
          log.bigimg.css({width: relog.flwidth, height: area[1], 'background-color': options.bgcolor});
          if(options.html){
              layero.find('.xubox_intro').css({height: area[1]});
          }
          relog = null;
          wa = null;
          area = null;
      };
      
      win.on('resize', function(){
          if(log.end){
              return;
          }
          if(log.timer){
              clearTimeout(log.timer); 
          }
          log.timer = setTimeout(function(){
              log.resize(log.layero);
          }, 200); 
      });
      
      log.index = $.layer(conf);
      return log.index;
  };
  
  //获取页面元素包含的所有图片，快捷调用
  layer.photosPage = function(options){
      var log = {};
      log.run = function(index){
          layer.photos({
              html: options.html,
              success: options.success,
              page: {
                  title: options.title,
                  id: options.id,
                  start: index,
                  parent: options.parent
              }
          });
      };
      options = options || {};
      $(options.parent).find('img').each(function(index){
          $(this).on('click', function(){
              log.run(index);
          });
      });
  };
  
  ;!function(){
  layer.use('extend/layer.ext.js', function(){
      //初始加载即调用，所以需放在ext回调里
      layer.ext = function(){
          layer.photosPage({
              html:'<div style="padding:20px;">这里传入自定义的html<p>相册支持左右方向键，支持Esc关闭</p><p>另外还可以通过异步返回json实现相册。更多用法详见官网。</p><p>'+ unescape("%u7D20%u6750%u5BB6%u56ED%20-%20sc.chinaz.com") +'</p><p id="change"></p></div>',
              title: '快捷模式-获取页面元素包含的所有图片',
              id: 100, //相册id，可选
              parent:'#imgs'
          });
      };
  });
  }();