//********************************************************************
//  Native JavaScript Barcode Generator Version 8.07
//  Copyright © 2006-2008 IDAutomation.com, Inc. All rights reserved.
//  Portions of this source code and process are Patent Pending.
//
//  You may incorporate this Source Code in your application
//  only if you own a valid license from IDAutomation.com, Inc.
//  for the associated product and the copyright notices and
//  this text are not removed from the source code.
//
//  Online Tutorial: www.idautomation.com/javascript/
//
//  Distributing this source code outside your
//  organization requires a Developer License.
//********************************************************************
function IDAutomation_JavaScriptBarcode_C39(DataToEncode,IncludeCheckDigit,N_Dimension,BarHeight,XDimensionPoints,color)
{
if(BarHeight==null){BarHeight=8;}
if(XDimensionPoints==null)
    {
    XDimensionPoints=4;
    }
var T=XDimensionPoints;
var o="";
if(DataToEncode==null)
	return "";
if(DataToEncode.length==0)
	return "";
var M=0;
var X;
X=IncludeCheckDigit;
var I;
if(X!=0&&X!=null)
	M=true;
else 
	M=false;
var d="";
var w="";
var l="";
l=DataToEncode;
var v=2;
var G="";
var ac=new Array("nnnwwnwnnn","wnnwnnnnwn","nnwwnnnnwn","wnwwnnnnnn","nnnwwnnnwn","wnnwwnnnnn","nnwwwnnnnn","nnnwnnwnwn","wnnwnnwnnn","nnwwnnwnnn","wnnnnwnnwn","nnwnnwnnwn","wnwnnwnnnn","nnnnwwnnwn","wnnnwwnnnn","nnwnwwnnnn","nnnnnwwnwn","wnnnnwwnnn","nnwnnwwnnn","nnnnwwwnnn","wnnnnnnwwn","nnwnnnnwwn","wnwnnnnwnn","nnnnwnnwwn","wnnnwnnwnn","nnwnwnnwnn","nnnnnnwwwn","wnnnnnwwnn","nnwnnnwwnn","nnnnwnwwnn","wwnnnnnnwn","nwwnnnnnwn","wwwnnnnnnn","nwnnwnnnwn","wwnnwnnnnn","nwwnwnnnnn","nwnnnnwnwn","wwnnnnwnnn","nwwnnnwnnn","nwnwnwnnnn","nwnwnnnwnn","nwnnnwnwnn","nnnwnwnwnn","nwnnwnwnnn");
if(N_Dimension==3||N_Dimension==2)
	v=N_Dimension;
else
	v=2;
var m=l.length;
for(I=0;I<m;I++)
	{
	if(l.charCodeAt(I)>=48 && l.charCodeAt(I)<=57)
		{
		w=w+l.charAt(I);
		}
	else if(l.charAt(I)=='-'||l.charAt(I)=='$'||l.charAt(I)=='%'||l.charAt(I)=='/'||l.charAt(I)=='.'||l.charAt(I)=='+'||l.charAt(I)==' ')
		{
		w=w+l.charAt(I);
		}
	else if(l.charCodeAt(I)>=65&&l.charCodeAt(I)<=90)
		{
		w=w+l.charAt(I);
		}
	else if(l.charCodeAt(I)>=97&&l.charCodeAt(I)<=122)
		{
		w=w+l.charAt(I).toUpperCase();
		}
	}

m=w.length;
var B=0;
if(v==3)
	d="CAIIA";
else if(v==2)
	d="BAEEA";
for(I=0;I<m;I++)
	{
	var c=w.charCodeAt(I);
	var f=0;
	if(c<58 && c>47)
		f=c-48;
	else if(c>=65&&c<=90)
		f=c-55;
	else if(c==32)
		f=38;
	else if(c==45)
		f=36;
	else if(c==46)
		f=37;
	else if(c==36)
		f=39;
	else if(c==47)
		f=40;
	else if(c==43)
		f=41;
	else if(c==37)
		f=42;
	
	if(IncludeCheckDigit!=0)
		B+=f;
	G=ac[f];
	if(v==3)
		{
		var j;
		for(j=0;j<10;j+=2)
			{
			var t="";
			t=G.substring(j,j+2);
			if(t=="nn")
				d=d+"A";
			else if(t=="nw")
				d=d+"C";
			else if(t=="wn")
				d=d+"I";
			else if(t=="ww")d=d+"K";
			}
		}
	else if(v==2)
		{
		var j;
		for(j=0;j<10;j+=2)
			{
			var t="";
			t=G.substring(j,j+2);
			if(t=="nn")
				d=d+"A";
			else if(t=="nw")
				d=d+"B";
			else if(t=="wn")
				d=d+"E";
			else if(t=="ww")
				d=d+"F";
			}
		}
		}
	if(M!=0)
		{
		var H=(B%43);
		G=ac[H];
		if(v==3)
			{
			var j;
			for(j=0;j<10;j+=2)
				{
				var t="";
				t=G.substring(j,j+2);
				if(t=="nn")
					d=d+"A";
				else if(t=="nw")
					d=d+"C";
				else if(t=="wn")
					d=d+"I";
				else if(t=="ww")
					d=d+"K";
				}
			}
		else if(v==2)
			{
			var j;
			for(j=0;j<10;j+=2)
				{
				var t="";
				t=G.substring(j,j+2);
				if(t=="nn")
					d=d+"A";
				else if(t=="nw")
					d=d+"B";
				else if(t=="wn")
					d=d+"E";
				else if(t=="ww")
					d=d+"F";
				}
			}
		}
	if(v==3)
		d=d+"CAIIA";
	else if(v==2)
		d=d+"BAEEA";
	o=Universal_to_Native(d,BarHeight);
	if(XDimensionPoints!=0)
		{
		//alert(o.length);
		//alert(o);
		if (color == 'White')
			o="<div style='background-color: #FFFFFF; font-size:" + XDimensionPoints + "px;line-height:" + T + "px;font-family:'Courier New', 'Lucida Console', 'monospace';'><pre>" + o + "</pre></div>";
		else if(color == 'Silver')
			o="<div style='background-color: #CCCCCC; font-size:" + XDimensionPoints + "px;line-height:" + T + "px;font-family:'Courier New', 'Lucida Console', 'monospace';'><pre>" + o + "</pre></div>";

		//o="<pre>" + o + "</pre>";
		//alert(o);
		}
return o;
};

function Universal_to_Native(L,BarHeight)
	{
	//alert(L);
	if(BarHeight<1 || BarHeight>40)
		BarHeight=6;
		Y=false;
		var g="";
		var o="";
		m=L.length;
		for(I=0;I<m;I++)
			{
			c=L.charCodeAt(I);
			if(c>=65&&c<=68)
				g=g+(11+(c-65));
			if(c>=69 && c<=72)
				g=g+(21+(c-69));
			if(c>=73&&c<=76)
			    g=g+(31+(c-73));
			if(c>=77&&c<=80)
			    g=g+(41+(c-77));
			if(c>=87&&c<=88)
			    g=g+(11+(c-87));
			if(c>=89&&c<=90)
			    g=g+(21+(c-89));
			}
		var C=3;
		var ww=String.fromCharCode(32);
		var wb=String.fromCharCode(9616);
		var bw=String.fromCharCode(9612);
		var bb=String.fromCharCode(9608);
		f=0;
		d="";
		var r=0;
		var J=0;
		m=g.length-1;
		for(I=0;I<m;I++)
		    {
		    f=g.charCodeAt(I)-48;
		    if(r==1)
		        {
		        if(f>1)
		            {
		            f=f-1;r=0;
		            }
		        else
		            {
		            r=1;
		            }
		        }
		        if((r==1)&&(f==1))
		            {
		            r=0;
		            }
		            else
		            {
		            for(J=1;J<=f;J++)
		                {
		                if(J==f)
		                    {
		                    r=1;
		                    if(C==3)
		                        {
		                        d=d+bw;
		                        }
		                    if(C==1)
		                        {
		                        d=d+wb;
		                        }
		                    }
		                    else
		                        {
		                        r=0;
		                        if(C==3)
		                            {
		                            d=d+bb;
		                            }
		                        if(C==1)
		                            {
		                            d=d+ww;
		                            }
		                         J++;
		                         }
		                     }
		                 }
		             C=4-C;
		             }

//alert(BarHeight);

for(I=1;I<BarHeight;I++)
	{
	o=o+d+String.fromCharCode(13);
	}
	return o;
	
}