<html> <head> <title>RenderBar Imaging Sample Code</title> <script type="text/javascript" src="barcode.js"></script> <script language="javascript"> function getBarcodes(){ var bc = new Barcode(); var val = ""; for (barcode in bc.types){ switch (bc.types[barcode]){ case "codabar" : val = "a1234567890d"; break; case "code128" : val = "a1234567890d"; bc.setCodeTable(bc.codeB()); break; case "code25" : val = "0123456789"; break; case "code39" : val = "a0123456789$ ./+d"; bc.setRatio("2:1"); break; case "ean13" : val = "978073561375"; break; case "ean8" : val = "55313490"; break; case "itf" : val = "0123456789"; break; case "msi" : val = "0123456789"; break; case "upca" : val = "79014513753"; break; case "upce" : val = "0123456"; break; } bc.setParentElement(bc.types[barcode]); bc.encode(val, bc.types[barcode], false, false); } } </script> </head> <body onload="getBarcodes();"> <font style="color:'#000099'; font-family:'Verdana, Tahoma, Arial, Sans-Sarif'; font-size:'12pt'; font-weight:'bold';"> <div id="codabar" style="display:'block'; left:'50'; position:'relative';"></div> <div id="code128" style="display:'block'; left:'50'; position:'relative';"></div> <div id="code25" style="display:'block'; left:'50'; position:'relative';"></div> <div id="code39" style="display:'block'; left:'50'; position:'relative';"></div> <div id="ean13" style="display:'block'; left:'50'; position:'relative';"></div> <div id="ean8" style="display:'block'; left:'50'; position:'relative';"></div> <div id="itf" style="display:'block'; left:'50'; position:'relative';"></div> <div id="msi" style="display:'block'; left:'50'; position:'relative';"></div> <div id="upca" style="display:'block'; left:'50'; position:'relative';"></div> <div id="upce" style="display:'block'; left:'50'; position:'relative';"></div> </font> </body> </html>
barcode.js
// This file and its contents are copyrighted material and // are the physical and intellectual property of RenderBar Imaging. // By distributing, viewing, modifying, or otherwise using this // material, you are binding yourself to, and are in complete // agreement with, our stated license agreement found at: // http://www.renderbar.com/secure/agree.php // expose object interfaces Barcode.constructor = Barcode; Barcode.prototype.codeA = getA; Barcode.prototype.codeB = getB; Barcode.prototype.codeC = getC; Barcode.prototype.Shift = getShift; Barcode.prototype.FNC1 = getFNC1; Barcode.prototype.FNC2 = getFNC2; Barcode.prototype.FNC3 = getFNC3; Barcode.prototype.FNC4 = getFNC4; Barcode.prototype.ToA = getToA; Barcode.prototype.ToB = getToB; Barcode.prototype.ToC = getToC; Barcode.prototype.encode = encode; Barcode.prototype.codeTableChar = new Array( 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 198 ); // A = 203; B = 204; C = 205; // FNC1 = 202; FNC2 = 197; // FNC3 = 196; FNC4 = 195; // ToA = 201; ToB = 200; ToC = 199 // Shift = 198 Barcode.prototype.getCheckDigit = getCheckDigit; Barcode.prototype.getCodeTable = getCodeTable; Barcode.prototype.getHeight = getHeight; Barcode.prototype.getIsReadable = getIsReadable; Barcode.prototype.getIsCompressed = getIsCompressed; Barcode.prototype.getParentElement = getParentElement; Barcode.prototype.getRatio = getRatio; Barcode.prototype.getType = getType; Barcode.prototype.getValue = getValue; Barcode.prototype.getWidth = getWidth; Barcode.prototype.hasCheckDigit = hasCheckDigit; Barcode.prototype.innerHTML = innerHTML; Barcode.prototype.setCodeTable = setCodeTable; Barcode.prototype.setHeight = setHeight; Barcode.prototype.setIsReadable = setIsReadable; Barcode.prototype.setParentElement = setParentElement; Barcode.prototype.setRatio = setRatio; Barcode.prototype.setType = setType; Barcode.prototype.setValue = setValue; Barcode.prototype.setWidth = setWidth; Barcode.prototype.types = new Array( "codabar", "code128", "code25", "code39", "ean13", "ean8", "itf", "msi", "upca", "upce" ); // 0 - 9 respectively // default local variable values var A = 203; var B = 204; var C = 205; var Shift = 198; var FNC1 = 202; var FNC2 = 197; var FNC3 = 196; var FNC4 = 195; var ToA = 201; var ToB = 200; var ToC = 199; var checkDigit = 0; var codeTable = 204; var compress = false; var encoded = ""; var hasCheck = false; var height = 25; var html = ""; var parentEl = null; var readable = true; var ratio = "3:1"; var type = "code39"; var value = "RenderBar"; var width = 1; // interface functionality function Barcode(){} function encode(input, type, check, autoCompress, table){ if (input == null) return false; if (input.length == 0) return false; setType(type); setCodeTable(table); value = input; hasCheck = (check ? true : false); compress = (autoCompress ? true : false); encoded = ""; checkDigit = 0; switch (type){ case "codabar" : CodaBar(value); break; case "code128" : Code128(value); break; case "code25" : Code25(value); break; case "code39" : Code39(value); break; case "ean13" : EAN13(value); break; case "ean8" : EAN8(value); break; case "itf" : ITF(value); break; case "msi" : MSI(value); break; case "upca" : UPCA(value); break; case "upce" : UPCE(value); break; } getHTML(); } function getA() {return A;} function getB() {return B;} function getC() {return C;} function getFNC1() {return FNC1;} function getFNC2() {return FNC2;} function getFNC3() {return FNC3;} function getFNC4() {return FNC4;} function getToA() {return ToA;} function getToB() {return ToB;} function getToC() {return ToC;} function getCheckDigit(){return checkDigit;} function getCodeTable(){ switch (codeTable){ case A: return "A"; break; case B: return "B"; break; case C: return "C"; break; } } function getHeight(){return height;} function getHTML(){ var chr = 0; var chrCount = 0; var gif = ""; var htm = ""; if (isNaN(height)) h = 25; if (isNaN(width)) w = 1; if (height < 5) height = 25; if (width < 1) width = 1; for (var i = 0; i < encoded.length; i++){ chr = parseInt(encoded.substr(i, 1)); chrCount = 1; if (i == encoded.length) break; while (chr == parseInt(encoded.substr(i + 1, 1))){ chrCount++; i++; if (i > encoded.length) break; } gif = ((chr == 1) ? "b.gif" : "w.gif"); htm += "<img src\=\"" + gif + "\" style=\"height:'" + height + "'\; width:'" + (width * chrCount) + "'\;\">"; } if (readable){ if (type == "code128"){ value = value.replace(/(\W|\D)*/, ""); } htm += "<br><div style=\"display:'inline'; text-align:'center';\">" + value + "</div>"; } html = "<div style=\"display:'inline'; text-align:'center';\">" + htm + "</div>"; if (parentEl != null) parentEl.innerHTML = html; } function getIsCompressed() {return compress;} function getIsReadable() {return readable;} function getParentElement() {return parentEl;} function getRatio() {return ratio;} function getShift() {return Shift;} function getType() {return type;} function getValue() {return value;} function getWidth() {return width;} function hasCheckDigit() {return hasCheck;} function innerHTML() {return html;} function setCodeTable(chr){ if (chr == null) return false; chr = (isNaN(chr) ? chr.charCodeAt(0) : chr); chr = chr.toString(); chr = chr.toLowerCase(); var exp = new RegExp("(^[?i:abc]{1}$)+|(^20[3-5]{1}?$)+"); if (!exp.test(chr)) return false; exp = new RegExp("^[?i:abc]{1}$"); chr = (exp.test(chr) ? chr.charCodeAt(0) + 106 : chr); codeTable = chr; return true; } function setHeight(h){ if (isNaN(h)) return; if (h < 5) h = 5; height = h; } function setIsReadable(yes){readable = yes;} function setParentElement(e){ parentEl = (document.all ? document.all[e] : document.getElementById(e)); } function setRatio(r){ if (!r) return; switch (r){ case "2:1": case "3:1": break; default: return; } ratio = r; } function setType(barType){ var exp = new RegExp("^([0-9]{1}|(codabar|code128|code25|code39|ean13|ean8|itf|msi|upca|upce){1})$"); var exp = new RegExp(); if (barType == null) return false; barType = (isNaN(barType) ? barType.toLowerCase() : barType); if (!exp.test(barType)) return false; type = (isNaN(barType) ? barType : types[barType]); return true; } function setValue(val){value = val;} function setWidth(w){ if (isNaN(w)) return; if (w < 5) w = 5; width = w; } // barcoding functions function CodaBar(input){ var charIndex = 0; var charSet = new Array(); var chr = ""; var encodeFormat = ""; var exp = new RegExp("^[?i:a-d]{1}[?i:0-9a-d\-\$\:\/\.\+]+[?i:a-d]{1}$"); var pad = "0"; if (!exp.test(input)) return ""; input = input.toUpperCase(); charSet[0] = "0000011"; // 0 charSet[1] = "0000110"; // 1 charSet[2] = "0001001"; // 2 charSet[3] = "1100000"; // 3 charSet[4] = "0010010"; // 4 charSet[5] = "1000010"; // 5 charSet[6] = "0100001"; // 6 charSet[7] = "0100100"; // 7 charSet[8] = "0110000"; // 8 charSet[9] = "1001000"; // 9 charSet[10] = "0001100"; // - charSet[11] = "0011000"; // $ charSet[12] = "1000101"; // : charSet[13] = "1010001"; // / charSet[14] = "1010100"; // . charSet[15] = "0010101"; // + charSet[16] = "0011010"; // A charSet[17] = "0101001"; // B charSet[18] = "0001011"; // C charSet[19] = "0001110"; // D for (var i = 0; i < input.length; i++){ chr = input.substr(i, 1); switch (true){ case (!isNaN(chr)) : charIndex = parseInt(chr); break; case (chr == "-") : charIndex = 10; break; case (chr == "$") : charIndex = 11; break; case (chr == ":") : charIndex = 12; break; case (chr == "/") : charIndex = 13; break; case (chr == ".") : charIndex = 14; break; case (chr == "+") : charIndex = 15; break; default : charIndex = chr.charCodeAt(0) - 49; break; } encoded += charSet[charIndex]; } input = encoded; encoded = ""; for (var i = 0; i < input.length; i += 7){ encodeFormat = input.substr(i, 7); for (var j = 0; j < 7; j++){ if ((j & 1) == 1){ encoded += ((encodeFormat.substr(j, 1) == 1) ? "00" : "0"); }else{ encoded += ((encodeFormat.substr(j, 1) == 1) ? "11" : "1"); } } if ((i + 7) < input.length) encoded += pad; } return encoded; } function Code128(input){ if (input.length == 0) return ""; var chr = 0; var charSet = new Array(); var curCodeTable = 0; var startChar = ""; var stopChar = "1100011101011"; charSet[0] = "11011001100"; charSet[1] = "11001101100"; charSet[2] = "11001100110"; charSet[3] = "10010011000"; charSet[4] = "10010001100"; charSet[5] = "10001001100"; charSet[6] = "10011001000"; charSet[7] = "10011000100"; charSet[8] = "10001100100"; charSet[9] = "11001001000"; charSet[10] = "11001000100"; charSet[11] = "11000100100"; charSet[12] = "10110011100"; charSet[13] = "10011011100"; charSet[14] = "10011001110"; charSet[15] = "10111001100"; charSet[16] = "10011101100"; charSet[17] = "10011100110"; charSet[18] = "11001110010"; charSet[19] = "11001011100"; charSet[20] = "11001001110"; charSet[21] = "11011100100"; charSet[22] = "11001110100"; charSet[23] = "11101101110"; charSet[24] = "11101001100"; charSet[25] = "11100101100"; charSet[26] = "11100100110"; charSet[27] = "11101100100"; charSet[28] = "11100110100"; charSet[29] = "11100110010"; charSet[30] = "11011011000"; charSet[31] = "11011000110"; charSet[32] = "11000110110"; charSet[33] = "10100011000"; charSet[34] = "10001011000"; charSet[35] = "10001000110"; charSet[36] = "10110001000"; charSet[37] = "10001101000"; charSet[38] = "10001100010"; charSet[39] = "11010001000"; charSet[40] = "11000101000"; charSet[41] = "11000100010"; charSet[42] = "10110111000"; charSet[43] = "10110001110"; charSet[44] = "10001101110"; charSet[45] = "10111011000"; charSet[46] = "10111000110"; charSet[47] = "10001110110"; charSet[48] = "11101110110"; charSet[49] = "11010001110"; charSet[50] = "11000101110"; charSet[51] = "11011101000"; charSet[52] = "11011100010"; charSet[53] = "11011101110"; charSet[54] = "11101011000"; charSet[55] = "11101000110"; charSet[56] = "11100010110"; charSet[57] = "11101101000"; charSet[58] = "11101100010"; charSet[59] = "11100011010"; charSet[60] = "11101111010"; charSet[61] = "11001000010"; charSet[62] = "11110001010"; charSet[63] = "10100110000"; charSet[64] = "11100001100"; charSet[65] = "10010110000"; charSet[66] = "10010000110"; charSet[67] = "10000101100"; charSet[68] = "10000100110"; charSet[69] = "10110010000"; charSet[70] = "10110000100"; charSet[71] = "10011010000"; charSet[72] = "10011000010"; charSet[73] = "10000110100"; charSet[74] = "10000110010"; charSet[75] = "11000010010"; charSet[76] = "11001010000"; charSet[77] = "11110111010"; charSet[78] = "11000010100"; charSet[79] = "10001111010"; charSet[80] = "10100111100"; charSet[81] = "10010111100"; charSet[82] = "10010011110"; charSet[83] = "10111100100"; charSet[84] = "10011110100"; charSet[85] = "10011110010"; charSet[86] = "11110100100"; charSet[87] = "11110010100"; charSet[88] = "11110010010"; charSet[89] = "11011011110"; charSet[90] = "11011110110"; charSet[91] = "11110110110"; charSet[92] = "10101111000"; charSet[93] = "10100011110"; charSet[94] = "10001011110"; charSet[95] = "10111101000"; charSet[96] = "10111100010"; charSet[97] = "11110101000"; charSet[98] = "11110100010"; charSet[99] = "10111011110"; charSet[100] = "10111101110"; charSet[101] = "11101011110"; charSet[102] = "11110101110"; charSet[103] = "11010000100"; charSet[104] = "11010010000"; charSet[105] = "11010011100"; curCodeTable = codeTable; checkDigit = codeTable - 100; startChar = charSet[checkDigit]; if (curCodeTable == C) input += ((input.length % 2 != 0) ? "0" : ""); for (var i = 0; i < input.length; i++){ chr = input.charCodeAt(i); if (chr == ToA || chr == ToB || chr == ToC){ switch (curCodeTable){ case A: if (chr == ToC){curCodeTable = C;}else{if (chr == ToB) curCodeTable = B;} break; case B: if (chr == ToC){curCodeTable = C;}else{if (chr == ToA) curCodeTable = A;} break; case C: if (chr == ToB){curCodeTable = B;}else{if (chr == ToA) curCodeTable = A;} break; } } if (curCodeTable == A || curCodeTable == B){ switch (true){ case chr < 32 : chr += 64; break; case chr > 31 && chr < 128 : chr -= 32; break; case chr > 127 : chr -= 100; break; } }else{ chr = ((chr < 200) ? parseInt(input.substr(i, 2)) : chr - 100); } i++; if (curCodeTable == C){ if (chr < 100){ checkDigit += chr * (parseInt(i / 2) + 1); i++; }else{ checkDigit += chr * i; } }else{ checkDigit += chr * i; } i--; encoded += charSet[chr]; } checkDigit %= 103; encoded = startChar + encoded + charSet[checkDigit] + stopChar; return encoded; } function Code25(input){ var charSet = new Array(); var chr = 0; var encodeFormat = ""; var evenSum = 0; var exp = new RegExp("^[0-9]+$"); var oddSum = 0; var padd = "0"; var startChar = "1110111010"; var stopChar = "111010111"; if (!exp.test(input)) return ""; // numbers 0 to 9 charSet[0] = "00110"; charSet[1] = "10001"; charSet[2] = "01001"; charSet[3] = "11000"; charSet[4] = "00101"; charSet[5] = "10100"; charSet[6] = "01100"; charSet[7] = "00011"; charSet[8] = "10010"; charSet[9] = "01010"; for (var i = 0; i < input.length; i++){ chr = parseInt(input.substr(i, 1)); if (i % 2 == 0){ oddSum += chr; }else{ evenSum += chr; } encoded += charSet[chr]; } input = ""; checkDigit = 10 - ((evenSum + (oddSum * 3)) % 10); if (checkDigit == 10) checkDigit = 0; encoded += charSet[checkDigit]; for (var i = 0; i < encoded.length; i += 5){ encodeFormat = encoded.substr(i, 5); for (var j = 0; j < 5; j++){ input += ((parseInt(encodeFormat.substr(j, 1)) == 1) ? "111" : "1"); input += padd; } } encoded = input; encoded = startChar + encoded + stopChar; return encoded; } function Code39(input){ var charIndex = 0; var charSet = new Array(43); var chr = ""; var encodeFormat = ""; var exp = new RegExp("[a-zA-Z0-9\-\. \$\/\+\%]"); var guard = "010010100"; var padd = "0"; var stripeRatio = (ratio == "3:1" ? "000" : "00"); var barRatio = (ratio == "3:1" ? "111" : "11"); // numbers 0 to 9 charSet[0] = "000110100"; charSet[1] = "100100001"; charSet[2] = "001100001"; charSet[3] = "101100000"; charSet[4] = "000110001"; charSet[5] = "100110000"; charSet[6] = "001110000"; charSet[7] = "000100101"; charSet[8] = "100100100"; charSet[9] = "001100100"; // letters A to Z charSet[10] = "100001001"; charSet[11] = "001001001"; charSet[12] = "101001000"; charSet[13] = "000011001"; charSet[14] = "100011000"; charSet[15] = "001011000"; charSet[16] = "000001101"; charSet[17] = "100001100"; charSet[18] = "001001100"; charSet[19] = "000011100"; charSet[20] = "100000011"; charSet[21] = "001000011"; charSet[22] = "101000010"; charSet[23] = "000010011"; charSet[24] = "100010010"; charSet[25] = "001010010"; charSet[26] = "000000111"; charSet[27] = "100000110"; charSet[28] = "001000110"; charSet[29] = "000010110"; charSet[30] = "110000001"; charSet[31] = "011000001"; charSet[32] = "111000000"; charSet[33] = "010010001"; charSet[34] = "110010000"; charSet[35] = "011010000"; // allowed symbols - . SP $ / + % charSet[36] = "010000101"; charSet[37] = "110000100"; charSet[38] = "011000100"; charSet[39] = "010101000"; charSet[40] = "010100010"; charSet[41] = "010001010"; charSet[42] = "000101010"; while (input.indexOf("*") != -1) input = input.replace("*", ""); input = input.toUpperCase(); for (i = 0; i < input.length; i++){ chr = input.substr(i, 1); if (!exp.test(chr)){encoded = ""; return "";} switch (true){ case chr == "-" : charIndex = 36; break; case chr == "." : charIndex = 37; break; case chr == " " : charIndex = 38; break; case chr == "$" : charIndex = 39; break; case chr == "/" : charIndex = 40; break; case chr == "+" : charIndex = 41; break; case chr == "%" : charIndex = 42; break; case !isNaN(chr) : charIndex = parseInt(chr); break; default : charIndex = chr.charCodeAt(0) - 55; break; } checkDigit += charIndex; encoded += charSet[charIndex]; } checkDigit %= 43; if (hasCheck) encoded += charSet[checkDigit]; encoded = guard + encoded + guard; input = ""; for (i = 0; i < encoded.length; i += 9){ encodeFormat = encoded.substr(i, 9); for (j = 0; j < 9; j++){ if ((j & 1) == 1){ input += ((encodeFormat.substr(j, 1) == 1) ? stripeRatio : "0"); }else{ input += ((encodeFormat.substr(j, 1) == 1) ? barRatio : "1"); } } input += padd; } encoded = input; return encoded; } function EAN13(input){ var center = "01010"; var charSet = new Array(); var encodeSupplement = false; var evenSum = 0; var exp = new RegExp("^[0-9]+$"); var guard = "101"; var numberSystem = 0; var oddSum = 0; var parity = 0; var paritySequence = ""; var supplement = ""; if (!exp.test(input)) return ""; switch (input.length){ case 12: case 14: case 17: if (input.length > 12){ supplement = input.substr(12, input.length - 12); input = input.substr(0, 12); encodeSupplement = true; break; } case 13: case 15: case 18: if (input.length > 13){ supplement = input.substr(13, input.length - 13); checkDigit = input.substr(12, 1); encodeSupplement = True; }else{ checkDigit = input.substr(input.length - 1, 1); } input = input.substr(0, 12); break; default: return ""; break; } if (encodeSupplement) supplement = EncodeSupplement(supplement); // left even parity charSet[0] = "0001101"; charSet[1] = "0011001"; charSet[2] = "0010011"; charSet[3] = "0111101"; charSet[4] = "0100011"; charSet[5] = "0110001"; charSet[6] = "0101111"; charSet[7] = "0111011"; charSet[8] = "0110111"; charSet[9] = "0001011"; // left odd parity charSet[10] = "0100111"; charSet[11] = "0110011"; charSet[12] = "0011011"; charSet[13] = "0100001"; charSet[14] = "0011101"; charSet[15] = "0111001"; charSet[16] = "0000101"; charSet[17] = "0010001"; charSet[18] = "0001001"; charSet[19] = "0010111"; // right char set charSet[20] = "1110010"; charSet[21] = "1100110"; charSet[22] = "1101100"; charSet[23] = "1000010"; charSet[24] = "1011100"; charSet[25] = "1001110"; charSet[26] = "1010000"; charSet[27] = "1000100"; charSet[28] = "1001000"; charSet[29] = "1110100"; if (input.length == 12){ for (var i = 0; i < input.length; i++){ if (i % 2 == 0){ evenSum += parseInt(input.substr(i, 1)); }else{ oddSum += parseInt(input.substr(i, 1)); } } checkDigit = 10 - ((evenSum + (oddSum * 3)) % 10) checkDigit = (checkDigit == 10 ? 0 : checkDigit); input += checkDigit.toString(); } numberSystem = parseInt(input.substr(0, 1)); input = input.substr(1, input.length - 1); switch (numberSystem){ case 0: paritySequence = "000000222222"; break; case 1: paritySequence = "001011222222"; break; case 2: paritySequence = "001101222222"; break; case 3: paritySequence = "001110222222"; break; case 4: paritySequence = "010011222222"; break; case 5: paritySequence = "011001222222"; break; case 6: paritySequence = "011100222222"; break; case 7: paritySequence = "010101222222"; break; case 8: paritySequence = "010110222222"; break; case 9: paritySequence = "011010222222"; break; } for (var i = 0; i < input.length; i++){ parity = parseInt(paritySequence.substr(i, 1)) * 10; parity += parseInt(input.substr(i, 1)); encoded += charSet[parity]; if (i == 5) encoded += center; } encoded = guard + encoded + guard + supplement; return encoded; } function EAN8(input){ var center = "01010"; var charSet = new Array(); var encodeSupplement = false; var evenSum = 0; var exp = new RegExp("^[0-9]+$"); var guard = "101"; var oddSum = 0; var parity = 0; var supplement = ""; if (!exp.test(input)) return ""; switch (input.length){ case 7 : case 9 : case 12: if (input.length > 7){ supplement = input.substr(7, input.length - 7); input = input.substr(0, 7); encodeSupplement = true; } break; case 8 : case 10: case 13: if (input.length > 8){ supplement = input.substr(8, input.length - 8); checkDigit = parseInt(input.substr(8, 1)); input = input.substr(0, 8); encodeSupplement = true; } break; default: return ""; break; } if (encodeSupplement) supplement = EncodeSupplement(supplement); // left char set charSet[0] = "0001101"; charSet[1] = "0011001"; charSet[2] = "0010011"; charSet[3] = "0111101"; charSet[4] = "0100011"; charSet[5] = "0110001"; charSet[6] = "0101111"; charSet[7] = "0111011"; charSet[8] = "0110111"; charSet[9] = "0001011"; // right char set charSet[10] = "1110010"; charSet[11] = "1100110"; charSet[12] = "1101100"; charSet[13] = "1000010"; charSet[14] = "1011100"; charSet[15] = "1001110"; charSet[16] = "1010000"; charSet[17] = "1000100"; charSet[18] = "1001000"; charSet[19] = "1110100"; if (input.length == 8){ for (var i = 0; i < input.length; i++){ if (i % 2 == 0){ oddSum += parseInt(input.substr(i, 1)); }else{ evenSum += parseInt(input.substr(i, 1)); } } checkDigit = 10 - ((evenSum + (oddSum * 3)) % 10); checkDigit = (checkDigit == 10 ? 0 : checkDigit); input += checkDigit.toString(); } for (var i = 0; i < 8; i++){ parity = (i < 4 ? 0 : 1) * 10; parity += parseInt(input.substr(i, 1)); encoded += charSet[parity]; if (i == 3) encoded += center; } encoded = guard + encoded + guard + supplement; return encoded; } function EncodeSupplement(input){ var charSet = new Array(); var center = "01"; var encode = ""; var evenSum = 0; var exp = new RegExp("^[0-9]+$"); var guard = "1011"; var largeParity = new Array(); var oddSum = 0; var padd = "00000000000000000000"; var parity = 0; var parityMask = ""; var smallParity = new Array(); if (!exp.test(input)) return ""; // even char set charSet[0] = "0100111"; charSet[1] = "0110011"; charSet[2] = "0011011"; charSet[3] = "0100001"; charSet[4] = "0011101"; charSet[5] = "0111001"; charSet[6] = "0000101"; charSet[7] = "0010001"; charSet[8] = "0001001"; charSet[9] = "0010111"; // odd char set charSet[10] = "0001101"; charSet[11] = "0011001"; charSet[12] = "0010011"; charSet[13] = "0111101"; charSet[14] = "0100011"; charSet[15] = "0110001"; charSet[16] = "0101111"; charSet[17] = "0111011"; charSet[18] = "0110111"; charSet[19] = "0001011"; // populate parity masks // 2 digit smallParity[0] = "11"; smallParity[1] = "10"; smallParity[2] = "01"; smallParity[3] = "00"; // 5 digit largeParity[0] = "00111"; largeParity[1] = "01011"; largeParity[2] = "01101"; largeParity[3] = "01110"; largeParity[4] = "10011"; largeParity[5] = "11001"; largeParity[6] = "11100"; largeParity[7] = "10101"; largeParity[8] = "10110"; largeParity[9] = "11010"; switch (input.length){ case 2 : parityMask = smallParity(parseInt(input) % 4); for (var i = 0; i < 2; i++){ parity = (parseInt(parityMask.substr(i, 1)) * 10); parity += parseInt(input.substr(i, 1)); encode += charSet[parity]; if (i == 1) encode += center; } encode = padd + guard + encode; break; case 5 : for (var i = 0; i < 5; i++){ if (i % 2 == 0){ oddSum += parseInt(input.substr(i, 1)); }else{ evenSum += parseInt(input.substr(i, 1)); } } parity = ((oddSum * 3) + (evenSum * 9)) % 10; parityMask = largeParity(parity); for (var i = 1; i < 5; i++){ parity = (parseInt(parityMask.substr(i, 1)) * 10); parity += parseInt(input.substr(i, 1)); encode += charSet[parity]; if (i == 4) break; encode += center; } encode = padd + guard + encode; break; default: return ""; break; } return encode; } function Interlace(input){ var left = ""; var right = ""; var newString = ""; for (var i = 0; i < input.length; i+= 10){ left = input.substr(i, 5); right = input.substr(i + 5, 5); for (var j = 0; j < 5; j++){ newString += left.substr(j, 1) + right.substr(j, 1); } } return newString; } function ITF(input){ var chr = 0; var charSet = new Array(); var evenSum = 0; var exp = new RegExp("^[0-9]+$"); var oddSum = 0; var startChar = "1010"; var stopChar = "1101"; charSet[0] = "00110"; charSet[1] = "10001"; charSet[2] = "01001"; charSet[3] = "11000"; charSet[4] = "00101"; charSet[5] = "10100"; charSet[6] = "01100"; charSet[7] = "00011"; charSet[8] = "10010"; charSet[9] = "01010"; if (!exp.test(input)) return ""; if (hasCheck){ for (var i = 0; i < input.length; i++){ if (i % 2 == 0){ oddSum += parseInt(input.substr(i, 1)); }else{ evenSum += parseInt(input.substr(i, 1)); } } checkDigit = 10 - ((evenSum + (oddSum * 3)) % 10); checkDigit = (checkDigit == 10 ? 0 : checkDigit); input += checkDigit.toString(); } if ((input.length & 1) == 1) input = "0" + input; for (var i = 0; i < input.length; i++){ encoded += charSet[parseInt(input.substr(i, 1))]; } input = Interlace(encoded); encoded = ""; for (var i = 0; i < input.length; i++){ chr = parseInt(input.substr(i, 1)); if (i % 2 == 0){ encoded += (chr == 1 ? "11" : "1"); }else{ encoded += (chr == 1 ? "00" : "0"); } } encoded = startChar + encoded + stopChar; return encoded; } function MSI(input){ var charSet = new Array(); var chr = ""; var exp = new RegExp("^[0-9]+$"); var product = ""; var oddSum = 0; var startChar = "110"; var stopChar = "1001"; if (!exp.test(input)) return ""; if (input.length < 3 || input.length > 14) return ""; charSet[0] = "100100100100"; charSet[1] = "100100100110"; charSet[2] = "100100110100"; charSet[3] = "100100110110"; charSet[4] = "100110100100"; charSet[5] = "100110100110"; charSet[6] = "100110110100"; charSet[7] = "100110110110"; charSet[8] = "110100100100"; charSet[9] = "110100100110"; for (var i = 0; i < input.length; i++){ chr = input.substr(i, 1); if (i % 2 == 0){ oddSum += parseInt(chr); }else{ product += chr; } } product = parseInt(product) * 2; product = String(product); for (var i = 0; i < product.length; i++){ checkDigit += parseInt(product.substr(i, 1)); } checkDigit += oddSum; checkDigit = 10 - (checkDigit % 10); if (checkDigit == 10) checkDigit = 0; input += checkDigit; for (var i = 0; i < input.length; i++){ chr = input.substr(i, 1); encoded += charSet[parseInt(chr)]; } encoded = startChar + encoded + stopChar; } function UPCA(input){ var center = "01010"; var charSet = new Array(); var encodeSupplement = false; var evenSum = 0; var exp = new RegExp("^[0-9]+$"); var guard = "101"; var oddSum = 0; var parity = 0; var supplement = ""; if (!exp.test(input)) return ""; switch (input.length){ case 11: case 13: case 16: if (input.length > 11){ supplement = input.substr(11, input.length - 11); input = input.substr(0, 11); encodeSupplement = true; } break; case 12: case 14: case 17: if (input.length > 12){ supplement = input.substr(12, input.length - 12); input = input.substr(0, 12); encodeSupplement = true; } break; default: return ""; break; } if (encodeSupplement) suppliment = EncodeSupplement(supplement); if (compress){ // see: http://www.uc-council.org/reflib/01302/d36-2.htm for specifications var expFirst = new RegExp("(^[0-9]{3})([0-2]{1})(0{2})([0-9]{5}$)"); var expSecond = new RegExp("(^[0-9]{3})([3-9]{1})(0{2})([0-9]{5}$)"); var expThird = new RegExp("(^[0-9]{4})([1-9]{1})(0{1})([0-9]{5}$)"); var expFourth = new RegExp("(^[0-9]{4})([1-9]{2})([0-9]{5}$)"); switch (true){ case expFirst.test(input) : expFirst = new RegExp("(^[0-9]{3})([0-2]{1})([0-9]{4})([0-9]{3}$)"); input = input.replace(expFirst, "$1$4$2"); break; case expSecond.test(input): expSecond = new RegExp("(^[0-9]{4})([0-9]{5})([0-9]{2}$)"); input = input.replace(expSecond, "$1$3") + "3"; break; case expThird.test(input) : expThird = new RegExp("(^[0-9]{5})([0-9]{5})([0-9]{1}$)"); input = input.replace(expThird, "$1$3") + "4"; break; case expFourth.test(input): expFourth = new RegExp("(^[0-9]{6})([0-9]{4})([0-9]{1}$)"); input = input.replace(expFourth, "$1$3"); break; default : compress = false; break; } } if (compress){ input += suppliment; encoded = UPCE(input); return encoded; } compress = false; // left char set charSet[0] = "0001101"; charSet[1] = "0011001"; charSet[2] = "0010011"; charSet[3] = "0111101"; charSet[4] = "0100011"; charSet[5] = "0110001"; charSet[6] = "0101111"; charSet[7] = "0111011"; charSet[8] = "0110111"; charSet[9] = "0001011"; // right char set charSet[10] = "1110010"; charSet[11] = "1100110"; charSet[12] = "1101100"; charSet[13] = "1000010"; charSet[14] = "1011100"; charSet[15] = "1001110"; charSet[16] = "1010000"; charSet[17] = "1000100"; charSet[18] = "1001000"; charSet[19] = "1110100"; if (input.length == 11){ for (var i = 0; i < input.length; i++){ if (i % 2 == 0){ oddSum += parseInt(input.substr(i, 1)); }else{ evenSum += parseInt(input.substr(i, 1)); } } checkDigit = 10 - ((evenSum + (oddSum * 3)) % 10); if (checkDigit == 10) checkDigit = 0; input += checkDigit.toString(); }else{ checkDigit = parseInt(input.substr(11, 1)); } for (var i = 0; i < 12; i++){ parity = (i > 5 ? 1 : 0) * 10; parity += parseInt(input.substr(i, 1)); encoded += charSet[parity]; if (i == 5) encoded += center; } encoded = guard + encoded + guard + supplement; } function UPCE(input){ var charSet = new Array(); var encodeSupplement = false; var evenSum = 0; var exp = new RegExp("^0{1}[0-9]+$"); var leftGuard = "101"; var oddSum = 0; var originalNumber = ""; var parity = 0; var parityMask = ""; var rightGuard = "010101"; var supplement = ""; if (!exp.test(input)) return ""; switch (input.length){ case 7 : case 9 : case 12: if (input.length > 7){ supplement = input.substr(7, input.length - 7); input = input.substr(0, 7); encodeSupplement = true; } break; case 8 : case 10: case 13: if (input.length > 8){ supplement = input.substr(8, input.length - 8); input = input.substr(0, 8); encodeSupplement = true; } break; default: return ""; break; } if (encodeSupplement) suppliment = EncodeSupplement(supplement); // even parity charSet[0] = "0100111"; charSet[1] = "0110011"; charSet[2] = "0011011"; charSet[3] = "0100001"; charSet[4] = "0011101"; charSet[5] = "0111001"; charSet[6] = "0000101"; charSet[7] = "0010001"; charSet[8] = "0001001"; charSet[9] = "0010111"; // odd parity charSet[10] = "0001101"; charSet[11] = "0011001"; charSet[12] = "0010011"; charSet[13] = "0111101"; charSet[14] = "0100011"; charSet[15] = "0110001"; charSet[16] = "0101111"; charSet[17] = "0111011"; charSet[18] = "0110111"; charSet[19] = "0001011"; // parity masks charSet[20] = "000111"; charSet[21] = "001011"; charSet[22] = "001101"; charSet[23] = "001110"; charSet[24] = "010011"; charSet[25] = "011001"; charSet[26] = "011100"; charSet[27] = "010101"; charSet[28] = "010110"; charSet[29] = "011010"; if (input.length == 7){ // reverse engineer the precompressed data to get check digit // see: http://www.uc-council.org/reflib/01302/d36-2.htm switch (parseInt(input.substr(6, 1))){ case 0 : case 1 : case 2 : originalNumber = input.substr(0, 3) + input.substr(input.length -1, 1) + "0000" + input.substr(3, 3); break; case 3 : originalNumber = input.substr(0, 4) + "00000" + input.substr(4, 2); break; case 4 : originalNumber = input.substr(0, 5) + "00000" + input.substr(5, 1); break; default: originalNumber = input.substr(0, 6) + "0000" + input.substr(input.length -1, 1); break; } for (var i = 0; i < 11; i++){ if (i % 2 == 0){ oddSum += parseInt(originalNumber.substr(i, 1)); }else{ evenSum += parseInt(originalNumber.substr(i, 1)); } } checkDigit = 10 - ((evenSum + (oddSum * 3)) % 10); if (checkDigit == 10) checkDigit = 0; }else{ checkDigit = parseInt(input.substr(input.length - 1, 1)); input = input.substr(0, 7); } parityMask = charSet[checkDigit + 20]; input = input.substr(1, 6); for (var i = 0; i < input.length; i++){ parity = (parseInt(parityMask.substr(i, 1)) * 10); parity += parseInt(input.substr(i, 1)); encoded += charSet[parity]; } encoded = leftGuard + encoded + rightGuard + supplement; return encoded; }
Questions:
file: /Techref/barcode/renderbarjs.htm, 40KB, , updated: 2013/5/2 13:46, local time: 2024/12/22 04:21,
3.139.79.187:LOG IN
|
©2024 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://massmind.ecomorder.com/Techref/barcode/renderbarjs.htm"> Barcodes</A> |
Did you find what you needed? |
Welcome to ecomorder.com! |
Welcome to massmind.ecomorder.com! |
.