function check_criteria(e,_2,_3){
var _4=$(_2);
var _5=new Object();
var _6="";
if(_3){
var _7=$(_3);
_6=_7.value;
}
var _8=false;
var _9=false;
var _a=false;
var _b=false;
var _c="";
if(_4.value.length>0){
_c=_4.value.replace(/[-\s]*/g,"");
}
if(_c.length>0){
_8=isValidUPC(_c,_5);
_9=isValidISBN(_c,_5);
}
if(_6.match(/isbn/)){
_b=true;
}else{
if(_6.match(/upc/)){
_a=true;
}
}
if((_c.match(/[0-9]{9,12}[0-9X]/i)&&!_9&&!_8)||(((_b&&!_9)||(_a&&!_8))&&_c.length>0)){
_4.removeClassName("good_field");
_4.addClassName("error_field");
if(_5.error){
_4.title=_5.error;
}
}else{
if(_9||_8){
_4.removeClassName("error_field");
_4.addClassName("good_field");
_4.title="";
}else{
_4.removeClassName("good_field");
_4.removeClassName("error_field");
}
}
}
function setup_upc_isbn_check(_d,_e){
var _f;
var _10=setup_upc_isbn_check.helper(_d,_e);
if(_e){
_f=$(_e);
_f.observe("keyup",_10,false);
_f.observe("change",_10,false);
}
_f=$(_d);
_f.observe("keyup",_10,false);
_f.observe("change",_10,false);
check_criteria(null,_d,_e);
}
setup_upc_isbn_check.helper=function(_11,_12){
return function(e){
check_criteria(e,_11,_12);
};
};
function isValidUPC(upc,_15){
if(!upc||upc.length!=12){
if(_15){
_15.error="UPC is too "+(upc.length<12?"short":"long");
}
return false;
}
var _16=0;
var _17=0;
var _18=false;
for(var ii=upc.length-1;ii>=0;ii--){
var val=0+(upc.charAt(ii)*1);
if(_18){
_16+=val;
}else{
_17+=val;
}
_18=!_18;
}
var _1b=(_16*3)+_17;
if((_1b%10)!=0){
if(_15){
_15.error="UPC is invalid";
}
return false;
}
return true;
}
function isValidISBN(_1c,_1d){
if(_1c.length!=10&&_1c.length!=13){
if(_1d){
var _1e=10;
if(_1c.indexOf("978")==0||_1c.indexOf("979")==1){
_1e=13;
}
_1d.error="ISBN is too "+(_1c.length<_1e?"short":"long");
}
return false;
}
if(_1c.length==10){
return isValidISBN10(_1c,_1d);
}else{
return isValidISBN13(_1c,_1d);
}
}
function isValidISBN10(_1f,_20){
var _21=0;
for(var ii=0;ii<10;ii++){
var val;
if(ii==9&&_1f.charAt(ii)=="X"){
val=10;
}else{
val=0+(_1f.charAt(ii)*1);
if(val<0||val>9){
if(_20){
_20.error="Character #"+ii+" ("+_1f.charAt(ii)+") is invalid";
}
return false;
}
}
_21+=(val*(10-ii));
}
if((_21%11)!=0){
if(_20){
_20.error="ISBN is invalid";
}
return false;
}
return true;
}
function isValidISBN13(_24,_25){
var _26=0;
var _27=1;
for(var ii=0;ii<_24.length;ii++){
var val;
val=0+(_24.charAt(ii)*1);
if(val<0||val>9){
if(_25){
_25.error="Character #"+ii+" ("+_24.charAt(ii)+") is invalid";
}
return false;
}
_26+=(val*_27);
if(_27==1){
_27=3;
}else{
_27=1;
}
}
if((_26%10)!=0){
if(_25){
_25.error="ISBN is invalid";
}
return false;
}
return true;
}
