{"version":3,"file":"kendo.dataviz.barcode.min.js","names":["factory","define","amd","$","undefined$1","kendo","window","Widget","ui","extend","deepExtend","inArray","isPlainObject","draw","drawing","geom","geometry","defined","util","dataviz","Box2D","TextBox","numberRegex","alphanumericRegex","getNext","value","index","count","substring","Encoding","Class","init","options","this","setOptions","that","quietZoneLength","addQuietZone","encode","width","height","initValue","addData","baseUnit","pattern","addCheckSum","push","invalidCharacterError","character","Error","format","name","encodings","code39Base","minBaseUnitLength","addStart","idx","length","addCharacter","charAt","pushCheckSum","addStop","prepareValues","charData","characterMap","addBase","code39ExtendedBase","charCodeAt","addExtended","code","patterns","i","extendedMappings","call","j","dataLength","shiftCharacters","String","fromCharCode","result","dataCharacter","specialAsciiCodes","Math","floor","shiftValuesAsciiCodes","code39","checkSumMod","minRatio","maxRatio","gapWidth","splitCharacter","patternString","minBaseUnit","ratio","minHeight","max","getBaseUnit","parseFloat","toFixed","minWidth","ceil","getBaseWidth","concat","replace","split","characterLength","addPattern","START","addCharacterGap","patternMappings","b","w","B","W","A","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","X","Y","Z","code39extended","SHIFT0","SHIFT1","SHIFT2","SHIFT3","code93","cCheckSumTotal","kCheckSumTotal","values","setBaseUnit","TERMINATION_BAR","checkValues","_getCheckValues","checksum","join","_findCharacterByValue","cValue","wightedSum","weightedValue","total","parseInt","code93extended","state128","encoding","is","move","pushState","state128AB","FNC4","states","_initMoves","isCode","encodingState","_moves","maxLength","numberMatch","substr","match","indexOf","getValue","_moveFNC","shiftKey","_shiftState","_moveState","fnc","previousState","key","SHIFT","shifted","MOVE","states128","next4","test","dependentStates","_initSubStates","subState","_getSubState","_initSubState","state","_pushStart","pushData","subStates","_getAll","FNC1","startState","startAI","endAI","current","nextStart","separatorLength","regexSeparators","RegExp","getBySeparator","getByLength","ai","id","validate","type","min","getAI","unsupportedAIError","start","end","applicationIdentifiers","multiKey","ids","ranges","code128Base","fn","_initStates","checkSum","totalUnits","position","getNextState","temp","STOP","toString","code128a","code128b","code128c","code128","msiBase","checkSumLength","checkSums","checkSumType","Modulo10","evenSum","oddSum","odd","Modulo11","checkValue","weightedSum","Modulo11Modulo10","mod11Value","Modulo10Modulo10","mod10Value","msimod10","msimod11","msimod1110","msimod1010","code11","kCheckSumMinLength","DASH_VALUE","DASH","getWeightedSum","kValue","isNaN","postnet","VALID_CODE_LENGTHS","DIGIT_SEPARATOR","baseHeight","pop","y1","y2","ean13","calculateChecksum","leftKey","leftPart","rightPart","addPieces","addSide","middle","keyTable","Array","prototype","slice","digits","reverse","arrToAdd","limitedHeight","even","ean8","Barcode","element","wrapper","addClass","css","surfaceWrap","appendTo","surface","Surface","create","renderAs","_setOptions","redraw","size","_getSize","clear","setSize","createVisual","visual","getSize","dimensions","_resize","_render","textToDisplay","textOptions","text","textMargin","getSpacing","margin","border","contentBox","unpad","padding","barHeight","Group","append","_getBackground","visible","measureText","font","top","bottom","_getText","_bandsGroup","_getBands","exportVisual","Size","step","item","x1","group","rect","Rect","fromPoints","Point","path","Path","fromRect","fill","color","stroke","box","toRect","background","dashType","_textbox","align","vAlign","reflow","renderVisual","toLowerCase","left","right","ExportMixin","plugin","jQuery"],"sources":["kendo.dataviz.barcode.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.dataviz.core', 'kendo.drawing'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"dataviz.barcode\",\n name: \"Barcode\",\n category: \"dataviz\",\n description: \"Barcode widget\",\n depends: [ \"dataviz.core\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n\n extend = $.extend,\n deepExtend = kendo.deepExtend,\n inArray = $.inArray,\n isPlainObject = $.isPlainObject,\n\n draw = kendo.drawing,\n geom = kendo.geometry,\n util = kendo.drawing.util,\n defined = util.defined,\n dataviz = kendo.dataviz,\n Box2D = dataviz.Box2D,\n TextBox = dataviz.TextBox,\n DEFAULT_WIDTH = 300,\n DEFAULT_HEIGHT = 100,\n DEFAULT_QUIETZONE_LENGTH = 10,\n numberRegex = /^\\d+$/,\n alphanumericRegex = /^[a-z0-9]+$/i,\n InvalidCharacterErrorTemplate = \"Character '{0}' is not valid for symbology {1}\";\n\n function getNext(value, index, count) {\n return value.substring(index, index + count);\n }\n\n var Encoding = kendo.Class.extend({\n init: function(options) {\n this.setOptions(options);\n },\n setOptions: function(options) {\n var that = this;\n that.options = extend({}, that.options, options);\n that.quietZoneLength = that.options.addQuietZone ? 2 * that.options.quietZoneLength : 0;\n },\n encode: function(value, width, height) {\n var that = this;\n if (defined(value)) {\n value += '';\n }\n\n that.initValue(value, width, height);\n\n if (that.options.addQuietZone) {\n that.addQuietZone();\n }\n\n that.addData();\n\n if (that.options.addQuietZone) {\n that.addQuietZone();\n }\n\n return {\n baseUnit: that.baseUnit,\n pattern: that.pattern\n };\n },\n options: {\n quietZoneLength: DEFAULT_QUIETZONE_LENGTH,\n addQuietZone: true,\n addCheckSum: true\n },\n initValue: function() {},\n addQuietZone: function() {\n this.pattern.push(this.options.quietZoneLength || DEFAULT_QUIETZONE_LENGTH);\n },\n addData: function() {\n },\n invalidCharacterError: function(character) {\n throw new Error(kendo.format(InvalidCharacterErrorTemplate, character, this.name));\n }\n });\n\n var encodings = {};\n\n var code39Base = Encoding.extend({\n minBaseUnitLength: 0.7,\n addData: function() {\n var that = this,\n value = that.value;\n\n that.addStart();\n\n for (var idx = 0; idx < value.length; idx++) {\n that.addCharacter(value.charAt(idx));\n }\n\n if (that.options.addCheckSum) {\n that.pushCheckSum();\n }\n\n that.addStop();\n that.prepareValues();\n },\n addCharacter: function(character) {\n var that = this,\n charData = that.characterMap[character];\n if (!charData) {\n that.invalidCharacterError(character);\n }\n that.addBase(charData);\n },\n addBase: function() {}\n });\n\n var code39ExtendedBase = {\n addCharacter: function(character) {\n var that = this;\n if (that.characterMap[character]) {\n that.addBase(that.characterMap[character]);\n }\n else if (character.charCodeAt(0) > 127) {\n that.invalidCharacterError(character);\n }\n else {\n that.addExtended(character.charCodeAt(0));\n }\n },\n addExtended: function(code) {\n var that = this,\n patterns;\n for (var i = 0; i < that.extendedMappings.length; i++) {\n if ((patterns = that.extendedMappings[i].call(that, code))) {\n for (var j = 0; j < patterns.length; j++) {\n that.addBase(patterns[j]);\n }\n that.dataLength += patterns.length - 1;\n return;\n }\n }\n },\n extendedMappings: [\n function(code) {\n if (97 <= code && code <= 122) {\n var that = this;\n return [that.characterMap[that.shiftCharacters[0]], that.characterMap[String.fromCharCode(code - 32)]];\n }\n },\n function(code) {\n if (33 <= code && code <= 58) {\n var that = this;\n return [that.characterMap[that.shiftCharacters[1]], that.characterMap[String.fromCharCode(code + 32)]];\n }\n },\n function(code) {\n if (1 <= code && code <= 26) {\n var that = this;\n return [that.characterMap[that.shiftCharacters[2]], that.characterMap[String.fromCharCode(code + 64)]];\n }\n },\n function(code) {\n var that = this,\n result,\n dataCharacter;\n if (!that.specialAsciiCodes[code]) {\n dataCharacter = Math.floor(code / 32) * 6 + (code - 27) % 32 + 64;\n result = [that.characterMap[that.shiftCharacters[3]], that.characterMap[String.fromCharCode(dataCharacter)]];\n }\n else {\n result = [];\n for (var i = 0; i < that.specialAsciiCodes[code].length; i++) {\n result.push(that.characterMap[that.shiftCharacters[3]]);\n result.push(that.characterMap[that.specialAsciiCodes[code][i]]);\n }\n }\n\n return result;\n }\n ],\n specialAsciiCodes: {\n \"0\": [\"U\"],\n \"64\": [\"V\"],\n \"96\": [\"W\"],\n \"127\": [\"T\",\"X\",\"Y\",\"Z\"]\n },\n shiftValuesAsciiCodes: {\n \"39\": 36,\n \"40\": 47,\n \"41\": 43,\n \"42\": 37\n },\n characterMap: {\n \"+\": false,\n \"/\": false,\n \"$\": false,\n \"%\": false\n },\n shiftCharacters: [\"SHIFT0\", \"SHIFT1\", \"SHIFT2\", \"SHIFT3\"]\n };\n\n encodings.code39 = code39Base.extend({\n name: \"Code 39\",\n checkSumMod: 43,\n minRatio: 2.5,\n maxRatio: 3,\n gapWidth: 1,\n splitCharacter: \"|\",\n initValue: function(value, width, height) {\n var that = this;\n that.width = width;\n that.height = height;\n that.value = value;\n that.dataLength = value.length;\n that.pattern = [];\n that.patternString = \"\";\n },\n prepareValues: function() {\n var that = this,\n baseUnit,\n minBaseUnit = that.minBaseUnitLength,\n ratio = that.maxRatio,\n minRatio = that.minRatio,\n minHeight = Math.max(0.15 * that.width, 24);\n if (that.height < minHeight) {\n throw new Error(\"Insufficient Height. The minimum height for value: \" + that.value + \" is: \" + minHeight);\n }\n\n while ((baseUnit = that.getBaseUnit(ratio)) < minBaseUnit && ratio > minRatio) {\n ratio = parseFloat((ratio - 0.1).toFixed(1));\n }\n\n if (baseUnit < minBaseUnit) {\n var minWidth = Math.ceil(that.getBaseWidth(minRatio) * minBaseUnit);\n throw new Error(\"Insufficient width. The minimum width for value: \" + that.value + \" is: \" + minWidth);\n }\n\n that.ratio = ratio;\n that.baseUnit = baseUnit;\n that.patternString = that.patternString.substring(0, that.patternString.length - 1);\n that.pattern = that.pattern.concat(that.patternString.replace(/ratio/g, ratio).split(that.splitCharacter));\n },\n getBaseUnit: function(ratio) {\n return this.width / this.getBaseWidth(ratio);\n },\n getBaseWidth: function(ratio) {\n var that = this,\n characterLength = 3 * (ratio + 2);\n return that.quietZoneLength + characterLength * (that.dataLength + 2) + that.gapWidth * (that.dataLength + 1);\n },\n addStart: function() {\n var that = this;\n that.addPattern(that.characterMap.START.pattern);\n that.addCharacterGap();\n },\n addBase: function(character) {\n this.addPattern(character.pattern);\n this.addCharacterGap();\n },\n addStop: function() {\n this.addPattern(this.characterMap.START.pattern);\n },\n addPattern: function(pattern) {\n for (var i = 0; i < pattern.length; i++) {\n this.patternString += this.patternMappings[pattern.charAt(i)];\n }\n },\n addCharacterGap: function() {\n var that = this;\n that.patternString += that.gapWidth + that.splitCharacter;\n },\n patternMappings: {\n \"b\": \"1|\",\n \"w\": \"1|\",\n \"B\": \"ratio|\",\n \"W\": \"ratio|\"\n },\n characterMap: {\n \"0\": { \"pattern\": \"bwbWBwBwb\",\"value\": 0 },\n \"1\": { \"pattern\": \"BwbWbwbwB\",\"value\": 1 },\n \"2\": { \"pattern\": \"bwBWbwbwB\",\"value\": 2 },\n \"3\": { \"pattern\": \"BwBWbwbwb\",\"value\": 3 },\n \"4\": { \"pattern\": \"bwbWBwbwB\",\"value\": 4 },\n \"5\": { \"pattern\": \"BwbWBwbwb\",\"value\": 5 },\n \"6\": { \"pattern\": \"bwBWBwbwb\",\"value\": 6 },\n \"7\": { \"pattern\": \"bwbWbwBwB\",\"value\": 7 },\n \"8\": { \"pattern\": \"BwbWbwBwb\",\"value\": 8 },\n \"9\": { \"pattern\": \"bwBWbwBwb\",\"value\": 9 },\n \"A\": { \"pattern\": \"BwbwbWbwB\",\"value\": 10 },\n \"B\": { \"pattern\": \"bwBwbWbwB\",\"value\": 11 },\n \"C\": { \"pattern\": \"BwBwbWbwb\",\"value\": 12 },\n \"D\": { \"pattern\": \"bwbwBWbwB\",\"value\": 13 },\n \"E\": { \"pattern\": \"BwbwBWbwb\",\"value\": 14 },\n \"F\": { \"pattern\": \"bwBwBWbwb\",\"value\": 15 },\n \"G\": { \"pattern\": \"bwbwbWBwB\",\"value\": 16 },\n \"H\": { \"pattern\": \"BwbwbWBwb\",\"value\": 17 },\n \"I\": { \"pattern\": \"bwBwbWBwb\",\"value\": 18 },\n \"J\": { \"pattern\": \"bwbwBWBwb\",\"value\": 19 },\n \"K\": { \"pattern\": \"BwbwbwbWB\",\"value\": 20 },\n \"L\": { \"pattern\": \"bwBwbwbWB\",\"value\": 21 },\n \"M\": { \"pattern\": \"BwBwbwbWb\",\"value\": 22 },\n \"N\": { \"pattern\": \"bwbwBwbWB\",\"value\": 23 },\n \"O\": { \"pattern\": \"BwbwBwbWb\",\"value\": 24 },\n \"P\": { \"pattern\": \"bwBwBwbWb\",\"value\": 25 },\n \"Q\": { \"pattern\": \"bwbwbwBWB\",\"value\": 26 },\n \"R\": { \"pattern\": \"BwbwbwBWb\",\"value\": 27 },\n \"S\": { \"pattern\": \"bwBwbwBWb\",\"value\": 28 },\n \"T\": { \"pattern\": \"bwbwBwBWb\",\"value\": 29 },\n \"U\": { \"pattern\": \"BWbwbwbwB\",\"value\": 30 },\n \"V\": { \"pattern\": \"bWBwbwbwB\",\"value\": 31 },\n \"W\": { \"pattern\": \"BWBwbwbwb\",\"value\": 32 },\n \"X\": { \"pattern\": \"bWbwBwbwB\",\"value\": 33 },\n \"Y\": { \"pattern\": \"BWbwBwbwb\",\"value\": 34 },\n \"Z\": { \"pattern\": \"bWBwBwbwb\",\"value\": 35 },\n \"-\": { \"pattern\": \"bWbwbwBwB\",\"value\": 36 },\n \".\": { \"pattern\": \"BWbwbwBwb\",\"value\": 37 },\n \" \": { \"pattern\": \"bWBwbwBwb\",\"value\": 38 },\n \"$\": { \"pattern\": \"bWbWbWbwb\",\"value\": 39 },\n \"/\": { \"pattern\": \"bWbWbwbWb\",\"value\": 40 },\n \"+\": { \"pattern\": \"bWbwbWbWb\",\"value\": 41 },\n \"%\": { \"pattern\": \"bwbWbWbWb\",\"value\": 42 },\n START: { pattern: \"bWbwBwBwb\" }\n },\n options: {\n addCheckSum: false\n }\n });\n\n encodings.code39extended = encodings.code39.extend(deepExtend({}, code39ExtendedBase, {\n name: \"Code 39 extended\",\n characterMap: {\n SHIFT0: { \"pattern\": \"bWbwbWbWb\",\"value\": 41 },\n SHIFT1: { \"pattern\": \"bWbWbwbWb\",\"value\": 40 },\n SHIFT2: { \"pattern\": \"bWbWbWbwb\",\"value\": 39 },\n SHIFT3: { \"pattern\": \"bwbWbWbWb\",\"value\": 42 }\n }\n }));\n\n encodings.code93 = code39Base.extend({\n name: \"Code 93\",\n cCheckSumTotal: 20,\n kCheckSumTotal: 15,\n checkSumMod: 47,\n initValue: function(value, width, height) {\n var that = this;\n that.value = value;\n that.width = width;\n that.height = height;\n that.pattern = [];\n that.values = [];\n that.dataLength = value.length;\n },\n prepareValues: function() {\n var that = this,\n minHeight = Math.max(0.15 * that.width, 24);\n if (that.height < minHeight) {\n throw new Error(\"Insufficient Height\");\n }\n\n that.setBaseUnit();\n\n if (that.baseUnit < that.minBaseUnitLength) {\n throw new Error(\"Insufficient Width\");\n }\n },\n setBaseUnit: function() {\n var that = this,\n checkSumLength = 2;\n that.baseUnit = that.width / (9 * (that.dataLength + 2 + checkSumLength) + that.quietZoneLength + 1);\n },\n addStart: function() {\n var pattern = this.characterMap.START.pattern;\n this.addPattern(pattern);\n },\n addStop: function() {\n var that = this;\n that.addStart();\n that.pattern.push(that.characterMap.TERMINATION_BAR);\n },\n addBase: function(charData) {\n this.addPattern(charData.pattern);\n this.values.push(charData.value);\n },\n pushCheckSum: function() {\n var that = this,\n checkValues = that._getCheckValues(),\n charData;\n\n that.checksum = checkValues.join(\"\");\n for (var i = 0; i < checkValues.length; i++) {\n charData = that.characterMap[that._findCharacterByValue(checkValues[i])];\n that.addPattern(charData.pattern);\n }\n },\n _getCheckValues: function() {\n var that = this,\n values = that.values,\n length = values.length,\n wightedSum = 0,\n cValue,\n kValue,\n idx;\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += that.weightedValue(values[idx],length - idx, that.cCheckSumTotal);\n }\n cValue = wightedSum % that.checkSumMod;\n\n wightedSum = that.weightedValue(cValue, 1, that.kCheckSumTotal);\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += that.weightedValue(values[idx], length - idx + 1, that.kCheckSumTotal);\n }\n\n kValue = wightedSum % that.checkSumMod;\n return [cValue, kValue];\n },\n _findCharacterByValue: function(value) {\n for (var character in this.characterMap) {\n if (this.characterMap[character].value === value) {\n return character;\n }\n }\n },\n weightedValue: function(value, index, total) {\n return (index % total || total) * value;\n },\n addPattern: function(pattern) {\n var value;\n\n for (var i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i),10);\n this.pattern.push(value);\n }\n },\n characterMap: {\n \"0\": { \"pattern\": \"131112\",\"value\": 0 },\n \"1\": { \"pattern\": \"111213\",\"value\": 1 },\n \"2\": { \"pattern\": \"111312\",\"value\": 2 },\n \"3\": { \"pattern\": \"111411\",\"value\": 3 },\n \"4\": { \"pattern\": \"121113\",\"value\": 4 },\n \"5\": { \"pattern\": \"121212\",\"value\": 5 },\n \"6\": { \"pattern\": \"121311\",\"value\": 6 },\n \"7\": { \"pattern\": \"111114\",\"value\": 7 },\n \"8\": { \"pattern\": \"131211\",\"value\": 8 },\n \"9\": { \"pattern\": \"141111\",\"value\": 9 },\n \"A\": { \"pattern\": \"211113\",\"value\": 10 },\n \"B\": { \"pattern\": \"211212\",\"value\": 11 },\n \"C\": { \"pattern\": \"211311\",\"value\": 12 },\n \"D\": { \"pattern\": \"221112\",\"value\": 13 },\n \"E\": { \"pattern\": \"221211\",\"value\": 14 },\n \"F\": { \"pattern\": \"231111\",\"value\": 15 },\n \"G\": { \"pattern\": \"112113\",\"value\": 16 },\n \"H\": { \"pattern\": \"112212\",\"value\": 17 },\n \"I\": { \"pattern\": \"112311\",\"value\": 18 },\n \"J\": { \"pattern\": \"122112\",\"value\": 19 },\n \"K\": { \"pattern\": \"132111\",\"value\": 20 },\n \"L\": { \"pattern\": \"111123\",\"value\": 21 },\n \"M\": { \"pattern\": \"111222\",\"value\": 22 },\n \"N\": { \"pattern\": \"111321\",\"value\": 23 },\n \"O\": { \"pattern\": \"121122\",\"value\": 24 },\n \"P\": { \"pattern\": \"131121\",\"value\": 25 },\n \"Q\": { \"pattern\": \"212112\",\"value\": 26 },\n \"R\": { \"pattern\": \"212211\",\"value\": 27 },\n \"S\": { \"pattern\": \"211122\",\"value\": 28 },\n \"T\": { \"pattern\": \"211221\",\"value\": 29 },\n \"U\": { \"pattern\": \"221121\",\"value\": 30 },\n \"V\": { \"pattern\": \"222111\",\"value\": 31 },\n \"W\": { \"pattern\": \"112122\",\"value\": 32 },\n \"X\": { \"pattern\": \"112221\",\"value\": 33 },\n \"Y\": { \"pattern\": \"122121\",\"value\": 34 },\n \"Z\": { \"pattern\": \"123111\",\"value\": 35 },\n \"-\": { \"pattern\": \"121131\",\"value\": 36 },\n \".\": { \"pattern\": \"311112\",\"value\": 37 },\n \" \": { \"pattern\": \"311211\",\"value\": 38 },\n \"$\": { \"pattern\": \"321111\",\"value\": 39 },\n \"/\": { \"pattern\": \"112131\",\"value\": 40 },\n \"+\": { \"pattern\": \"113121\",\"value\": 41 },\n \"%\": { \"pattern\": \"211131\",\"value\": 42 },\n SHIFT0: { \"pattern\": \"122211\",\"value\": 46 },\n SHIFT1: { \"pattern\": \"311121\",\"value\": 45 },\n SHIFT2: { \"pattern\": \"121221\",\"value\": 43 },\n SHIFT3: { \"pattern\": \"312111\",\"value\": 44 },\n START: { \"pattern\": \"111141\" },\n TERMINATION_BAR: \"1\"\n }\n });\n\n encodings.code93extended = encodings.code93.extend(deepExtend({}, code39ExtendedBase, {\n name: \"Code 93 extended\",\n pushCheckSum: function() {\n var that = this,\n checkValues = that._getCheckValues(),\n value;\n\n that.checksum = checkValues.join(\"\");\n\n for (var i = 0; i < checkValues.length; i++) {\n value = checkValues[i];\n if (that.shiftValuesAsciiCodes[value]) {\n that.addExtended(that.shiftValuesAsciiCodes[value]);\n }\n else {\n that.addPattern(that.characterMap[that._findCharacterByValue(value)].pattern);\n }\n }\n }\n }));\n\n var state128 = kendo.Class.extend({\n init: function(encoding) {\n this.encoding = encoding;\n },\n addStart: function() {},\n is: function() {},\n move: function() {},\n pushState: function() {}\n });\n\n var state128AB = state128.extend({\n FNC4: \"FNC4\",\n init: function(encoding, states) {\n var that = this;\n that.encoding = encoding;\n that.states = states;\n that._initMoves(states);\n },\n addStart: function() {\n this.encoding.addPattern(this.START);\n },\n is: function(value, index) {\n var code = value.charCodeAt(index);\n return this.isCode(code);\n },\n move: function(encodingState) {\n var that = this,\n idx = 0;\n\n while (!that._moves[idx].call(that, encodingState) && idx < that._moves.length) {\n idx++;\n }\n },\n pushState: function(encodingState) {\n var that = this,\n states = that.states,\n value = encodingState.value,\n maxLength = value.length,\n code;\n\n if (inArray(\"C\", states) >= 0) {\n var numberMatch = value.substr(encodingState.index).match(/\\d{4,}/g);\n if (numberMatch) {\n maxLength = value.indexOf(numberMatch[0], encodingState.index);\n }\n }\n\n while ((code = encodingState.value.charCodeAt(encodingState.index)) >= 0 &&\n that.isCode(code) && encodingState.index < maxLength) {\n that.encoding.addPattern(that.getValue(code));\n encodingState.index++;\n }\n },\n _initMoves: function(states) {\n var that = this;\n that._moves = [];\n\n if (inArray(that.FNC4, states) >= 0) {\n that._moves.push(that._moveFNC);\n }\n\n if (inArray(that.shiftKey, states) >= 0) {\n that._moves.push(that._shiftState);\n }\n that._moves.push(that._moveState);\n },\n _moveFNC: function(encodingState) {\n if (encodingState.fnc) {\n encodingState.fnc = false;\n return encodingState.previousState == this.key;\n }\n },\n _shiftState: function(encodingState) {\n var that = this;\n if (encodingState.previousState == that.shiftKey &&\n (encodingState.index + 1 >= encodingState.value.length ||\n that.encoding[that.shiftKey].is(encodingState.value, encodingState.index + 1))) {\n that.encoding.addPattern(that.SHIFT);\n encodingState.shifted = true;\n return true;\n }\n },\n _moveState: function() {\n this.encoding.addPattern(this.MOVE);\n return true;\n },\n SHIFT: 98\n });\n\n var states128 = {};\n\n states128.A = state128AB.extend({\n key: \"A\",\n shiftKey: \"B\",\n isCode: function(code) {\n return code >= 0 && code < 96;\n },\n getValue: function(code) {\n if (code < 32) {\n return code + 64;\n }\n\n return code - 32;\n },\n MOVE: 101,\n START: 103\n });\n\n states128.B = state128AB.extend({\n key: \"B\",\n shiftKey: \"A\",\n isCode: function(code) {\n return code >= 32 && code < 128;\n },\n getValue: function(code) {\n return code - 32;\n },\n MOVE: 100,\n START: 104\n });\n\n states128.C = state128.extend({\n key: \"C\",\n addStart: function() {\n this.encoding.addPattern(this.START);\n },\n is: function(value, index) {\n var next4 = getNext(value, index, 4);\n return (index + 4 <= value.length || value.length == 2) && numberRegex.test(next4);\n },\n move: function() {\n this.encoding.addPattern(this.MOVE);\n },\n pushState: function(encodingState) {\n var code;\n while (( code = getNext(encodingState.value, encodingState.index, 2)) &&\n numberRegex.test(code) && code.length == 2)\n {\n this.encoding.addPattern(parseInt(code, 10));\n encodingState.index += 2;\n }\n },\n getValue: function(code) {\n return code;\n },\n MOVE: 99,\n START: 105\n });\n\n states128.FNC4 = state128.extend({\n key: \"FNC4\",\n dependentStates: [\"A\",\"B\"],\n init: function(encoding, states) {\n this.encoding = encoding;\n this._initSubStates(states);\n },\n addStart: function(encodingState) {\n var code = encodingState.value.charCodeAt(0) - 128,\n subState = this._getSubState(code);\n\n this.encoding[subState].addStart();\n },\n is: function(value, index) {\n var code = value.charCodeAt(index);\n return this.isCode(code);\n },\n isCode: function(code) {\n return code >= 128 && code < 256;\n },\n pushState: function(encodingState) {\n var that = this,\n subState = that._initSubState(encodingState),\n encoding = that.encoding,\n length = subState.value.length;\n encodingState.index += length;\n\n if (length < 3) {\n var code;\n for (; subState.index < length; subState.index++) {\n code = subState.value.charCodeAt(subState.index);\n subState.state = that._getSubState(code);\n if (subState.previousState != subState.state) {\n subState.previousState = subState.state;\n encoding[subState.state].move(subState);\n }\n encoding.addPattern(encoding[subState.state].MOVE);\n encoding.addPattern(encoding[subState.state].getValue(code));\n }\n }\n else {\n if (subState.state != subState.previousState) {\n encoding[subState.state].move(subState);\n }\n that._pushStart(subState);\n encoding.pushData(subState, that.subStates);\n if (encodingState.index < encodingState.value.length) {\n that._pushStart(subState);\n }\n }\n\n encodingState.fnc = true;\n encodingState.state = subState.state;\n },\n _pushStart: function(subState) {\n var that = this;\n that.encoding.addPattern(that.encoding[subState.state].MOVE);\n that.encoding.addPattern(that.encoding[subState.state].MOVE);\n },\n _initSubState: function(encodingState) {\n var that = this,\n subState = {\n value: that._getAll(encodingState.value, encodingState.index),\n index: 0\n };\n subState.state = that._getSubState(subState.value.charCodeAt(0));\n subState.previousState = encodingState.previousState == that.key ?\n subState.state : encodingState.previousState;\n return subState;\n },\n _initSubStates: function(states) {\n var that = this;\n that.subStates = [];\n for (var i = 0; i < states.length; i++) {\n if (inArray(states[i], that.dependentStates) >= 0) {\n that.subStates.push(states[i]);\n }\n }\n },\n _getSubState: function(code) {\n var that = this;\n for (var i = 0; i < that.subStates.length; i++) {\n if (that.encoding[that.subStates[i]].isCode(code)) {\n return that.subStates[i];\n }\n }\n },\n _getAll: function(value, index) {\n var code,\n result = \"\";\n while ((code = value.charCodeAt(index++)) && this.isCode(code)) {\n result += String.fromCharCode(code - 128);\n }\n return result;\n }\n });\n\n states128.FNC1 = state128.extend({\n key: \"FNC1\",\n startState: \"C\",\n dependentStates: [\"C\",\"B\"],\n startAI: \"(\",\n endAI: \")\",\n init: function(encoding, states) {\n this.encoding = encoding;\n this.states = states;\n },\n addStart: function() {\n this.encoding[this.startState].addStart();\n },\n is: function() {\n return inArray(this.key, this.states) >= 0;\n },\n pushState: function(encodingState) {\n var that = this,\n encoding = that.encoding,\n value = encodingState.value.replace(/\\s/g, \"\"),\n regexSeparators = new RegExp(\"[\" + that.startAI + that.endAI + \"]\", \"g\"),\n index = encodingState.index,\n subState = {\n state: that.startState\n },\n current,\n nextStart,\n separatorLength;\n\n encoding.addPattern(that.START);\n\n while (true) {\n subState.index = 0;\n\n separatorLength = value.charAt(index) === that.startAI ? 2 : 0;\n current = separatorLength > 0 ? that.getBySeparator(value, index) : that.getByLength(value, index);\n if (current.ai.length) {\n nextStart = index + separatorLength + current.id.length + current.ai.length;\n }\n else {\n nextStart = value.indexOf(that.startAI, index + 1);\n if (nextStart < 0) {\n if (index + current.ai.max + current.id.length + separatorLength < value.length) {\n throw new Error(\"Separators are required after variable length identifiers\");\n }\n nextStart = value.length;\n }\n }\n subState.value = value.substring(index, nextStart).replace(regexSeparators, \"\");\n that.validate(current, subState.value);\n\n encoding.pushData(subState, that.dependentStates);\n\n if (nextStart >= value.length) {\n break;\n }\n\n index = nextStart;\n\n if (subState.state != that.startState) {\n encoding[that.startState].move(subState);\n subState.state = that.startState;\n }\n\n if (!current.ai.length) {\n encoding.addPattern(that.START);\n }\n }\n encodingState.index = encodingState.value.length;\n },\n validate: function(current, value) {\n var code = value.substr(current.id.length),\n ai = current.ai;\n if (!ai.type && !numberRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is numeric only but contains non numeric character(s).\");\n }\n\n if (ai.type == \"alphanumeric\" && !alphanumericRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is alphanumeric only but contains non alphanumeric character(s).\");\n }\n\n if (ai.length && ai.length !== code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be \" + ai.length + \" characters long.\");\n }\n\n if (ai.min && ai.min > code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at least \" + ai.min + \" characters long.\");\n }\n\n if (ai.max && ai.max < code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at most \" + ai.max + \" characters long.\");\n }\n },\n getByLength: function(value, index) {\n var that = this,\n id,\n ai;\n for (var i = 2; i <= 4; i++) {\n id = getNext(value, index, i);\n ai = that.getAI(id) || that.getAI(id.substring(0, id.length - 1));\n if (ai) {\n return {\n id: id,\n ai: ai\n };\n }\n }\n that.unsupportedAIError(id);\n },\n unsupportedAIError: function(id) {\n throw new Error(kendo.format(\"'{0}' is not a supported Application Identifier\"),id);\n },\n getBySeparator: function(value, index) {\n var that = this,\n start = value.indexOf(that.startAI, index),\n end = value.indexOf(that.endAI, start),\n id = value.substring(start + 1,end),\n ai = that.getAI(id) || that.getAI(id.substr(id.length - 1));\n if (!ai) {\n that.unsupportedAIError(id);\n }\n\n return {\n ai: ai,\n id: id\n };\n },\n getAI: function(id) {\n var ai = this.applicationIdentifiers,\n multiKey = ai.multiKey;\n if (ai[id]) {\n return ai[id];\n }\n\n for (var i = 0; i < multiKey.length; i++) {\n if (multiKey[i].ids && inArray(id, multiKey[i].ids) >= 0) {\n return multiKey[i].type;\n }\n else if (multiKey[i].ranges) {\n var ranges = multiKey[i].ranges;\n for (var j = 0; j < ranges.length; j++) {\n if (ranges[j][0] <= id && id <= ranges[j][1]) {\n return multiKey[i].type;\n }\n }\n }\n }\n },\n applicationIdentifiers: {\n \"22\": { max: 29, type: \"alphanumeric\" },\n \"402\": { length: 17 },\n \"7004\": { max: 4, type: \"alphanumeric\" },\n \"242\": { max: 6, type: \"alphanumeric\" },\n \"8020\": { max: 25, type: \"alphanumeric\" },\n \"703\": { min: 3, max: 30, type: \"alphanumeric\" },\n \"8008\": { min: 8, max: 12, type: \"alphanumeric\" },\n \"253\": { min: 13, max: 17, type: \"alphanumeric\" },\n \"8003\": { min: 14, max: 30, type: \"alphanumeric\" },\n multiKey: [{\n ids: [\"15\", \"17\", \"8005\", \"8100\"],\n ranges: [\n [11, 13],\n [310, 316],\n [320, 336],\n [340, 369]\n ],\n type: { length: 6 }\n },{\n ids: [\"240\", \"241\", \"250\", \"251\", \"400\", \"401\", \"403\", \"7002\", \"8004\", \"8007\", \"8110\"],\n ranges: [[90 - 99]],\n type: { max: 30, type: \"alphanumeric\" }\n },{\n ids: [\"7001\"],\n ranges: [[410, 414]],\n type: { length: 13 }\n },{\n ids: [\"10\",\"21\", \"254\", \"420\", \"8002\"],\n type: { max: 20, type: \"alphanumeric\" }\n },{\n ids: [\"00\", \"8006\", \"8017\", \"8018\"],\n type: { length: 18 }\n },{\n ids: [\"01\", \"02\", \"8001\"],\n type: { length: 14 }\n },{\n ids: [\"422\"],\n ranges: [\n [424, 426]\n ],\n type: { length: 3 }\n },{\n ids: [\"20\", \"8102\"],\n type: { length: 2 }\n },{\n ids: [\"30\",\"37\"],\n type: { max: 8, type: \"alphanumeric\" }\n },{\n ids: [\"390\",\"392\"],\n type: { max: 15, type: \"alphanumeric\" }\n },{\n ids: [\"421\", \"423\"],\n type: { min: 3, max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"391\", \"393\"],\n type: { min: 3, max: 18, type: \"alphanumeric\" }\n },{\n ids: [\"7003\", \"8101\"],\n type: { length: 10 }\n }]\n },\n START: 102\n });\n\n var code128Base = Encoding.extend({\n init: function(options) {\n Encoding.fn.init.call(this, options);\n this._initStates();\n },\n _initStates: function() {\n var that = this;\n for (var i = 0; i < that.states.length; i++) {\n that[that.states[i]] = new states128[that.states[i]](that, that.states);\n }\n },\n initValue: function(value, width, height) {\n var that = this;\n that.pattern = [];\n that.value = value;\n that.width = width;\n that.height = height;\n that.checkSum = 0;\n that.totalUnits = 0;\n that.index = 0;\n that.position = 1;\n },\n addData: function() {\n var that = this,\n encodingState = {\n value: that.value,\n index: 0,\n state: \"\"\n };\n if (that.value.length === 0) {\n return;\n }\n\n encodingState.state =\n encodingState.previousState = that.getNextState(encodingState, that.states);\n\n that.addStart(encodingState);\n\n that.pushData(encodingState, that.states);\n\n that.addCheckSum();\n that.addStop();\n that.setBaseUnit();\n },\n pushData: function(encodingState, states) {\n var that = this;\n while (true) {\n that[encodingState.state].pushState(encodingState);\n if (encodingState.index >= encodingState.value.length) {\n break;\n }\n\n if (!encodingState.shifted) {\n encodingState.previousState = encodingState.state;\n encodingState.state = that.getNextState(encodingState, states);\n that[encodingState.state].move(encodingState);\n }\n else {\n var temp = encodingState.state;\n encodingState.state = encodingState.previousState;\n encodingState.previousState = temp;\n encodingState.shifted = false;\n }\n }\n },\n addStart: function(encodingState) {\n this[encodingState.state].addStart(encodingState);\n this.position = 1;\n },\n addCheckSum: function() {\n var that = this;\n\n that.checksum = that.checkSum % 103;\n that.addPattern(that.checksum);\n },\n addStop: function() {\n this.addPattern(this.STOP);\n },\n setBaseUnit: function() {\n var that = this;\n that.baseUnit = that.width / (that.totalUnits + that.quietZoneLength);\n },\n addPattern: function(code) {\n var that = this,\n pattern = that.characterMap[code].toString(),\n value;\n\n for (var i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i),10);\n that.pattern.push(value);\n that.totalUnits += value;\n }\n that.checkSum += code * that.position++;\n },\n getNextState: function(encodingState, states) {\n for (var i = 0; i < states.length; i++) {\n if (this[states[i]].is(encodingState.value, encodingState.index)) {\n return states[i];\n }\n }\n this.invalidCharacterError(encodingState.value.charAt(encodingState.index));\n },\n characterMap: [\n 212222,222122,222221,121223,121322,131222,122213,122312,132212,221213,\n 221312,231212,112232,122132,122231,113222,123122,123221,223211,221132,\n 221231,213212,223112,312131,311222,321122,321221,312212,322112,322211,\n 212123,212321,232121,111323,131123,131321,112313,132113,132311,211313,\n 231113,231311,112133,112331,132131,113123,113321,133121,313121,211331,\n 231131,213113,213311,213131,311123,311321,331121,312113,312311,332111,\n 314111,221411,431111,111224,111422,121124,121421,141122,141221,112214,\n 112412,122114,122411,142112,142211,241211,221114,413111,241112,134111,\n 111242,121142,121241,114212,124112,124211,411212,421112,421211,212141,\n 214121,412121,111143,111341,131141,114113,114311,411113,411311,113141,\n 114131,311141,411131,211412,211214,211232,2331112\n ],\n STOP: 106\n });\n\n encodings.code128a = code128Base.extend({\n name: \"Code 128 A\",\n states: [\"A\"]\n });\n\n\n encodings.code128b = code128Base.extend({\n name: \"Code 128 B\",\n states: [\"B\"]\n });\n\n encodings.code128c = code128Base.extend({\n name: \"Code 128 C\",\n states: [\"C\"]\n });\n\n encodings.code128 = code128Base.extend({\n name: \"Code 128\",\n states: [\"C\", \"B\", \"A\", \"FNC4\"]\n });\n\n encodings[\"gs1-128\"] = code128Base.extend({\n name: \"Code GS1-128\",\n states: [\"FNC1\", \"C\", \"B\"]\n });\n\n var msiBase = Encoding.extend({\n initValue: function(value, width) {\n var that = this;\n that.pattern = [];\n that.value = value;\n that.checkSumLength = 0;\n that.width = width;\n },\n setBaseUnit: function() {\n var that = this,\n startStopLength = 7;\n\n that.baseUnit = that.width /\n ( 12 * (that.value.length + that.checkSumLength) + that.quietZoneLength + startStopLength);\n },\n addData: function() {\n var that = this,\n value = that.value;\n that.addPattern(that.START);\n\n for (var i = 0; i < value.length; i++) {\n that.addCharacter(value.charAt(i));\n }\n\n if (that.options.addCheckSum) {\n that.addCheckSum();\n }\n\n that.addPattern(that.STOP);\n that.setBaseUnit();\n },\n addCharacter: function(character) {\n var that = this,\n pattern = that.characterMap[character];\n if (!pattern) {\n that.invalidCharacterError(character);\n }\n that.addPattern(pattern);\n },\n addPattern: function(pattern) {\n for (var i = 0; i < pattern.length; i++) {\n this.pattern.push(parseInt(pattern.charAt(i),10));\n }\n },\n addCheckSum: function() {\n var that = this,\n checkSumFunction = that.checkSums[that.checkSumType],\n checkValues;\n\n checkValues = checkSumFunction.call(that.checkSums, that.value);\n\n that.checksum = checkValues.join(\"\");\n for (var i = 0; i < checkValues.length; i++) {\n that.checkSumLength++;\n that.addPattern(that.characterMap[checkValues[i]]);\n }\n },\n checkSums: {\n Modulo10: function(value) {\n var checkValues = [0, \"\"],\n odd = value.length % 2,\n idx,\n evenSum,\n oddSum;\n\n for (idx = 0; idx < value.length; idx++) {\n checkValues[(idx + odd) % 2] += parseInt(value.charAt(idx),10);\n }\n\n oddSum = checkValues[0];\n evenSum = (checkValues[1] * 2).toString();\n\n for (idx = 0; idx < evenSum.length; idx++) {\n oddSum += parseInt(evenSum.charAt(idx),10);\n }\n\n return [(10 - (oddSum % 10)) % 10];\n },\n Modulo11: function(value) {\n var weightedSum = 0,\n mod = 11,\n length = value.length,\n weight,\n checkValue;\n\n for (var i = 0; i < length; i++) {\n weight = ((length - i) % 6 || 6) + 1;\n weightedSum += weight * value.charAt(i);\n }\n checkValue = (mod - weightedSum % mod) % mod;\n if (checkValue != 10) {\n return [checkValue];\n }\n return [1, 0];\n },\n Modulo11Modulo10: function(value) {\n var checkValues = this.Modulo11(value),\n mod11Value;\n mod11Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod11Value));\n },\n Modulo10Modulo10: function(value) {\n var checkValues = this.Modulo10(value),\n mod10Value;\n mod10Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod10Value));\n }\n },\n characterMap: [\"12121212\", \"12121221\",\"12122112\", \"12122121\", \"12211212\", \"12211221\", \"12212112\", \"12212121\", \"21121212\", \"21121221\"],\n START: \"21\",\n STOP: \"121\",\n checkSumType: \"\"\n });\n\n encodings.msimod10 = msiBase.extend({\n name: \"MSI Modulo10\",\n checkSumType: \"Modulo10\"\n });\n\n encodings.msimod11 = msiBase.extend({\n name: \"MSI Modulo11\",\n checkSumType: \"Modulo11\"\n });\n\n encodings.msimod1110 = msiBase.extend({\n name: \"MSI Modulo11 Modulo10\",\n checkSumType: \"Modulo11Modulo10\"\n });\n\n encodings.msimod1010 = msiBase.extend({\n name: \"MSI Modulo10 Modulo10\",\n checkSumType: \"Modulo10Modulo10\"\n });\n\n encodings.code11 = Encoding.extend({\n name: \"Code 11\",\n cCheckSumTotal: 10,\n kCheckSumTotal: 9,\n kCheckSumMinLength: 10,\n checkSumMod: 11,\n DASH_VALUE: 10,\n DASH: \"-\",\n START: \"112211\",\n STOP: \"11221\",\n initValue: function(value, width) {\n var that = this;\n that.pattern = [];\n that.value = value;\n that.width = width;\n that.totalUnits = 0;\n },\n addData: function() {\n var that = this;\n var value = that.value;\n that.addPattern(that.START);\n\n for (var i = 0; i < value.length; i++) {\n that.addCharacter(value.charAt(i));\n }\n\n if (that.options.addCheckSum) {\n that.addCheckSum();\n }\n\n that.addPattern(that.STOP);\n that.setBaseUnit();\n },\n setBaseUnit: function() {\n var that = this;\n that.baseUnit = that.width / (that.totalUnits + that.quietZoneLength);\n },\n addCheckSum: function() {\n var that = this,\n value = that.value,\n length = value.length,\n cValue;\n\n cValue = that.getWeightedSum(value, length, that.cCheckSumTotal) % that.checkSumMod;\n that.checksum = cValue + \"\";\n that.addPattern(that.characterMap[cValue]);\n\n length++;\n if (length >= that.kCheckSumMinLength) {\n var kValue = (cValue + that.getWeightedSum(value, length, that.kCheckSumTotal)) % that.checkSumMod;\n that.checksum += kValue;\n that.addPattern(that.characterMap[kValue]);\n }\n },\n getWeightedSum: function(value, length, total) {\n var weightedSum = 0;\n for (var i = 0; i < value.length; i++) {\n weightedSum += this.weightedValue(this.getValue(value.charAt(i)), length, i, total);\n }\n\n return weightedSum;\n },\n weightedValue: function(value, length, index, total) {\n var weight = (length - index) % total || total;\n return weight * value;\n },\n getValue: function(character) {\n var that = this;\n if (!isNaN(character)) {\n return parseInt(character,10);\n }\n else if (character !== that.DASH) {\n that.invalidCharacterError(character);\n }\n return that.DASH_VALUE;\n },\n addCharacter: function(character) {\n var that = this,\n value = that.getValue(character),\n pattern = that.characterMap[value];\n that.addPattern(pattern);\n },\n addPattern: function(pattern) {\n var value;\n for (var i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i),10);\n this.pattern.push(value);\n this.totalUnits += value;\n }\n },\n characterMap: [\"111121\", \"211121\", \"121121\", \"221111\", \"112121\", \"212111\", \"122111\", \"111221\", \"211211\", \"211111\", \"112111\"],\n options: {\n addCheckSum: true\n }\n });\n\n encodings.postnet = Encoding.extend({\n name: \"Postnet\",\n START: \"2\",\n VALID_CODE_LENGTHS: [5,9, 11],\n DIGIT_SEPARATOR: \"-\",\n initValue: function(value, width, height) {\n var that = this;\n that.height = height;\n that.width = width;\n that.baseHeight = height / 2;\n that.value = value.replace(new RegExp(that.DIGIT_SEPARATOR,\"g\"), \"\");\n that.pattern = [];\n that.validate(that.value);\n that.checkSum = 0;\n that.setBaseUnit();\n },\n addData: function() {\n var that = this,\n value = that.value;\n that.addPattern(that.START);\n\n for (var i = 0; i < value.length; i++) {\n that.addCharacter(value.charAt(i));\n }\n\n if (that.options.addCheckSum) {\n that.addCheckSum();\n }\n\n that.addPattern(that.START);\n that.pattern.pop();\n },\n addCharacter: function(character) {\n var that = this,\n pattern = that.characterMap[character];\n that.checkSum += parseInt(character,10);\n that.addPattern(pattern);\n },\n addCheckSum: function() {\n var that = this;\n that.checksum = (10 - (that.checkSum % 10)) % 10;\n that.addCharacter(that.checksum);\n },\n setBaseUnit: function() {\n var that = this,\n startStopLength = 3;\n that.baseUnit = that.width / ((that.value.length + 1) * 10 + startStopLength + that.quietZoneLength);\n },\n validate: function(value) {\n var that = this;\n\n if (!numberRegex.test(value)) {\n that.invalidCharacterError(value.match(/[^0-9]/)[0]);\n }\n if (inArray(value.length, that.VALID_CODE_LENGTHS) < 0) {\n throw new Error(\"Invalid value length. Valid lengths for the Postnet symbology are \" + that.VALID_CODE_LENGTHS.join(\",\"));\n }\n },\n addPattern: function(pattern) {\n var that = this,\n y1;\n for (var i = 0; i < pattern.length; i++) {\n y1 = that.height - that.baseHeight * pattern.charAt(i);\n that.pattern.push({ width: 1, y1: y1, y2: that.height });\n that.pattern.push(1);\n }\n },\n characterMap: [\"22111\", \"11122\", \"11212\", \"11221\", \"12112\", \"12121\", \"12211\", \"21112\", \"21121\", \"21211\"]\n });\n\n encodings.ean13 = Encoding.extend({\n initValue: function(value, width, height) {\n value += \"\";\n\n if (value.length != 12 || /\\D/.test(value)) {\n throw new Error('The value of the \"EAN13\" encoding should be 12 symbols');\n }\n\n var that = this;\n that.pattern = [];\n that.options.height = height;\n that.baseUnit = width / (95 + that.quietZoneLength);\n that.value = value;\n that.checksum = that.calculateChecksum();\n that.leftKey = value[0];\n that.leftPart = value.substr(1,6);\n that.rightPart = value.substr(7) + that.checksum;\n },\n addData: function() {\n var that = this;\n that.addPieces(that.characterMap.start);\n that.addSide(that.leftPart,that.leftKey);\n that.addPieces(that.characterMap.middle);\n that.addSide(that.rightPart);\n that.addPieces(that.characterMap.start);\n },\n addSide: function(leftPart,key) {\n var that = this;\n for (var i = 0; i < leftPart.length; i++) {\n if (key && parseInt(that.keyTable[key].charAt(i),10)) {\n that.addPieces(Array.prototype.slice.call(that.characterMap.digits[leftPart.charAt(i)]).reverse(),true);\n } else {\n that.addPieces(that.characterMap.digits[leftPart.charAt(i)],true);\n }\n }\n },\n addPieces: function(arrToAdd,limitedHeight) {\n var that = this;\n for (var i = 0; i < arrToAdd.length; i++) {\n if (limitedHeight) {\n that.pattern.push({\n y1: 0,\n y2: that.options.height * 0.95,\n width: arrToAdd[i]\n });\n } else {\n that.pattern.push(arrToAdd[i]);\n }\n }\n },\n calculateChecksum: function() {\n var odd = 0,\n even = 0,\n value = this.value.split(\"\").reverse().join(\"\");\n for (var i = 0; i < value.length; i++) {\n if (i % 2) {\n even += parseInt(value.charAt(i),10);\n }\n else {\n odd += parseInt(value.charAt(i),10);\n }\n }\n var checksum = (10 - ((3 * odd + even) % 10)) % 10;\n return checksum;\n },\n keyTable: [\n '000000',\n '001011',\n '001101',\n '001110',\n '010011',\n '011001',\n '011100',\n '010101',\n '010110',\n '011010'\n ],\n characterMap: {\n digits: [\n [3,2,1,1],\n [2,2,2,1],\n [2,1,2,2],\n [1,4,1,1],\n [1,1,3,2],\n [1,2,3,1],\n [1,1,1,4],\n [1,3,1,2],\n [1,2,1,3],\n [3,1,1,2]\n ],\n start: [1,1,1],\n middle: [1,1,1,1,1]\n }\n });\n\n encodings.ean8 = encodings.ean13.extend({\n initValue: function(value, width, height) {\n var that = this;\n if (value.length != 7 || /\\D/.test(value)) {\n throw new Error('Invalid value provided');\n }\n that.value = value;\n that.options.height = height;\n that.checksum = that.calculateChecksum(that.value);\n that.leftPart = that.value.substr(0,4);\n that.rightPart = that.value.substr(4) + that.checksum;\n that.pattern = [];\n that.baseUnit = width / (67 + that.quietZoneLength);\n }\n });\n\n var Barcode = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that.element = $(element);\n that.wrapper = that.element;\n that.element.addClass(\"k-barcode\").css(\"display\", \"block\");\n that.surfaceWrap = $(\"
\").css(\"position\", \"relative\").appendTo(this.element);\n that.surface = draw.Surface.create(that.surfaceWrap, {\n type: that.options.renderAs\n });\n that._setOptions(options);\n if (options && defined(options.value)) {\n that.redraw();\n }\n },\n\n setOptions: function(options) {\n this._setOptions(options);\n this.redraw();\n },\n\n redraw: function() {\n var size = this._getSize();\n\n this.surface.clear();\n this.surface.setSize({\n width: size.width,\n height: size.height\n });\n\n this.createVisual();\n this.surface.draw(this.visual);\n },\n\n getSize: function() {\n return kendo.dimensions(this.element);\n },\n\n _resize: function() {\n this.redraw();\n },\n\n createVisual: function() {\n this.visual = this._render();\n },\n\n _render: function() {\n var that = this,\n options = that.options,\n value = options.value,\n textOptions = options.text,\n textMargin = dataviz.getSpacing(textOptions.margin),\n size = that._getSize(),\n border = options.border || {},\n encoding = that.encoding,\n contentBox = new Box2D(0, 0, size.width, size.height).unpad(border.width).unpad(options.padding),\n barHeight = contentBox.height(),\n result, textToDisplay,\n textHeight;\n\n var visual = new draw.Group();\n\n that.contentBox = contentBox;\n visual.append(that._getBackground(size));\n\n if (textOptions.visible) {\n textHeight = draw.util.measureText(value, { font: textOptions.font }).height;\n barHeight -= textHeight + textMargin.top + textMargin.bottom;\n }\n\n result = encoding.encode(value, contentBox.width(), barHeight);\n\n if (textOptions.visible) {\n textToDisplay = value;\n if (options.checksum && defined(encoding.checksum)) {\n textToDisplay += \" \" + encoding.checksum;\n }\n\n visual.append(that._getText(textToDisplay));\n }\n\n that.barHeight = barHeight;\n this._bandsGroup = this._getBands(result.pattern, result.baseUnit);\n visual.append(this._bandsGroup);\n\n return visual;\n },\n\n exportVisual: function() {\n return this._render();\n },\n\n _getSize: function() {\n var that = this,\n element = that.element,\n size = new geom.Size(DEFAULT_WIDTH, DEFAULT_HEIGHT);\n\n if (element.width() > 0) {\n size.width = element.width();\n }\n if (element.height() > 0) {\n size.height = element.height();\n }\n if (that.options.width) {\n size.width = that.options.width;\n }\n if (that.options.height) {\n size.height = that.options.height;\n }\n\n return size;\n },\n\n value: function(value) {\n var that = this;\n if (!defined(value)) {\n return that.options.value;\n }\n that.options.value = value + '';\n that.redraw();\n },\n\n _getBands: function(pattern, baseUnit) {\n var that = this,\n contentBox = that.contentBox,\n position = contentBox.x1,\n step,\n item;\n\n var group = new draw.Group();\n for (var i = 0; i < pattern.length; i++) {\n item = isPlainObject(pattern[i]) ? pattern[i] : {\n width: pattern[i],\n y1: 0,\n y2: that.barHeight\n };\n\n step = item.width * baseUnit;\n\n if (i % 2) {\n var rect = geom.Rect.fromPoints(\n new geom.Point(position, item.y1 + contentBox.y1),\n new geom.Point(position + step, item.y2 + contentBox.y1)\n );\n\n var path = draw.Path.fromRect(rect, {\n fill: {\n color: that.options.color\n },\n stroke: null\n });\n\n group.append(path);\n }\n\n position += step;\n }\n\n return group;\n },\n\n _getBackground: function(size) {\n var that = this,\n options = that.options,\n border = options.border || {};\n\n var box = new Box2D(0,0, size.width, size.height).unpad(border.width / 2);\n var path = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: options.background\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n\n return path;\n },\n\n _getText: function(value) {\n var that = this,\n textOptions = that.options.text,\n text = that._textbox = new TextBox(value, {\n font: textOptions.font,\n color: textOptions.color,\n align: \"center\",\n vAlign: \"bottom\",\n margin: textOptions.margin\n });\n\n text.reflow(that.contentBox);\n text.renderVisual();\n\n return text.visual;\n },\n\n _setOptions: function(options) {\n var that = this;\n that.type = (options.type || that.options.type).toLowerCase();\n\n if (that.type == \"upca\") { //extend instead\n that.type = \"ean13\";\n options.value = '0' + options.value;\n }\n\n if (that.type == \"upce\") {\n that.type = \"ean8\";\n options.value = '0' + options.value;\n }\n\n if (!encodings[that.type]) {\n throw new Error('Encoding ' + that.type + 'is not supported.');\n }\n\n that.encoding = new encodings[that.type]();\n\n that.options = extend(true, that.options, options);\n },\n\n options: {\n name: \"Barcode\",\n renderAs: \"svg\",\n value: \"\",\n type: \"code39\",\n checksum: false,\n width: 0,\n height: 0,\n color: \"black\",\n background: \"white\",\n text: {\n visible: true,\n font: \"16px Consolas, Monaco, Sans Mono, monospace, sans-serif\",\n color: \"black\",\n margin: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n },\n border: {\n width: 0,\n dashType: \"solid\",\n color: \"black\"\n },\n padding: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n }\n });\n dataviz.ExportMixin.extend(Barcode.fn);\n\n dataviz.ui.plugin(Barcode);\n\n kendo.deepExtend(dataviz, {\n encodings: encodings,\n Encoding: Encoding\n });\n\n })(window.kendo.jQuery);\n\n}));\n"]}