Commit a866cd37 authored by panpp's avatar panpp
Browse files

static init

parent 5c8b50e7
/*! Sea.js 3.0.0 | seajs.org/LICENSE.md */
var define,require;!function(a,b){function c(a){return function(b){return{}.toString.call(b)=="[object "+a+"]"}}function d(){}var e=c("Function"),f={};d.prototype.exec=function(){function a(a){return d.get(a).exec()}var c=this;if(this.execed)return c.exports;this.execed=!0;var f=c.factory,g=e(f)?f(a,c.exports={},c):f;return g===b&&(g=c.exports),delete c.factory,c.exports=g,g},define=function(a,b,c){var e={id:a,deps:b,factory:c};d.save(e)},d.save=function(a){var b=d.get(a.id);b.id=a.id,b.dependencies=a.deps,b.factory=a.factory},d.get=function(a){return f[a]||(f[a]=new d)},require=function(a){var b=d.get(a);return b.execed||b.exec(),b.exports}}(this);
\ No newline at end of file
/**
* iShare.js
* @author singsong
* @email zhansingsong@gmail.com
* @date 2016.3.6
*/
;
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define([], factory(root));
} else if (typeof exports === 'object') {
module.exports = factory(root);
} else {
root.iShare = factory(root);
}
})(typeof global !== 'undefined' ? global : this.window || this.global, function (root) {
/**
* 严格模式
*/
'use strict';
/**
* Util 单例工具类
*/
var Util = {
/**
* event 事件注册与注销
* addEvent 注册事件
* removeEvent 注销事件
*/
event: {
addEvent: function (element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent('on' + type, handler);
} else {
element['on' + type] = handler;
}
},
removeEvent: function (element, type, handler) {
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else if (element.detachEvent) {
element.detachEvent('on' + type, handler);
} else {
element['on' + type] = null;
}
},
stopPropagation: function (event) {
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
},
preventDefault: function (event) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
}
},
/**
* trim
* @param {String} str 字符串
* @return {String}
*/
trim: function (str) {
if (String.prototype.trim) {
return str.trim();
}
return str.replace(/^\s+|s+$/g, '');
},
/**
* indexOf
* @param {Array} arr 数组
* @param {Object} item 项
* @return {Number} 索引
*/
indexOf: function (arr, item) {
if (!this.isArray(arr)) {
throw new Error(arr.toString() + ' is a non-Array!');
}
if (Array.prototype.indexOf) {
return arr.indexOf(item);
}
for (var i = 0, len = arr.length; i < len; i++) {
if (arr[i] === item) {
return i;
}
}
},
/**
* isArray 判断是否是数组
* @param {Ojbect} arr 被判断对象
* @return {Boolean}
*/
isArray: function (arr) {
if (Array.isArray) {
return Array.isArray(arr);
}
return Object.prototype.toString.call(arr) === '[object Array]';
},
/**
* validate 验证用户输入的有效性
* @param {Object} ref 参考对象
* @param {Object} o 验证对象
* @return {Array} 错误队列
*/
validate: function (ref, o) {
var _key,
_result = [];
if (this.isArray(o)) {
for (var i = 0, item; item = o[i++];) {
if (this.indexOf(ref, item) < 0) {
_result.push(item);
}
}
} else {
for (_key in o) {
if (!(_key in ref)) {
_result.push(_key);
}
}
}
if (_result.length !== 0) {
throw new Error('there is such no property: ' + _result.join(', '));
}
},
/**
* getElementTop 获取元素的offsetTop
* @param {DOMObject} element 元素
* @return {Number} offsetTop值
*/
getElementTop: function (element) {
var _actualTop = element.offsetTop,
_current = element.offsetParent;
while (_current !== null) {
_actualTop += _current.offsetTop;
_current = _current.offsetParent;
}
return _actualTop;
},
/**
* getElementLeft 获取元素的offsetLeft
* @param {DOMObject} element 元素
* @return {Number} offsetLeft值
*/
getElementLeft: function (element) {
var _actualTop = element.offsetLeft,
_current = element.offsetParent;
while (_current !== null) {
_actualTop += _current.offsetLeft;
_current = _current.offsetParent;
}
return _actualTop;
},
/**
* handleParameters 处理URL参数
* @param {Object} options 配置项
* @return {String}
*/
handleParameters: function (options) {
var _str = '';
for (var key in options) {
_str = _str + key + '=' + encodeURIComponent(options[key]) + '&';
}
return _str;
},
/**
* extend mix-in
* @return {Ojbect}
*/
extend: function () {
var _arg,
_prop,
_child = {};
for (_arg = 0; _arg < arguments.length; _arg++) {
for (_prop in arguments[_arg]) {
if (arguments[_arg].hasOwnProperty(_prop)) {
_child[_prop] = arguments[_arg][_prop];
}
}
}
return _child;
},
/**
* each 遍历数组
* @param {Array} o 数组
* @param {Function} callback 回调函数
* @return {Object}
*/
each: function (o, callback) {
if (!o) {
return;
}
var _r;
for (var i = 0, l = o.length; i < l; i++) {
_r = callback.call(o[i], i, o[i]);
}
return _r;
},
/**
* getElementByclassN 通过class获取元素
* @param {String} classNameStr 类名
* @param {Node} parent 父元素
* @return {DOMObject}
*
* @example
* getElementByclassN('.test');
*/
getElementByclassN: function (classNameStr, parent) {
if (!classNameStr) {
return;
}
var _result = [];
if (!parent && document.querySelectorAll) {
_result = document.querySelectorAll(classNameStr);
if (_result.length > 0) {
return _result;
}
}
var _cnArr = classNameStr.split('.'),
_prefix = _cnArr[0] || '*',
_suffix = _cnArr[1],
_parent = parent ? parent : document.body,
_elements = _parent.getElementsByTagName(_prefix),
_classNames,
_target;
var _me = this;
this.each(_elements, function (index, item) {
if (item.nodeType === 1) {
_classNames = item.className.split(/\s+/g);
_target = item;
_me.each(_classNames, function (cindex, citem) {
if ((citem + '') === _suffix) {
_result.push(_target);
}
});
}
});
return _result;
},
/**
* getmeta 通过name获取对应meta的content值
* @param {String} name meta的name
* @return {String}
*/
getmeta: function (name) {
var _metas = document.getElementsByTagName('meta');
for (var i = 0, _item; _item = _metas[i++];) {
if (_item.getAttribute('name') && _item.getAttribute('name').toLowerCase() === name) {
return _item.content;
}
}
},
/**
* getimg 获取页面中第一张图片的URL
* @return {String}
*/
getimg: function () {
var _imgs = this.convertToArray(document.body.getElementsByTagName('img'));
if (_imgs.length === 0) {
return;
}
return encodeURIComponent(_imgs[0].src);
},
/**
* getElement 获取指定元素
* @param {String} selector 选择器(仅支持class和id)
*/
getElement: function (selector) {
var _node;
if (selector.charAt(0) === '#') {
_node = document.getElementById(selector);
} else {
_node = this.getElementByclassN(selector)[0];
}
return _node;
},
/**
* parseUrl 解析URL
* @param {Object} tpl 模板
* @param {Object} data 数据
* @return {Object}
*/
parseUrl: function (tpl, data) {
var _tplStr = {};
for (var _name in tpl) {
_tplStr[_name] = tpl[_name].replace(/{{([A-Z]*)}}/g, function (match, p1) {
var _key = p1.toLowerCase();
if (data[_key]) {
return encodeURIComponent(data[_key]);
} else {
return '';
}
});
}
return _tplStr;
},
/**
* isWeixinBrowser 判断是否在微信中
* @return {Boolean}
*/
isWeixinBrowser: function () {
var _ua = navigator.userAgent.toLowerCase();
return (/micromessenger/.test(_ua)) ? true : false;
},
/**
* convertToArray 转换为数组
* @param {NodeList} nodes Nodes数组
* @return {Array}
*/
convertToArray: function (nodes) {
var _array = null;
try {
_array = Array.prototype.slice.call(nodes, 0);
} catch (ex) {
// 针对IE8及之前版本
_array = new Array();
for (var i = 0, len = nodes.length; i < len; i++) {
_array.push(nodes[i]);
}
}
return _array;
},
/**
* parseClassName 解析类名
* @param {String} className 类名
* @param {Object} tpl 模板数据
* @return {String}
*/
parseClassName: function (className, tpl) {
var _result = null;
var _arr = className.split(/\s+/);
for (var i = 0, item; item = _arr[i++];) {
if (item in tpl) {
return tpl[item];
}
}
},
/**
* getWinDimension 获取可视页面的尺寸
* @return {Object}
*/
getWinDimension: function () {
var _pageWidth = window.innerWidth,
_pageHeight = window.innerHeight;
if (typeof _pageWidth !== 'number') {
if (document.compatMode === 'CSS1Compat') {
_pageWidth = document.documentElement.clientWidth;
_pageHeight = document.documentElement.clientHeight;
} else {
_pageWidth = document.body.clientWidth;
_pageHeight = document.body.clientHeight;
}
}
return { pageWidth: _pageWidth, pageHeight: _pageHeight };
},
/**
* throttle 节流优化
* @param {Function} fn 回调函数
* @param {Number} delay 时间间隔
*/
throttle: function (fn, delay) {
var timer = null;
return function () {
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(context, args);
}, delay);
};
},
/**
* loadjs 加载js文件
* @param {String} url 路径
* @param {Function} callback 回调函数
*/
loadjs: function () {
var ready = false,
cb = [];
return function (url, callback) {
var head = document.getElementsByTagName('head')[0],
node = document.createElement('script'),
isLoaded = document.getElementById('loaded'),
W3C = document.dispatchEvent;
cb.push(callback);
if (!ready) {
node.setAttribute('type', 'text/javascript');
node.setAttribute('id', 'loaded');
node.setAttribute('src', url);
node[W3C ? 'onload' : 'onreadystatechange'] = function () {
if (ready) {
return;
}
if (W3C || /loaded|complete/i.test(node.readyState)) {
ready = true;
var temp;
while (temp = cb.pop()) {
temp();
}
}
};
(!isLoaded) && (head.appendChild(node));
} else {
if (callback) {
callback();
}
}
}
}()
};
/**
* WX 微信类
* @param {DOMObject} element 微信按钮节点
* @param {object} options 配置项
*
*/
function WX(element, URL, options) {
this.element = element;
this.wxbox = document.createElement('div');
// 配置项
this.URL = URL;
this.settings = options;
this.style = options.style;
this.bgcolor = options.bgcolor;
this.evenType = options.evenType || 'mouseover'; // 默认触发方式
this.isTitleVisibility = (options.isTitleVisibility === void (0)) ? true : options.isTitleVisibility; // 是否有标题
this.title = options.title || '分享到微信';
this.isTipVisibility = (options.isTipVisibility === void (0)) ? true : options.isTipVisibility; // 是否有提示
this.tip = options.tip || '“扫一扫” 即可将网页分享到朋友圈。';
this.upDownFlag = '';// 保存up|down
this.status = false; // 保存状态
this.visibility = false;// 保存可见性
this.qrcode = null; // 保存二维码
}
WX.prototype.qrcode = null;// 保存二维码
WX.prototype = function () {
return {
constructor: WX,
init: function () {
//this.render();
this.init = this.show;
this.bindEvent();
},
loadQrcode: function () {
// 加载qrcode库
var js = document.scripts;
var path = "";
var c = js.length;
for (var i = 0; i < c; i++) {
var it = js[i];
var src = it.src;
if (src.indexOf("iShare") >= 0) {
path = src.substring(0, src.lastIndexOf('/') + 1)
}
}
Util.loadjs(path + 'qrcode.min.js', this.startQR());
},
render: function () {
var _upFlag = '',
_downFlag = '',
// _widthStyle = (!this.isTitleVisibility || !this.isTipVisibility) ? 'width: 110px;' : 'width : 150px;',
_imgStyle = '',//待定
_titleStyle = '',//待定
_tipStyle = '', //待定
_bgcolor = this.bgcolor ? this.bgcolor : '#ddd',
_radius = '';
// 判断上下
if (Util.getWinDimension().pageHeight / 2 < Util.getElementTop(this.element)) {
_downFlag = '';
_upFlag = 'display:none;';
this.upDownFlag = 'down';
_radius = 'border-bottom-left-radius: 0;';
} else {
_downFlag = 'display:none;';
_upFlag = '';
this.upDownFlag = 'up';
_radius = 'border-top-left-radius: 0;';
}
var _containerHTML = '<div style="text-align: center;background-color: ' + _bgcolor + ';box-shadow: 1px 1px 4px #888888;padding: 8px 8px 4px;border-radius: 4px;' + _radius + '">',
_titleHTML = this.isTitleVisibility ? '<p class="tt" style="line-height:30px;margin:0; text-shadow: 1px 1px rgba(0,0,0,0.1);font-weight: 700;margin-bottom: 4px;' + _titleStyle + '">' + this.title + '</p>' : '',
_imgHTML = '<div class="qrcode" style="width:' + this.settings.qrcodeW + 'px; height:' + this.settings.qrcodeH + 'px; overflow:hidden;"></div>',
_tipHTML = this.isTipVisibility ? '<p style="line-height:20px;font-size: 12px; margin: 4px auto;width: 120px;' + _tipStyle + '">' + this.tip + '</p>' : '',
_upArrowHTML = '<div style="' + _upFlag + 'position: relative;height: 0;width: 0;border-style: solid;border-width: 12px;border-color: transparent;border-bottom-color: ' + _bgcolor + ';border-top: none;"></div>',
_downArrowHTML = '</div><div style="' + _downFlag + 'position: relative;height: 0;width: 0;border-style: solid;border-width: 12px;border-color: transparent;border-top-color: ' + _bgcolor + ';border-bottom: none;"></div>';
// 拼接WXHTML
var WXSTR = _upArrowHTML + _containerHTML + _titleHTML + _imgHTML + _tipHTML + _downArrowHTML;
this.wxbox.innerHTML = WXSTR;
this.wxbox.style.cssText = 'position:absolute; left: -99999px;';
this.element.appendChild(this.wxbox);
this.loadQrcode();
},
setLocation: function (flag) {
var _boxH = this.wxbox.offsetHeight,
_eW = this.element.offsetWidth,
_eH = this.element.offsetHeight,
_boxStyle = 'position:absolute; color: #000;z-index: 99999;';
_boxStyle = _boxStyle + 'left: ' + (_eW / 2 - 12) + 'px;';
if (this.upDownFlag === 'down') {
_boxStyle = _boxStyle + 'bottom: ' + (_eH) + 'px;';
} else {
_boxStyle = _boxStyle + 'top: ' + (_eH) + 'px;';
}
this.wxbox.style.cssText = _boxStyle + this.style;
flag && (this.hide());
},
bindEvent: function () {
var _me = this;
if (this.evenType === 'click') {
Util.event.addEvent(this.element, 'click', function (e) {
var event = e || window.event;
Util.event.stopPropagation(event);
Util.event.preventDefault(event);
if (!_me.visibility) {
_me.show();
} else {
_me.hide();
}
});
} else {
Util.event.addEvent(this.element, 'mouseover', function (e) {
var event = e || window.event;
// Util.event.stopPropagation(event);
_me.show();
});
Util.event.addEvent(this.element, 'mouseout', function (e) {
var event = e || window.event;
// Util.event.stopPropagation(event);
_me.hide();
});
}
},
startQR: function () {
var me = this;
return function () {
if (!me.qrcode) {
me.qrcode = new QRCode(Util.getElementByclassN('.qrcode', me.wxbox)[0], {
text: me.URL,
width: me.settings.qrcodeW,
height: me.settings.qrcodeH,
colorDark: me.settings.qrcodeFgc,
colorLight: me.settings.qrcodeBgc
});
}
}
},
show: function () {
this.status = true;
this.render();
this.setLocation(true);
this.wxbox.style.display = 'block';
this.visibility = true;
this.show = function () {
this.wxbox.style.display = 'block';
this.visibility = true;
}
},
hide: function () {
this.wxbox.style.display = 'none';
this.visibility = false;
}
};
}();
/**
* iShare 分享
* @param {Object} options 配置项
* @property container
* @property config
*
* @description 提供两种初始化方式
* #1 单例模式
* #2 实例化模式
*/
function iShare(options) {
var defaults = {
title: document.title,
url: location.href,
host: location.origin || '',
description: Util.getmeta('description'),
image: Util.getimg(),
sites: ['iShare_weibo', 'iShare_qq', 'iShare_wechat', 'iShare_tencent', 'iShare_douban', 'iShare_qzone', 'iShare_renren', 'iShare_youdaonote', 'iShare_facebook', 'iShare_linkedin', 'iShare_twitter', 'iShare_googleplus', 'iShare_tumblr', 'iShare_pinterest'],
initialized: true,
isTitle: true,
isAbroad: false,
WXoptions: {
qrcodeW: 120,
qrcodeH: 120,
qrcodeBgc: '#fff',
qrcodeFgc: '#000',
bgcolor: '#2BAD13'
}
};
var configuration = options || window.iShare_config;
if (configuration) {
if (configuration.container) {
if (Util.getElement(configuration.container)) {
this.container = Util.getElement(configuration.container);
} else {
throw new Error('there is such no className|id: "' + configuration.container + '".');
}
} else {
throw new Error('container property is required.');
}
} else {
throw new Error('container property is required.');
}
var dataSites = this.container.getAttribute('data-sites'),
dataSitesArr = dataSites ? dataSites.split(/\s*,\s*/g) : null;
/* 验证用户输入的有效性 */
(dataSitesArr) && (Util.validate(defaults.sites, dataSitesArr));
(configuration.config) && (Util.validate(defaults, configuration.config));
(configuration.config.sites) && (Util.validate(defaults.sites, configuration.config.sites));
/* WX */
this.wx = null;
/* 保存defaults */
this.defaults = defaults;
this.dataSites = dataSitesArr ? { sites: dataSitesArr } : {};
this.config = configuration.config ? configuration.config : {};
// 处理isAbroad
if ((this.config.isAbroad === void (0))) {
this.config.sites = this.defaults.sites; // 默认
} else {
if (this.config.isAbroad) {
this.config.sites = defaults.sites.slice(8); // 国外
} else {
this.config.sites = defaults.sites.slice(0, 8); // 国内
}
}
/* 验证是否在微信中 */
if (Util.isWeixinBrowser()) {
(this.defaults.indexOf('iShare_wechat') > -1) && (this.defaults.splice(this.defaults.indexOf('iShare_wechat'), 1));
(this.dataSites.indexOf('iShare_wechat') > -1) && (this.dataSites.splice(this.dataSites.indexOf('iShare_wechat'), 1));
(this.config.indexOf('iShare_wechat') > -1) && (this.config.splice(this.config.indexOf('iShare_wechat'), 1));
}
this.settings = Util.extend(defaults, this.config, this.dataSites);
this.settings.WXoptions = Util.extend(defaults.WXoptions, this.config.WXoptions);
this.init();
}
iShare.prototype = (function () {
// 接口模板
var _templates = {
iShare_qq: 'http://connect.qq.com/widget/shareqq/index.html?url={{URL}}&title={{TITLE}}&desc={{DESCRIPTION}}&summary=&pics={{IMAGE}}',
iShare_qzone: 'http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url={{URL}}&title={{TITLE}}&summary={{DESCRIPTION}}&pics={{IMAGE}}&desc=&site=',
iShare_tencent: 'http://share.v.t.qq.com/index.php?c=share&a=index&title={{TITLE}}&url={{URL}}&pic={{IMAGE}}',
iShare_weibo: 'http://service.weibo.com/share/share.php?url={{URL}}&title={{TITLE}}&pic={{IMAGE}}',
iShare_wechat: '',
iShare_douban: 'http://shuo.douban.com/!service/share?href={{URL}}&name={{TITLE}}&text={{DESCRIPTION}}&image={{IMAGE}}',
iShare_renren: 'http://widget.renren.com/dialog/share?resourceUrl={{URL}}&title={{TITLE}}&pic={{IMAGE}}&description={{DESCRIPTION}}',
iShare_youdaonote: 'http://note.youdao.com/memory/?title={{TITLE}}&pic={{IMAGE}}&summary={{DESCRIPTION}}&url={{URL}}',
iShare_linkedin: 'http://www.linkedin.com/shareArticle?mini=true&ro=true&title={{TITLE}}&url={{URL}}&summary={{DESCRIPTION}}&armin=armin',
iShare_facebook: 'https://www.facebook.com/sharer/sharer.php?s=100&p[title]={{TITLE}}p[summary]={{DESCRIPTION}}&p[url]={{URL}}&p[images]={{IMAGE}}',
iShare_twitter: 'https://twitter.com/intent/tweet?text={{TITLE}}&url={{URL}}',
iShare_googleplus: 'https://plus.google.com/share?url={{URL}}&t={{TITLE}}',
iShare_pinterest: 'https://www.pinterest.com/pin/create/button/?url={{URL}}&description={{DESCRIPTION}}&media={{IMAGE}}',
iShare_tumblr: 'https://www.tumblr.com/widgets/share/tool?shareSource=legacy&canonicalUrl=&url={{URL}}&title={{TITLE}}'
},
_names = {
iShare_qq: 'QQ好友',
iShare_qzone: 'QQ空间',
iShare_tencent: '腾讯微博',
iShare_weibo: '新浪微博',
iShare_wechat: '微信',
iShare_douban: '豆瓣',
iShare_renren: '人人',
iShare_youdaonote: '有道笔记',
iShare_linkedin: 'Linkedin',
iShare_facebook: 'Facebook',
iShare_twitter: 'Twitter',
iShare_googleplus: 'Google+',
iShare_pinterest: 'Pinterest',
iShare_tumblr: 'Tumblr'
},
_icons = {
iShare_qq: '<i class="iconfont qq">&#xe60f;</i>',
iShare_qzone: '<i class="iconfont qzone">&#xe610;</i>',
iShare_tencent: '<i class="iconfont tencent" style="vertical-align: -2px;">&#xe608;</i>',
iShare_weibo: '<i class="iconfont weibo">&#xe609;</i>',
iShare_wechat: '<i class="iconfont wechat" style="vertical-align: -2px;">&#xe613;</i>',
iShare_douban: '<i class="iconfont douban" style="vertical-align: -2px;">&#xe612;</i>',
iShare_renren: '<i class="iconfont renren">&#xe603;</i>',
iShare_youdaonote: '<i class="iconfont youdaonote" style="vertical-align: -2px;">&#xe604;</i>',
iShare_linkedin: '<i class="iconfont linkedin" style="vertical-align: 1px;">&#xe607;</i>',
iShare_facebook: '<i class="iconfont facebook" style="vertical-align: 1px;">&#xe601;</i>',
iShare_twitter: '<i class="iconfont twitter" style="vertical-align: 1px;">&#xe60a;</i>',
iShare_googleplus: '<i class="iconfont googleplus" style="vertical-align: -2px;">&#xe60b;</i>',
iShare_pinterest: '<i class="iconfont pinterest" style="vertical-align: -2px;">&#xe60c;</i>',
iShare_tumblr: '<i class="iconfont tumblr" style="vertical-align: 0px;">&#xe600;</i>'
};
/**
* _updateUrl 更新添加分享的A标签
*/
function _updateUrl() {
if (!this.container.hasChildNodes()) {
return;
}
var _children = this.container.childNodes,
_tempURL;
for (var i = 0, item; item = _children[i++];) {
if (item.nodeType === 1) {
_tempURL = Util.parseClassName(item.className, Util.parseUrl(_templates, this.settings));
if ((item.className).indexOf('iShare_wechat') > -1) {
// this.wx = new WX(item, _tempURL, this.settings.WXoptions);
this.wx = new WX(item, this.settings.url, this.settings.WXoptions);
} else {
_tempURL && (item.href = _tempURL);
item.target = '_blank';
}
}
}
}
/**
* _createShareElements 创建分享元素
* @param {String} url 分享接口
* @param {String} item key
* @param {Boolean} isWechat 是否是微信
* @return {DOMObject}
*/
function _createShareElements(url, item, isWechat) {
var _e = document.createElement('a');
_e.innerHTML = _icons[item];
if (this.settings.isTitle) {
_e.title = _names[item];
}
if (isWechat) {
this.wx = new WX(_e, url, this.settings.WXoptions);
_e.href = 'javascript:void(0);';
} else {
_e.href = url;
_e.target = '_blank';
}
return _e;
}
/**
* _autoUpdate 动态创建分享
*/
function _autoUpdate() {
var _docfrag = document.createDocumentFragment(),
_tpls = Util.parseUrl(_templates, this.settings),
_element,
_me = this;
Util.each(_me.settings.sites, function (index, item) {
if (item === 'iShare_wechat') {
// _element = _createShareElements.call(_me, _tpls[item], item, true);
_element = _createShareElements.call(_me, _me.settings.url, item, true);
} else {
_element = _createShareElements.call(_me, _tpls[item], item);
}
_docfrag.appendChild(_element);
});
this.container.innerHTML = '';
this.container.appendChild(_docfrag);
}
//prototype
return {
constructor: iShare,
init: function () {
if (this.settings.initialized) {
_autoUpdate.call(this);
} else {
_updateUrl.call(this);
}
if (this.wx) {
this.bindEvent();
this.wx.init();
}
},
bindEvent: function () {
var me = this;
// 只绑定一次,进行初始化
function mouseenterCB() {
Util.event.removeEvent(me.container, 'mouseover', mouseenterCB);
}
Util.event.addEvent(this.container, 'mouseover', mouseenterCB);
}
}
})();
if (window.iShare_config) {
return (new iShare());
} else {
return iShare;
}
});
\ No newline at end of file
/**
* iShare.js
* @author singsong
* @email zhansingsong@gmail.com
* @date 2016.3.6
*/
;
(function (root, factory) {
if ( typeof define === 'function' && define.amd ) {
define([], factory(root));
} else if ( typeof exports === 'object' ) {
module.exports = factory(root);
} else {
root.iShare = factory(root);
}
})(typeof global !== 'undefined' ? global : this.window || this.global, function (root) {
/**
* 严格模式
*/
'use strict';
/**
* Util 单例工具类
*/
var Util = {
/**
* event 事件注册与注销
* addEvent 注册事件
* removeEvent 注销事件
*/
event: {
addEvent: function(element, type, handler){
if(element.addEventListener){
element.addEventListener(type, handler, false);
} else if(element.attachEvent){
element.attachEvent('on' + type, handler);
} else {
element['on' + type] = handler;
}
},
removeEvent: function(element, type, handler){
if(element.removeEventListener){
element.removeEventListener(type, handler, false);
} else if(element.detachEvent){
element.detachEvent('on' + type, handler);
} else {
element['on' + type] = null;
}
},
stopPropagation: function(event){
if(event.stopPropagation) {
event.stopPropagation();
}else {
event.cancelBubble = true;
}
},
preventDefault: function(event){
if(event.preventDefault){
event.preventDefault();
} else {
event.returnValue = false;
}
}
},
/**
* trim
* @param {String} str 字符串
* @return {String}
*/
trim: function(str){
if(String.prototype.trim){
return str.trim();
}
return str.replace(/^\s+|s+$/g, '');
},
/**
* indexOf
* @param {Array} arr 数组
* @param {Object} item 项
* @return {Number} 索引
*/
indexOf: function(arr, item){
if(!this.isArray(arr)){
throw new Error(arr.toString() + ' is a non-Array!');
}
if(Array.prototype.indexOf){
return arr.indexOf(item);
}
for(var i = 0, len = arr.length; i < len; i++){
if(arr[i] === item){
return i;
}
}
},
/**
* isArray 判断是否是数组
* @param {Ojbect} arr 被判断对象
* @return {Boolean}
*/
isArray: function(arr) {
if(Array.isArray){
return Array.isArray(arr);
}
return Object.prototype.toString.call(arr) === '[object Array]';
},
/**
* validate 验证用户输入的有效性
* @param {Object} ref 参考对象
* @param {Object} o 验证对象
* @return {Array} 错误队列
*/
validate: function(ref, o){
var _key,
_result = [];
if(this.isArray(o)){
for(var i = 0, item; item = o[i++];){
if(this.indexOf(ref, item) < 0){
_result.push(item);
}
}
} else {
for(_key in o){
if(!(_key in ref)){
_result.push(_key);
}
}
}
if(_result.length !== 0){
throw new Error('there is such no property: ' + _result.join(', '));
}
},
/**
* getElementTop 获取元素的offsetTop
* @param {DOMObject} element 元素
* @return {Number} offsetTop值
*/
getElementTop: function(element) {
var _actualTop = element.offsetTop,
_current = element.offsetParent;
while (_current !== null) {
_actualTop += _current.offsetTop;
_current = _current.offsetParent;
}
return _actualTop;
},
/**
* getElementLeft 获取元素的offsetLeft
* @param {DOMObject} element 元素
* @return {Number} offsetLeft值
*/
getElementLeft: function(element) {
var _actualTop = element.offsetLeft,
_current = element.offsetParent;
while (_current !== null) {
_actualTop += _current.offsetLeft;
_current = _current.offsetParent;
}
return _actualTop;
},
/**
* handleParameters 处理URL参数
* @param {Object} options 配置项
* @return {String}
*/
handleParameters: function(options) {
var _str = '';
for(var key in options){
_str = _str + key + '=' + encodeURIComponent(options[key]) + '&';
}
return _str;
},
/**
* extend mix-in
* @return {Ojbect}
*/
extend: function() {
var _arg,
_prop,
_child = {};
for(_arg = 0; _arg < arguments.length; _arg++) {
for(_prop in arguments[_arg]){
if(arguments[_arg].hasOwnProperty(_prop)){
_child[_prop] = arguments[_arg][_prop];
}
}
}
return _child;
},
/**
* each 遍历数组
* @param {Array} o 数组
* @param {Function} callback 回调函数
* @return {Object}
*/
each: function(o, callback) {
if(!o){
return;
}
var _r;
for(var i = 0, l = o.length; i < l; i++){
_r = callback.call(o[i], i, o[i]);
}
return _r;
},
/**
* getElementByclassN 通过class获取元素
* @param {String} classNameStr 类名
* @param {Node} parent 父元素
* @return {DOMObject}
*
* @example
* getElementByclassN('.test');
*/
getElementByclassN: function(classNameStr, parent) {
if(!classNameStr){
return;
}
var _result = [];
if(!parent && document.querySelectorAll){
_result = document.querySelectorAll(classNameStr);
if(_result.length > 0){
return _result;
}
}
var _cnArr = classNameStr.split('.'),
_prefix = _cnArr[0] || '*',
_suffix = _cnArr[1],
_parent = parent ? parent : document.body,
_elements = _parent.getElementsByTagName(_prefix),
_classNames,
_target;
var _me = this;
this.each(_elements, function(index, item){
if( item.nodeType === 1 ){
_classNames = item.className.split(/\s+/g);
_target = item;
_me.each(_classNames, function(cindex, citem){
if((citem + '') === _suffix){
_result.push(_target);
}
});
}
});
return _result;
},
/**
* getmeta 通过name获取对应meta的content值
* @param {String} name meta的name
* @return {String}
*/
getmeta: function(name) {
var _metas = document.getElementsByTagName('meta');
for(var i = 0, _item; _item = _metas[i++];){
if(_item.getAttribute('name') && _item.getAttribute('name').toLowerCase() === name){
return _item.content;
}
}
},
/**
* getimg 获取页面中第一张图片的URL
* @return {String}
*/
getimg: function(){
var _imgs = this.convertToArray(document.body.getElementsByTagName('img'));
if(_imgs.length === 0){
return;
}
return encodeURIComponent(_imgs[0].src);
},
/**
* getElement 获取指定元素
* @param {String} selector 选择器(仅支持class和id)
*/
getElement: function(selector){
var _node;
if(selector.charAt(0) === '#'){
_node = document.getElementById(selector);
} else {
_node = this.getElementByclassN(selector)[0];
}
return _node;
},
/**
* parseUrl 解析URL
* @param {Object} tpl 模板
* @param {Object} data 数据
* @return {Object}
*/
parseUrl: function(tpl, data){
var _tplStr = {};
for(var _name in tpl){
_tplStr[_name] = tpl[_name].replace(/{{([A-Z]*)}}/g, function(match, p1){
var _key = p1.toLowerCase();
if(data[_key]){
return encodeURIComponent(data[_key]);
} else {
return '';
}
});
}
return _tplStr;
},
/**
* isWeixinBrowser 判断是否在微信中
* @return {Boolean}
*/
isWeixinBrowser: function(){
var _ua = navigator.userAgent.toLowerCase();
return (/micromessenger/.test(_ua)) ? true : false ;
},
/**
* convertToArray 转换为数组
* @param {NodeList} nodes Nodes数组
* @return {Array}
*/
convertToArray: function(nodes){
var _array = null;
try {
_array = Array.prototype.slice.call(nodes, 0);
} catch (ex){
// 针对IE8及之前版本
_array = new Array();
for(var i = 0, len = nodes.length; i < len; i++) {
_array.push(nodes[i]);
}
}
return _array;
},
/**
* parseClassName 解析类名
* @param {String} className 类名
* @param {Object} tpl 模板数据
* @return {String}
*/
parseClassName: function(className, tpl){
var _result = null;
var _arr = className.split(/\s+/);
for(var i = 0, item; item = _arr[i++];){
if(item in tpl){
return tpl[item];
}
}
},
/**
* getWinDimension 获取可视页面的尺寸
* @return {Object}
*/
getWinDimension: function(){
var _pageWidth = window.innerWidth,
_pageHeight = window.innerHeight;
if(typeof _pageWidth !== 'number'){
if(document.compatMode === 'CSS1Compat'){
_pageWidth = document.documentElement.clientWidth;
_pageHeight = document.documentElement.clientHeight;
} else {
_pageWidth = document.body.clientWidth;
_pageHeight = document.body.clientHeight;
}
}
return {pageWidth: _pageWidth, pageHeight: _pageHeight};
},
/**
* throttle 节流优化
* @param {Function} fn 回调函数
* @param {Number} delay 时间间隔
*/
throttle: function(fn, delay){
var timer = null;
return function(){
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function(){
fn.apply(context, args);
}, delay);
};
},
/**
* loadjs 加载js文件
* @param {String} url 路径
* @param {Function} callback 回调函数
*/
loadjs: function() {
var ready = false,
cb = [];
return function(url, callback){
var head = document.getElementsByTagName('head')[0],
node = document.createElement('script'),
isLoaded = document.getElementById('loaded'),
W3C = document.dispatchEvent;
cb.push(callback);
if(!ready){
node.setAttribute('type', 'text/javascript');
node.setAttribute('id', 'loaded');
node.setAttribute('src', url);
node[W3C ? 'onload' : 'onreadystatechange'] = function(){
if(ready){
return;
}
if(W3C || /loaded|complete/i.test(node.readyState)) {
ready = true;
var temp;
while(temp = cb.pop()){
temp();
}
}
};
(!isLoaded) && (head.appendChild(node));
} else {
if(callback){
callback();
}
}
}
}()
};
/**
* WX 微信类
* @param {DOMObject} element 微信按钮节点
* @param {object} options 配置项
*
*/
function WX(element, URL, options) {
this.element = element;
this.wxbox = document.createElement('div');
// 配置项
this.URL = URL;
this.settings = options;
this.style = options.style;
this.bgcolor = options.bgcolor;
this.evenType = options.evenType || 'mouseover'; // 默认触发方式
this.isTitleVisibility = (options.isTitleVisibility === void(0)) ? true : options.isTitleVisibility; // 是否有标题
this.title = options.title || '分享到微信';
this.isTipVisibility = (options.isTipVisibility === void(0)) ? true : options.isTipVisibility; // 是否有提示
this.tip = options.tip || '“扫一扫” 即可将网页分享到朋友圈。';
this.upDownFlag = '';// 保存up|down
this.status = false; // 保存状态
this.visibility = false;// 保存可见性
this.qrcode = null; // 保存二维码
}
WX.prototype = function() {
return{
constructor: WX,
init: function() {
this.render();
this.init = this.show;
this.bindEvent();
},
render: function(){
var _upFlag = '',
_downFlag = '',
// _widthStyle = (!this.isTitleVisibility || !this.isTipVisibility) ? 'width: 110px;' : 'width : 150px;',
_imgStyle = '',//待定
_titleStyle = '',//待定
_tipStyle = '', //待定
_bgcolor = this.bgcolor ? this.bgcolor : '#ddd',
_radius = '';
// 判断上下
if (Util.getWinDimension().pageHeight / 2 < Util.getElementTop(this.element)) {
_downFlag = '';
_upFlag = 'display:none;';
this.upDownFlag = 'down';
_radius = 'border-bottom-left-radius: 0;';
} else {
_downFlag = 'display:none;';
_upFlag = '';
this.upDownFlag = 'up';
_radius = 'border-top-left-radius: 0;';
}
var _containerHTML = '<div style="text-align: center;background-color: ' + _bgcolor + ';box-shadow: 1px 1px 4px #888888;padding: 8px 8px 4px;border-radius: 4px;' + _radius + '">',
_titleHTML = this.isTitleVisibility ? '<p class="tt" style="line-height: 30px;margin:0; text-shadow: 1px 1px rgba(0,0,0,0.1);font-weight: 700;margin-bottom: 4px;' + _titleStyle + '">' + this.title + '</p>' : '',
// _imgHTML = '<img style="font-size: 12px;line-height: 20px; -webkit-user-select: none;box-shadow: 1px 1px 2px rgba(0,0,0,0.4); ' + _imgStyle + '" src="' + this.URL + '">',
_imgHTML = '<div class="qrcode" style="width:' + this.settings.qrcodeW + 'px; height:' + this.settings.qrcodeH + 'px; overflow:hidden;"></div>',
_tipHTML = this.isTipVisibility ? '<p style="font-size: 12px;line-height: 20px; margin: 4px auto;width: 120px;' + _tipStyle + '">' + this.tip + '</p>' : '',
_upArrowHTML = '<div style="' + _upFlag + 'position: relative;height: 0;width: 0;border-style: solid;border-width: 12px;border-color: transparent;border-bottom-color: ' + _bgcolor + ';border-top: none;"></div>',
_downArrowHTML = '</div><div style="' + _downFlag + 'position: relative;height: 0;width: 0;border-style: solid;border-width: 12px;border-color: transparent;border-top-color: ' + _bgcolor + ';border-bottom: none;"></div>';
// 拼接WXHTML
var WXSTR = _upArrowHTML + _containerHTML + _titleHTML + _imgHTML + _tipHTML + _downArrowHTML;
this.wxbox.innerHTML = WXSTR;
this.wxbox.style.cssText = 'position:absolute; left: -99999px;';
document.body.appendChild(this.wxbox);
},
setLocation: function(flag){
// 渲染后再调整位置
var _boxW = this.wxbox.offsetWidth,
_boxH = this.wxbox.offsetHeight,
_eW = this.element.offsetWidth,
_eH = this.element.offsetHeight,
_eTop = Util.getElementTop(this.element),
_eLeft = Util.getElementLeft(this.element),
_boxStyle = 'position:absolute; color: #000;z-index: 99999;';
_boxStyle = _boxStyle + 'left: ' + ( _eW / 2 - 12 + _eLeft) + 'px;';
if(this.upDownFlag === 'down'){
_boxStyle = _boxStyle + 'top: ' + (_eTop - _boxH) + 'px;';
} else {
_boxStyle = _boxStyle + 'top: ' + (_eTop + _eH) + 'px;';
}
this.wxbox.style.cssText = _boxStyle + this.style;
flag && (this.hide());
},
bindEvent: function() {
var _me = this;
if(this.evenType === 'click'){
Util.event.addEvent(this.element, 'click', function(e){
var event = e || window.event;
Util.event.stopPropagation(event);
Util.event.preventDefault(event);
if(!_me.visibility){
_me.show();
} else {
_me.hide();
}
});
} else {
Util.event.addEvent(this.element, 'mouseover', function(e){
var event = e || window.event;
// Util.event.stopPropagation(event);
_me.show();
});
Util.event.addEvent(this.element, 'mouseout', function(e){
var event = e || window.event;
// Util.event.stopPropagation(event);
_me.hide();
});
}
Util.event.addEvent(window, 'resize', Util.throttle(function(){
(_me.status) && (_me.visibility) && (_me.setLocation());
}, 200));
},
startQR: function(){
var me = this;
return function(){
if(!me.qrcode){
me.qrcode = new QRCode(Util.getElementByclassN('.qrcode', me.wxbox)[0], {
text: me.URL,
width: me.settings.qrcodeW,
height: me.settings.qrcodeH,
colorDark : me.settings.qrcodeFgc,
colorLight : me.settings.qrcodeBgc
});
}
}
},
show: function(){
this.status = true;
this.wxbox.style.display = 'block';
this.visibility = true;
this.show = function(){
this.wxbox.style.display = 'block';
this.visibility = true;
}
},
hide: function() {
this.wxbox.style.display = 'none';
this.visibility = false;
}
};
}();
/**
* iShare 分享
*/
function iShare(options) {
var defaults = {
title : document.title,
url : location.href,
host : location.origin || '',
description : Util.getmeta('description'),
image : Util.getimg(),
WXoptions : {
qrcodeW: 120,
qrcodeH: 120,
qrcodeBgc: '#fff',
qrcodeFgc: '#000',
bgcolor: '#2BAD13'
}
};
var configuration = options || window.iShare_config;
if(configuration){
if(configuration.container){
if(Util.getElement(configuration.container)){
this.container = Util.getElement(configuration.container);
} else {
throw new Error('there is such no className|id: "' + configuration.container + '".');
}
} else {
throw new Error('container property is required.');
}
} else {
throw new Error('container property is required.');
}
var dataSites = this.container.getAttribute('data-sites'),
dataSitesArr = dataSites ? dataSites.split(/\s*,\s*/g) : null;
/* 验证用户输入的有效性 */
(dataSitesArr) && (Util.validate(defaults.sites, dataSitesArr));
(configuration.config) && (Util.validate(defaults, configuration.config));
(configuration.config.sites) && (Util.validate(defaults.sites, configuration.config.sites));
/* WX */
this.wx = null;
/* 保存defaults */
this.defaults = defaults;
this.dataSites = dataSitesArr ? {sites: dataSitesArr} : {};
this.config = configuration.config ? configuration.config : {};
this.settings = Util.extend(defaults, this.config, this.dataSites);
this.settings.WXoptions = Util.extend(defaults.WXoptions, this.config.WXoptions);
this.init();
}
iShare.prototype = (function(){
var _templates = {
iShare_qq : 'http://connect.qq.com/widget/shareqq/index.html?url={{URL}}&title={{TITLE}}&desc={{DESCRIPTION}}&summary=&pics={{IMAGE}}',
iShare_qzone : 'http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url={{URL}}&title={{TITLE}}&summary={{DESCRIPTION}}&pics={{IMAGE}}&desc=&site=',
iShare_tencent : 'http://share.v.t.qq.com/index.php?c=share&a=index&title={{TITLE}}&url={{URL}}&pic={{IMAGE}}',
iShare_weibo : 'http://service.weibo.com/share/share.php?url={{URL}}&title={{TITLE}}&pic={{IMAGE}}',
iShare_wechat : '',
iShare_douban : 'http://shuo.douban.com/!service/share?href={{URL}}&name={{TITLE}}&text={{DESCRIPTION}}&image={{IMAGE}}',
iShare_renren : 'http://widget.renren.com/dialog/share?resourceUrl={{URL}}&title={{TITLE}}&pic={{IMAGE}}&description={{DESCRIPTION}}',
iShare_youdaonote : 'http://note.youdao.com/memory/?title={{TITLE}}&pic={{IMAGE}}&summary={{DESCRIPTION}}&url={{URL}}',
iShare_linkedin : 'http://www.linkedin.com/shareArticle?mini=true&ro=true&title={{TITLE}}&url={{URL}}&summary={{DESCRIPTION}}&armin=armin',
iShare_facebook : 'https://www.facebook.com/sharer/sharer.php?s=100&p[title]={{TITLE}}p[summary]={{DESCRIPTION}}&p[url]={{URL}}&p[images]={{IMAGE}}',
iShare_twitter : 'https://twitter.com/intent/tweet?text={{TITLE}}&url={{URL}}',
iShare_googleplus : 'https://plus.google.com/share?url={{URL}}&t={{TITLE}}',
iShare_pinterest : 'https://www.pinterest.com/pin/create/button/?url={{URL}}&description={{DESCRIPTION}}&media={{IMAGE}}',
iShare_tumblr : 'https://www.tumblr.com/widgets/share/tool?shareSource=legacy&canonicalUrl=&url={{URL}}&title={{TITLE}}'
};
/**
* _updateUrl 更新添加分享的A标签
*/
function _updateUrl(){
if(this.container === void(0) || !this.container.hasChildNodes()){
return;
}
var _children = this.container.childNodes,
_tempURL;
for(var i = 0, item; item = _children[i++];){
if(item.nodeType === 1){
_tempURL = Util.parseClassName(item.className, Util.parseUrl(_templates, this.settings));
/* 验证是否在微信中 */
if((item.className).indexOf('iShare_wechat') > -1 && !(Util.isWeixinBrowser())){
// this.wx = new WX(item, _tempURL, this.settings.WXoptions);
this.wx = new WX(item, this.settings.url, this.settings.WXoptions);
} else {
_tempURL && (item.href = _tempURL);
item.target = '_blank';
}
}
}
}
//prototype
return{
constructor: iShare,
init: function() {
_updateUrl.call(this);
if(this.wx){
this.bindEvent();
this.wx.init();
// 加载qrcode库
Util.loadjs(ms.base+'/static/plugins/share/qrcode.min.js', this.wx.startQR());
}
},
bindEvent: function(){
var me = this;
// 只绑定一次,进行初始化
function mouseenterCB(){
me.wx.setLocation(true);
Util.event.removeEvent(me.container, 'mouseover', mouseenterCB);
}
Util.event.addEvent(this.container, 'mouseover', mouseenterCB);
}
}
})();
if(window.iShare_config){
return (new iShare());
} else {
return iShare;
}
});
\ No newline at end of file
var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this.parsedData=[];for(var b=[],d=0,e=this.data.length;e>d;d++){var f=this.data.charCodeAt(d);f>65536?(b[0]=240|(1835008&f)>>>18,b[1]=128|(258048&f)>>>12,b[2]=128|(4032&f)>>>6,b[3]=128|63&f):f>2048?(b[0]=224|(61440&f)>>>12,b[1]=128|(4032&f)>>>6,b[2]=128|63&f):f>128?(b[0]=192|(1984&f)>>>6,b[1]=128|63&f):b[0]=f,this.parsedData=this.parsedData.concat(b)}this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function b(a,b){this.typeNumber=a,this.errorCorrectLevel=b,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function i(a,b){if(void 0==a.length)throw new Error(a.length+"/"+b);for(var c=0;c<a.length&&0==a[c];)c++;this.num=new Array(a.length-c+b);for(var d=0;d<a.length-c;d++)this.num[d]=a[d+c]}function j(a,b){this.totalCount=a,this.dataCount=b}function k(){this.buffer=[],this.length=0}function m(){return"undefined"!=typeof CanvasRenderingContext2D}function n(){var a=!1,b=navigator.userAgent;return/android/i.test(b)&&(a=!0,aMat=b.toString().match(/android ([0-9]\.[0-9])/i),aMat&&aMat[1]&&(a=parseFloat(aMat[1]))),a}function r(a,b){for(var c=1,e=s(a),f=0,g=l.length;g>=f;f++){var h=0;switch(b){case d.L:h=l[f][0];break;case d.M:h=l[f][1];break;case d.Q:h=l[f][2];break;case d.H:h=l[f][3]}if(h>=e)break;c++}if(c>l.length)throw new Error("Too long data");return c}function s(a){var b=encodeURI(a).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return b.length+(b.length!=a?3:0)}a.prototype={getLength:function(){return this.parsedData.length},write:function(a){for(var b=0,c=this.parsedData.length;c>b;b++)a.put(this.parsedData[b],8)}},b.prototype={addData:function(b){var c=new a(b);this.dataList.push(c),this.dataCache=null},isDark:function(a,b){if(0>a||this.moduleCount<=a||0>b||this.moduleCount<=b)throw new Error(a+","+b);return this.modules[a][b]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=new Array(this.moduleCount);for(var e=0;e<this.moduleCount;e++)this.modules[d][e]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(a,c),this.typeNumber>=7&&this.setupTypeNumber(a),null==this.dataCache&&(this.dataCache=b.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,b){for(var c=-1;7>=c;c++)if(!(-1>=a+c||this.moduleCount<=a+c))for(var d=-1;7>=d;d++)-1>=b+d||this.moduleCount<=b+d||(this.modules[a+c][b+d]=c>=0&&6>=c&&(0==d||6==d)||d>=0&&6>=d&&(0==c||6==c)||c>=2&&4>=c&&d>=2&&4>=d?!0:!1)},getBestMaskPattern:function(){for(var a=0,b=0,c=0;8>c;c++){this.makeImpl(!0,c);var d=f.getLostPoint(this);(0==c||a>d)&&(a=d,b=c)}return b},createMovieClip:function(a,b,c){var d=a.createEmptyMovieClip(b,c),e=1;this.make();for(var f=0;f<this.modules.length;f++)for(var g=f*e,h=0;h<this.modules[f].length;h++){var i=h*e,j=this.modules[f][h];j&&(d.beginFill(0,100),d.moveTo(i,g),d.lineTo(i+e,g),d.lineTo(i+e,g+e),d.lineTo(i,g+e),d.endFill())}return d},setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(var b=8;b<this.moduleCount-8;b++)null==this.modules[6][b]&&(this.modules[6][b]=0==b%2)},setupPositionAdjustPattern:function(){for(var a=f.getPatternPosition(this.typeNumber),b=0;b<a.length;b++)for(var c=0;c<a.length;c++){var d=a[b],e=a[c];if(null==this.modules[d][e])for(var g=-2;2>=g;g++)for(var h=-2;2>=h;h++)this.modules[d+g][e+h]=-2==g||2==g||-2==h||2==h||0==g&&0==h?!0:!1}},setupTypeNumber:function(a){for(var b=f.getBCHTypeNumber(this.typeNumber),c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[Math.floor(c/3)][c%3+this.moduleCount-8-3]=d}for(var c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[c%3+this.moduleCount-8-3][Math.floor(c/3)]=d}},setupTypeInfo:function(a,b){for(var c=this.errorCorrectLevel<<3|b,d=f.getBCHTypeInfo(c),e=0;15>e;e++){var g=!a&&1==(1&d>>e);6>e?this.modules[e][8]=g:8>e?this.modules[e+1][8]=g:this.modules[this.moduleCount-15+e][8]=g}for(var e=0;15>e;e++){var g=!a&&1==(1&d>>e);8>e?this.modules[8][this.moduleCount-e-1]=g:9>e?this.modules[8][15-e-1+1]=g:this.modules[8][15-e-1]=g}this.modules[this.moduleCount-8][8]=!a},mapData:function(a,b){for(var c=-1,d=this.moduleCount-1,e=7,g=0,h=this.moduleCount-1;h>0;h-=2)for(6==h&&h--;;){for(var i=0;2>i;i++)if(null==this.modules[d][h-i]){var j=!1;g<a.length&&(j=1==(1&a[g]>>>e));var k=f.getMask(b,d,h-i);k&&(j=!j),this.modules[d][h-i]=j,e--,-1==e&&(g++,e=7)}if(d+=c,0>d||this.moduleCount<=d){d-=c,c=-c;break}}}},b.PAD0=236,b.PAD1=17,b.createData=function(a,c,d){for(var e=j.getRSBlocks(a,c),g=new k,h=0;h<d.length;h++){var i=d[h];g.put(i.mode,4),g.put(i.getLength(),f.getLengthInBits(i.mode,a)),i.write(g)}for(var l=0,h=0;h<e.length;h++)l+=e[h].dataCount;if(g.getLengthInBits()>8*l)throw new Error("code length overflow. ("+g.getLengthInBits()+">"+8*l+")");for(g.getLengthInBits()+4<=8*l&&g.put(0,4);0!=g.getLengthInBits()%8;)g.putBit(!1);for(;;){if(g.getLengthInBits()>=8*l)break;if(g.put(b.PAD0,8),g.getLengthInBits()>=8*l)break;g.put(b.PAD1,8)}return b.createBytes(g,e)},b.createBytes=function(a,b){for(var c=0,d=0,e=0,g=new Array(b.length),h=new Array(b.length),j=0;j<b.length;j++){var k=b[j].dataCount,l=b[j].totalCount-k;d=Math.max(d,k),e=Math.max(e,l),g[j]=new Array(k);for(var m=0;m<g[j].length;m++)g[j][m]=255&a.buffer[m+c];c+=k;var n=f.getErrorCorrectPolynomial(l),o=new i(g[j],n.getLength()-1),p=o.mod(n);h[j]=new Array(n.getLength()-1);for(var m=0;m<h[j].length;m++){var q=m+p.getLength()-h[j].length;h[j][m]=q>=0?p.get(q):0}}for(var r=0,m=0;m<b.length;m++)r+=b[m].totalCount;for(var s=new Array(r),t=0,m=0;d>m;m++)for(var j=0;j<b.length;j++)m<g[j].length&&(s[t++]=g[j][m]);for(var m=0;e>m;m++)for(var j=0;j<b.length;j++)m<h[j].length&&(s[t++]=h[j][m]);return s};for(var c={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},d={L:1,M:0,Q:3,H:2},e={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},f={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var b=a<<10;f.getBCHDigit(b)-f.getBCHDigit(f.G15)>=0;)b^=f.G15<<f.getBCHDigit(b)-f.getBCHDigit(f.G15);return(a<<10|b)^f.G15_MASK},getBCHTypeNumber:function(a){for(var b=a<<12;f.getBCHDigit(b)-f.getBCHDigit(f.G18)>=0;)b^=f.G18<<f.getBCHDigit(b)-f.getBCHDigit(f.G18);return a<<12|b},getBCHDigit:function(a){for(var b=0;0!=a;)b++,a>>>=1;return b},getPatternPosition:function(a){return f.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,b,c){switch(a){case e.PATTERN000:return 0==(b+c)%2;case e.PATTERN001:return 0==b%2;case e.PATTERN010:return 0==c%3;case e.PATTERN011:return 0==(b+c)%3;case e.PATTERN100:return 0==(Math.floor(b/2)+Math.floor(c/3))%2;case e.PATTERN101:return 0==b*c%2+b*c%3;case e.PATTERN110:return 0==(b*c%2+b*c%3)%2;case e.PATTERN111:return 0==(b*c%3+(b+c)%2)%2;default:throw new Error("bad maskPattern:"+a)}},getErrorCorrectPolynomial:function(a){for(var b=new i([1],0),c=0;a>c;c++)b=b.multiply(new i([1,g.gexp(c)],0));return b},getLengthInBits:function(a,b){if(b>=1&&10>b)switch(a){case c.MODE_NUMBER:return 10;case c.MODE_ALPHA_NUM:return 9;case c.MODE_8BIT_BYTE:return 8;case c.MODE_KANJI:return 8;default:throw new Error("mode:"+a)}else if(27>b)switch(a){case c.MODE_NUMBER:return 12;case c.MODE_ALPHA_NUM:return 11;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 10;default:throw new Error("mode:"+a)}else{if(!(41>b))throw new Error("type:"+b);switch(a){case c.MODE_NUMBER:return 14;case c.MODE_ALPHA_NUM:return 13;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 12;default:throw new Error("mode:"+a)}}},getLostPoint:function(a){for(var b=a.getModuleCount(),c=0,d=0;b>d;d++)for(var e=0;b>e;e++){for(var f=0,g=a.isDark(d,e),h=-1;1>=h;h++)if(!(0>d+h||d+h>=b))for(var i=-1;1>=i;i++)0>e+i||e+i>=b||(0!=h||0!=i)&&g==a.isDark(d+h,e+i)&&f++;f>5&&(c+=3+f-5)}for(var d=0;b-1>d;d++)for(var e=0;b-1>e;e++){var j=0;a.isDark(d,e)&&j++,a.isDark(d+1,e)&&j++,a.isDark(d,e+1)&&j++,a.isDark(d+1,e+1)&&j++,(0==j||4==j)&&(c+=3)}for(var d=0;b>d;d++)for(var e=0;b-6>e;e++)a.isDark(d,e)&&!a.isDark(d,e+1)&&a.isDark(d,e+2)&&a.isDark(d,e+3)&&a.isDark(d,e+4)&&!a.isDark(d,e+5)&&a.isDark(d,e+6)&&(c+=40);for(var e=0;b>e;e++)for(var d=0;b-6>d;d++)a.isDark(d,e)&&!a.isDark(d+1,e)&&a.isDark(d+2,e)&&a.isDark(d+3,e)&&a.isDark(d+4,e)&&!a.isDark(d+5,e)&&a.isDark(d+6,e)&&(c+=40);for(var k=0,e=0;b>e;e++)for(var d=0;b>d;d++)a.isDark(d,e)&&k++;var l=Math.abs(100*k/b/b-50)/5;return c+=10*l}},g={glog:function(a){if(1>a)throw new Error("glog("+a+")");return g.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;a>=256;)a-=255;return g.EXP_TABLE[a]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},h=0;8>h;h++)g.EXP_TABLE[h]=1<<h;for(var h=8;256>h;h++)g.EXP_TABLE[h]=g.EXP_TABLE[h-4]^g.EXP_TABLE[h-5]^g.EXP_TABLE[h-6]^g.EXP_TABLE[h-8];for(var h=0;255>h;h++)g.LOG_TABLE[g.EXP_TABLE[h]]=h;i.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var b=new Array(this.getLength()+a.getLength()-1),c=0;c<this.getLength();c++)for(var d=0;d<a.getLength();d++)b[c+d]^=g.gexp(g.glog(this.get(c))+g.glog(a.get(d)));return new i(b,0)},mod:function(a){if(this.getLength()-a.getLength()<0)return this;for(var b=g.glog(this.get(0))-g.glog(a.get(0)),c=new Array(this.getLength()),d=0;d<this.getLength();d++)c[d]=this.get(d);for(var d=0;d<a.getLength();d++)c[d]^=g.gexp(g.glog(a.get(d))+b);return new i(c,0).mod(a)}},j.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],j.getRSBlocks=function(a,b){var c=j.getRsBlockTable(a,b);if(void 0==c)throw new Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+b);for(var d=c.length/3,e=[],f=0;d>f;f++)for(var g=c[3*f+0],h=c[3*f+1],i=c[3*f+2],k=0;g>k;k++)e.push(new j(h,i));return e},j.getRsBlockTable=function(a,b){switch(b){case d.L:return j.RS_BLOCK_TABLE[4*(a-1)+0];case d.M:return j.RS_BLOCK_TABLE[4*(a-1)+1];case d.Q:return j.RS_BLOCK_TABLE[4*(a-1)+2];case d.H:return j.RS_BLOCK_TABLE[4*(a-1)+3];default:return void 0}},k.prototype={get:function(a){var b=Math.floor(a/8);return 1==(1&this.buffer[b]>>>7-a%8)},put:function(a,b){for(var c=0;b>c;c++)this.putBit(1==(1&a>>>b-c-1))},getLengthInBits:function(){return this.length},putBit:function(a){var b=Math.floor(this.length/8);this.buffer.length<=b&&this.buffer.push(0),a&&(this.buffer[b]|=128>>>this.length%8),this.length++}};var l=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],o=function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){function g(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)b.hasOwnProperty(d)&&c.setAttribute(d,b[d]);return c}var b=this._htOption,c=this._el,d=a.getModuleCount();Math.floor(b.width/d),Math.floor(b.height/d),this.clear();var h=g("svg",{viewBox:"0 0 "+String(d)+" "+String(d),width:"100%",height:"100%",fill:b.colorLight});h.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),c.appendChild(h),h.appendChild(g("rect",{fill:b.colorDark,width:"1",height:"1",id:"template"}));for(var i=0;d>i;i++)for(var j=0;d>j;j++)if(a.isDark(i,j)){var k=g("use",{x:String(i),y:String(j)});k.setAttributeNS("http://www.w3.org/1999/xlink","href","#template"),h.appendChild(k)}},a.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},a}(),p="svg"===document.documentElement.tagName.toLowerCase(),q=p?o:m()?function(){function a(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}function d(a,b){var c=this;if(c._fFail=b,c._fSuccess=a,null===c._bSupportDataURI){var d=document.createElement("img"),e=function(){c._bSupportDataURI=!1,c._fFail&&_fFail.call(c)},f=function(){c._bSupportDataURI=!0,c._fSuccess&&c._fSuccess.call(c)};return d.onabort=e,d.onerror=e,d.onload=f,d.src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",void 0}c._bSupportDataURI===!0&&c._fSuccess?c._fSuccess.call(c):c._bSupportDataURI===!1&&c._fFail&&c._fFail.call(c)}if(this._android&&this._android<=2.1){var b=1/window.devicePixelRatio,c=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(a,d,e,f,g,h,i,j){if("nodeName"in a&&/img/i.test(a.nodeName))for(var l=arguments.length-1;l>=1;l--)arguments[l]=arguments[l]*b;else"undefined"==typeof j&&(arguments[1]*=b,arguments[2]*=b,arguments[3]*=b,arguments[4]*=b);c.apply(this,arguments)}}var e=function(a,b){this._bIsPainted=!1,this._android=n(),this._htOption=b,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=b.width,this._elCanvas.height=b.height,a.appendChild(this._elCanvas),this._el=a,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return e.prototype.draw=function(a){var b=this._elImage,c=this._oContext,d=this._htOption,e=a.getModuleCount(),f=d.width/e,g=d.height/e,h=Math.round(f),i=Math.round(g);b.style.display="none",this.clear();for(var j=0;e>j;j++)for(var k=0;e>k;k++){var l=a.isDark(j,k),m=k*f,n=j*g;c.strokeStyle=l?d.colorDark:d.colorLight,c.lineWidth=1,c.fillStyle=l?d.colorDark:d.colorLight,c.fillRect(m,n,f,g),c.strokeRect(Math.floor(m)+.5,Math.floor(n)+.5,h,i),c.strokeRect(Math.ceil(m)-.5,Math.ceil(n)-.5,h,i)}this._bIsPainted=!0},e.prototype.makeImage=function(){this._bIsPainted&&d.call(this,a)},e.prototype.isPainted=function(){return this._bIsPainted},e.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},e.prototype.round=function(a){return a?Math.floor(1e3*a)/1e3:a},e}():function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){for(var b=this._htOption,c=this._el,d=a.getModuleCount(),e=Math.floor(b.width/d),f=Math.floor(b.height/d),g=['<table style="border:0;border-collapse:collapse;">'],h=0;d>h;h++){g.push("<tr>");for(var i=0;d>i;i++)g.push('<td style="border:0;border-collapse:collapse;padding:0;margin:0;width:'+e+"px;height:"+f+"px;background-color:"+(a.isDark(h,i)?b.colorDark:b.colorLight)+';"></td>');g.push("</tr>")}g.push("</table>"),c.innerHTML=g.join("");var j=c.childNodes[0],k=(b.width-j.offsetWidth)/2,l=(b.height-j.offsetHeight)/2;k>0&&l>0&&(j.style.margin=l+"px "+k+"px")},a.prototype.clear=function(){this._el.innerHTML=""},a}();QRCode=function(a,b){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:d.H},"string"==typeof b&&(b={text:b}),b)for(var c in b)this._htOption[c]=b[c];"string"==typeof a&&(a=document.getElementById(a)),this._android=n(),this._el=a,this._oQRCode=null,this._oDrawing=new q(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)},QRCode.prototype.makeCode=function(a){this._oQRCode=new b(r(a,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(a),this._oQRCode.make(),this._el.title=a,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=d}();
\ No newline at end of file
/*
* jQuery Templates Plugin 1.0.0pre
* http://github.com/jquery/jquery-tmpl
* Requires jQuery 1.4.2
*
* Copyright 2011, Software Freedom Conservancy, Inc.
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*/
(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment