﻿(function (v) {
  v.fn.qrcode = function (o) {
    function w(a) { this.mode = n.MODE_8BIT_BYTE; this.data = a } function p(a, c) { this.typeNumber = a; this.errorCorrectLevel = c; this.modules = null; this.moduleCount = 0; this.dataCache = null; this.dataList = [] } function t(a, c) { if (a.length == undefined) throw Error(a.length + "/" + c); for (var d = 0; d < a.length && a[d] == 0; ) d++; this.num = Array(a.length - d + c); for (var b = 0; b < a.length - d; b++) this.num[b] = a[b + d] } function q(a, c) { this.totalCount = a; this.dataCount = c } function x() { this.buffer = []; this.length = 0 } w.prototype =
{ getLength: function () { return this.data.length }, write: function (a) { for (var c = 0; c < this.data.length; c++) a.put(this.data.charCodeAt(c), 8) } }; p.prototype = { addData: function (a) { this.dataList.push(new w(a)); this.dataCache = null }, isDark: function (a, c) { if (a < 0 || this.moduleCount <= a || c < 0 || this.moduleCount <= c) throw Error(a + "," + c); return this.modules[a][c] }, getModuleCount: function () { return this.moduleCount }, make: function () { this.makeImpl(false, this.getBestMaskPattern()) }, makeImpl: function (a, c) {
  this.moduleCount = this.typeNumber *
4 + 17; this.modules = Array(this.moduleCount); for (var d = 0; d < this.moduleCount; d++) { this.modules[d] = Array(this.moduleCount); for (var b = 0; b < this.moduleCount; b++) this.modules[d][b] = 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); if (this.dataCache == null) this.dataCache = p.createData(this.typeNumber,
this.errorCorrectLevel, this.dataList); this.mapData(this.dataCache, c)
}, setupPositionProbePattern: function (a, c) { for (var d = -1; d <= 7; d++) if (!(a + d <= -1 || this.moduleCount <= a + d)) for (var b = -1; b <= 7; b++) c + b <= -1 || this.moduleCount <= c + b || (this.modules[a + d][c + b] = 0 <= d && d <= 6 && (b == 0 || b == 6) || 0 <= b && b <= 6 && (d == 0 || d == 6) || 2 <= d && d <= 4 && 2 <= b && b <= 4 ? true : false) }, getBestMaskPattern: function () { for (var a = 0, c = 0, d = 0; d < 8; d++) { this.makeImpl(true, d); var b = k.getLostPoint(this); if (d == 0 || a > b) { a = b; c = d } } return c }, createMovieClip: function (a,
c, d) { a = a.createEmptyMovieClip(c, d); this.make(); for (c = 0; c < this.modules.length; c++) { d = c * 1; for (var b = 0; b < this.modules[c].length; b++) { var e = b * 1; if (this.modules[c][b]) { a.beginFill(0, 100); a.moveTo(e, d); a.lineTo(e + 1, d); a.lineTo(e + 1, d + 1); a.lineTo(e, d + 1); a.endFill() } } } return a }, setupTimingPattern: function () { for (var a = 8; a < this.moduleCount - 8; a++) if (this.modules[a][6] == null) this.modules[a][6] = a % 2 == 0; for (a = 8; a < this.moduleCount - 8; a++) if (this.modules[6][a] == null) this.modules[6][a] = a % 2 == 0 }, setupPositionAdjustPattern: function () {
  for (var a =
k.getPatternPosition(this.typeNumber), c = 0; c < a.length; c++) for (var d = 0; d < a.length; d++) { var b = a[c], e = a[d]; if (this.modules[b][e] == null) for (var f = -2; f <= 2; f++) for (var h = -2; h <= 2; h++) this.modules[b + f][e + h] = f == -2 || f == 2 || h == -2 || h == 2 || f == 0 && h == 0 ? true : false } 
}, setupTypeNumber: function (a) {
  for (var c = k.getBCHTypeNumber(this.typeNumber), d = 0; d < 18; d++) { var b = !a && (c >> d & 1) == 1; this.modules[Math.floor(d / 3)][d % 3 + this.moduleCount - 8 - 3] = b } for (d = 0; d < 18; d++) {
    b = !a && (c >> d & 1) == 1; this.modules[d % 3 + this.moduleCount - 8 - 3][Math.floor(d /
3)] = b
  } 
}, setupTypeInfo: function (a, c) { for (var d = k.getBCHTypeInfo(this.errorCorrectLevel << 3 | c), b = 0; b < 15; b++) { var e = !a && (d >> b & 1) == 1; if (b < 6) this.modules[b][8] = e; else if (b < 8) this.modules[b + 1][8] = e; else this.modules[this.moduleCount - 15 + b][8] = e } for (b = 0; b < 15; b++) { e = !a && (d >> b & 1) == 1; if (b < 8) this.modules[8][this.moduleCount - b - 1] = e; else if (b < 9) this.modules[8][15 - b - 1 + 1] = e; else this.modules[8][15 - b - 1] = e } this.modules[this.moduleCount - 8][8] = !a }, mapData: function (a, c) {
  for (var d = -1, b = this.moduleCount - 1, e = 7, f = 0, h = this.moduleCount -
1; h > 0; h -= 2) for (h == 6 && h--; ; ) { for (var g = 0; g < 2; g++) if (this.modules[b][h - g] == null) { var j = false; if (f < a.length) j = (a[f] >>> e & 1) == 1; if (k.getMask(c, b, h - g)) j = !j; this.modules[b][h - g] = j; e--; if (e == -1) { f++; e = 7 } } b += d; if (b < 0 || this.moduleCount <= b) { b -= d; d = -d; break } } 
} 
}; p.PAD0 = 236; p.PAD1 = 17; p.createData = function (a, c, d) {
  c = q.getRSBlocks(a, c); for (var b = new x, e = 0; e < d.length; e++) { var f = d[e]; b.put(f.mode, 4); b.put(f.getLength(), k.getLengthInBits(f.mode, a)); f.write(b) } for (e = a = 0; e < c.length; e++) a += c[e].dataCount; if (b.getLengthInBits() >
a * 8) throw Error("code length overflow. (" + b.getLengthInBits() + ">" + a * 8 + ")"); for (b.getLengthInBits() + 4 <= a * 8 && b.put(0, 4); b.getLengthInBits() % 8 != 0; ) b.putBit(false); for (; ; ) { if (b.getLengthInBits() >= a * 8) break; b.put(p.PAD0, 8); if (b.getLengthInBits() >= a * 8) break; b.put(p.PAD1, 8) } return p.createBytes(b, c)
}; p.createBytes = function (a, c) {
  for (var d = 0, b = 0, e = 0, f = Array(c.length), h = Array(c.length), g = 0; g < c.length; g++) {
    var j = c[g].dataCount, r = c[g].totalCount - j; b = Math.max(b, j); e = Math.max(e, r); f[g] = Array(j); for (var i = 0; i < f[g].length; i++) f[g][i] =
255 & a.buffer[i + d]; d += j; i = k.getErrorCorrectPolynomial(r); j = (new t(f[g], i.getLength() - 1)).mod(i); h[g] = Array(i.getLength() - 1); for (i = 0; i < h[g].length; i++) { r = i + j.getLength() - h[g].length; h[g][i] = r >= 0 ? j.get(r) : 0 } 
  } for (i = g = 0; i < c.length; i++) g += c[i].totalCount; d = Array(g); for (i = j = 0; i < b; i++) for (g = 0; g < c.length; g++) if (i < f[g].length) d[j++] = f[g][i]; for (i = 0; i < e; i++) for (g = 0; g < c.length; g++) if (i < h[g].length) d[j++] = h[g][i]; return d
}; for (var n = { MODE_NUMBER: 1, MODE_ALPHA_NUM: 2, MODE_8BIT_BYTE: 4, MODE_KANJI: 8 }, u = { L: 1, M: 0, Q: 3,
  H: 2
}, s = { PATTERN000: 0, PATTERN001: 1, PATTERN010: 2, PATTERN011: 3, PATTERN100: 4, PATTERN101: 5, PATTERN110: 6, PATTERN111: 7 }, k = { 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 c = a << 10; k.getBCHDigit(c) - k.getBCHDigit(k.G15) >= 0; ) c ^= k.G15 << k.getBCHDigit(c) - k.getBCHDigit(k.G15); return (a << 10 | c) ^ k.G15_MASK }, getBCHTypeNumber: function (a) {
  for (var c = a << 12; k.getBCHDigit(c) -
k.getBCHDigit(k.G18) >= 0; ) c ^= k.G18 << k.getBCHDigit(c) - k.getBCHDigit(k.G18); return a << 12 | c
}, getBCHDigit: function (a) { for (var c = 0; a != 0; ) { c++; a >>>= 1 } return c }, getPatternPosition: function (a) { return k.PATTERN_POSITION_TABLE[a - 1] }, getMask: function (a, c, d) {
  switch (a) {
    case s.PATTERN000: return (c + d) % 2 == 0; case s.PATTERN001: return c % 2 == 0; case s.PATTERN010: return d % 3 == 0; case s.PATTERN011: return (c + d) % 3 == 0; case s.PATTERN100: return (Math.floor(c / 2) + Math.floor(d / 3)) % 2 == 0; case s.PATTERN101: return c * d % 2 + c * d % 3 == 0; case s.PATTERN110: return (c *
d % 2 + c * d % 3) % 2 == 0; case s.PATTERN111: return (c * d % 3 + (c + d) % 2) % 2 == 0; default: throw Error("bad maskPattern:" + a);
  } 
}, getErrorCorrectPolynomial: function (a) { for (var c = new t([1], 0), d = 0; d < a; d++) c = c.multiply(new t([1, l.gexp(d)], 0)); return c }, getLengthInBits: function (a, c) {
  if (1 <= c && c < 10) switch (a) { case n.MODE_NUMBER: return 10; case n.MODE_ALPHA_NUM: return 9; case n.MODE_8BIT_BYTE: return 8; case n.MODE_KANJI: return 8; default: throw Error("mode:" + a); } else if (c < 27) switch (a) {
    case n.MODE_NUMBER: return 12; case n.MODE_ALPHA_NUM: return 11;
    case n.MODE_8BIT_BYTE: return 16; case n.MODE_KANJI: return 10; default: throw Error("mode:" + a);
  } else if (c < 41) switch (a) { case n.MODE_NUMBER: return 14; case n.MODE_ALPHA_NUM: return 13; case n.MODE_8BIT_BYTE: return 16; case n.MODE_KANJI: return 12; default: throw Error("mode:" + a); } else throw Error("type:" + c);
}, getLostPoint: function (a) {
  for (var c = a.getModuleCount(), d = 0, b = 0; b < c; b++) for (var e = 0; e < c; e++) {
    for (var f = 0, h = a.isDark(b, e), g = -1; g <= 1; g++) if (!(b + g < 0 || c <= b + g)) for (var j = -1; j <= 1; j++) e + j < 0 || c <= e + j || g == 0 && j == 0 || h ==
a.isDark(b + g, e + j) && f++; if (f > 5) d += 3 + f - 5
  } for (b = 0; b < c - 1; b++) for (e = 0; e < c - 1; e++) { f = 0; a.isDark(b, e) && f++; a.isDark(b + 1, e) && f++; a.isDark(b, e + 1) && f++; a.isDark(b + 1, e + 1) && f++; if (f == 0 || f == 4) d += 3 } for (b = 0; b < c; b++) for (e = 0; e < c - 6; e++) if (a.isDark(b, e) && !a.isDark(b, e + 1) && a.isDark(b, e + 2) && a.isDark(b, e + 3) && a.isDark(b, e + 4) && !a.isDark(b, e + 5) && a.isDark(b, e + 6)) d += 40; for (e = 0; e < c; e++) for (b = 0; b < c - 6; b++) if (a.isDark(b, e) && !a.isDark(b + 1, e) && a.isDark(b + 2, e) && a.isDark(b + 3, e) && a.isDark(b + 4, e) && !a.isDark(b + 5, e) && a.isDark(b + 6, e)) d +=
40; for (e = f = 0; e < c; e++) for (b = 0; b < c; b++) a.isDark(b, e) && f++; d += Math.abs(100 * f / c / c - 50) / 5 * 10; return d
} 
}, l = { glog: function (a) { if (a < 1) throw Error("glog(" + a + ")"); return l.LOG_TABLE[a] }, gexp: function (a) { for (; a < 0; ) a += 255; for (; a >= 256; ) a -= 255; return l.EXP_TABLE[a] }, EXP_TABLE: Array(256), LOG_TABLE: Array(256) }, m = 0; m < 8; m++) l.EXP_TABLE[m] = 1 << m; for (m = 8; m < 256; m++) l.EXP_TABLE[m] = l.EXP_TABLE[m - 4] ^ l.EXP_TABLE[m - 5] ^ l.EXP_TABLE[m - 6] ^ l.EXP_TABLE[m - 8]; for (m = 0; m < 255; m++) l.LOG_TABLE[l.EXP_TABLE[m]] = m; t.prototype = { get: function (a) { return this.num[a] },
  getLength: function () { return this.num.length }, multiply: function (a) { for (var c = Array(this.getLength() + a.getLength() - 1), d = 0; d < this.getLength(); d++) for (var b = 0; b < a.getLength(); b++) c[d + b] ^= l.gexp(l.glog(this.get(d)) + l.glog(a.get(b))); return new t(c, 0) }, mod: function (a) {
    if (this.getLength() - a.getLength() < 0) return this; for (var c = l.glog(this.get(0)) - l.glog(a.get(0)), d = Array(this.getLength()), b = 0; b < this.getLength(); b++) d[b] = this.get(b); for (b = 0; b < a.getLength(); b++) d[b] ^= l.gexp(l.glog(a.get(b)) + c); return (new t(d,
0)).mod(a)
  } 
}; q.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]]; q.getRSBlocks = function (a, c) { var d = q.getRsBlockTable(a, c); if (d == undefined) throw Error("bad rs block @ typeNumber:" + a + "/errorCorrectLevel:" + c); for (var b = d.length / 3, e = [], f = 0; f < b; f++) for (var h = d[f * 3 + 0], g = d[f * 3 + 1], j = d[f * 3 + 2], r = 0; r < h; r++) e.push(new q(g, j)); return e }; q.getRsBlockTable = function (a, c) {
  switch (c) {
    case u.L: return q.RS_BLOCK_TABLE[(a - 1) * 4 + 0]; case u.M: return q.RS_BLOCK_TABLE[(a - 1) * 4 + 1]; case u.Q: return q.RS_BLOCK_TABLE[(a - 1) * 4 + 2]; case u.H: return q.RS_BLOCK_TABLE[(a -
1) * 4 + 3]; default: return
  } 
}; x.prototype = { get: function (a) { return (this.buffer[Math.floor(a / 8)] >>> 7 - a % 8 & 1) == 1 }, put: function (a, c) { for (var d = 0; d < c; d++) this.putBit((a >>> c - d - 1 & 1) == 1) }, getLengthInBits: function () { return this.length }, putBit: function (a) { var c = Math.floor(this.length / 8); this.buffer.length <= c && this.buffer.push(0); if (a) this.buffer[c] |= 128 >>> this.length % 8; this.length++ } }; if (typeof o === "string") o = { text: o }; o = v.extend({}, { width: 256, height: 256, typeNumber: 4, correctLevel: u.H }, o); return this.each(function () {
  var a =
new p(o.typeNumber, o.correctLevel); a.addData(o.text); a.make(); var c = document.createElement("canvas"); c.width = o.width; c.height = o.height; for (var d = c.getContext("2d"), b = o.width / a.getModuleCount(), e = o.height / a.getModuleCount(), f = 0; f < a.getModuleCount(); f++) for (var h = 0; h < a.getModuleCount(); h++) { d.fillStyle = a.isDark(f, h) ? "#000000" : "#ffffff"; d.fillRect(h * b, f * e, b, e) } jQuery(c).appendTo(this)
})
  } 
})(jQuery);


