UNPKG

landers.angular

Version:

landers.angular

1,223 lines (1,106 loc) 343 kB
;(function (root, jQuery, factory) { if (typeof exports === 'object' && typeof module !== 'undefined') { // CommonJS、CMD规范检查 module.exports = factory(jQuery); } else if (typeof define === 'function' && define.amd) { // AMD规范检查 define(factory); } else { root.Landers = root.Landers || {}; // 浏览器注册全局对象 Landers.animate = factory(jQuery); } })(this, jQuery, (function ($) { var CALLBACKS = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oAnimationEnd animationend'; function random_number(n1, n2){ var max = Math.max(n1,n2), min = Math.min(n1,n2); return parseInt(Math.random()*(max-min+1)) + min; } /** * [visible description] * @return {[type]} [description] */ $.fn.visible = function(){ return $(this).css('visibility', 'visible'); }; /** * [hidden description] * @return {[type]} [description] */ $.fn.hidden = function(){ return $(this).css('visibility', 'hidden'); }; /** * [boxsize description] * @param {[type]} size [description] * @return {[type]} [description] */ $.fn.boxsize = function(size) { if (size) { $(this).width(size.width).height(size.height); return this; } else { return { width: $(this).width(), height: $(this).height() } } }; return { effects:{ 'default' : {'in':'scaleUp', out:'scaleDown', random:true}, //fade 'fade1': {'in':'fadeIn', out:'fadeOut', 'duration-out':300, random:true}, 'fade2' : {'in':'pop_fadein', out:'pop_fadeout', random:true}, 'fade3' : {'in':'scaleUp', out:'pop_fadeout', random:true}, 'fade4' : {'in':'pop_fadein', out:'scaleDown', random:true}, //zoom 'zoom1': {'in':'scaleUp', out:'scaleDown', random:true}, 'zoom2': {'in':'zoomIn', out:'zoomOut', duration:500, random:true}, 'zoom3' : {'in':'pop_fadein3x', out:'pop_fadeout3x', random:true}, 'zoom4': {'in':'zoomInDown', out:'zoomOutDown'}, 'zoom5': {'in':'zoomInUp', out:'zoomOutUp'}, 'zoom6': {'in':'zoomInLeft', out:'zoomOutRight'}, 'zoom7': {'in':'zoomInRight', out:'zoomOutLeft'}, 'zoom8': {'in':'bounceIn', out:'bounceOut', duration:500, random:true}, //hmove 'hmove1': {'in':'bounceInLeft', out:'bounceOutRight', 'duration-in':500, 'duration-out':1000, random:true}, 'hmove2': {'in':'fadeInLeft', out:'fadeOutRight', 'duration-in':500, 'duration-out':300, random:true}, 'hmove3': {'in':'slideInRight', out:'slideOutRight', 'duration-in':500, 'duration-out':400}, 'hmove4': {'in':'slideInLeft', out:'slideOutLeft', 'duration-in':500, 'duration-out':400}, //vmove 'vmove1': {'in':'bounceInDown', out:'bounceOutDown', 'duration-in':500, 'duration-out':1000, random:true}, 'vmove2': {'in':'fadeInDown', out:'fadeOutUp', 'duration-in':200, 'duration-out':300, random:true}, //hflip 'hflip1': {'in':'flipInY', out:'flipOutY', duration:600}, 'hflip2': {'in':'flip', out:'scaleDown', 'duration-out':500}, //vflip 'vflip1': {'in':'flipInX', out:'flipOutX', duration:600, random:true}, //rotate 'rotate1': {'in':'rotateIn', out:'rotateOut', duration:500}, 'rotate2': {'in':'rotateInUpLeft', out:'rotateOutUpRight', duration:500, random:true}, 'rotate3': {'in':'rotateInDownLeft', out:'rotateOutUpRight', duration:500}, 'rotate4': {'in':'rotateInNewspaper', out:'rotateOutNewspaper'}, //roll 'roll1': {'in':'rollIn', out:'rollOut', duration:500}, //flash 'flash1': {'in':'flash', out:'flash', duration:500} }, random:function(){ var keys = []; for (var i in this.effects) { if (this.effects[i].random) keys.push(i); } var n = random_number(0, keys.length-1); return keys[n]; }, attach:function(xo, xclass, duration, callback){ var me = this; var $o = $(xo).show().visible().removeClass(xclass); xclass += ' animated'; if (duration) { $o.css({'animation-duration': duration + 'ms' }); $o.css({'transition-duration': duration + 'ms' }); } $o.addClass(xclass).one(CALLBACKS, function(){ $o.removeClass(xclass); callback && callback(); }); }, show:function(xin, effect, callback) { var effects = this.effects[effect || 'default']; var class_in = effects['in']; var duration = effects['duration-in'] || effects['duration']; this.attach(xin, class_in, duration, function(){ $(xin).show(); callback && callback(); }); }, hide:function(xout, effect, callback){ var effects = this.effects[effect || 'default']; var class_out = effects['out']; var duration = effects['duration-out'] || effects['duration']; this.attach(xout, class_out, duration, function(){ $(xout).hide(); callback && callback(); }); }, transitive:function(xout, effect_out, xin, effect_in, callback, is_sync){ var me = this; effect_out = effect_out || 'default'; effect_in = effect_in || 'default'; if (is_sync) { me.hide(xout, effect_out); me.show(xin, effect_in, function(){ callback && callback(); }); } else { me.hide(xout, effect_out, function(){ me.show(xin, effect_in, function(){ callback && callback(); }); }); } } }; })); ; (function (window, $) { window.Landers = window.Landers || {}; Landers.env = Landers.env || { path:{}, config:{ cache:false, debug:false }, currentScript:function(){ var scripts = document.getElementsByTagName('script'); return scripts[scripts.length-1]; }, currentUrlParam:function(name, url){ url = url || document.location.href; var a = url.split('?'); url = a[0]; var params = a[1]; if (!params) return; a = params.split('&'); var j = {}; for(var i=0; i<a.length; i++) { var aa = a[i].split('='); j[aa[0]] = aa[1]; } return name ? j[name] : j; }, currentUrl:function(){ var url1 = this.currentScript().getAttribute('src'); //必须用getAttribute,否则IE=EmulateIE7写与不写两种结果 var url2 = this.currentUrlParam('url', url1); return url2 || url1; } }; $.extend(Landers.env.path, { home:'', script:'/static/script/', ui:{ css:'/static/css/' } }); })(this, jQuery); /* * Purl (A JavaScript URL parser) v2.3.1 * Developed and maintanined by Mark Perkins, mark@allmarkedup.com * Source repository: https://github.com/allmarkedup/jQuery-URL-Parser * Licensed under an MIT-style license. See https://github.com/allmarkedup/jQuery-URL-Parser/blob/master/LICENSE for details. */ ;(function(factory) { if (typeof define === 'function' && define.amd) { define(factory); } else { window.purl = factory(); } })(function() { var tag2attr = { a : 'href', img : 'src', form : 'action', base : 'href', script : 'src', iframe : 'src', link : 'href', embed : 'src', object : 'data' }, key = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'fragment'], // keys available to query aliases = { 'anchor' : 'fragment' }, // aliases for backwards compatability parser = { strict : /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, //less intuitive, more accurate to the specs loose : /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ // more intuitive, fails on relative paths and deviates from specs }, isint = /^[0-9]+$/; function parseUri( url, strictMode ) { var str = decodeURI( url ), res = parser[ strictMode || false ? 'strict' : 'loose' ].exec( str ), uri = { attr : {}, param : {}, seg : {} }, i = 14; while ( i-- ) { uri.attr[ key[i] ] = res[i] || ''; } // build query and fragment parameters uri.param['query'] = parseString(uri.attr['query']); uri.param['fragment'] = parseString(uri.attr['fragment']); // split path and fragement into segments uri.seg['path'] = uri.attr.path.replace(/^\/+|\/+$/g,'').split('/'); uri.seg['fragment'] = uri.attr.fragment.replace(/^\/+|\/+$/g,'').split('/'); // compile a 'base' domain attribute uri.attr['base'] = uri.attr.host ? (uri.attr.protocol ? uri.attr.protocol+'://'+uri.attr.host : uri.attr.host) + (uri.attr.port ? ':'+uri.attr.port : '') : ''; return uri; } function getAttrName( elm ) { var tn = elm.tagName; if ( typeof tn !== 'undefined' ) return tag2attr[tn.toLowerCase()]; return tn; } function promote(parent, key) { if (parent[key].length === 0) return parent[key] = {}; var t = {}; for (var i in parent[key]) t[i] = parent[key][i]; parent[key] = t; return t; } function parse(parts, parent, key, val) { var part = parts.shift(); if (!part) { if (isArray(parent[key])) { parent[key].push(val); } else if ('object' == typeof parent[key]) { parent[key] = val; } else if ('undefined' == typeof parent[key]) { parent[key] = val; } else { parent[key] = [parent[key], val]; } } else { var obj = parent[key] = parent[key] || []; if (']' == part) { if (isArray(obj)) { if ('' !== val) obj.push(val); } else if ('object' == typeof obj) { obj[keys(obj).length] = val; } else { obj = parent[key] = [parent[key], val]; } } else if (~part.indexOf(']')) { part = part.substr(0, part.length - 1); if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); parse(parts, obj, part, val); // key } else { if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); parse(parts, obj, part, val); } } } function merge(parent, key, val) { if (~key.indexOf(']')) { var parts = key.split('['); parse(parts, parent, 'base', val); } else { if (!isint.test(key) && isArray(parent.base)) { var t = {}; for (var k in parent.base) t[k] = parent.base[k]; parent.base = t; } if (key !== '') { set(parent.base, key, val); } } return parent; } function parseString(str) { return reduce(String(str).split(/&|;/), function(ret, pair) { try { pair = decodeURIComponent(pair.replace(/\+/g, ' ')); } catch(e) { // ignore } var eql = pair.indexOf('='), brace = lastBraceInKey(pair), key = pair.substr(0, brace || eql), val = pair.substr(brace || eql, pair.length); val = val.substr(val.indexOf('=') + 1, val.length); if (key === '') { key = pair; val = ''; } return merge(ret, key, val); }, { base: {} }).base; } function set(obj, key, val) { var v = obj[key]; if (typeof v === 'undefined') { obj[key] = val; } else if (isArray(v)) { v.push(val); } else { obj[key] = [v, val]; } } function lastBraceInKey(str) { var len = str.length, brace, c; for (var i = 0; i < len; ++i) { c = str[i]; if (']' == c) brace = false; if ('[' == c) brace = true; if ('=' == c && !brace) return i; } } function reduce(obj, accumulator){ var i = 0, l = obj.length >> 0, curr = arguments[2]; while (i < l) { if (i in obj) curr = accumulator.call(undefined, curr, obj[i], i, obj); ++i; } return curr; } function isArray(vArg) { return Object.prototype.toString.call(vArg) === "[object Array]"; } function keys(obj) { var key_array = []; for ( var prop in obj ) { if ( obj.hasOwnProperty(prop) ) key_array.push(prop); } return key_array; } function purl( url, strictMode ) { if ( arguments.length === 1 && url === true ) { strictMode = true; url = undefined; } strictMode = strictMode || false; url = url || window.location.toString(); return { data : parseUri(url, strictMode), // get various attributes from the URI attr : function( attr ) { attr = aliases[attr] || attr; return typeof attr !== 'undefined' ? this.data.attr[attr] : this.data.attr; }, // return query string parameters param : function( param ) { return typeof param !== 'undefined' ? this.data.param.query[param] : this.data.param.query; }, // return fragment parameters fparam : function( param ) { return typeof param !== 'undefined' ? this.data.param.fragment[param] : this.data.param.fragment; }, // return path segments segment : function( seg ) { if ( typeof seg === 'undefined' ) { return this.data.seg.path; } else { seg = seg < 0 ? this.data.seg.path.length + seg : seg - 1; // negative segments count from the end return this.data.seg.path[seg]; } }, // return fragment segments fsegment : function( seg ) { if ( typeof seg === 'undefined' ) { return this.data.seg.fragment; } else { seg = seg < 0 ? this.data.seg.fragment.length + seg : seg - 1; // negative segments count from the end return this.data.seg.fragment[seg]; } } }; } purl.jQuery = function($){ if ($ != null) { $.fn.url = function( strictMode ) { var url = ''; if ( this.length ) { url = $(this).attr( getAttrName(this[0]) ) || ''; } return purl( url, strictMode ); }; $.url = purl; } }; purl.jQuery(window.jQuery); return purl; }); ; (function (window, $) { window.Landers = window.Landers || {}; Landers.url = Landers.url || { real: function(url){ var s1 = '../', s2 = '/'; while(url.indexOf(s1) > -1) { var arr = url.split(s1); var left = arr[0] || ''; var right = arr.slice(1).join(s1); if (left) { left = left.split(s2); if (!left[left.length-1]) left.pop(); left.pop(); left = left.join(s2); } url = left + s2 + right; } return url; }, build:function(protocol, host, path, port){ var ret = protocol + host; if (port && port!=80) ret += ':' + port; path = path || ''; var _ = path.indexOf('/')===0 ? '' : '/'; ret += _ + path; return ret; }, qs:{ parse:function(str){ if (typeof str !== 'string') { return {}; } str = str.trim().replace(/^(\?|#)/, ''); if (!str) { return {}; } return str.trim().split('&').reduce(function (ret, param) { var parts = param.replace(/\+/g, ' ').split('='); var key = parts[0]; var val = parts[1]; key = decodeURIComponent(key); // missing `=` should be `null`: // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters val = val === undefined ? null : decodeURIComponent(val); if (!ret.hasOwnProperty(key)) { ret[key] = val; } else if (Array.isArray(ret[key])) { ret[key].push(val); } else { ret[key] = [ret[key], val]; } return ret; }, {}); }, stringify:function(obj){ return obj ? Object.keys(obj).map(function (key) { var val = obj[key]; if (Array.isArray(val)) { return val.map(function (val2) { return encodeURIComponent(key) + '=' + encodeURIComponent(val2); }).join('&'); } return encodeURIComponent(key) + '=' + encodeURIComponent(val); }).join('&') : ''; }, get:function(key, url) { url = url || document.location.href; var ret = null, submatch; if (submatch = url.match(/\?([^#]*)#?/)){ var s = '&' + submatch[1]; var ret = this.parse(s); if (ret) delete ret['']; return key ? ret[key] : ret; } else { return ''; } }, set:function(url, params){ url = url || document.location.href; var parse = Landers.url.parse(url); var anchor = parse.anchor ? ('#' + parse.anchor) : ''; if ( anchor ) url = url.replace(anchor, ''); for ( var key in params ){ var val = params[key]; val = encodeURI(val); var reg = new RegExp('(\\?|&)'+ key +'=([^&]*)(&|$)','gi'); var pst = url.match(reg); if (typeof pst == 'undefined' || pst === null){ url += ((url.indexOf('?')==-1)?'?':'&') + key + '=' + val; continue; } var t = pst[0]; var retxt = t.substring(0,t.indexOf('=')+1) + val; if (t.charAt(t.length-1)=='&') retxt += '&'; url = url.replace(reg,retxt); } url += anchor; return url; } }, parse: function(url, key) { var parse = purl(url); var attr = parse.attr(); attr['port'] = attr['port'] || { http:80, https:443, ftp:21 }[attr['protocol']] || ''; // 兼容原先调用 attr['anchor'] = attr['fragment']; attr['pwd'] = attr['password']; attr['filename'] = attr['file']; var arr_file = attr['file'].split('.'); attr['basename'] = arr_file[0]; attr['extname'] = arr_file[1]; attr['dirname'] = attr['base'] + attr['directory']; attr['domain'] = attr['host']; attr['query'] = parse.data.param.query; return key ? attr[key] : attr; } }; })(this, jQuery); ; (function (window, $) { window.Landers = window.Landers || {}; Landers.loader = Landers.loader = { delay:300, counts:0, is_ready:function(o){ return !o.readyState || o.readyState === 'loaded' || o.readyState === 'complete'; }, onload_callback:function(o, callback){ var me = this; if (navigator.userAgent.toLowerCase().match(/apple/) === null) { o.onload = o.onreadystatechange = function() { if (me.is_ready(o)) { o.onload = o.onreadystatechange = null; callback && setTimeout(callback , me.delay); } }; } else callback && setTimeout(callback , me.delay); }, js: function(urls, callback, opts){//opts = {win} opts = opts || {}; if (!Array.isArray(urls)) urls = [urls]; var me = this, owin = opts.win || window, doc = owin.document; var ohead = doc.getElementsByTagName('head').item(0); var load = function(url, _callback){ var o = doc.createElement('script'); var src = !Landers.env.cache ? Landers.url.qs.set( url, {_:Math.random()} ) : url; o.setAttribute("src", src); ohead.appendChild(o); me.onload_callback(o, _callback); return o; }; if (urls.length == 1) { return load(urls[0], callback); } else { (function(i){ var self = arguments.callee; var url = urls[i]; if (url) { load(url, function(){ self(i+1); }); } else { callback && callback(); } })(0); } }, jsm:function(mods, callback, opts){//opts = {is_jq, win} if (!Landers.dynamicLoad) return callback && callback(); var is_css = opts === true; //兼容老式(第三参数为 has_css)调用 opts = is_css ? {} : (opts || {}); opts.checks = opts.checks || []; if (!$.isArray(opts.checks)) opts.checks = [opts.checks]; var me = this, ret = {modules:[], css:$(), js:$()}; var script = Landers.env.path.script; var that = this; var loadmod = function(mod, _callback) { var a = mod.split(','); var modname = a[0], css = is_css || a[1], force = a[2]; css = css === '0' || css === 'false' || css ==='' ? false : css; var path = script + modname + '/'; var jsurl = path + modname + '.js'; var __callback = function(){ setTimeout(function(){ if (_callback) _callback(); }, 200); }; var onload = function(){ var module = Landers[modname]; if (!module) module = Landers[modname] = {}; ret.modules.push(module); module.mod_path = path; if (typeof module.mod_init == 'function') { module.mod_init(__callback); } else __callback(); }; if (!Landers[modname] || force) { //console.log('loading module [' + modname + ']'); if (css) { var cssurl = path + (css.toString().toLowerCase() == 'true' ? modname + '.css' : (css.lastIndexOf('.css') > -1 ? css : (css + '/' + modname + '.css'))); ret.css = ret.css.add(me.css(cssurl, function(){ ret.js = ret.js.add(me.js(jsurl, onload, opts)); }, opts)); } else { ret.js.push(me.js(jsurl, onload, opts)); } } else { ret.modules.push(Landers[modname]); __callback(); } }; if (!$.isArray(mods)) mods = [mods]; var is_ispin = (function(){ var bool = false; for (var i=0; i<mods.length-1; i++) { var a = mods[i].split(','); bool = bool || !Landers[a[0]]; } return bool; })(); (function(i){ var self = arguments.callee; if (i < mods.length) { if (opts.checks[i]) { self(i+1); that.counts++; } else { loadmod(mods[i], function(){ self(i+1); that.counts++; }); } } else { callback && callback.call(mods.length == 1 ? ret.modules[0] : ret, ret); } })(0); }, css:function(url, callback, opts){ //opts: win opts = opts || {}; var owin = opts.win || window, doc = owin.document; var ohead = doc.getElementsByTagName('head').item(0); var me = this, o = doc.createElement('link'); var href = !Landers.env.cache && Landers.url ? Landers.url.qs.set(url, {_:Math.random()}) : url; o.setAttribute("href", href); o.setAttribute("rel", "Stylesheet"); o.setAttribute("type", "text/css"); ohead.appendChild(o); me.onload_callback(o, callback); return $(o); }, cssm:function(mods, callback){ if (!Landers.dynamicLoad) return callback(); var me = this; if (typeof mods == 'string') mods = mods.split(','); (function(i){ var self = arguments.callee; var _callback = i > mods.length ? function(){self(i+1);} : callback; var mod = $.trim(mods[i]); me.css(Landers.env.path.ui.css + mod + '/' + mod + '.css', _callback); })(0); } }; })(this, jQuery); ; (function (window, jq) { window.Landers = window.Landers || {}; function case_one_argument(arg){ var content = ''; if (jq.isPlainObject(arg)){ var arr = []; for (var k in arg) { arr.push(k + ' ' + arg[k]); } content = arr.join('\n'); } else if (jq.isArray(arg)) { content = arg.join('\n'); } else { content = arg; } return content; } function case_two_arguments(arg1, arg2) { var content = ''; if (jq.isPlainObject(arg2)){ var arr = []; for (var k in arg2) { arr.push(k + ':' + arg2[k]); } content = arr.join(';'); } else if (jq.isArray(arg2)) { content = arg2.join(';'); } else { content = arg2; } return arg1 + ' {' + content + '}'; } function append_style(content){ try { //高版本浏览器 var $head = jq('head', window.document); var $style = jq('<style></style>') .appendTo($head) .attr({type:'text/css'}); $style.append('\n' + content + '\n'); } catch(e) { //低版本浏览器,如ie8 var sheets = document.styleSheets; var sheet = sheets[0] || document.createStyleSheet(); var arr = content.match(/(.*?)\{(.*?)\}/g); if (arr) { for (var i=0; i<arr.length; i++) { var match = arr[i].match(/(.*?)\{(.*?)\}/); var k = jq.trim(match[1]), v = jq.trim(match[2]); sheet.addRule(k, v); } } } } Landers.css = Landers.css || { add:function(){ var content; // 一个参数情况 if (arguments.length == 1) { content = case_one_argument(arguments[0]); } // 两个参数情况 if (arguments.length == 2) { content = case_two_arguments(arguments[0], arguments[1]); } append_style(content); }, remove:function(k){ this.add(k, ''); } }; })(window, jQuery); ;(function (root, jQuery, factory) { if (typeof exports === 'object' && typeof module !== 'undefined') { // CommonJS、CMD规范检查 module.exports = factory(jQuery); } else if (typeof define === 'function' && define.amd) { // AMD规范检查 define(factory); } else { root.Landers = root.Landers || {}; // 浏览器注册全局对象 Landers.parseArgs = factory(jQuery); } })(this, jQuery, (function ($) { function get_type(xvar){ if (xvar instanceof $) { return 'jobject'; } if ($.isPlainObject(xvar)) { return 'json'; } if ($.isArray(xvar)) { return 'array'; } return typeof xvar; } return function(args, maps){ var ret = {}, enums; maps = maps || {}; //找出enum项 for(var k in maps) { var arr = k.match(/^__ENUM:(.*)$/); if (arr) { enums = enums || {}; enums[k] = eval('(' + arr[1] + ')'); } } for (var i=0; i<args.length; i++) { var type = get_type(args[i]); if (enums && (type == 'string' || type == 'number')) { var tmp = false; for (var j in enums) { if ($.inArray(args[i], enums[j])) { ret[maps[j]] = args[i]; delete enums[j]; tmp = true; } } if (tmp) continue; } if (maps[type]) { ret[maps[type]] = args[i]; } else { ret[type] = args[i]; } }; return ret; } })); //Spiner !function(a,b){"object"==typeof exports?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Spinner=b()}(this,function(){"use strict";function a(a,b){var c,d=document.createElement(a||"div");for(c in b)d[c]=b[c];return d}function b(a){for(var b=1,c=arguments.length;c>b;b++)a.appendChild(arguments[b]);return a}function c(a,b,c,d){var e=["opacity",b,~~(100*a),c,d].join("-"),f=.01+c/d*100,g=Math.max(1-(1-a)/b*(100-f),a),h=j.substring(0,j.indexOf("Animation")).toLowerCase(),i=h&&"-"+h+"-"||"";return l[e]||(m.insertRule("@"+i+"keyframes "+e+"{0%{opacity:"+g+"}"+f+"%{opacity:"+a+"}"+(f+.01)+"%{opacity:1}"+(f+b)%100+"%{opacity:"+a+"}100%{opacity:"+g+"}}",m.cssRules.length),l[e]=1),e}function d(a,b){var c,d,e=a.style;for(b=b.charAt(0).toUpperCase()+b.slice(1),d=0;d<k.length;d++)if(c=k[d]+b,void 0!==e[c])return c;return void 0!==e[b]?b:void 0}function e(a,b){for(var c in b)a.style[d(a,c)||c]=b[c];return a}function f(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)void 0===a[d]&&(a[d]=c[d])}return a}function g(a,b){return"string"==typeof a?a:a[b%a.length]}function h(a){this.opts=f(a||{},h.defaults,n)}function i(){function c(b,c){return a("<"+b+' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">',c)}m.addRule(".spin-vml","behavior:url(#default#VML)"),h.prototype.lines=function(a,d){function f(){return e(c("group",{coordsize:k+" "+k,coordorigin:-j+" "+-j}),{width:k,height:k})}function h(a,h,i){b(m,b(e(f(),{rotation:360/d.lines*a+"deg",left:~~h}),b(e(c("roundrect",{arcsize:d.corners}),{width:j,height:d.width,left:d.radius,top:-d.width>>1,filter:i}),c("fill",{color:g(d.color,a),opacity:d.opacity}),c("stroke",{opacity:0}))))}var i,j=d.length+d.width,k=2*j,l=2*-(d.width+d.length)+"px",m=e(f(),{position:"absolute",top:l,left:l});if(d.shadow)for(i=1;i<=d.lines;i++)h(i,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(i=1;i<=d.lines;i++)h(i);return b(a,m)},h.prototype.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d<e.childNodes.length&&(e=e.childNodes[b+d],e=e&&e.firstChild,e=e&&e.firstChild,e&&(e.opacity=c))}}var j,k=["webkit","Moz","ms","O"],l={},m=function(){var c=a("style",{type:"text/css"});return b(document.getElementsByTagName("head")[0],c),c.sheet||c.styleSheet}(),n={lines:12,length:7,width:5,radius:10,rotate:0,corners:1,color:"#000",direction:1,speed:1,trail:100,opacity:.25,fps:20,zIndex:2e9,className:"iSpinner",top:"50%",left:"50%",position:"absolute"};h.defaults={},f(h.prototype,{spin:function(b){this.stop();{var c=this,d=c.opts,f=c.el=e(a(0,{className:d.className}),{position:d.position,width:0,zIndex:d.zIndex});d.radius+d.length+d.width}if(e(f,{left:d.left,top:d.top}),b&&b.insertBefore(f,b.firstChild||null),f.setAttribute("role","progressbar"),c.lines(f,c.opts),!j){var g,h=0,i=(d.lines-1)*(1-d.direction)/2,k=d.fps,l=k/d.speed,m=(1-d.opacity)/(l*d.trail/100),n=l/d.lines;!function o(){h++;for(var a=0;a<d.lines;a++)g=Math.max(1-(h+(d.lines-a)*n)%l*m,d.opacity),c.opacity(f,a*d.direction+i,g,d);c.timeout=c.el&&setTimeout(o,~~(1e3/k))}()}return c},stop:function(){var a=this.el;return a&&(clearTimeout(this.timeout),a.parentNode&&a.parentNode.removeChild(a),this.el=void 0),this},lines:function(d,f){function h(b,c){return e(a(),{position:"absolute",width:f.length+f.width+"px",height:f.width+"px",background:b,boxShadow:c,transformOrigin:"left",transform:"rotate("+~~(360/f.lines*k+f.rotate)+"deg) translate("+f.radius+"px,0)",borderRadius:(f.corners*f.width>>1)+"px"})}for(var i,k=0,l=(f.lines-1)*(1-f.direction)/2;k<f.lines;k++)i=e(a(),{position:"absolute",top:1+~(f.width/2)+"px",transform:f.hwaccel?"translate3d(0,0,0)":"",opacity:f.opacity,animation:j&&c(f.opacity,f.trail,l+k*f.direction,f.lines)+" "+1/f.speed+"s linear infinite"}),f.shadow&&b(i,e(h("#000","0 0 4px #000"),{top:"2px"})),b(d,b(i,h(g(f.color,k),"0 0 1px rgba(0,0,0,.1)")));return d},opacity:function(a,b,c){b<a.childNodes.length&&(a.childNodes[b].style.opacity=c)}});var o=e(a("group"),{behavior:"url(#default#VML)"});return!d(o,"transform")&&o.adj?i():j=d(o,"animation"),h}); ; (function (window, jq) { window.Landers = window.Landers || {}; var classname = 'landers-response'; var sizes = { big: {width:120, height:120, icon_size:90, text_size: 18, text_bottom: 10}, small: {width:70, height:70, icon_size:54, text_size: 12, text_bottom: 4}, long: {width:200, height:75, icon_size:54, text_size: 13, text_bottom: 7}, xlong: {width:300, height:75, icon_size:54, text_size: 13, text_bottom: 7} }; function parse_args(args){ var ret = Landers.parseArgs(args, { 'number' : 'delay', 'jobject': 'wrap', 'array' : 'data', 'json' : 'data', 'string' : 'size', 'function': 'callback', }); ret.wrap = ret.wrap || jq('body'); return ret; } function str_len(s) { return s.replace(/[\u0391-\uFFE5]/g,' ').length; } function is_mobile(){ return navigator.userAgent.match(/(iPhone|iPod|Android|ios|iOS|iPad|Backerry|WebOS|Symbian|Windows Phone|Phone)/i); } /** * [overlay description] * @param {[type]} act [description] * @param {[type]} opts [description] * @return {[type]} [description] */ jq.fn.overlay = jq.fn.overlay || function(act, opts) { act = act.toLowerCase(); opts = opts || {}; var $jq = $(this), delay = 300, data_key = 'overlay'; if (!$.isWindow($jq.get(0)) && !$jq.get(0).tagName.toLowerCase() == 'body') { $jq.css({ position: 'relative' }); }; switch (act) { case 'show': var mysize = { width: $jq.width(), height: $jq.height(), scroll_width: $jq.get(0).scrollWidth, scroll_height: $jq.get(0).scrollHeight }; var opacity = opts.alpha || opts.opacity; if (opacity === undefined) opacity = 0.2; if (opacity > 1) opacity = opacity / 100; $jq.data(data_key, $('<div></div>').css({ width: '100%', height: Math.max(mysize.height, mysize.scroll_height), position: 'absolute', left: '0px', top: '0px', filter: 'alpha(opacity=' + (opacity * 100) + ')', opacity: opacity, 'background-color': opts.bgcolor || '#000000', 'z-index': opts.zindex || 4001 }).appendTo($jq).fadeIn(delay)); break; case 'hide': $($jq.data(data_key)).fadeOut(delay, function() { $(this).remove(); }); $jq.data(data_key, null); } return this; }; /** * [setCenter description] */ $.fn.setCenter = $.fn.setCenter || function() { var $jq = $(this); $jq.css({ 'text-align': 'center', 'vertical-align': 'middle', 'left': '50%', 'top': '50%' }); var pos = $jq.css('position'); if (pos == 'absolute' || pos == 'fixed') { $jq.css({ 'margin-left': -$jq.width() / 2 + 'px', 'margin-top': -$jq.height() / 2 + 'px' }); } else { $jq.css({ magin: '0 auto' }); }; return $jq; }; /** * [showSpin description] * @param {[type]} opts [description] * @return {[type]} [description] */ $.fn.showSpin = function(opts) { this.each(function() { var $this = $(this), data = $this.data(); if (data.spinner) { data.spinner.stop(); delete data.spinner; } if (opts !== false) { opts = $.extend({ color: $this.css('color') }, opts); data.spinner = new Spinner(opts).spin(this); } }); return this; }; window.Landers.response = { mod_complete:false, init_mod:function(){ var that = this; if (that.mod_complete) return; var sizeK = is_mobile() ? 1 : 1; for (var i in sizes) { for (var j in sizes[i]) { sizes[i][j] *= sizeK; } } var dot_class = '.' + classname; Landers.css.add([ dot_class + '{position:fixed; overflow:hidden; z-index:5001;}', dot_class + '.absolute{position:absolute; overflow:hidden;}', dot_class + ' .response-mask{background-color:#000000; filter:alpha(opacity=70);opacity:0.7; width:100%; height:100%;border-radius:10px;}', dot_class + ' .response-main{width:100%; height:100%; left:0px; top:0px; position:absolute; padding:0px}', dot_class + ' .response-main .text{position:absolute; width:100%; left:0px; bottom:; text-align:center; color:#FFFFFF; font-family:"Microsoft Yahei"; font-size:18px; line-height:150%; letter-spacing:0px; padding:0px; float:none;}', dot_class + ' .response-main .icon{position:relative; margin:0 auto; }', dot_class + ' .response-main .icon.alone{position:absolute; left:50%; top:50%;}', dot_class + ' .response-main .icon.success{background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAHGSURBVFiF5Zc9L0RBFIbfKwpZQRRCKUGBWqUQShKR1RCJTiNRoBGikKg1Ko3GV8Iv2FKhWFtQ+Ej8ABRINCSER2E2ubFm5t7de23hJJPczDtn3ufMnju7GwCqZtRU1f0/AhQkYcbJXwJkJOUkdYXmeiTlBKQ92oEdLJG2eSewbTMHCFJ8DeskbUmatuifkl7T7IFNSaMO/UHSQFpHvwF8Ok7+BhgDlLRxC7Di+syBS2CimJOkeT2w5DF/AsbDeUkCLAL3HoBJoCGcVxtqijlJveb5RtJGjIZbkDQvqdWif0ialXRQohiSKeAlRPpu5gJP1YFZ9+6o+hZYtu1RfLDFGJCxJGeM7opHYNVVhA/gDhixJA8b3RVrQHMlAADnQPZHYhY48+StA20u8zDAFvDm2OwamAmNK8faD7Ofr39KXsNt4NlTlS+egd0oxr8BNAGHFQIcmX3KAhDQDeyVab5v8mNdYL9NdhD/JA75/u6PfYPahEaggPuCwegFsz62uQsg4PuiufAAXJh1kTo+DkBx9AGnFvOC0csyjgogYBA4/mF+DAxVah4VoHgSeWOeT6LyuAAC+g1Af1LmgNL8VRwp/t1/w5L4AvrA0tNR4xPOAAAAAElFTkSuQmCC) no-repeat center 40%;background-size:60% 60%;}', dot_class + ' .response-main .icon.error{background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALUSURBVHja1Jm9SxxBGIfX7e4ggWv2ao8LHFcFrhCra0ISjoNtEkhz2B2xC/dXpBHLuFYiwkHSGAThSJNKCGzAyohGrM9CENF0Xn4T3pFxMrPzsWvivvA0c7OzjzM773w4N5vNAo9ogQXwFLTBPKiDR0KdSzAFp+AA7INv4ND1ZXMOkhUQgx54ASKPP+4MTMAu+Ax+WT3FJC14BbZnxcY2tWt8v6knm2AZvAVVxe+HNIT7NKSnNMR1+gTa9Eks0CcixzVYAx/AT5+e7IIdRQ9cgzEYgMhyJCKqP6bn5dih9ymf1zX6EuwpGvsEYksxHTG1I8cevddKsqsQPAYjUM0pyKlSe8cK0a5JsqkY4q+gX5CcTJ/al4e+mSW5ohBcvCdBzqJCdEUnydLBlTTE/XsWFHtUHPorMT3xShVFHhz9I0HOSJFHK6LkG8UsNk2ShodIzTCZ5FnPvIKQ0mVPSJ1sqdqiRKuLBKSg47Aksron9GygSexb0lLZ48m8BaaC/djQG4lQ9xx0LHqwQ3V5JBl1x0I95tUKackSNwu7Fj3Cowa+GHr0GdWpSW3UNPXF90d//GC6Kpj/sFjq2HeVSt+OrkeHipUlNXybEXnwWGWFE6Fgw2ECmER9BDkbwjMTVnAkFLxznKk60TyCAXnwOGIFF0LBc4+UohLNIxiQB48LVnAjFDzxzH1pxubWVTAgDx43suRjz9WCSZwUJBiQx61kKE3/euAXr0FDUd6gFOQadzxCOtXxmPdocJixirBc+JHquITocRnSmYRHuwDBdfBdsYy6iIoeU988qcuDiWEyDS3b/itPuq44JsEgp6hyxVmSGhkUIJhHdCDVXfLZBZ1bCmaJpi67IP7DpnSuji23XYlHws/KnbF0Lt/MszNnou89En6SIajdmZfqjFOK02Jpzt2lucEoxV1QaW7VHtz9ZOlvektzZ/4g/vvgIvnf/o/zW4ABACoGPR3pRRjzAAAAAElFTkSuQmCC) no-repeat center 40%;background-size:65% 65%;}' ]); this.mod_complete = true; }, create:function(size, $wrap, opts){ var that = this, html = ''; opts = opts || {}; size = sizes[size]; that.init_mod(); that.hide($wrap); html += '<div class="' + classname + '">'; html += ' <div class="response-mask"></div>'; html += ' <div class="response-main">'; html += ' <div class="icon"></div>'; html += ' <div class="text"></div>'; html += ' </div>'; html += '</div>'; var $o = jq(html).boxsize(size).appendTo($wrap).setCenter().hide(); if ( !$o.closest('.art_dialog').length ) { $o.css('top', '35%'); } $o.find('.text').css({ 'font-size': size.text_size + 'px', 'bottom': size.text_bottom + 'px' }); $o.find('.icon').width(size.icon_size).height(size.icon_size); if ($wrap.get(0).tagName.toLowerCase() != 'body') { $o.addClass('absolute'); var top = Math.abs( ($wrap.outerHeight()- $o.height())/2 ); top += $wrap.get(0).scrollTop - parseInt($o.css('margin-top')); $o.css('top', top ); }; var effect = opts.effect || 'default'; if (effect == 'random') effect = Landers.animate.random(); Landers.animate.show($o, effect); return $o; //return $o.fadeIn(600); }, success:function(text, delay){ this.show([0, text], delay); }, error:function(text, delay){ this.show([10, text], delay); }, msgbox:function(rspn, delay, $wrap) { this.show(rspn, delay, $wrap); }, show:function(){ var that = this, opts; var args = arguments; if (args.length == 1) { if (jq.isPlainObject(args[0])) { opts = args[0]; } else { opts = parse_args(args[0]); } } else { opts = parse_args(args); } var data = opts.data; var $wrap = opts.wrap; var callback = opts.callback; if (!data) return that.hide($wrap, 500, callback); var is_error, text; if (jq.isArray(data)) { is_error = data[0]; text = data[1]; } else { is_error = !data.success; text = data.message; if (!text && data.errors) { text = []; for (var k in data.errors) { var t = data.errors[k][0] ? data.errors[k][0] : data.errors[k]; text.push(t); } if (text.length > 1) { text = text.map(function(item, i){ return (i+1) + '. ' + item; }); } text = text.join('\n'); } } if (!text) return that.hide($wrap, 500, callback); //text为空为未定义 var len = str_len(text); if ( len >= 42 || text.indexOf('\n') >= 0) { that.hide($wrap, 500, callback); if (Landers.msgbox) { Landers.msgbox({ succes: false, message : text }); } else { alert(text); } return; } if ( len >= 18) opts.size = 'xlong'; var delay = opts.delay || (opts.delay !== false ? 3000 : 0); var icon = is_error ? 'error' : 'success'; var size = opts.size || 'long'; var $o = that.create(size, $wrap, opts); $o.find('.text').html(text); $o.find('.icon').addClass(icon); if (delay >= 0) that.hide($wrap, delay, callback); }, loading:function(){ var args = Landers.parseArgs(arguments, { 'json' : 'opts', 'function' : 'callback' }); var opts = args.opts || {}; var callback = args.callback || opts.callback; var that = this, theme = opts.theme || 'ispin', size = opts.size || 'small'; var sizeK = is_mobile() ? 1 : 1; var $wrap = opts.wrap || jq('body'), defaults = {lines: 12, shadow: true, speed: 1, trail: 40, hwaccel: true, color: '#fff', reshow: true}, themes = { ispin: { big: {width: 4 * sizeK, length: 12 * sizeK, radius: 13 * sizeK}, small: {width: 2 * sizeK, length: 7 * sizeK, radius: 7.5 * sizeK}, long:{width: 2 * sizeK, length: 6 * sizeK, radius: 7.5 * sizeK}, xlong:{width: 2 * sizeK, length: 6 * sizeK, radius: 7.5 * sizeK} } }; delete opts.theme; delete opts.size; delete opts.wrap; delete opts.callback; opts = $.extend(defaults, themes[theme][size], opts); $wrap.data('options', opts); if (opts.text === true) opts.text = 'LOADING'; setTimeout(function(){ var $o = that.create(size, $wrap, opts); $wrap.overlay('show', {opacity: ~~opts.bgopacity, bgcolor:opts.bgcolor}); var $icon = $o.find('.icon').showSpin(opts); if (opts.text) { $o.find('.text').html(opts.text); } else { $icon.addClass('alone').setCenter(); } callback && callback(function() { var opts = parse_args(arguments); opts.size = opts.size || 'long'; opts.wrap = $wrap; that.show(opts); }); }, opts.delay || 200); }, hide: function() { var that = this; if (!that.mod_complete) that.init_mod(); var opts = parse_args(arguments); var $o = opts.wrap.overlay('hide').children('.' + classname); try {$o.find('.icon').data().stop();} catch(e){} var _ = function(){ Landers.animate.hide($o, 'default', function(){ $o.remove(); opts.callback && opts.callback(); }); }; if (opts.delay) setTimeout(_, opts.delay); else _(); return that; } }