/*! * BarCode Coder Library (BCC Library) * BCCL Version 2.0 * * Porting : jQuery barcode plugin * Version : 2.0.3 * * Date : 2013-01-06 * Author : DEMONTE Jean-Baptiste * HOUREZ Jonathan * * Web site: http://barcode-coder.com/ * dual licence : http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html * http://www.gnu.org/licenses/gpl.html */ (function(b){var a={settings:{barWidth:1,barHeight:50,moduleSize:5,showHRI:true,addQuietZone:true,marginHRI:5,bgColor:"#FFFFFF",color:"#000000",fontSize:10,output:"css",posX:0,posY:0},intval:function(d){var c=typeof(d);if(c=="string"){d=d.replace(/[^0-9-.]/g,"");d=parseInt(d*1,10);return isNaN(d)||!isFinite(d)?0:d}return c=="number"&&isFinite(d)?Math.floor(d):0},i25:{encoding:["NNWWN","WNNNW","NWNNW","WWNNN","NNWNW","WNWNN","NWWNN","NNNWW","WNNWN","NWNWN"],compute:function(g,j,f){if(!j){if(g.length%2!=0){g="0"+g}}else{if((f=="int25")&&(g.length%2==0)){g="0"+g}var h=true,c,e=0;for(var d=g.length-1;d>-1;d--){c=a.intval(g.charAt(d));if(isNaN(c)){return("")}e+=h?3*c:c;h=!h}g+=((10-e%10)%10).toString()}return(g)},getDigit:function(k,l,h){k=this.compute(k,l,h);if(k==""){return("")}result="";var f,d;if(h=="int25"){result+="1010";var g,e;for(f=0;f"9")){return("")}}j=this.compute(j,h);var d="101";if(h=="ean8"){for(var g=0;g<4;g++){d+=this.encoding[a.intval(j.charAt(g))][0]}d+="01010";for(var g=4;g<8;g++){d+=this.encoding[a.intval(j.charAt(g))][2]}}else{var f=this.first[a.intval(j.charAt(0))];for(var g=1;g<7;g++){d+=this.encoding[a.intval(j.charAt(g))][a.intval(f.charAt(g-1))]}d+="01010";for(var g=7;g<13;g++){d+=this.encoding[a.intval(j.charAt(g))][2]}}d+="101";return(d)},compute:function(f,e){var c=e=="ean13"?12:7;f=f.substring(0,c);var d=0,g=true;for(i=f.length-1;i>-1;i--){d+=(g?3:1)*a.intval(f.charAt(i));g=!g}return(f+((10-d%10)%10).toString())}},upc:{getDigit:function(c){if(c.length<12){c="0"+c}return a.ean.getDigit(c,"ean13")},compute:function(c){if(c.length<12){c="0"+c}return a.ean.compute(c,"ean13").substr(1)}},msi:{encoding:["100100100100","100100100110","100100110100","100100110110","100110100100","100110100110","100110110100","100110110110","110100100100","110100100110"],compute:function(c,d){if(typeof(d)=="object"){if(d.crc1=="mod10"){c=this.computeMod10(c)}else{if(d.crc1=="mod11"){c=this.computeMod11(c)}}if(d.crc2=="mod10"){c=this.computeMod10(c)}else{if(d.crc2=="mod11"){c=this.computeMod11(c)}}}else{if(typeof(d)=="boolean"){if(d){c=this.computeMod10(c)}}}return(c)},computeMod10:function(h){var e,c=h.length%2;var g=0,f=0;for(e=0;e=0;c--){d+=f*a.intval(e.charAt(c));f=f==7?2:f+1}return(e+((11-d%11)%11).toString())},getDigit:function(f,g){var e="0123456789";var d=0;var c="";f=this.compute(f,false);c="110";for(i=0;i=0;j--){o=o==10?1:o+1;l=l==10?1:l+1;m=p.indexOf(e.charAt(j));h+=o*m;d+=l*m}var n=h%11;d+=n;var g=d%11;q+=this.encoding[n]+f;if(e.length>=10){q+=this.encoding[g]+f}q+="1011001";return(q)}},code39:{encoding:["101001101101","110100101011","101100101011","110110010101","101001101011","110100110101","101100110101","101001011011","110100101101","101100101101","110101001011","101101001011","110110100101","101011001011","110101100101","101101100101","101010011011","110101001101","101101001101","101011001101","110101010011","101101010011","110110101001","101011010011","110101101001","101101101001","101010110011","110101011001","101101011001","101011011001","110010101011","100110101011","110011010101","100101101011","110010110101","100110110101","100101011011","110010101101","100110101101","100100100101","100100101001","100101001001","101001001001","100101101101"],getDigit:function(h){var g="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*";var f,e,d="",c="0";if(h.indexOf("*")>=0){return("")}h=("*"+h+"*").toUpperCase();for(f=0;f0){d+=c}d+=this.encoding[e]}return(d)}},code93:{encoding:["100010100","101001000","101000100","101000010","100101000","100100100","100100010","101010000","100010010","100001010","110101000","110100100","110100010","110010100","110010010","110001010","101101000","101100100","101100010","100110100","100011010","101011000","101001100","101000110","100101100","100010110","110110100","110110010","110101100","110100110","110010110","110011010","101101100","101100110","100110110","100111010","100101110","111010100","111010010","111001010","101101110","101110110","110101110","100100110","111011010","111010110","100110010","101011110"],getDigit:function(e,j){var n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%____*",l,o="";if(e.indexOf("*")>=0){return("")}e=e.toUpperCase();o+=this.encoding[47];for(i=0;i=0;i--){m=m==20?1:m+1;h=h==15?1:h+1;index=n.indexOf(e.charAt(i));g+=m*index;d+=h*index}var l=g%47;d+=l;var f=d%47;o+=this.encoding[l];o+=this.encoding[f]}o+=this.encoding[47];o+="1";return(o)}},code128:{encoding:["11011001100","11001101100","11001100110","10010011000","10010001100","10001001100","10011001000","10011000100","10001100100","11001001000","11001000100","11000100100","10110011100","10011011100","10011001110","10111001100","10011101100","10011100110","11001110010","11001011100","11001001110","11011100100","11001110100","11101101110","11101001100","11100101100","11100100110","11101100100","11100110100","11100110010","11011011000","11011000110","11000110110","10100011000","10001011000","10001000110","10110001000","10001101000","10001100010","11010001000","11000101000","11000100010","10110111000","10110001110","10001101110","10111011000","10111000110","10001110110","11101110110","11010001110","11000101110","11011101000","11011100010","11011101110","11101011000","11101000110","11100010110","11101101000","11101100010","11100011010","11101111010","11001000010","11110001010","10100110000","10100001100","10010110000","10010000110","10000101100","10000100110","10110010000","10110000100","10011010000","10011000010","10000110100","10000110010","11000010010","11001010000","11110111010","11000010100","10001111010","10100111100","10010111100","10010011110","10111100100","10011110100","10011110010","11110100100","11110010100","11110010010","11011011110","11011110110","11110110110","10101111000","10100011110","10001011110","10111101000","10111100010","11110101000","11110100010","10111011110","10111101110","11101011110","11110101110","11010000100","11010010000","11010011100","11000111010"],getDigit:function(e){var d=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";var o="";var l=0;var f=0;var k=0;var h=0;var n=0;for(k=0;k1;var m="";for(k=0;k<3&&k="0"&&m<="9"}l=g?105:104;o=this.encoding[l];k=0;while(k="0")&&(e.charAt(k+h)<="9")){h++}g=(h>5)||((k+h-1==e.length)&&(h>3));if(g){o+=this.encoding[99];l+=++f*99}}else{if((k==e.length)||(e.charAt(k)<"0")||(e.charAt(k)>"9")||(e.charAt(k+1)<"0")||(e.charAt(k+1)>"9")){g=false;o+=this.encoding[100];l+=++f*100}}if(g){n=a.intval(e.charAt(k)+e.charAt(k+1));k+=2}else{n=d.indexOf(e.charAt(k));k+=1}o+=this.encoding[n];l+=++f*n}o+=this.encoding[l%103];o+=this.encoding[106];o+="11";return(o)}},codabar:{encoding:["101010011","101011001","101001011","110010101","101101001","110101001","100101011","100101101","100110101","110100101","101001101","101100101","1101011011","1101101011","1101101101","1011011011","1011001001","1010010011","1001001011","1010011001"],getDigit:function(h){var g="0123456789-$:/.+";var f,e,d="",c="0";d+=this.encoding[16]+c;for(f=0;f1558)&&!c){return -1}if((d<1||d>49)&&c){return -1}var e=0;if(c){e=24}while(this.dataCWCount[e]127){e[h]=235;g=g-127;h++}else{if((g>=48&&g<=57)&&(d+1=48&&f.charCodeAt(d+1)<=57)){g=((g-48)*10)+((f.charCodeAt(d+1))-48);g+=130;d++}else{g++}}e[h]=g;h++}return e},addPadCW:function(d,g,f){if(g>=f){return}d[g]=129;var e,c;for(c=g+1;c=0;d--){f[d]=this.champGaloisDoub(f[d],e);if(d>0){f[d]=this.champGaloisSum(f[d],f[d-1])}}}return f},addReedSolomonCW:function(e,d,n,m,c){var p=0;var o=e/c;var l=new Array();var h,g,f;for(f=0;f=0;g--){if(!p){l[g]=0}else{l[g]=this.champGaloisMult(p,d[g])}if(g>0){l[g]=this.champGaloisSum(l[g-1],l[g])}}}g=n+f;for(h=o-1;h>=0;h--){m[g]=l[h];g=g+c}}return m},getBits:function(c){var e=new Array();for(var d=0;d<8;d++){e[d]=c&(128>>d)?1:0}return e},next:function(h,j,f,k,e,g){var d=0;var l=4;var c=0;do{if((l==j)&&(c==0)){this.patternShapeSpecial1(e,g,k[d],j,f);d++}else{if((h<3)&&(l==j-2)&&(c==0)&&(f%4!=0)){this.patternShapeSpecial2(e,g,k[d],j,f);d++}else{if((l==j-2)&&(c==0)&&(f%8==4)){this.patternShapeSpecial3(e,g,k[d],j,f);d++}else{if((l==j+4)&&(c==2)&&(f%8==0)){this.patternShapeSpecial4(e,g,k[d],j,f);d++}}}}do{if((l=0)&&(g[l][c]!=1)){this.patternShapeStandard(e,g,k[d],l,c,j,f);d++}l-=2;c+=2}while((l>=0)&&(c=0)&&(c=0));l+=3;c+=1}while((l>8}return d},cRgb:function(e,d,c){return String.fromCharCode(c)+String.fromCharCode(d)+String.fromCharCode(e)},cHexColor:function(h){var d=parseInt("0x"+h.substr(1));var c=d&255;d=d>>8;var f=d&255;var e=d>>8;return(this.cRgb(e,f,c))}},hexToRGB:function(h){var d=parseInt("0x"+h.substr(1));var c=d&255;d=d>>8;var f=d&255;var e=d>>8;return({r:e,g:f,b:c})},isHexColor:function(d){var c=new RegExp("#[0-91-F]","gi");return d.match(c)},base64Encode:function(o){var c="",h,f,e,n,m,l,j;var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var g=0;while(g>2;m=((h&3)<<4)|(f>>4);l=((f&15)<<2)|(e>>6);j=e&63;if(isNaN(f)){l=j=64}else{if(isNaN(e)){j=64}}c+=d.charAt(n)+d.charAt(m)+d.charAt(l)+d.charAt(j)}return c},bitStringTo2DArray:function(f){var e=[];e[0]=[];for(var c=0;c=0;h--){var l="";for(var j=0;j';var l='
';var f,h;for(var k=0;k0){j+=(h=="0"?o:l).replace("&W",f*p)}}if(c.showHRI){j+='
'+e+"
"}this.resize(q,p*d).html(j)},digitToCss:function(g,f,j,d){var c=a.intval(f.barWidth);var e=a.intval(f.barHeight);this.digitToCssRenderer(g,f,this.bitStringTo2DArray(j),d,c,e)},digitToCss2D:function(f,e,g,c){var d=a.intval(e.moduleSize);this.digitToCssRenderer(f,e,g,c,d,d)},digitToSvgRenderer:function(q,s,m,f,k,t){var d=m.length;var e=m[0].length;var p=k*e;var l=t*d;if(s.showHRI){var g=a.intval(s.fontSize);l+=a.intval(s.marginHRI)+g}var n='';n+='';var c='';var r,o;for(var h=0;h0)&&(o=="1")){n+=c.replace("&W",r*k).replace("&X",(e-r)*k).replace("&Y",h*t)}}if(s.showHRI){n+='';n+=''+f+"";n+=""}n+="";var u=document.createElement("object");u.setAttribute("type","image/svg+xml");u.setAttribute("data","data:image/svg+xml,"+n);this.resize(q,p).append(u)},digitToSvg:function(g,f,j,d){var c=a.intval(f.barWidth);var e=a.intval(f.barHeight);this.digitToSvgRenderer(g,f,this.bitStringTo2DArray(j),d,c,e)},digitToSvg2D:function(f,e,g,c){var d=a.intval(e.moduleSize);this.digitToSvgRenderer(f,e,g,c,d,d)},digitToCanvasRenderer:function(s,e,o,g,m,f,q,k){var c=s.get(0);if(!c||!c.getContext){return}var t=o.length;var d=o[0].length;var r=c.getContext("2d");r.lineWidth=1;r.lineCap="butt";r.fillStyle=e.bgColor;r.fillRect(m,f,d*q,t*k);r.fillStyle=e.color;for(var n=0;n0)&&(l=="1")){r.fillRect(m+(d-j)*q,f+n*k,q*j,k)}}if(e.showHRI){var h=r.measureText(g);r.fillText(g,m+Math.floor((d*q-h.width)/2),f+t*k+e.fontSize+e.marginHRI)}},digitToCanvas:function(j,g,l,e){var d=a.intval(g.barWidth);var f=a.intval(g.barHeight);var c=a.intval(g.posX);var k=a.intval(g.posY);this.digitToCanvasRenderer(j,g,this.bitStringTo2DArray(l),e,c,k,d,f)},digitToCanvas2D:function(g,f,j,d){var e=a.intval(f.moduleSize);var c=a.intval(f.posX);var h=a.intval(f.posY);this.digitToCanvasRenderer(g,f,j,d,c,h,e,e)}};b.fn.extend({barcode:function(h,m,f){var n="",g="",d="",k=true,o=false,j=false;if(typeof(h)=="string"){d=h}else{if(typeof(h)=="object"){d=typeof(h.code)=="string"?h.code:"";k=typeof(h.crc)!="undefined"?h.crc:true;o=typeof(h.rect)!="undefined"?h.rect:false}}if(d==""){return(false)}if(typeof(f)=="undefined"){f=[]}for(var c in a.settings){if(f[c]==undefined){f[c]=a.settings[c]}}switch(m){case"std25":case"int25":n=a.i25.getDigit(d,k,m);g=a.i25.compute(d,k,m);break;case"ean8":case"ean13":n=a.ean.getDigit(d,m);g=a.ean.compute(d,m);break;case"upc":n=a.upc.getDigit(d);g=a.upc.compute(d);break;case"code11":n=a.code11.getDigit(d);g=d;break;case"code39":n=a.code39.getDigit(d);g=d;break;case"code93":n=a.code93.getDigit(d,k);g=d;break;case"code128":n=a.code128.getDigit(d);g=d;break;case"codabar":n=a.codabar.getDigit(d);g=d;break;case"msi":n=a.msi.getDigit(d,k);g=a.msi.compute(d,k);break;case"datamatrix":n=a.datamatrix.getDigit(d,o);g=d;j=true;break}if(n.length==0){return(b(this))}if(!j&&f.addQuietZone){n="0000000000"+n+"0000000000"}var l=b(this);var e="digitTo"+f.output.charAt(0).toUpperCase()+f.output.substr(1)+(j?"2D":"");if(typeof(a[e])=="function"){a[e](l,f,n,g)}return(l)}})}(jQuery));