text: ! function(a, b) {
  	"function" == typeof define && (define.amd || define.cmd) ? define(function() {
  		return b(a)
  	}) : b(a, !0)
  }(this, function(a, b) {
  	function c(b, c, d) {
  		a.WeixinJSBridge ? WeixinJSBridge.invoke(b, e(c), function(a) {
  			g(b, a, d)
  		}) : j(b, d)
  	}
  
  	function d(b, c, d) {
  		a.WeixinJSBridge ? WeixinJSBridge.on(b, function(a) {
  			d && d.trigger && d.trigger(a), g(b, a, c)
  		}) : d ? j(b, d) : j(b, c)
  	}
  
  	function e(a) {
  		return a = a || {}, a.appId = E.appId, a.verifyAppId = E.appId, a.verifySignType = "sha1", a.verifyTimestamp = E.timestamp + "", a.verifyNonceStr = E.nonceStr, a.verifySignature = E.signature, a
  	}
  
  	function f(a) {
  		return {
  			timeStamp: a.timestamp + "",
  			nonceStr: a.nonceStr,
  			"package": a.package,
  			paySign: a.paySign,
  			signType: a.signType || "SHA1"
  		}
  	}
  
  	function g(a, b, c) {
  		var d, e, f;
  		switch (delete b.err_code, delete b.err_desc, delete b.err_detail, d = b.errMsg, d || (d = b.err_msg, delete b.err_msg, d = h(a, d), b.errMsg = d), c = c || {}, c._complete && (c._complete(b), delete c._complete), d = b.errMsg || "", E.debug && !c.isInnerInvoke && alert(JSON.stringify(b)), e = d.indexOf(":"), f = d.substring(e + 1)) {
  			case "ok":
  				c.success && c.success(b);
  				break;
  			case "cancel":
  				c.cancel && c.cancel(b);
  				break;
  			default:
  				c.fail && c.fail(b)
  		}
  		c.complete && c.complete(b)
  	}
  
  	function h(a, b) {
  		var e, f, c = a,
  			d = p[c];
  		return d && (c = d), e = "ok", b && (f = b.indexOf(":"), e = b.substring(f + 1), "confirm" == e && (e = "ok"), "failed" == e && (e = "fail"), -1 != e.indexOf("failed_") && (e = e.substring(7)), -1 != e.indexOf("fail_") && (e = e.substring(5)), e = e.replace(/_/g, " "), e = e.toLowerCase(), ("access denied" == e || "no permission to execute" == e) && (e = "permission denied"), "config" == c && "function not exist" == e && (e = "ok"), "" == e && (e = "fail")), b = c + ":" + e
  	}
  
  	function i(a) {
  		var b, c, d, e;
  		if (a) {
  			for (b = 0, c = a.length; c > b; ++b) d = a[b], e = o[d], e && (a[b] = e);
  			return a
  		}
  	}
  
  	function j(a, b) {
  		if (!(!E.debug || b && b.isInnerInvoke)) {
  			var c = p[a];
  			c && (a = c), b && b._complete && delete b._complete, console.log('"' + a + '",', b || "")
  		}
  	}
  
  	function k() {
  		0 != D.preVerifyState && (u || v || E.debug || "6.0.2" > z || D.systemType < 0 || A || (A = !0, D.appId = E.appId, D.initTime = C.initEndTime - C.initStartTime, D.preVerifyTime = C.preVerifyEndTime - C.preVerifyStartTime, H.getNetworkType({
  			isInnerInvoke: !0,
  			success: function(a) {
  				var b, c;
  				D.networkType = a.networkType, b = "http://open.weixin.qq.com/sdk/report?v=" + D.version + "&o=" + D.preVerifyState + "&s=" + D.systemType + "&c=" + D.clientVersion + "&a=" + D.appId + "&n=" + D.networkType + "&i=" + D.initTime + "&p=" + D.preVerifyTime + "&u=" + D.url, c = new Image, c.src = b
  			}
  		})))
  	}
  
  	function l() {
  		return (new Date).getTime()
  	}
  
  	function m(b) {
  		w && (a.WeixinJSBridge ? b() : q.addEventListener && q.addEventListener("WeixinJSBridgeReady", b, !1))
  	}
  
  	function n() {
  		H.invoke || (H.invoke = function(b, c, d) {
  			a.WeixinJSBridge && WeixinJSBridge.invoke(b, e(c), d)
  		}, H.on = function(b, c) {
  			a.WeixinJSBridge && WeixinJSBridge.on(b, c)
  		})
  	}
  	var o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H;
  	if (!a.jWeixin) return o = {
  		config: "preVerifyJSAPI",
  		onMenuShareTimeline: "menu:share:timeline",
  		onMenuShareAppMessage: "menu:share:appmessage",
  		onMenuShareQQ: "menu:share:qq",
  		onMenuShareWeibo: "menu:share:weiboApp",
  		onMenuShareQZone: "menu:share:QZone",
  		previewImage: "imagePreview",
  		getLocation: "geoLocation",
  		openProductSpecificView: "openProductViewWithPid",
  		addCard: "batchAddCard",
  		openCard: "batchViewCard",
  		chooseWXPay: "getBrandWCPayRequest"
  	}, p = function() {
  		var b, a = {};
  		for (b in o) a[o[b]] = b;
  		return a
  	}(), q = a.document, r = q.title, s = navigator.userAgent.toLowerCase(), t = navigator.platform.toLowerCase(), u = !(!t.match("mac") && !t.match("win")), v = -1 != s.indexOf("wxdebugger"), w = -1 != s.indexOf("micromessenger"), x = -1 != s.indexOf("android"), y = -1 != s.indexOf("iphone") || -1 != s.indexOf("ipad"), z = function() {
  		var a = s.match(/micromessenger\/(\d+\.\d+\.\d+)/) || s.match(/micromessenger\/(\d+\.\d+)/);
  		return a ? a[1] : ""
  	}(), A = !1, B = !1, C = {
  		initStartTime: l(),
  		initEndTime: 0,
  		preVerifyStartTime: 0,
  		preVerifyEndTime: 0
  	}, D = {
  		version: 1,
  		appId: "",
  		initTime: 0,
  		preVerifyTime: 0,
  		networkType: "",
  		preVerifyState: 1,
  		systemType: y ? 1 : x ? 2 : -1,
  		clientVersion: z,
  		url: encodeURIComponent(location.href)
  	}, E = {}, F = {
  		_completes: []
  	}, G = {
  		state: 0,
  		data: {}
  	}, m(function() {
  		C.initEndTime = l()
  	}), H = {
  		config: function(a) {
  			E = a, j("config", a);
  			var b = E.check === !1 ? !1 : !0;
  			m(function() {
  				var a, d, e;
  				if (b) c(o.config, {
  					verifyJsApiList: i(E.jsApiList)
  				}, function() {
  					F._complete = function(a) {
  						C.preVerifyEndTime = l(), G.state = 1, G.data = a
  					}, F.success = function() {
  						D.preVerifyState = 0
  					}, F.fail = function(a) {
  						F._fail ? F._fail(a) : G.state = -1
  					};
  					var a = F._completes;
  					return a.push(function() {
  						k()
  					}), F.complete = function() {
  						for (var c = 0, d = a.length; d > c; ++c) a[c]();
  						F._completes = []
  					}, F
  				}()), C.preVerifyStartTime = l();
  				else {
  					for (G.state = 1, a = F._completes, d = 0, e = a.length; e > d; ++d) a[d]();
  					F._completes = []
  				}
  			}), E.beta && n()
  		},
  		ready: function(a) {
  			0 != G.state ? a() : (F._completes.push(a), !w && E.debug && a())
  		},
  		error: function(a) {
  			"6.0.2" > z || B || (B = !0, -1 == G.state ? a(G.data) : F._fail = a)
  		},
  		checkJsApi: function(a) {
  			var b = function(a) {
  				var c, d, b = a.checkResult;
  				for (c in b) d = p[c], d && (b[d] = b[c], delete b[c]);
  				return a
  			};
  			c("checkJsApi", {
  				jsApiList: i(a.jsApiList)
  			}, function() {
  				return a._complete = function(a) {
  					if (x) {
  						var c = a.checkResult;
  						c && (a.checkResult = JSON.parse(c))
  					}
  					a = b(a)
  				}, a
  			}())
  		},
  		onMenuShareTimeline: function(a) {
  			d(o.onMenuShareTimeline, {
  				complete: function() {
  					c("shareTimeline", {
  						title: a.title || r,
  						desc: a.title || r,
  						img_url: a.imgUrl || "",
  						link: a.link || location.href,
  						type: a.type || "link",
  						data_url: a.dataUrl || ""
  					}, a)
  				}
  			}, a)
  		},
  		onMenuShareAppMessage: function(a) {
  			d(o.onMenuShareAppMessage, {
  				complete: function() {
  					c("sendAppMessage", {
  						title: a.title || r,
  						desc: a.desc || "",
  						link: a.link || location.href,
  						img_url: a.imgUrl || "",
  						type: a.type || "link",
  						data_url: a.dataUrl || ""
  					}, a)
  				}
  			}, a)
  		},
  		onMenuShareQQ: function(a) {
  			d(o.onMenuShareQQ, {
  				complete: function() {
  					c("shareQQ", {
  						title: a.title || r,
  						desc: a.desc || "",
  						img_url: a.imgUrl || "",
  						link: a.link || location.href
  					}, a)
  				}
  			}, a)
  		},
  		onMenuShareWeibo: function(a) {
  			d(o.onMenuShareWeibo, {
  				complete: function() {
  					c("shareWeiboApp", {
  						title: a.title || r,
  						desc: a.desc || "",
  						img_url: a.imgUrl || "",
  						link: a.link || location.href
  					}, a)
  				}
  			}, a)
  		},
  		onMenuShareQZone: function(a) {
  			d(o.onMenuShareQZone, {
  				complete: function() {
  					c("shareQZone", {
  						title: a.title || r,
  						desc: a.desc || "",
  						img_url: a.imgUrl || "",
  						link: a.link || location.href
  					}, a)
  				}
  			}, a)
  		},
  		startRecord: function(a) {
  			c("startRecord", {}, a)
  		},
  		stopRecord: function(a) {
  			c("stopRecord", {}, a)
  		},
  		onVoiceRecordEnd: function(a) {
  			d("onVoiceRecordEnd", a)
  		},
  		playVoice: function(a) {
  			c("playVoice", {
  				localId: a.localId
  			}, a)
  		},
  		pauseVoice: function(a) {
  			c("pauseVoice", {
  				localId: a.localId
  			}, a)
  		},
  		stopVoice: function(a) {
  			c("stopVoice", {
  				localId: a.localId
  			}, a)
  		},
  		onVoicePlayEnd: function(a) {
  			d("onVoicePlayEnd", a)
  		},
  		uploadVoice: function(a) {
  			c("uploadVoice", {
  				localId: a.localId,
  				isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1
  			}, a)
  		},
  		downloadVoice: function(a) {
  			c("downloadVoice", {
  				serverId: a.serverId,
  				isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1
  			}, a)
  		},
  		translateVoice: function(a) {
  			c("translateVoice", {
  				localId: a.localId,
  				isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1
  			}, a)
  		},
  		chooseImage: function(a) {
  			c("chooseImage", {
  				scene: "1|2",
  				count: a.count || 9,
  				sizeType: a.sizeType || ["original", "compressed"],
  				sourceType: a.sourceType || ["album", "camera"]
  			}, function() {
  				return a._complete = function(a) {
  					if (x) {
  						var b = a.localIds;
  						b && (a.localIds = JSON.parse(b))
  					}
  				}, a
  			}())
  		},
  		previewImage: function(a) {
  			c(o.previewImage, {
  				current: a.current,
  				urls: a.urls
  			}, a)
  		},
  		uploadImage: function(a) {
  			c("uploadImage", {
  				localId: a.localId,
  				isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1
  			}, a)
  		},
  		downloadImage: function(a) {
  			c("downloadImage", {
  				serverId: a.serverId,
  				isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1
  			}, a)
  		},
  		getNetworkType: function(a) {
  			var b = function(a) {
  				var c, d, e, b = a.errMsg;
  				if (a.errMsg = "getNetworkType:ok", c = a.subtype, delete a.subtype, c) a.networkType = c;
  				else switch (d = b.indexOf(":"), e = b.substring(d + 1)) {
  					case "wifi":
  					case "edge":
  					case "wwan":
  						a.networkType = e;
  						break;
  					default:
  						a.errMsg = "getNetworkType:fail"
  				}
  				return a
  			};
  			c("getNetworkType", {}, function() {
  				return a._complete = function(a) {
  					a = b(a)
  				}, a
  			}())
  		},
  		openLocation: function(a) {
  			c("openLocation", {
  				latitude: a.latitude,
  				longitude: a.longitude,
  				name: a.name || "",
  				address: a.address || "",
  				scale: a.scale || 28,
  				infoUrl: a.infoUrl || ""
  			}, a)
  		},
  		getLocation: function(a) {
  			a = a || {}, c(o.getLocation, {
  				type: a.type || "wgs84"
  			}, function() {
  				return a._complete = function(a) {
  					delete a.type
  				}, a
  			}())
  		},
  		hideOptionMenu: function(a) {
  			c("hideOptionMenu", {}, a)
  		},
  		showOptionMenu: function(a) {
  			c("showOptionMenu", {}, a)
  		},
  		closeWindow: function(a) {
  			a = a || {}, c("closeWindow", {}, a)
  		},
  		hideMenuItems: function(a) {
  			c("hideMenuItems", {
  				menuList: a.menuList
  			}, a)
  		},
  		showMenuItems: function(a) {
  			c("showMenuItems", {
  				menuList: a.menuList
  			}, a)
  		},
  		hideAllNonBaseMenuItem: function(a) {
  			c("hideAllNonBaseMenuItem", {}, a)
  		},
  		showAllNonBaseMenuItem: function(a) {
  			c("showAllNonBaseMenuItem", {}, a)
  		},
  		scanQRCode: function(a) {
  			a = a || {}, c("scanQRCode", {
  				needResult: a.needResult || 0,
  				scanType: a.scanType || ["qrCode", "barCode"]
  			}, function() {
  				return a._complete = function(a) {
  					var b, c;
  					y && (b = a.resultStr, b && (c = JSON.parse(b), a.resultStr = c && c.scan_code && c.scan_code.scan_result))
  				}, a
  			}())
  		},
  		openProductSpecificView: function(a) {
  			c(o.openProductSpecificView, {
  				pid: a.productId,
  				view_type: a.viewType || 0,
  				ext_info: a.extInfo
  			}, a)
  		},
  		addCard: function(a) {
  			var e, f, g, h, b = a.cardList,
  				d = [];
  			for (e = 0, f = b.length; f > e; ++e) g = b[e], h = {
  				card_id: g.cardId,
  				card_ext: g.cardExt
  			}, d.push(h);
  			c(o.addCard, {
  				card_list: d
  			}, function() {
  				return a._complete = function(a) {
  					var c, d, e, b = a.card_list;
  					if (b) {
  						for (b = JSON.parse(b), c = 0, d = b.length; d > c; ++c) e = b[c], e.cardId = e.card_id, e.cardExt = e.card_ext, e.isSuccess = e.is_succ ? !0 : !1, delete e.card_id, delete e.card_ext, delete e.is_succ;
  						a.cardList = b, delete a.card_list
  					}
  				}, a
  			}())
  		},
  		chooseCard: function(a) {
  			c("chooseCard", {
  				app_id: E.appId,
  				location_id: a.shopId || "",
  				sign_type: a.signType || "SHA1",
  				card_id: a.cardId || "",
  				card_type: a.cardType || "",
  				card_sign: a.cardSign,
  				time_stamp: a.timestamp + "",
  				nonce_str: a.nonceStr
  			}, function() {
  				return a._complete = function(a) {
  					a.cardList = a.choose_card_info, delete a.choose_card_info
  				}, a
  			}())
  		},
  		openCard: function(a) {
  			var e, f, g, h, b = a.cardList,
  				d = [];
  			for (e = 0, f = b.length; f > e; ++e) g = b[e], h = {
  				card_id: g.cardId,
  				code: g.code
  			}, d.push(h);
  			c(o.openCard, {
  				card_list: d
  			}, a)
  		},
  		chooseWXPay: function(a) {
  			c(o.chooseWXPay, f(a), a)
  		}
  	}, b && (a.wx = a.jWeixin = H), H
  });