hybridstart
Version:
A hybrid application development framework
1,126 lines (1,097 loc) • 113 kB
JavaScript
/*
app JS SDK
Version:2.4.0
update: 移除app.ajax错误检查
date:2018-04-27
*
/*! Sea.js 2.2.1 | seajs.org/LICENSE.md */
!function(a,b){function c(a){return function(b){return{}.toString.call(b)=="[object "+a+"]"}}function d(){return A++}function e(a){return a.match(D)[0]}function f(a){for(a=a.replace(E,"/");a.match(F);)a=a.replace(F,"/");return a=a.replace(G,"$1/")}function g(a){var b=a.length-1,c=a.charAt(b);return"#"===c?a.substring(0,b):".js"===a.substring(b-2)||a.indexOf("?")>0||".css"===a.substring(b-3)||"/"===c?a:a+".js"}function h(a){var b=v.alias;return b&&x(b[a])?b[a]:a}function i(a){var b=v.paths,c;return b&&(c=a.match(H))&&x(b[c[1]])&&(a=b[c[1]]+c[2]),a}function j(a){var b=v.vars;return b&&a.indexOf("{")>-1&&(a=a.replace(I,function(a,c){return x(b[c])?b[c]:a})),a}function k(a){var b=v.map,c=a;if(b)for(var d=0,e=b.length;e>d;d++){var f=b[d];if(c=z(f)?f(a)||a:a.replace(f[0],f[1]),c!==a)break}return c}function l(a,b){var c,d=a.charAt(0);if(J.test(a))c=a;else if("."===d)c=f((b?e(b):v.cwd)+a);else if("/"===d){var g=v.cwd.match(K);c=g?g[0]+a.substring(1):a}else c=v.base+a;return 0===c.indexOf("//")&&(c=location.protocol+c),c}function m(a,b){if(!a)return"";a=h(a),a=i(a),a=j(a),a=g(a);var c=l(a,b);return c=k(c)}function n(a){return a.hasAttribute?a.src:a.getAttribute("src",4)}function o(a,b,c){var d=S.test(a),e=L.createElement(d?"link":"script");if(c){var f=z(c)?c(a):c;f&&(e.charset=f)}p(e,b,d,a),d?(e.rel="stylesheet",e.href=a):(e.async=!0,e.src=a),T=e,R?Q.insertBefore(e,R):Q.appendChild(e),T=null}function p(a,c,d,e){function f(){a.onload=a.onerror=a.onreadystatechange=null,d||v.debug||Q.removeChild(a),a=null,c()}var g="onload"in a;return!d||!V&&g?(g?(a.onload=f,a.onerror=function(){C("error",{uri:e,node:a}),f()}):a.onreadystatechange=function(){/loaded|complete/.test(a.readyState)&&f()},b):(setTimeout(function(){q(a,c)},1),b)}function q(a,b){var c=a.sheet,d;if(V)c&&(d=!0);else if(c)try{c.cssRules&&(d=!0)}catch(e){"NS_ERROR_DOM_SECURITY_ERR"===e.name&&(d=!0)}setTimeout(function(){d?b():q(a,b)},20)}function r(){if(T)return T;if(U&&"interactive"===U.readyState)return U;for(var a=Q.getElementsByTagName("script"),b=a.length-1;b>=0;b--){var c=a[b];if("interactive"===c.readyState)return U=c}}function s(a){var b=[];return a.replace(X,"").replace(W,function(a,c,d){d&&b.push(d)}),b}function t(a,b){this.uri=a,this.dependencies=b||[],this.exports=null,this.status=0,this._waitings={},this._remain=0}if(!a.seajs){var u=a.seajs={version:"2.2.1"},v=u.data={},w=c("Object"),x=c("String"),y=Array.isArray||c("Array"),z=c("Function"),A=0,B=v.events={};u.on=function(a,b){var c=B[a]||(B[a]=[]);return c.push(b),u},u.off=function(a,b){if(!a&&!b)return B=v.events={},u;var c=B[a];if(c)if(b)for(var d=c.length-1;d>=0;d--)c[d]===b&&c.splice(d,1);else delete B[a];return u};var C=u.emit=function(a,b){var c=B[a],d;if(c)for(c=c.slice();d=c.shift();)d(b);return u},D=/[^?#]*\//,E=/\/\.\//g,F=/\/[^/]+\/\.\.\//,G=/([^:/])\/\//g,H=/^([^/:]+)(\/.+)$/,I=/{([^{]+)}/g,J=/^\/\/.|:\//,K=/^.*?\/\/.*?\//,L=document,M=e(L.URL),N=L.scripts,O=L.getElementById("seajsnode")||N[N.length-1],P=e(n(O)||M);u.resolve=m;var Q=L.head||L.getElementsByTagName("head")[0]||L.documentElement,R=Q.getElementsByTagName("base")[0],S=/\.css(?:\?|$)/i,T,U,V=+navigator.userAgent.replace(/.*(?:AppleWebKit|AndroidWebKit)\/(\d+).*/,"$1")<536;u.request=o;var W=/"(?:\\"|[^"])*"|'(?:\\'|[^'])*'|\/\*[\S\s]*?\*\/|\/(?:\\\/|[^\/\r\n])+\/(?=[^\/])|\/\/.*|\.\s*require|(?:^|[^$])\brequire\s*\(\s*(["'])(.+?)\1\s*\)/g,X=/\\\\/g,Y=u.cache={},Z,$={},_={},ab={},bb=t.STATUS={FETCHING:1,SAVED:2,LOADING:3,LOADED:4,EXECUTING:5,EXECUTED:6};t.prototype.resolve=function(){for(var a=this,b=a.dependencies,c=[],d=0,e=b.length;e>d;d++)c[d]=t.resolve(b[d],a.uri);return c},t.prototype.load=function(){var a=this;if(!(a.status>=bb.LOADING)){a.status=bb.LOADING;var c=a.resolve();C("load",c);for(var d=a._remain=c.length,e,f=0;d>f;f++)e=t.get(c[f]),e.status<bb.LOADED?e._waitings[a.uri]=(e._waitings[a.uri]||0)+1:a._remain--;if(0===a._remain)return a.onload(),b;var g={};for(f=0;d>f;f++)e=Y[c[f]],e.status<bb.FETCHING?e.fetch(g):e.status===bb.SAVED&&e.load();for(var h in g)g.hasOwnProperty(h)&&g[h]()}},t.prototype.onload=function(){var a=this;a.status=bb.LOADED,a.callback&&a.callback();var b=a._waitings,c,d;for(c in b)b.hasOwnProperty(c)&&(d=Y[c],d._remain-=b[c],0===d._remain&&d.onload());delete a._waitings,delete a._remain},t.prototype.fetch=function(a){function c(){u.request(g.requestUri,g.onRequest,g.charset)}function d(){delete $[h],_[h]=!0,Z&&(t.save(f,Z),Z=null);var a,b=ab[h];for(delete ab[h];a=b.shift();)a.load()}var e=this,f=e.uri;e.status=bb.FETCHING;var g={uri:f};C("fetch",g);var h=g.requestUri||f;return!h||_[h]?(e.load(),b):$[h]?(ab[h].push(e),b):($[h]=!0,ab[h]=[e],C("request",g={uri:f,requestUri:h,onRequest:d,charset:v.charset}),g.requested||(a?a[g.requestUri]=c:c()),b)},t.prototype.exec=function(){function a(b){return t.get(a.resolve(b)).exec()}var c=this;if(c.status>=bb.EXECUTING)return c.exports;c.status=bb.EXECUTING;var e=c.uri;a.resolve=function(a){return t.resolve(a,e)},a.async=function(b,c){return t.use(b,c,e+"_async_"+d()),a};var f=c.factory,g=z(f)?f(a,c.exports={},c):f;return g===b&&(g=c.exports),delete c.factory,c.exports=g,c.status=bb.EXECUTED,C("exec",c),g},t.resolve=function(a,b){var c={id:a,refUri:b};return C("resolve",c),c.uri||u.resolve(c.id,b)},t.define=function(a,c,d){var e=arguments.length;1===e?(d=a,a=b):2===e&&(d=c,y(a)?(c=a,a=b):c=b),!y(c)&&z(d)&&(c=s(""+d));var f={id:a,uri:t.resolve(a),deps:c,factory:d};if(!f.uri&&L.attachEvent){var g=r();g&&(f.uri=g.src)}C("define",f),f.uri?t.save(f.uri,f):Z=f},t.save=function(a,b){var c=t.get(a);c.status<bb.SAVED&&(c.id=b.id||a,c.dependencies=b.deps||[],c.factory=b.factory,c.status=bb.SAVED)},t.get=function(a,b){return Y[a]||(Y[a]=new t(a,b))},t.use=function(b,c,d){var e=t.get(d,y(b)?b:[b]);e.callback=function(){for(var b=[],d=e.resolve(),f=0,g=d.length;g>f;f++)b[f]=Y[d[f]].exec();c&&c.apply(a,b),delete e.callback},e.load()},t.preload=function(a){var b=v.preload,c=b.length;c?t.use(b,function(){b.splice(0,c),t.preload(a)},v.cwd+"_preload_"+d()):a()},u.use=function(a,b){return t.preload(function(){t.use(a,b,v.cwd+"_use_"+d())}),u},t.define.cmd={},a.define=t.define,u.Module=t,v.fetchedList=_,v.cid=d,u.require=function(a){var b=t.get(t.resolve(a));return b.status<bb.EXECUTING&&(b.onload(),b.exec()),b.exports};var cb=/^(.+?\/)(\?\?)?(seajs\/)+/;v.base=(P.match(cb)||["",P])[1],v.dir=P,v.cwd=M,v.charset="utf-8",v.preload=function(){var a=[],b=location.search.replace(/(seajs-\w+)(&|$)/g,"$1=1$2");return b+=" "+L.cookie,b.replace(/(seajs-\w+)=1/g,function(b,c){a.push(c)}),a}(),u.config=function(a){for(var b in a){var c=a[b],d=v[b];if(d&&w(d))for(var e in c)d[e]=c[e];else y(d)?c=d.concat(c):"base"===b&&("/"!==c.slice(-1)&&(c+="/"),c=l(c)),v[b]=c}return C("config",a),u}}}(this);
/* Seajs.style.js */
!function(){var a,b=/\W/g,c=document,d=document.getElementsByTagName("head")[0]||document.documentElement;seajs.importStyle=function(e,f){if(!f||(f=f.replace(b,"-"),!c.getElementById(f))){var g;if(!a||f?(g=c.createElement("style"),f&&(g.id=f),d.appendChild(g)):g=a,void 0!==g.styleSheet){if(c.getElementsByTagName("style").length>31)throw new Error("Exceed the maximal count of style tags in IE");g.styleSheet.cssText+=e}else g.appendChild(c.createTextNode(e));f||(a=g)}},define("seajs/seajs-style/1.0.2/seajs-style",[],{})}();
/*! root路径内部依赖 */
(function(){
var selfPath = window.location.href;
var widgetPath = "../";
var pathMatch = selfPath.match(/\/view(.+)$/);
if(pathMatch && pathMatch[1]){
selfPath = pathMatch[1];
var index = -1;
var pathDeep = 0;
do {
index = selfPath.indexOf("/", index + 1);
if (index != -1) {
pathDeep++;
}
} while (index != -1);
if(pathDeep){
widgetPath ="";
for(var deepStart = 0;deepStart<pathDeep;deepStart++){
widgetPath += "../";
}
}
}
seajs.root = widgetPath.substring(0, widgetPath.length-1);
})();
//console.log(seajs.root)
/*! seajs设置 */
seajs.config({
base: seajs.root + "/sdk/modules",
paths: {
"lib": seajs.root + "/res/lib",
"sdk": seajs.root + "/sdk",
"view": seajs.root + "/view"
},
alias: {
"jquery" : "jquery/3/jquery",
"validform": "validform/validform"
}
});
"use strict";
/*! app对象 */
var apputil = (function(document, undefined) {
var idSelectorRE = /^#([\w-]+)$/;
var classSelectorRE = /^\.([\w-]+)$/;
var tagSelectorRE = /^[\w-]+$/;
var $ = function(selector, context) {
context = context || document;
if (!selector)
return wrap();
if (typeof selector === 'object')
if ($.isArrayLike(selector)) {
return wrap($.slice.call(selector), null);
} else {
return wrap([selector], null);
}
if (typeof selector === 'function')
return selector();
if (typeof selector === 'string') {
try {
selector = selector.trim();
if (idSelectorRE.test(selector)) {
var found = document.getElementById(RegExp.$1);
return wrap(found ? [found] : []);
}
return wrap($.qsa(selector, context), selector);
} catch (e) {}
}
return wrap();
};
var wrap = function(dom, selector) {
dom = dom || [];
dom.__proto__ = $.fn;
dom.selector = selector || '';
return dom;
};
/**
* extend(simple)
* @param {type} target
* @param {type} source
* @param {type} deep
* @returns {unresolved}
*/
$.extend = function() {
var options, name, src, copy, copyIsArray, clone,
target = arguments[0] || {},
i = 1,
length = arguments.length,
deep = false;
if (typeof target === "boolean") {
deep = target;
target = arguments[i] || {};
i++;
}
if (typeof target !== "object" && !$.isFunction(target)) {
target = {};
}
if (i === length) {
target = this;
i--;
}
for (; i < length; i++) {
if ((options = arguments[i]) != null) {
for (name in options) {
src = target[name];
copy = options[name];
if (target === copy) {
continue;
}
if (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) {
if (copyIsArray) {
copyIsArray = false;
clone = src && $.isArray(src) ? src : [];
} else {
clone = src && $.isPlainObject(src) ? src : {};
}
target[name] = $.extend(deep, clone, copy);
} else if (copy !== undefined) {
target[name] = copy;
}
}
}
}
return target;
};
/**
* each
* @param {type} elements
* @param {type} callback
* @returns {_L8.$}
*/
$.each = function(elements, callback, hasOwnProperty) {
if (!elements) {
return this;
}
if (typeof elements.length === 'number') {
[].every.call(elements, function(el, idx) {
return callback.call(el, idx, el) !== false;
});
} else {
for (var key in elements) {
if (hasOwnProperty) {
if (elements.hasOwnProperty(key)) {
if (callback.call(elements[key], key, elements[key]) === false) return elements;
}
} else {
if (callback.call(elements[key], key, elements[key]) === false) return elements;
}
}
}
return elements;
};
/**
* slice(array)
*/
$.slice = [].slice;
var class2type = {};
$.each(['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Object', 'Error'], function(i, name) {
class2type["[object " + name + "]"] = name.toLowerCase();
});
$.type = function(obj) {
return obj == null ? String(obj) : class2type[{}.toString.call(obj)] || "object";
};
/**
* isArray
*/
$.isArray = Array.isArray ||
function(object) {
return object instanceof Array;
};
/**
* isArrayLike
* @param {Object} obj
*/
$.isArrayLike = function(obj) {
var length = !!obj && "length" in obj && obj.length;
var type = $.type(obj);
if (type === "function" || $.isWindow(obj)) {
return false;
}
return type === "array" || length === 0 ||
typeof length === "number" && length > 0 && (length - 1) in obj;
};
/**
* isWindow(需考虑obj为undefined的情况)
*/
$.isWindow = function(obj) {
return obj != null && obj === obj.window;
};
/**
* isObject
*/
$.isObject = function(obj) {
return $.type(obj) === "object";
};
/**
* isPlainObject
*/
$.isPlainObject = function(obj) {
return $.isObject(obj) && !$.isWindow(obj) && Object.getPrototypeOf(obj) === Object.prototype;
};
/**
* isEmptyObject
* @param {Object} o
*/
$.isEmptyObject = function(o) {
for (var p in o) {
if (p !== undefined) {
return false;
}
}
return true;
};
/**
* isFunction
*/
$.isFunction = function(value) {
return $.type(value) === "function";
};
/**
* querySelectorAll
* @param {type} selector
* @param {type} context
* @returns {Array}
*/
$.qsa = function(selector, context) {
context = context || document;
return $.slice.call(classSelectorRE.test(selector) ? context.getElementsByClassName(RegExp.$1) : tagSelectorRE.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector));
};
/*
* $.trim
*/
$.trim = function(string) {
if (string && string.split) {
return string.trim();
}
};
/**
* trigger event
* @param {type} element
* @param {type} eventType
* @param {type} eventData
* @returns {_L8.$}
*/
$.trigger = function(element, eventType, eventData) {
element.dispatchEvent(new CustomEvent(eventType, {
detail: eventData,
bubbles: true,
cancelable: true
}));
return this;
};
/**
* $.fn
*/
$.fn = {
each: function(callback) {
[].every.call(this, function(el, idx) {
return callback.call(el, idx, el) !== false;
});
return this;
},
on: function(eventType, child, handle) {
[].every.call(this, function(el, idx) {
if ($.isFunction(child)) {
return el.addEventListener(eventType, child);
}
if(!child && $.isFunction(handle)){
return el.addEventListener(eventType, handle);
}
el.addEventListener(eventType, function(event) {
var childNode = el.querySelectorAll(child);
if (childNode.length) {
var target = event.target,
isHand;
while (target && (target !== el)) {
$.each(childNode, function(i, ele) {
if (ele === target) {
handle.call(target, {
target: target,
detail: event.detail,
touches: event.touches && event.touches[0] ? {
clientX: event.touches[0].clientX,
clientY: event.touches[0].clientY,
screenX: event.touches[0].screenX,
screenY: event.touches[0].screenY,
} : null
});
return isHand = true;
}
});
if (isHand) {
break;
}
target = target.parentNode;
}
}
});
});
return this;
},
tap: function(child, handle) {
if($.isFunction(child)){
handle = child;
child = null;
}
[].every.call(this, function(el, idx) {
$(el).on('touchstart', child, function(e) {
e.target.setAttribute('data-touch', 1);
}).on('touchcancel', child, function(e) {
e.target.removeAttribute('data-touch');
}).on('touchmove', child, function(e) {
e.target.removeAttribute('data-touch');
}).on('touchend', child, function(e) {
if (e.target.getAttribute('data-touch')) {
e.target.removeAttribute('data-touch');
handle.call(e.target, e);
}
});
});
return this;
},
trigger: function(eventType, data) {
[].every.call(this, function(el, idx) {
return $.trigger(el, eventType, data);
});
return this;
},
data: function(attribute, value) {
if (value === void 0) {
return this[0].dataset[attribute] === void 0 ? this[0].getAttribute('data-' + attribute) : this[0].dataset[attribute]
}
[].every.call(this, function(el, idx) {
return el.dataset[attribute] = value;
});
return this;
}
};
return $;
})(document);
/* app对象 */
(function(global) {
var app = {};
var $ = apputil;
var readyQueue = [];
var execReadyQueue = function() {
var i = 0,
len = readyQueue.length;
for (; i < len; i++) {
readyQueue[i]()
};
readyQueue.length = 0;
};
var ready = function(callback) {
if($.isFunction(callback) && callback.toString().replace(/\s+/g, '') !== 'function(){}'){
if (window.api) {
callback();
}else{
readyQueue.push(callback);
}
}
};
window.apiready = execReadyQueue;
var exit = function(silent) {
var targetStor = appcfg.set.temporary.split(',');
targetStor.forEach(function(name){
localStorage.removeItem(name);
});
api.closeWidget({
silent: !!silent,
animation: {
type: appcfg.set.windowAnimate,
subType: 'from_bottom',
duration: appcfg.set.animateDuration
}
})
};
function subscribe(eventName, callback) {
api.addEventListener({
name: eventName
}, function(ret) {
callback(ret.value)
});
};
function publish(eventName, msg) {
api.sendEvent({
name: eventName,
extra: msg
});
};
var appEventQueue = {};
var appEventDequeue = function(type, param) {
if(appEventQueue[type]){
appEventQueue[type].forEach(function(e, i) {
if (typeof e === 'function') {
e(param);
}
});
}
}
function events(type, cb) {
var appEventDequeueCb = function(ret, err){
if(err){
return console.log(JSON.stringify(err));
}
appEventDequeue(type, ret);
};
if (!type || !type.split) {
return null;
}
if (!appEventQueue[type]) {
appEventQueue[type] = [];
switch (type) {
case 'batterylow':
api.addEventListener({
name: 'batterylow'
}, appEventDequeueCb);
break;
case "batterystatus":
api.addEventListener({
name: 'batterystatus'
}, appEventDequeueCb);
break;
case "offline":
api.addEventListener({
name:'offline'
}, appEventDequeueCb);
break;
case "online":
api.addEventListener({
name:'online'
}, appEventDequeueCb);
break;
case "pause":
api.addEventListener({
name:'pause'
}, appEventDequeueCb);
break;
case "resume":
api.addEventListener({
name:'resume'
}, appEventDequeueCb);
break;
case "shake":
api.addEventListener({
name:'shake'
}, appEventDequeueCb);
break;
default:
console.warn('不支持的app事件:' + type);
}
}
if (typeof cb === 'function') {
appEventQueue[type].push(cb);
}
};
function key(keyName, cb) {
if (!keyName || !keyName.split) {
return null;
}
if (!appEventQueue[keyName]) {
appEventQueue[keyName] = [];
switch (keyName) {
case 'keyback':
api.addEventListener({
name: 'keyback'
}, function(ret, err){
if(ret !== void 0){
appEventDequeue(keyName, ret);
}
});
break;
case 'keymenu':
api.addEventListener({
name: 'keymenu'
}, function(ret, err){
if(ret !== void 0){
appEventDequeue(keyName, ret);
}
});
break;
default:
console.warn('不支持的按键名称:' + keyName);
}
}
if (typeof cb === 'function') {
appEventQueue[keyName].push(cb);
}
};
function off(eventType){
if(eventType && eventType.split){
return api.removeEventListener({
name: eventType
});
}
};
function readyEval(callback){
return function(){
if(window.api){
return callback.apply(null, arguments);
}else{
var fname = callback.toString().match(/function\s*(\w+)\s*\(/);
console.warn('runtime is not ready for function ' + (fname ? fname[1] : "anonymous") + "().");
}
}
}
app = {
util: $,
ready: ready,
readyEval: readyEval,
subscribe: readyEval(subscribe),
publish: readyEval(publish),
on: readyEval(events),
off: readyEval(off),
key: readyEval(key),
exit: readyEval(exit)
};
global.app = app;
})(this);
/* 本地存储模块 */
(function(app) {
var $ = apputil;
function remove(key) {
if (key && key.split) {
return localStorage.removeItem(key)
}
};
function leaveSpace() {
var space = 1024 * 1024 * 5 - unescape(encodeURIComponent(JSON.stringify(localStorage))).length;
return space
};
function val(key, value) {
if (value === void(0)) {
var lsVal = localStorage.getItem(key);
if(lsVal && lsVal.indexOf('autostringify-') === 0 ){
return JSON.parse(lsVal.split('autostringify-')[1]);
}else{
return lsVal;
}
}else {
if ($.isPlainObject(value) || $.isArray(value)) {
value = 'autostringify-' + JSON.stringify(value);
};
return localStorage.setItem(key, value);
}
};
function clear(force){
if(force){
localStorage.clear();
}else{
var safeKey = appcfg.set.safeStorage ? appcfg.set.safeStorage.split(',') : [],
lskey;
for (lskey in window.localStorage){
if(safeKey.indexOf(lskey)===-1){
localStorage.removeItem(lskey);
}
}
}
}
app.storage = {
clear: clear,
leaveSpace: leaveSpace,
remove: remove,
val: val
}
})(app);
/* 扩展app对象 */
(function(app) {
//loading
var $ = app.util,
loading = {
hide: app.readyEval(function() {
this.timer && (this.timer = clearTimeout(this.timer));
return api.hideProgress();
}),
show: app.readyEval(function(msg, opt) {
var that = this;
if ($.isPlainObject(msg)) {
opt = msg;
msg = opt.text || appcfg.loading.text
}
opt = $.extend({
text: msg || appcfg.loading.text,
title: appcfg.loading.title,
anim: appcfg.loading.anim,
delay: 0
}, opt || {});
var doShow = function() {
return api.showProgress({
animationType: opt.anim,
title: opt.title,
text: opt.text
});
}
if (opt.delay > 0) {
that.timer = setTimeout(doShow, opt.delay);
} else {
doShow();
}
})
};
/*
param:
duration
anim
param
bar
closeself
fullPath
pop
[title]
*/
var _openView = function(param, leval1, leval2) {
var dura = appcfg.set.animateDuration,
anim = appcfg.set.windowAnimate,
viewName,
url,
crossParam;
if ($.isPlainObject(param)) {
dura = param.duration || dura;
anim = param.anim || anim;
crossParam = param.param;
if ($.isPlainObject(crossParam)) {
if (!!param.pop) {
crossParam.shellIsPop = 1
}
}
} else {
crossParam = param;
param = {};
};
if (crossParam === null || crossParam === void(0)) {
app.storage.remove('crossParam');
}else{
app.storage.val('crossParam', crossParam);
}
//网页
if (/^https*\:\/\//.test(leval1)) {
url = leval1;
if (!!param.bar) {
return _openView({
param: $.extend({
url: url,
title: param.title || ''
}, param),
closeself: !!param.closeself,
type: anim
}, 'common', 'shell');
} else {
viewName = 'webpage' + Math.random();
}
} else if (param.fullPath) {
//全路径
viewName = leval1;
url = leval1;
} else {
//openView路径
if (leval2 && leval2.split) {
viewName = leval1 + '_' + leval2;
url = seajs.root + '/view/' + leval1 + '/' + leval2 + '/temp.html';
} else {
viewName = leval1;
url = seajs.root + '/view/' + leval1 + '/temp.html';
}
};
if (!!param.pop) {
//弹出浮层
app.window.openPopover({
name: viewName,
url: url
});
} else if (!!param.bar) {
_openView({
param: {
url: url,
title: param.title || '',
show: 1
},
type: anim
}, 'common', 'shell');
} else {
if (param.closeback) {
window.isBack = true;
app.storage.val('winCloseCondition', 'closeback');
}
if (param.closeself) {
app.storage.val('winCloseCondition', api.winName);
}
app.window.open($.extend($.isPlainObject(param) ? param : {}, {
name: viewName,
url: url,
param: crossParam,
anim: anim
}));
}
return viewName;
};
var getParam = function() {
return app.storage.val('crossParam');
};
var _pull = {
init: app.readyEval(function(cb) {
if (!$.isFunction(cb)) {
return null;
}
var that = this;
that.timer = setTimeout(that.stop, appcfg.set.outime);
api.setCustomRefreshHeaderInfo(appcfg.pull, cb);
}),
stop: app.readyEval(function() {
api.refreshHeaderLoadDone();
this.timer && (this.timer = clearTimeout(this.timer));
})
};
function _openToast(msg, config) {
//delay,onclose,location,duration
var opt = {
msg: msg,
duration: 1000,
location: 'bottom'
};
if($.isPlainObject(config)){
$.extend(opt, config);
if(opt.delay){
opt.duration = opt.delay;
}
}else if(!isNaN(parseInt(config))){
opt.duration = parseInt(config);
}
if(typeof opt.onclose === 'function'){
setTimeout(opt.onclose, opt.duration);
}
return api.toast(opt);
};
var alert = function(msg, sure, config){
return api.alert($.extend({
msg: msg,
}, config || {}), sure);
};
var confirm = function(msg, sure, cancel, config){
return api.confirm($.extend({
msg: msg,
buttons: ['确定', '取消']
}, config || {}), function(ret, err) {
var index = ret.buttonIndex;
if(index===1){
typeof sure === 'function' && sure();
}else{
typeof cancel === 'function' && cancel()
}
});
};
var prompt = function(sure, cancel, config){
return api.prompt($.extend({
buttons: ['确定', '取消']
}, config || {}), function(ret, err) {
var index = ret.buttonIndex;
var text = ret.text;
if(index===1){
typeof sure === 'function' && sure(text);
}else{
typeof cancel === 'function' && cancel(text)
}
});
};
var actionSheet = function(config, callback){
if (!$.isPlainObject(config) || !$.isArray(config.buttons) || !config.buttons.length) {
return console.warn('actionSheet参数错误');
};
return api.actionSheet($.extend({
title: '',
buttons: [],
destructiveTitle: '',
cancelTitle: '取消',
style: {
layerColor: 'rgba(0,0,0,0.6)'
}
}, config), function(ret, err) {
typeof callback === 'function' && callback(ret.buttonIndex);
});
};
$.extend(app, {
loading: loading,
openView: _openView,
getParam: getParam,
pull: _pull,
toast: app.readyEval(_openToast),
alert: app.readyEval(alert),
confirm: app.readyEval(confirm),
prompt: app.readyEval(prompt),
actionSheet: app.readyEval(actionSheet)
});
})(app);
/* 窗口模块 */
(function(app) {
var $ = app.util;
var subscribeGlobslQueue = [];
var bounceCallQueue = [];
var multiPopoverQueue = {};
var currentOS = "";
var keyFuncMapper = {};
function open(config) {
//url必须
var param = config.param,
anim = config.anim || appcfg.set.windowAnimate,
subType = config.subType || appcfg.set.animateSubType,
dura = config.duration || appcfg.set.animateDuration;
if (!config.name) {
config.name = 'win-' + config.url;
}
if (window.api) {
param!==void 0 && app.storage.val('crossParam', param);
api.openWin($.extend(config, {
pageParam: $.isPlainObject(param) ? param : {},
animation: {
type: anim,
subType: subType,
duration: dura
},
progress: {
type: 'page'
},
useWKWebView: true,
slidBackEnabled:false,
overScrollMode: 'scrolls'
}));
return config.name;
} else {
window.location.href = config.url
}
}
function close(winName, config) {
if (!window.api) {
return window.history.go(-1);
};
if (winName && winName.split) {
if(config.isFrame){
api.closeFrame({
name: winName
});
}else{
api.closeWin({
name: winName,
animation: {
type: config.anim || appcfg.set.windowAnimate,
duration: config.duration || appcfg.set.animateDuration
}
});
}
} else {
if (api.frameName) {
api.closeFrame();
} else {
api.closeWin()
}
}
};
function popoverElement(config) {
//id, url
var id = config.id;
var ele = $("#" + id);
if (!ele.length) {
return console.warn('popoverElement: Error param,' + JSON.stringify(config));
}
ele = ele[0];
var offset = ele.getBoundingClientRect();
var top = isNaN(parseInt(config.top, 10)) ? offset.top : parseInt(config.top, 10);
var left = isNaN(parseInt(config.left, 10)) ? offset.left : parseInt(config.left, 10);
var name = config.name ? config.name : id;
return openPopover($.extend(config, {
name: name,
left: left,
top: top,
width: offset.width || offset.right - offset.left,
height: offset.height || offset.bottom - offset.top,
param: config.param,
bounces: config.bounce
}));
};
function openPopover(config) {
//url必须
var left = config.left || 0,
top = config.top || 0,
width = config.width || 'auto',
height = config.height || 'auto';
if (!config.name) {
config.name = 'pop-' + config.url;
}
app.storage.val('popoverTopHash', config.top || 0);
if(config.param){
app.storage.val('crossParam', config.param);
}
api.openFrame({
name: config.name,
url: config.url,
rect: {
x: left,
y: top,
w: width,
h: height,
marginLeft: config.marginLeft,
marginTop: config.marginTop,
marginBottom: config.marginBottom,
marginRight: config.marginRight
},
customRefreshHeader: 'UIPullRefreshFlash',
useWKWebView: true,
hScrollBarEnabled: false,
pageParam: $.isPlainObject(config.param) ? config.param : {},
bgColor: appcfg.set.bgColor,
bounces: !!config.bounce,
overScrollMode: 'scrolls'
});
return config.name;
};
function animPopover(config) {
//name, callback
var opt = $.extend({
delay: 0,
duration: appcfg.set.animateDuration,
curve: 'ease_in_out',
repeatCount: 0,
translation: {
x: 0,
y: 0,
z: 0
}
}, config || {});
//IOS不允许传递包含function的对象
var cbTemp = opt.callback;
delete opt.callback;
api.animation(opt, function(ret, err) {
typeof cbTemp === 'function' && cbTemp(ret, err);
});
return opt.name;
}
function setPopover(config) {
//name
var opt = $.extend({
rect: {
x: 0,
y: 0,
w: 0,
h: 0
}
}, config || {});
api.setFrameAttr(opt);
return opt.name
};
function evaluate(name, frameName, script) {
if ($.isPlainObject(name)) {
var paramObj = name;
name = paramObj.name || '';
frameName = paramObj.frameName || '';
script = paramObj.script || '';
}
api.execScript({
name: name || api.winName,
frameName: frameName,
script: script
});
};
//手势事件
var touchObj = {
clear: function() {
this.timer && clearTimeout(this.timer);
this.timer = null;
this.x = null;
this.y = null;
this.lastMove = null;
}
};
var $body = $('body')[0];
$body.addEventListener('touchstart', function(e) {
if (e.touches && !touchObj.timer) {
touchObj.timer = setTimeout(function() {
touchObj.timer = clearTimeout(touchObj.timer);
}, 100);
touchObj.x = e.touches[0].clientX;
touchObj.y = e.touches[0].clientY;
}
});
$body.addEventListener('touchmove', function(e) {
if (e.touches && touchObj.x && touchObj.y) {
if (!touchObj.timer) {
touchObj.x = touchObj.x - e.touches[0].clientX;
touchObj.y = touchObj.y - e.touches[0].clientY;
if (Math.abs(touchObj.y) > Math.abs(touchObj.x)) {
touchObj.lastMove = 'y';
if (touchObj.y > 0) {
windowEventDequeue('swipdown');
} else {
windowEventDequeue('swipup');
}
} else {
touchObj.lastMove = 'x';
if (touchObj.x > 0) {
windowEventDequeue('swipright');
} else {
windowEventDequeue('swipleft');
}
}
return touchObj.clear();
}
}
});
$body.addEventListener('touchend', function() {
touchObj.clear();
});
$body.addEventListener('touchcancel', function() {
touchObj.clear();
});
var windowEventQueue = {};
var windowEventDequeue = function(type) {
windowEventQueue[type] && windowEventQueue[type].forEach(function(e, i) {
if (typeof e === 'function') {
e(type);
}
});
}
//窗口事件
function events(type, cb) {
var windowEventDequeueCb = function(ret, err){
if(err){
return console.log(JSON.stringify(err));
}
windowEventDequeue(type, ret);
}
if (!type || !type.split) {
return null;
}
if (!windowEventQueue[type]) {
windowEventQueue[type] = [];
switch (type) {
case "pause":
if (!windowEventQueue[type].length) {
api.addEventListener({
name: 'viewdisappear'
}, windowEventDequeueCb);
}
break;
case "resume":
if (!windowEventQueue[type].length) {
api.addEventListener({
name: 'viewappear'
}, windowEventDequeueCb);
}
break;
case "scrolltobottom":
api.addEventListener({
name:'scrolltobottom',
extra:{
threshold:0 //设置距离底部多少距离时触发,默认值为0,数字类型
}
}, windowEventDequeueCb);
break;
case "swipleft":
break;
case "swipright":
break;
case "swipup":
break;
case "swipdown":
break;
default:
console.warn('不支持的window事件:' + type);
}
}
if (typeof cb === 'function') {
windowEventQueue[type].push(cb);
}
};
app.window = {
open: open,
close: close,
on: events,
evaluate: app.readyEval(evaluate),
popoverElement: app.readyEval(popoverElement),
openPopover: app.readyEval(openPopover),
animPopover: app.readyEval(animPopover),
setPopover: app.readyEval(setPopover)
}
})(app);
/* crypto模块 */
(function(app) {
var CryptoJS=CryptoJS||(function(Math,undefined){var create=Object.create||(function(){function F(){}return function(obj){var subtype;F.prototype=obj;subtype=new F();F.prototype=null;return subtype}}());var C={};var C_lib=C.lib={};var Base=C_lib.Base=(function(){return{extend:function(overrides){var subtype=create(this);if(overrides){subtype.mixIn(overrides)}if(!subtype.hasOwnProperty("init")||this.init===subtype.init){subtype.init=function(){subtype.$super.init.apply(this,arguments)}}subtype.init.prototype=subtype;subtype.$super=this;return subtype},create:function(){var instance=this.extend();instance.init.apply(instance,arguments);return instance},init:function(){},mixIn:function(properties){for(var propertyName in properties){if(properties.hasOwnProperty(propertyName)){this[propertyName]=properties[propertyName]}}if(properties.hasOwnProperty("toString")){this.toString=properties.toString}},clone:function(){return this.init.prototype.extend(this)}}}());var WordArray=C_lib.WordArray=Base.extend({init:function(words,sigBytes){words=this.words=words||[];if(sigBytes!=undefined){this.sigBytes=sigBytes}else{this.sigBytes=words.length*4}},toString:function(encoder){return(encoder||Hex).stringify(this)},concat:function(wordArray){var thisWords=this.words;var thatWords=wordArray.words;var thisSigBytes=this.sigBytes;var thatSigBytes=wordArray.sigBytes;this.clamp();if(thisSigBytes%4){for(var i=0;i<thatSigBytes;i++){var thatByte=(thatWords[i>>>2]>>>(24-(i%4)*8))&255;thisWords[(thisSigBytes+i)>>>2]|=thatByte<<(24-((thisSigBytes+i)%4)*8)}}else{for(var i=0;i<thatSigBytes;i+=4){thisWords[(thisSigBytes+i)>>>2]=thatWords[i>>>2]}}this.sigBytes+=thatSigBytes;return this},clamp:function(){var words=this.words;var sigBytes=this.sigBytes;words[sigBytes>>>2]&=4294967295<<(32-(sigBytes%4)*8);words.length=Math.ceil(sigBytes/4)},clone:function(){var clone=Base.clone.call(this);clone.words=this.words.slice(0);return clone},random:function(nBytes){var words=[];var r=(function(m_w){var m_w=m_w;var m_z=987654321;var mask=4294967295;return function(){m_z=(36969*(m_z&65535)+(m_z>>16))&mask;m_w=(18000*(m_w&65535)+(m_w>>16))&mask;var result=((m_z<<16)+m_w)&mask;result/=4294967296;result+=0.5;return result*(Math.random()>0.5?1:-1)}});for(var i=0,rcache;i<nBytes;i+=4){var _r=r((rcache||Math.random())*4294967296);rcache=_r()*987654071;words.push((_r()*4294967296)|0)}return new WordArray.init(words,nBytes)}});var C_enc=C.enc={};var Hex=C_enc.Hex={stringify:function(wordArray){var words=wordArray.words;var sigBytes=wordArray.sigBytes;var hexChars=[];for(var i=0;i<sigBytes;i++){var bite=(words[i>>>2]>>>(24-(i%4)*8))&255;hexChars.push((bite>>>4).toString(16));hexChars.push((bite&15).toString(16))}return hexChars.join("")},parse:function(hexStr){var hexStrLength=hexStr.length;var words=[];for(var i=0;i<hexStrLength;i+=2){words[i>>>3]|=parseInt(hexStr.substr(i,2),16)<<(24-(i%8)*4)}return new WordArray.init(words,hexStrLength/2)}};var Latin1=C_enc.Latin1={stringify:function(wordArray){var words=wordArray.words;var sigBytes=wordArray.sigBytes;var latin1Chars=[];for(var i=0;i<sigBytes;i++){var bite=(words[i>>>2]>>>(24-(i%4)*8))&255;latin1Chars.push(String.fromCharCode(bite))}return latin1Chars.join("")},parse:function(latin1Str){var latin1StrLength=latin1Str.length;var words=[];for(var i=0;i<latin1StrLength;i++){words[i>>>2]|=(latin1Str.charCodeAt(i)&255)<<(24-(i%4)*8)}return new WordArray.init(words,latin1StrLength)}};var Utf8=C_enc.Utf8={stringify:function(wordArray){try{return decodeURIComponent(escape(Latin1.stringify(wordArray)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(utf8Str){return Latin1.parse(unescape(encodeURIComponent(utf8Str)))}};var BufferedBlockAlgorithm=C_lib.BufferedBlockAlgorithm=Base.extend({reset:function(){this._data=new WordArray.init();this._nDataBytes=0},_append:function(data){if(typeof data=="string"){data=Utf8.parse(data)}this._data.concat(data);this._nDataBytes+=data.sigBytes},_process:function(doFlush){var data=this._data;var dataWords=data.words;var dataSigBytes=data.sigBytes;var blockSize=this.blockSize;var blockSizeBytes=blockSize*4;var nBlocksReady=dataSigBytes/blockSizeBytes;if(doFlush){nBlocksReady=Math.ceil(nBlocksReady)}else{nBlocksReady=Math.max((nBlocksReady|0)-this._minBufferSize,0)}var nWordsReady=nBlocksReady*blockSize;var nBytesReady=Math.min(nWordsReady*4,dataSigBytes);if(nWordsReady){for(var offset=0;offset<nWordsReady;offset+=blockSize){this._doProcessBlock(dataWords,offset)}var processedWords=dataWords.splice(0,nWordsReady);data.sigBytes-=nBytesReady}return new WordArray.init(processedWords,nBytesReady)},clone:function(){var clone=Base.clone.call(this);clone._data=this._data.clone();return clone},_minBufferSize:0});var Hasher=C_lib.Hasher=BufferedBlockAlgorithm.extend({cfg:Base.extend(),init:function(cfg){this.cfg=this.cfg.extend(cfg);this.reset()},reset:function(){BufferedBlockAlgorithm.reset.call(this);this._doReset()},update:function(messageUpdate){this._append(messageUpdate);this._process();
return this},finalize:function(messageUpdate){if(messageUpdate){this._append(messageUpdate)}var hash=this._doFinalize();return hash},blockSize:512/32,_createHelper:function(hasher){return function(message,cfg){return new hasher.init(cfg).finalize(message)}},_createHmacHelper:function(hasher){return function(message,key){return new C_algo.HMAC.init(hasher,key).finalize(message)}}});var C_algo=C.algo={};return C}(Math));(function(){var C=CryptoJS;var C_lib=C.lib;var WordArray=C_lib.WordArray;var C_enc=C.enc;var Base64=C_enc.Base64={stringify:function(wordArray){var words=wordArray.words;var sigBytes=wordArray.sigBytes;var map=this._map;wordArray.clamp();var base64Chars=[];for(var i=0;i<sigBytes;i+=3){var byte1=(words[i>>>2]>>>(24-(i%4)*8))&255;var byte2=(words[(i+1)>>>2]>>>(24-((i+1)%4)*8))&255;var byte3=(words[(i+2)>>>2]>>>(24-((i+2)%4)*8))&255;var triplet=(byte1<<16)|(byte2<<8)|byte3;for(var j=0;(j<4)&&(i+j*0.75<sigBytes);j++){base64Chars.push(map.charAt((triplet>>>(6*(3-j)))&63))}}var paddingChar=map.charAt(64);if(paddingChar){while(base64Chars.length%4){base64Chars.push(paddingChar)}}return base64Chars.join("")},parse:function(base64Str){var base64StrLength=base64Str.length;var map=this._map;var reverseMap=this._reverseMap;if(!reverseMap){reverseMap=this._reverseMap=[];for(var j=0;j<map.length;j++){reverseMap[map.charCodeAt(j)]=j}}var paddingChar=map.charAt(64);if(paddingChar){var paddingIndex=base64Str.indexOf(paddingChar);if(paddingIndex!==-1){base64StrLength=paddingIndex}}return parseLoop(base64Str,base64StrLength,reverseMap)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="};function parseLoop(base64Str,base64StrLength,reverseMap){var words=[];var nBytes=0;for(var i=0;i<base64StrLength;i++){if(i%4){var bits1=reverseMap[base64Str.charCodeAt(i-1)]<<((i%4)*2);var bits2=reverseMap[base64Str.charCodeAt(i)]>>>(6-(i%4)*2);words[nBytes>>>2]|=(bits1|bits2)<<(24-(nBytes%4)*8);nBytes++}}return WordArray.create(words,nBytes)}}());(function(Math){var C=CryptoJS;var C_lib=C.lib;var WordArray=C_lib.WordArray;var Hasher=C_lib.Hasher;var C_algo=C.algo;var T=[];(function(){for(var i=0;i<64;i++){T[i]=(Math.abs(Math.sin(i+1))*4294967296)|0}}());var MD5=C_algo.MD5=Hasher.extend({_doReset:function(){this._hash=new WordArray.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(M,offset){for(var i=0;i<16;i++){var offset_i=offset+i;var M_offset_i=M[offset_i];M[offset_i]=((((M_offset_i<<8)|(M_offset_i>>>24))&16711935)|(((M_offset_i<<24)|(M_offset_i>>>8))&4278255360))}var H=this._hash.words;var M_offset_0=M[offset+0];var M_offset_1=M[offset+1];var M_offset_2=M[offset+2];var M_offset_3=M[offset+3];var M_offset_4=M[offset+4];var M_offset_5=M[offset+5];var M_offset_6=M[offset+6];var M_offset_7=M[offset+7];var M_offset_8=M[offset+8];var M_offset_9=M[offset+9];var M_offset_10=M[offset+10];var M_offset_11=M[offset+11];var M_offset_12=M[offset+12];var M_offset_13=M[offset+13];var M_offset_14=M[offset+14];var M_offset_15=M[offset+15];var a=H[0];var b=H[1];var c=H[2];var d=H[3];a=FF(a,b,c,d,M_offset_0,7,T[0]);d=FF(d,a,b,c,M_offset_1,12,T[1]);c=FF(c,d,a,b,M_offset_2,17,T[2]);b=FF(b,c,d,a,M_offset_3,22,T[3]);a=FF(a,b,c,d,M_offset_4,7,T[4]);d=FF(d,a,b,c,M_offset_5,12,T[5]);c=FF(c,d,a,b,M_offset_6,17,T[6]);b=FF(b,c,d,a,M_offset_7,22,T[7]);a=FF(a,b,c,d,M_offset_8,7,T[8]);d=FF(d,a,b,c,M_offset_9,12,T[9]);c=FF(c,d,a,b,M_offset_10,17,T[10]);b=FF(b,c,d,a,M_offset_11,22,T[11]);a=FF(a,b,c,d,M_offset_12,7,T[12]);d=FF(d,a,b,c,M_offset_13,12,T[13]);c=FF(c,d,a,b,M_offset_14,17,T[14]);b=FF(b,c,d,a,M_offset_15,22,T[15]);a=GG(a,b,c,d,M_offset_1,5,T[16]);d=GG(d,a,b,c,M_offset_6,9,T[17]);c=GG(c,d,a,b,M_offset_11,14,T[18]);b=GG(b,c,d,a,M_offset_0,20,T[19]);a=GG(a,b,c,d,M_offset_5,5,T[20]);d=GG(d,a,b,c,M_offset_10,9,T[21]);c=GG(c,d,a,b,M_offset_15,14,T[22]);b=GG(b,c,d,a,M_offset_4,20,T[23]);a=GG(a,b,c,d,M_offset_9,5,T[24]);d=GG(d,a,b,c,M_offset_14,9,T[25]);c=GG(c,d,a,b,M_offset_3,14,T[26]);b=GG(b,c,d,a,M_offset_8,20,T[27]);a=GG(a,b,c,d,M_offset_13,5,T[28]);d=GG(d,a,b,c,M_offset_2,9,T[29]);c=GG(c,d,a,b,M_offset_7,14,T[30]);b=GG(b,c,d,a,M_offset_12,20,T[31]);a=HH(a,b,c,d,M_offset_5,4,T[32]);d=HH(d,a,b,c,M_offset_8,11,T[33]);c=HH(c,d,a,b,M_offset_11,16,T[34]);b=HH(b,c,d,a,M_offset_14,23,T[35]);a=HH(a,b,c,d,M_offset_1,4,T[36]);d=HH(d,a,b,c,M_offset_4,11,T[37]);c=HH(c,d,a,b,M_offset_7,16,T[38]);b=HH(b,c,d,a,M_offset_10,23,T[39]);a=HH(a,b,c,d,M_offset_13,4,T[40]);d=HH(d,a,b,c,M_offset_0,11,T[41]);c=HH(c,d,a,b,M_offset_3,16,T[42]);b=HH(b,c,d,a,M_offset_6,23,T[43]);a=HH(a,b,c,d,M_offset_9,4,T[44]);d=HH(d,a,b,c,M_offset_12,11,T[45]);c=HH(c,d,a,b,M_offset_15,16,T[46]);b=HH(b,c,d,a,M_offset_2,23,T[47]);a=II(a,b,c,d,M_offset_0,6,T[48]);d=II(d,a,b,c,M_offset_7,10,T[49]);c=II(c,d,a,b,M_offset_14,15,T[50]);b=II(b,c,d,a,M_offset_5,21,T[51]);a=II(a,b,c,d,M_offset_12,6,T[52]);d=II(d,a,b,c,M_offset_3,10,T[53]);c=II(c,d,a,b,M_offset_10,15,T[54]);b=II(b,c,d,a,M_offset_1,21,T[55]);a=II(a,b,c,d,M_offset_8,6,T[56]);d=II(d,a,b,c,M_offset_15,10,T[57]);
c=II(c,d,a,b,M_offset_6,15,T[58]);b=II(b,c,d,a,M_offset_13,21,T[59]);a=II(a,b,c,d,M_offset_4,6,T[60]);d=II(d,a,b,c,M_offset_11,10,T[61]);c=II(c,d,a,b,M_offset_2,15,T[62]);b=II(b,c,d,a,M_offset_9,21,T[63]);H[0]=(H[0]+a)|0;H[1]=(H[1]+b)|0;H[2]=(H[2]+c)|0;H[3]=(H[3]+d)|0},_doFinalize:function(){var data=this._data;var dataWords=data.words;var nBitsTotal=this._nDataBytes*8;var nBitsLeft=data.sigBytes*8;dataWords[nBitsLeft>>>5]|=128<<(24-nBitsLeft%32);var nBitsTotalH=Math.floor(nBitsTotal/4294967296);var nBitsTotalL=nBitsTotal;dataWords[(((nBitsLeft+64)>>>9)<<4)+15]=((((nBitsTotalH<<8)|(nBitsTotalH>>>24))&16711935)|(((nBitsTotalH<<24)|(nBitsTotalH>>>8))&4278255360));dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=((((nBitsTotalL<<8)|(nBitsTotalL>>>24))&16711935)|(((nBitsTotalL<<24)|(nBitsTotalL>>>8))&4278255360));data.sigBytes=(dataWords.length+1)*4;this._process();var hash=this._hash;var H=hash.words;for(var i=0;i<4;i++){var H_i=H[i];H[i]=(((H_i<<8)|(H_i>>>24))&16711935)|(((H_i<<24)|(H_i>>>8))&4278255360)}return hash},clone:function(){var clone=Hasher.clone.call(this);clone._hash=this._hash.clone();return clone}});function FF(a,b,c,d,x,s,t){var n=a+((b&c)|(~b&d))+x+t;return((n<<s)|(n>>>(32-s)))+b}function GG(a,b,c,d,x,s,t){var n=a+((b&d)|(c&~d))+x+t;return((n<<s)|(n>>>(32-s)))+b}function HH(a,b,c,d,x,s,t){var n=a+(b^c^d)+x+t;return((n<<s)|(n>>>(32-s)))+b}function II(a,b,c,d,x,s,t){var n=a+(c^(b|~d))+x+t;return((n<<s)|(n>>>(32-s)))+b}C.MD5=Hasher._createHelper(MD5);C.HmacMD5=Hasher._createHmacHelper(MD5)}(Math));(function(){var C=CryptoJS;var C_lib=C.lib;var WordArray=C_lib.WordArray;var Hasher=C_lib.Hasher;var C_algo=C.algo;var W=[];var SHA1=C_algo.SHA1=Hasher.extend({_doReset:function(){this._hash=new WordArray.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(M,offset){var H=this._hash.words;var a=H[0];var b=H[1];var c=H[2];var d=H[3];var e=H[4];for(var i=0;i<80;i++){if(i<16){W[i]=M[offset+i]|0}else{var n=W[i-3]^W[i-8]^W[i-14]^W[i-16];W[i]=(n<<1)|(n>>>31)}var t=((a<<5)|(a>>>27))+e+W[i];if(i<20){t+=((b&c)|(~b&d))+1518500249}else{if(i<40){t+=(b^c^d)+1859775393}else{if(i<60){t+=((b&c)|(b&d)|(c&d))-1894007588}else{t+=(b^c^d)-899497514}}}e=d;d=c;c=(b<<30)|(b>>>2);b=a;a=t}H[0]=(H[0]+a)|0;H[1]=(H[1]+b)|0;H[2]=(H[2]+c)|0;H[3]=(H[3]+d)|0;H[4]=(H[4]+e)|0},_doFinalize:function(){var data=this._data;var dataWords=data.words;var nBitsTotal=this._nDataBytes*8;var nBitsLeft=data.sigBytes*8;dataWords[nBitsLeft>>>5]|=128<<(24-nBitsLeft%32);dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=Math.floor(nBitsTotal/4294967296);dataWords[(((nBitsLeft+64)>>>9)<<4)+15]=nBitsTotal;data.sigBytes=dataWords.length*4;this._process();return this._hash},clone:function(){var clone=Hasher.clone.call(this);clone._hash=this._hash.clone();return clone}});C.SHA1=Hasher._createHelper(SHA1);C.HmacSHA1=Hasher._createHmacHelper(SHA1)}());(function(Math){var C=CryptoJS;var C_lib=C.lib;var WordArray=C_lib.WordArray;var Hasher=C_lib.Hasher;var C_algo=C.algo;var H=[];var K=[];(function(){function isPrime(n){var sqrtN=Math.sqrt(n);for(var factor=2;factor<=sqrtN;factor++){if(!(n%factor)){return false}}return true}function getFractionalBits(n){return((n-(n|0))*4294967296)|0}var n=2;var nPrime=0;while(nPrime<64){if(isPrime(n)){if(nPrime<8){H[nPrime]=getFractionalBits(Math.pow(n,1/2))}K[nPrime]=getFractionalBits(Math.pow(n,1/3));nPrime++}n++}}());var W=[];var SHA256=C_algo.SHA256=Hasher.extend({_doReset:function(){this._hash=new WordArray.init(H.slice(0))},_doProcessBlock:function(M,offset){var H=this._hash.words;var a=H[0];var b=H[1];var c=H[2];var d=H[3];var e=H[4];var f=H[5];var g=H[6];var h=H[7];for(var i=0;i<64;i++){if(i<16){W[i]=M[offset+i]|0}else{var gamma0x=W[i-15];var gamma0=((gamma0x<<25)|(gamma0x>>>7))^((gamma0x<<14)|(gamma0x>>>18))^(gamma0x>>>3);var gamma1x=W[i-2];var gamma1=((gamma1x<<15)|(gamma1x>>>17))^((gamma1x<<13)|(gamma1x>>>19))^(gamma1x>>>10);W[i]=gamma0+W[i-7]+gamma1+W[i-16]}var ch=(e&f)^(~e&g);var maj=(a&b)^(a&c)^(b&c);var sigma0=((a<<30)|(a>>>2))^((a<<19)|(a>>>13))^((a<<10)|(a>>>22));var sigma1=((e<<26)|(e>>>6))^((e<<21)|(e>>>11))^((e<<7)|(e>>>25));var t1=h+sigma1+ch+K[i]+W[i];var t2=sigma0+maj;h=g;g=f;f=e;e=(d+t1)|0;d=c;c=b;b=a;a=(t1+t2)|0}H[0]=(H[0]+a)|0;H[1]=(H[1]+b)|0;H[2]=(H[2]+c)|0;H[3]=(H[3]+d)|0;H[4]=(H[4]+e)|0;H[5]=(H[5]+f)|0;H[6]=(H[6]+g)|0;H[7]=(H[7]+h)|0},_doFinalize:function(){var data=this._data;var dataWords=data.words;var nBitsTotal=this._nDataBytes*8;var nBitsLeft=data.sigBytes*8;dataWords[nBitsLeft>>>5]|=128<<(24-nBitsLeft%32);dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=Math.floor(nBitsTotal/4294967296);dataWords[(((nBitsLeft+64)>>>9)<<4)+15]=nBitsTotal;data.sigBytes=dataWords.length*4;this._process();return this._hash},clone:function(){var clone=Hasher.clone.call(this);clone._hash=this._hash.clone();return clone}});C.SHA256=Hasher._createHelper(SHA256);C.HmacSHA256=Hasher._createHmacHelper(SHA256)}(Math));(function(){var C=CryptoJS;var C_lib=C.lib;var WordArray=C_lib.WordArray;var C_enc=C.enc;var Utf16BE=C_enc.Utf16=C_enc.Utf16BE={stringify:function(wordArray){var words=wordArray.words;
var sigBytes=wordArray.sigBytes;var utf16Chars=[];for(var i=0;i<sigBytes;i+=2){var codePoint=(words[i>>>2]>>>(16-(i%4)*8))&65535;utf16Chars.push(String.fromCharCode(codePoint))}return utf16Chars.join("")},parse:function(utf16Str){var utf16StrLength=utf16Str.length;var words=[];for(var i=0;i<utf16StrLength;i++){words[i>>>1]|=utf16Str.charCodeAt(i)<<(16-(i%2)*16)}return WordArray.create(words,utf16StrLength*2)}};C_enc.Utf16LE={stringify:function(wordArray){var words=wordArray.words;var sigBytes=wordArray.sigBytes;var utf16Chars=[];for(var i=0;i<sigBytes;i+=2){var codePoint=swapEndian((words[i>>>2]>>>(16-(i%4)*8))&65535