var ean13_array = new Array('AAAAAA', 'AABABB', 'AABBAB', 'AABBBA', 'ABAABB', 'ABBAAB', 'ABBBAA', 'ABABAB', 'ABABBA', 'ABBABA');
var ean13_2_array = new Array('AA', 'AB', 'BA', 'BB');
var ean13_5_array = new Array('BBAAA', 'BABAA', 'BAABA', 'BAAAB', 'ABBAA', 'AABBA', 'AAABB', 'ABABA', 'ABAAB', 'AABAB');
function image(img, alt)
{
return '';
}
function image_little(img, alt)
{
return '';
}
function get_ean13(s)
{
var i;
var result;
var codeArray = ean13_array[parseInt(s.charAt(0))];
result = image(s.charAt(0), s.charAt(0));
result += image('ZE', ' ');
for(i = 1; i <= 6; i++)
{
result += image(codeArray.charAt(i-1) + s.charAt(i), s.charAt(i));
}
result += image('ZM', ' ');
for(i = 7; i <= 12; i++)
{
result += image('C' + s.charAt(i), s.charAt(i));
}
result += image('ZE', ' ');
return result;
}
function get_ean13_2(s)
{
var result;
var codeArray = ean13_2_array[parseInt(s) % 4];
result = image_little('ZES', ' ');
result += image_little(codeArray.charAt(0) + s.charAt(0), s.charAt(0));
result += image_little('ZMS', '');
result += image_little(codeArray.charAt(1) + s.charAt(1), s.charAt(1));
return result;
}
function get_ean13_5(s)
{
var i;
var result;
var checksum;
checksum = 9 * (parseInt(s.charAt(1)) + parseInt(s.charAt(3)))
+ 3 * (parseInt(s.charAt(0)) + parseInt(s.charAt(2)) + parseInt(s.charAt(4)));
checksum %= 10;
var codeArray = ean13_5_array[checksum];
result = image_little('ZES', ' ');
result += image_little(codeArray.charAt(0) + s.charAt(0), s.charAt(0));
for(i=1; i <= 4; i++)
{
result += image_little('ZMS', '');
result += image_little(codeArray.charAt(i) + s.charAt(i), s.charAt(i));
}
return result;
}
function get_ean8(s)
{
var i = 0;
var result = '';
result += image('ZE', '');
for(i = 0; i <= 3; i++)
{
result += image('A' + s.charAt(i), s.charAt(i));
}
result += image('ZM', ' ');
for(i = 4; i <= 7; i++)
{
result += image('C' + s.charAt(i), s.charAt(i));
}
result += image('ZE', '');
return result;
}
function get_validChecksum(s)
{
var i, checksum;
var actual = parseInt(s.charAt(s.length-1));
checksum=0;
for(i=s.length-2; i >= 0; i--)
{
if ((s.length + i) % 2 == 0)
{
checksum += 3 * parseInt(s.charAt(i));
}
else
{
checksum += parseInt(s.charAt(i));
}
}
checksum %= 10;
checksum = (10 - checksum) % 10;
if (actual == checksum)
{
return 'Checksum is correct.';
}
else
{
return 'Checksum should be '+checksum+' instead of '+actual+'!';
}
}
function process(div, div2, s)
{
var regex=new RegExp('^[0-9]+$','');
if (!regex.test(s))
{
alert("EAN barcode can only be composed of digits!");
return false;
}
switch (s.length)
{
case 8:
document.getElementById(div).innerHTML = get_ean8(s);
document.getElementById(div2).innerHTML = get_validChecksum(s);
break;
case 13:
document.getElementById(div).innerHTML = get_ean13(s);
document.getElementById(div2).innerHTML = get_validChecksum(s);
break;
case (13+2):
var s1 = s.substring(0, 13);
var s2 = s.substring(13, 15);
document.getElementById(div).innerHTML = get_ean13(s1) + image('space', ' ') + get_ean13_2(s2);
document.getElementById(div2).innerHTML = get_validChecksum(s1);
break;
case (13+5):
var s1 = s.substring(0, 13);
var s2 = s.substring(13, 18);
document.getElementById(div).innerHTML = get_ean13(s1) + image('space', ' ') + get_ean13_5(s2);
document.getElementById(div2).innerHTML = get_validChecksum(s1);
break;
default:
alert("Invalid number of digits!\nYou must enter 8, 13, 15 or 18 digits.");
return false;
}
return true;
}