Files
FHC-Core/include/js/jquery-barcode-1.3.3.min.js
T
Gerald Simane 5b936cdc6c
2010-02-09 13:41:58 +00:00

15 lines
14 KiB
JavaScript

/*
* BarCode Coder Library (BCC Library)
* BCCL Version 1.0
*
* Porting : Jquery barcode plugin
* Version : 1.3.3
*
* Date : October 17 2009
* Author : DEMONTE Jean-Baptiste (firejocker)
* Contact : jbdemonte @ gmail.com
* 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
*/
$.barcode={settings:{barWidth:1,barHeight:50,showHRI:true,marginHRI:5,bgColor:"#FFFFFF",color:"#000000",fontSize:"10px",output:"css"},intval:function(b){var a=typeof(b);if(a=="string"){b=b.replace(/[^0-9-.]/g,"");b=parseInt(b*1,10);if(isNaN(b)||!isFinite(b)){return 0}else{return b}}else{if(a=="number"&&isFinite(b)){return Math.floor(b)}else{return 0}}},i25:{encoding:["NNWWN","WNNNW","NWNNW","WWNNN","NNWNW","WNWNN","NWWNN","NNNWW","WNNWN","NWNWN"],compute:function(e,g,d){if(!g){if(e.length%2!=0){e="0"+e}}else{if((d=="int25")&&(e.length%2==0)){e="0"+e}var f=true,a,c=0;for(var b=e.length-1;b>-1;b--){a=$.barcode.intval(e.charAt(b));if(isNaN(a)){return("")}c+=f?3*a:a;f=!f}e+=((10-c%10)%10).toString()}return(e)},getDigit:function(g,h,f){g=this.compute(g,h,f);if(g==""){return("")}result="";var d,a;if(f=="int25"){result+="1010";var e,b;for(d=0;d<g.length/2;d++){e=g.charAt(2*d);b=g.charAt(2*d+1);for(a=0;a<5;a++){result+="1";if(this.encoding[e].charAt(a)=="W"){result+="1"}result+="0";if(this.encoding[b].charAt(a)=="W"){result+="0"}}}result+="1101"}else{if(f=="std25"){result+="11011010";var k;for(d=0;d<g.length;d++){k=g.charAt(d);for(a=0;a<5;a++){result+="1";if(this.encoding[k].charAt(a)=="W"){result+="11"}result+="0"}}result+="11010110"}}return(result)}},ean:{encoding:[["0001101","0100111","1110010"],["0011001","0110011","1100110"],["0010011","0011011","1101100"],["0111101","0100001","1000010"],["0100011","0011101","1011100"],["0110001","0111001","1001110"],["0101111","0000101","1010000"],["0111011","0010001","1000100"],["0110111","0001001","1001000"],["0001011","0010111","1110100"]],first:["000000","001011","001101","001110","010011","011001","011100","010101","010110","011010"],getDigit:function(g,f){var b=f=="ean8"?7:12;g=g.substring(0,b);if(g.length!=b){return("")}var h;for(var e=0;e<g.length;e++){h=g.charAt(e);if((h<"0")||(h>"9")){return("")}}g=this.compute(g,f);var a="101";if(f=="ean8"){for(var e=0;e<4;e++){a+=this.encoding[$.barcode.intval(g.charAt(e))][0]}a+="01010";for(var e=4;e<8;e++){a+=this.encoding[$.barcode.intval(g.charAt(e))][2]}}else{var d=this.first[$.barcode.intval(g.charAt(0))];for(var e=1;e<7;e++){a+=this.encoding[$.barcode.intval(g.charAt(e))][$.barcode.intval(d.charAt(e-1))]}a+="01010";for(var e=7;e<13;e++){a+=this.encoding[$.barcode.intval(g.charAt(e))][2]}}a+="101";return(a)},compute:function(d,c){var a=c=="ean13"?12:7;d=d.substring(0,a);var b=0,e=true;for(i=d.length-1;i>-1;i--){b+=(e?3:1)*$.barcode.intval(d.charAt(i));e=!e}return(d+((10-b%10)%10).toString())}},msi:{encoding:["100100100100","100100100110","100100110100","100100110110","100110100100","100110100110","100110110100","100110110110","110100100100","110100100110"],compute:function(a,b){if(typeof(b)=="object"){if(b.crc1=="mod10"){a=this.computeMod10(a)}else{if(b.crc1=="mod11"){a=this.computeMod11(a)}}if(b.crc2=="mod10"){a=this.computeMod10(a)}else{if(b.crc2=="mod11"){a=this.computeMod11(a)}}}else{if(typeof(b)=="boolean"){if(b){a=this.computeMod10(a)}}}return(a)},computeMod10:function(f){var c,a=f.length%2;var e=0,d=0;for(c=0;c<f.length;c++){if(a){e=10*e+$.barcode.intval(f.charAt(c))}else{d+=$.barcode.intval(f.charAt(c))}a=!a}var b=(2*e).toString();for(c=0;c<b.length;c++){d+=$.barcode.intval(b.charAt(c))}return(f+((10-d%10)%10).toString())},computeMod11:function(c){var d=2;var b=0,d=2;for(var a=c.length-1;a>=0;a--){b+=d*$.barcode.intval(c.charAt(a));d=d==7?2:d+1}return(c+((11-b%11)%11).toString())},getDigit:function(d,e){var c="0123456789";var b=0;var a="";d=this.compute(d,false);a="110";for(i=0;i<d.length;i++){b=c.indexOf(d.charAt(i));if(b<0){return("")}a+=this.encoding[b]}a+="1001";return(a)}},code11:{encoding:["101011","1101011","1001011","1100101","1011011","1101101","1001101","1010011","1101001","110101","101101"],getDigit:function(b){var n="0123456789-";var g,j,o="",d="0";o="1011001"+d;for(g=0;g<b.length;g++){j=n.indexOf(b.charAt(g));if(j<0){return("")}o+=this.encoding[j]+d}var m=0,f=0,h=1,a=0;for(g=b.length-1;g>=0;g--){m=m==10?1:m+1;h=h==10?1:h+1;j=n.indexOf(b.charAt(g));f+=m*j;a+=h*j}var l=f%11;a+=l;var e=a%11;o+=this.encoding[l]+d;if(b.length>=10){o+=this.encoding[e]+d}o+="1011001";return(o)}},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(f){var e="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*";var d,c,b="",a="0";if(f.indexOf("*")>=0){return("")}f=("*"+f+"*").toUpperCase();for(d=0;d<f.length;d++){c=e.indexOf(f.charAt(d));if(c<0){return("")}if(d>0){b+=a}b+=this.encoding[c]}return(b)}},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(b,g){var l="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%____*",h,m="";if(b.indexOf("*")>=0){return("")}b=b.toUpperCase();m+=this.encoding[47];for(i=0;i<b.length;i++){h=b.charAt(i);index=l.indexOf(h);if((h=="_")||(index<0)){return("")}m+=this.encoding[index]}if(g){var j=0,e=0,f=1,a=0;for(i=b.length-1;i>=0;i--){j=j==20?1:j+1;f=f==15?1:f+1;index=l.indexOf(b.charAt(i));e+=j*index;a+=f*index}var h=e%47;a+=h;var d=a%47;m+=this.encoding[h];m+=this.encoding[d]}m+=this.encoding[47];m+="1";return(m)}},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(b){var a=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~";var m="";var h=0;var d=0;var g=0;var f=0;var l=0;for(g=0;g<b.length;g++){if(a.indexOf(b.charAt(g))==-1){return("")}}var e=b.length>1;var k="";for(g=0;g<3&&g<b.length;g++){k=b.charAt(g);e&=k>="0"&&k<="9"}h=e?105:104;m=this.encoding[h];g=0;while(g<b.length){if(!e){f=0;while((g+f<b.length)&&(b.charAt(g+f)>="0")&&(b.charAt(g+f)<="9")){f++}e=(f>5)||((g+f-1==b.length)&&(f>3));if(e){m+=this.encoding[99];h+=++d*99}}else{if((g==b.length)||(b.charAt(g)<"0")||(b.charAt(g)>"9")||(b.charAt(g+1)<"0")||(b.charAt(g+1)>"9")){e=false;m+=this.encoding[100];h+=++d*100}}if(e){l=$.barcode.intval(b.charAt(g)+b.charAt(g+1));g+=2}else{l=a.indexOf(b.charAt(g));g+=1}m+=this.encoding[l];h+=++d*l}m+=this.encoding[h%103];m+=this.encoding[106];m+="11";return(m)}},codabar:{encoding:["101010011","101011001","101001011","110010101","101101001","110101001","100101011","100101101","100110101","110100101","101001101","101100101","1101011011","1101101011","1101101101","1011011011","1011001001","1010010011","1001001011","1010011001"],getDigit:function(f){var e="0123456789-$:/.+";var d,c,b="",a="0";b+=this.encoding[16]+a;for(d=0;d<f.length;d++){c=e.indexOf(f.charAt(d));if(c<0){return("")}b+=this.encoding[c]+a}b+=this.encoding[16];return(b)}},lec:{cInt:function(c,d){var b="";for(var a=0;a<d;a++){b+=String.fromCharCode(c&255);c=c>>8}return b},cRgb:function(d,c,a){return String.fromCharCode(a)+String.fromCharCode(c)+String.fromCharCode(d)},cHexColor:function(f){var c=parseInt("0x"+f.substr(1));var a=c&255;c=c>>8;var e=c&255;var d=c>>8;return(this.cRgb(d,e,a))}},isHexColor:function(b){var a=new RegExp("#[0-91-F]","gi");return b.match(a)},base64Encode:function(m){var a="",f,d,c,l,j,h,g;var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var e=0;while(e<m.length){f=m.charCodeAt(e++);d=m.charCodeAt(e++);c=m.charCodeAt(e++);l=f>>2;j=((f&3)<<4)|(d>>4);h=((d&15)<<2)|(c>>6);g=c&63;if(isNaN(d)){h=g=64}else{if(isNaN(c)){g=64}}a+=b.charAt(l)+b.charAt(j)+b.charAt(h)+b.charAt(g)}return a},digitToBmp:function(q,c,l,e){var r=$.barcode.intval(c.barWidth);var p=$.barcode.intval(c.barHeight);var g=0;var h=this.isHexColor(c.bgColor)?this.lec.cHexColor(c.bgColor):this.lec.cRgb(255,255,255);var f=this.isHexColor(c.color)?this.lec.cHexColor(c.color):this.lec.cRgb(0,0,0);var n="";var k="";for(g=0;g<r;g++){n+=h;k+=f}var o="";var a=l.length;var m=(4-((r*a*3)%4))%4;var b=(r*a+m)*p;for(g=0;g<l.length;g++){o+=l.charAt(g)=="0"?n:k}for(g=0;g<m;g++){o+="\0"}var j="BM"+this.lec.cInt(54+b,4)+"\0\0\0\0"+this.lec.cInt(54,4)+this.lec.cInt(40,4)+this.lec.cInt(r*a,4)+this.lec.cInt(p,4)+this.lec.cInt(1,2)+this.lec.cInt(24,2)+"\0\0\0\0"+this.lec.cInt(b,4)+this.lec.cInt(2835,4)+this.lec.cInt(2835,4)+this.lec.cInt(0,4)+this.lec.cInt(0,4);for(g=0;g<p;g++){j+=o}var d=document.createElement("object");d.setAttribute("type","image/bmp");d.setAttribute("data","data:image/bmp;base64,"+this.base64Encode(j));q.html("").append(d)},digitToCss:function(l,a,g,b){var m=$.barcode.intval(a.barWidth);var k=$.barcode.intval(a.barHeight);var f="";var h='<div style="float: left; background-color: '+a.color+"; height: "+k+"px; width: ";var j='<div style="float: left; background-color: '+a.bgColor+"; height: "+k+"px; width: ";var d=0;var e=g.charAt(0);for(var c=0;c<g.length;c++){if(e==g.charAt(c)){d++}else{f+=(e=="0"?j:h)+(d*m)+'px"></div>';e=g.charAt(c);d=1}}if(d>0){f+=(e=="0"?j:h)+(d*m)+'px"></div>'}if(a.showHRI){f+='<div style="clear:both; width: 100%; background-color: '+a.bgColor+"; color: "+a.color+"; text-align: center; font-size: "+a.fontSize+';">'+b+"</div>"}l.css("padding","0px").css("overflow","auto").css("width",(m*g.length)+"px").html(f)},digitToSvg:function(m,b,j,d){var o=$.barcode.intval(b.barWidth);var k=$.barcode.intval(b.barHeight);var a=j.length*o;var l=k;var n=$.barcode.intval(b.fontSize);if(b.showHRI){l+=$.barcode.intval(b.marginHRI)+n}var f='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="'+a+'" height="'+l+'">';f+='<rect width="'+a+'" height="'+l+'" x="0" y="0" fill="'+b.bgColor+'" />';var g=0;var h=j.charAt(0);for(var e=0;e<j.length;e++){if(h==j.charAt(e)){g++}else{if(h=="1"){f+='<rect width="'+(g*o)+'" height="'+k+'" x="'+((e-g)*o)+'" y="0" fill="'+b.color+'" />'}h=j.charAt(e);g=1}}if((g>0)&&(h=="1")){f+='<rect width="'+(g*o)+'" height="'+k+'" x="'+((e-g)*o)+'" y="0" fill="'+b.color+'" />'}if(b.showHRI){f+='<g transform="translate('+Math.floor(a/2)+' 0)">';f+='<text y="'+l+'" text-anchor="middle" style="font-family: Arial; font-size: '+n+'px;" fill="'+b.color+'">'+d+"</text>";f+="</g>"}f+="</svg>";var c=document.createElement("object");c.setAttribute("type","image/svg+xml");c.setAttribute("data","data:image/svg+xml,"+f);m.html("").append(c)}};$.fn.extend({barcode:function(e,h,c){var j="",d="",b="",f=true;if(typeof(e)=="string"){b=e}else{if(typeof(e)=="object"){b=typeof(e.code)=="string"?e.code:"";f=typeof(e.crc)!="undefined"?e.crc:true}}if(b==""){return(false)}switch(h){case"std25":case"int25":j=$.barcode.i25.getDigit(b,f,h);d=$.barcode.i25.compute(b,f,h);break;case"ean8":case"ean13":j=$.barcode.ean.getDigit(b,h);d=$.barcode.ean.compute(b,h);break;case"code11":j=$.barcode.code11.getDigit(b);d=b;break;case"code39":j=$.barcode.code39.getDigit(b);d=b;break;case"code93":j=$.barcode.code93.getDigit(b,f);d=b;break;case"code128":j=$.barcode.code128.getDigit(b);d=b;break;case"codabar":j=$.barcode.codabar.getDigit(b);d=b;break;case"msi":j=$.barcode.msi.getDigit(b,f);d=$.barcode.msi.compute(b,f);break}if(j.length==0){return($(this))}j="0000000000"+j+"0000000000";if(c==undefined){c=[]}for(var a in $.barcode.settings){if(c[a]==undefined){c[a]=$.barcode.settings[a]}}var g=$(this);switch(c.output){case"bmp":$.barcode.digitToBmp(g,c,j,d);break;case"svg":$.barcode.digitToSvg(g,c,j,d);break;default:$.barcode.digitToCss(g,c,j,d);break}return(g)}});