landers.angular
Version:
landers.angular
1,223 lines (1,106 loc) • 343 kB
JavaScript
;(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;
}
}