diff options
Diffstat (limited to 'ishtar_common/static')
| -rw-r--r-- | ishtar_common/static/js/ishtar.js | 60 | 
1 files changed, 60 insertions, 0 deletions
| diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index 655a91eb4..fcaa73053 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -1796,3 +1796,63 @@ var render_stats = function(stats_values, name){          jqvalues, stats_options      );  }; + +var is_valid_isbn = function(str) { +    var sum, weight, digit, check, i; + +    str = str.replace(/[^0-9X]/gi, ''); + +    if (str.length != 10 && str.length != 13) { +        return false; +    } + +    if (str.length == 13) { +        sum = 0; +        for (i = 0; i < 12; i++) { +            digit = parseInt(str[i]); +            if (i % 2 == 1) { +                sum += 3*digit; +            } else { +                sum += digit; +            } +        } +        check = (10 - (sum % 10)) % 10; +        return (check == str[str.length-1]); +    } + +    if (str.length == 10) { +        weight = 10; +        sum = 0; +        for (i = 0; i < 9; i++) { +            digit = parseInt(str[i]); +            sum += weight*digit; +            weight--; +        } +        check = (11 - (sum % 11)) % 11 +        if (check == 10) { +            check = 'X'; +        } +        return (check == str[str.length-1].toUpperCase()); +    } +} + +var is_valid_issn = function(str) { +    var sum, weight, digit, check, i; + +    str = str.replace(/[^0-9X]/gi, ''); + +    if (str.length != 8) { +        return false; +    } + +	sum = 0; +	for (i = 0; i < 7; i++) { +		digit = parseInt(str[i]); +		sum += digit * (8 - i) +	} +	check = 11 - sum % 11; +	if (check == 10) { +		check = 'X'; +	} +	return (check == str[str.length-1].toUpperCase()); +} | 
