/*****************************************************************************************************/
/* symbology.js                                                                                   ****/
/* validation, generation functions written in Javascript                                         ****/
/* written by Sherwood Hu (sherwood@morovia.com)                                                  ****/
/* Copyright notice: you must own a perpetual license to Morovia produts in order to use the      ****/
/* function listed in this Javascript file                                                        ****/
/*****************************************************************************************************/

var value_0 = "0".charCodeAt(0);
var value_9 = "9".charCodeAt(0);
var value_hypen = "-".charCodeAt(0);
var value_sp = " ".charCodeAt(0);

function IsNumeric(param)
{
	for( var i=0; i<param.length; i++)
	{
		var value = param.charCodeAt(i);
		if ( value < value_0 || value > value_9)
			return false;
	}
	return  true;
}

function IsValidISBN(param)
{
	for( var i=0; i<param.length; i++)
	{
		var value=param.charCodeAt(i);
		if ( value == value_hypen || value==value_sp ) continue;
		if ( value < value_0 || value > value_9 )
			return false;
	}
	return true;
}

function GetEANCheckDigit(param)
{
	var sum=0;
	var odd_parity=true;
	for(var i=param.length-1; i>=0; i--)
	{
		if ( odd_parity )
			sum += 3*(param.charCodeAt(i)-value_0);
		else
			sum += param.charCodeAt(i)-value_0;
		odd_parity = !odd_parity;
	}
	var check_digit = 10 - (sum%10);
	return String.fromCharCode(check_digit+value_0 );
}

function GetISBNCheckDigit(param)
{
	var str="";
	for(var i=0; i<param.length; i++)
	{
		var value=param.charCodeAt(i);
		if ( value >= value_0 && value <=value_9  )
			str+=String.fromCharCode(value);
	}
	var sum=0;
	for(var i=0; i<str.length; i++)
	{
		var value = str.charCodeAt(i)-value_0;
		sum += value*(10-i);
	}
	var check_digit = 11-sum%11;
	if (check_digit==10 ) return "X";
	else return String.fromCharCode(check_digit+value_0);
}
