summaryrefslogtreecommitdiff
path: root/includes/js/dojox/validate/isbn.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/validate/isbn.js')
-rw-r--r--includes/js/dojox/validate/isbn.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/includes/js/dojox/validate/isbn.js b/includes/js/dojox/validate/isbn.js
new file mode 100644
index 0000000..030c7cf
--- /dev/null
+++ b/includes/js/dojox/validate/isbn.js
@@ -0,0 +1,37 @@
+if(!dojo._hasResource["dojox.validate.isbn"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.validate.isbn"] = true;
+dojo.provide("dojox.validate.isbn");
+
+dojox.validate.isValidIsbn = function(/* String */value) {
+ // summary: Vadlidate ISBN-10 or ISBN-13 based on the length of value
+ // returns: Boolean
+ var len, sum, weight;
+ if(typeof value!='string'){
+ value = String(value);
+ }
+ value = value.replace(/[- ]/g,''); //ignore dashes and whitespaces
+ len = value.length;
+ sum = 0;
+ if(len == 10){
+ weight = 10;
+ // ISBN-10 validation algorithm
+ for(var i = 0; i< 9; i++){
+ sum += parseInt(value.charAt(i)) * weight;
+ weight --;
+ }
+ var t = value.charAt(9).toUpperCase();
+ sum += t == 'X' ? 10 : parseInt(t);
+ return sum % 11 == 0;
+ }else if(len == 13) {
+ weight = -1;
+ for(var i=0; i< len; i++){
+ sum += parseInt(value.charAt(i)) * (2 + weight);
+ weight *= -1;
+ }
+ return sum % 10 == 0;
+ }else{
+ return false;
+ }
+}
+
+}