/*! 
 | 
  
 | 
 @Name:layer mobile v2.0.0 弹层组件移动版 
 | 
 @Author:贤心 
 | 
 @Site:http://layer.layui.com/mobie/ 
 | 
 @License:MIT 
 | 
     
 | 
 */ 
 | 
  
 | 
layui.define(function(exports){ 
 | 
   
 | 
  "use strict"; 
 | 
  
 | 
  var win = window, doc = document, query = 'querySelectorAll', claname = 'getElementsByClassName', S = function(s){ 
 | 
    return doc[query](s); 
 | 
  }; 
 | 
  
 | 
  //默认配置 
 | 
  var config = { 
 | 
    type: 0 
 | 
    ,shade: true 
 | 
    ,shadeClose: true 
 | 
    ,fixed: true 
 | 
    ,anim: 'scale' //默认动画类型 
 | 
  }; 
 | 
  
 | 
  var ready = { 
 | 
    extend: function(obj){ 
 | 
      var newobj = JSON.parse(JSON.stringify(config)); 
 | 
      for(var i in obj){ 
 | 
        newobj[i] = obj[i]; 
 | 
      } 
 | 
      return newobj; 
 | 
    },  
 | 
    timer: {}, end: {} 
 | 
  }; 
 | 
  
 | 
  //点触事件 
 | 
  ready.touch = function(elem, fn){ 
 | 
    elem.addEventListener('click', function(e){ 
 | 
      fn.call(this, e); 
 | 
    }, false); 
 | 
  }; 
 | 
  
 | 
  var index = 0, classs = ['layui-m-layer'], Layer = function(options){ 
 | 
    var that = this; 
 | 
    that.config = ready.extend(options); 
 | 
    that.view(); 
 | 
  }; 
 | 
  
 | 
  Layer.prototype.view = function(){ 
 | 
    var that = this, config = that.config, layerbox = doc.createElement('div'); 
 | 
  
 | 
    that.id = layerbox.id = classs[0] + index; 
 | 
    layerbox.setAttribute('class', classs[0] + ' ' + classs[0]+(config.type || 0)); 
 | 
    layerbox.setAttribute('index', index); 
 | 
     
 | 
    //标题区域 
 | 
    var title = (function(){ 
 | 
      var titype = typeof config.title === 'object'; 
 | 
      return config.title 
 | 
      ? '<h3 style="'+ (titype ? config.title[1] : '') +'">'+ (titype ? config.title[0] : config.title)  +'</h3>' 
 | 
      : ''; 
 | 
    }()); 
 | 
     
 | 
    //按钮区域 
 | 
    var button = (function(){ 
 | 
      typeof config.btn === 'string' && (config.btn = [config.btn]); 
 | 
      var btns = (config.btn || []).length, btndom; 
 | 
      if(btns === 0 || !config.btn){ 
 | 
        return ''; 
 | 
      } 
 | 
      btndom = '<span yes type="1">'+ config.btn[0] +'</span>' 
 | 
      if(btns === 2){ 
 | 
        btndom = '<span no type="0">'+ config.btn[1] +'</span>' + btndom; 
 | 
      } 
 | 
      return '<div class="layui-m-layerbtn">'+ btndom + '</div>'; 
 | 
    }()); 
 | 
     
 | 
    if(!config.fixed){ 
 | 
      config.top = config.hasOwnProperty('top') ?  config.top : 100; 
 | 
      config.style = config.style || ''; 
 | 
      config.style += ' top:'+ ( doc.body.scrollTop + config.top) + 'px'; 
 | 
    } 
 | 
     
 | 
    if(config.type === 2){ 
 | 
      config.content = '<i></i><i class="layui-m-layerload"></i><i></i><p>'+ (config.content||'') +'</p>'; 
 | 
    } 
 | 
     
 | 
    if(config.skin) config.anim = 'up'; 
 | 
    if(config.skin === 'msg') config.shade = false; 
 | 
     
 | 
    layerbox.innerHTML = (config.shade ? '<div '+ (typeof config.shade === 'string' ? 'style="'+ config.shade +'"' : '') +' class="layui-m-layershade"></div>' : '') 
 | 
    +'<div class="layui-m-layermain" '+ (!config.fixed ? 'style="position:static;"' : '') +'>' 
 | 
      +'<div class="layui-m-layersection">' 
 | 
        +'<div class="layui-m-layerchild '+ (config.skin ? 'layui-m-layer-' + config.skin + ' ' : '') + (config.className ? config.className : '') + ' ' + (config.anim ? 'layui-m-anim-' + config.anim : '') +'" ' + ( config.style ? 'style="'+config.style+'"' : '' ) +'>' 
 | 
          + title 
 | 
          +'<div class="layui-m-layercont">'+ config.content +'</div>' 
 | 
          + button 
 | 
        +'</div>' 
 | 
      +'</div>' 
 | 
    +'</div>'; 
 | 
     
 | 
    if(!config.type || config.type === 2){ 
 | 
      var dialogs = doc[claname](classs[0] + config.type), dialen = dialogs.length; 
 | 
      if(dialen >= 1){ 
 | 
        layer.close(dialogs[0].getAttribute('index')) 
 | 
      } 
 | 
    } 
 | 
     
 | 
    document.body.appendChild(layerbox); 
 | 
    var elem = that.elem = S('#'+that.id)[0]; 
 | 
    config.success && config.success(elem); 
 | 
     
 | 
    that.index = index++; 
 | 
    that.action(config, elem); 
 | 
  }; 
 | 
  
 | 
  Layer.prototype.action = function(config, elem){ 
 | 
    var that = this; 
 | 
     
 | 
    //自动关闭 
 | 
    if(config.time){ 
 | 
      ready.timer[that.index] = setTimeout(function(){ 
 | 
        layer.close(that.index); 
 | 
      }, config.time*1000); 
 | 
    } 
 | 
     
 | 
    //确认取消 
 | 
    var btn = function(){ 
 | 
      var type = this.getAttribute('type'); 
 | 
      if(type == 0){ 
 | 
        config.no && config.no(); 
 | 
        layer.close(that.index); 
 | 
      } else { 
 | 
        config.yes ? config.yes(that.index) : layer.close(that.index); 
 | 
      } 
 | 
    }; 
 | 
    if(config.btn){ 
 | 
      var btns = elem[claname]('layui-m-layerbtn')[0].children, btnlen = btns.length; 
 | 
      for(var ii = 0; ii < btnlen; ii++){ 
 | 
        ready.touch(btns[ii], btn); 
 | 
      } 
 | 
    } 
 | 
     
 | 
    //点遮罩关闭 
 | 
    if(config.shade && config.shadeClose){ 
 | 
      var shade = elem[claname]('layui-m-layershade')[0]; 
 | 
      ready.touch(shade, function(){ 
 | 
        layer.close(that.index, config.end); 
 | 
      }); 
 | 
    } 
 | 
  
 | 
    config.end && (ready.end[that.index] = config.end); 
 | 
  }; 
 | 
  
 | 
  var layer = { 
 | 
    v: '2.0 m', 
 | 
    index: index, 
 | 
     
 | 
    //核心方法 
 | 
    open: function(options){ 
 | 
      var o = new Layer(options || {}); 
 | 
      return o.index; 
 | 
    }, 
 | 
     
 | 
    close: function(index){ 
 | 
      var ibox = S('#'+classs[0]+index)[0]; 
 | 
      if(!ibox) return; 
 | 
      ibox.innerHTML = ''; 
 | 
      doc.body.removeChild(ibox); 
 | 
      clearTimeout(ready.timer[index]); 
 | 
      delete ready.timer[index]; 
 | 
      typeof ready.end[index] === 'function' && ready.end[index](); 
 | 
      delete ready.end[index]; 
 | 
    }, 
 | 
     
 | 
    //关闭所有layer层 
 | 
    closeAll: function(){ 
 | 
      var boxs = doc[claname](classs[0]); 
 | 
      for(var i = 0, len = boxs.length; i < len; i++){ 
 | 
        layer.close((boxs[0].getAttribute('index')|0)); 
 | 
      } 
 | 
    } 
 | 
  }; 
 | 
  
 | 
  exports('layer-mobile', layer); 
 | 
  
 | 
}); 
 |