| 
      
            Lines 135-140
          function showMARCdocLinks() {
      
      
        Link Here
      
     | 
  
        
          | 135 | 
          	$.cookie("marcdocs_[% borrowernumber %]",'true', { path: "/", expires: 365 }); | 
          135 | 
          	$.cookie("marcdocs_[% borrowernumber %]",'true', { path: "/", expires: 365 }); | 
        
        
          | 136 | 
          }  | 
          136 | 
          }  | 
        
        
          | 137 | 
           | 
          137 | 
           | 
        
            
               | 
               | 
              138 | 
              /*  | 
            
            
              | 139 | 
               * Functions to check ISBN validity  | 
            
            
              | 140 | 
               */  | 
            
            
              | 141 | 
               | 
            
            
              | 142 | 
              function _NormalizeISBN(isbn) { | 
            
            
              | 143 | 
                  // remove non-word characters  | 
            
            
              | 144 | 
                  var normalized_isbn = isbn.replace(/\W|_/g,'');  | 
            
            
              | 145 | 
                  // we want upper-case 'X'  | 
            
            
              | 146 | 
                  return normalized_isbn.toUpperCase();  | 
            
            
              | 147 | 
              }  | 
            
            
              | 148 | 
               | 
            
            
              | 149 | 
              function _CheckISBNChecksum10(isbn) { | 
            
            
              | 150 | 
               | 
            
            
              | 151 | 
                  var sum = 0;  | 
            
            
              | 152 | 
                  var i,r;  | 
            
            
              | 153 | 
               | 
            
            
              | 154 | 
                  if ( isbn.match(/\d{10}|^\d{9}X$/) ) { | 
            
            
              | 155 | 
                      // its a 10 digit string, it might end with X  | 
            
            
              | 156 | 
                      for ( i=0; i<9; i++ ) { | 
            
            
              | 157 | 
                          sum += (i+1) * parseInt(isbn[i],10);  | 
            
            
              | 158 | 
                      }  | 
            
            
              | 159 | 
                      r = sum % 11;  | 
            
            
              | 160 | 
                      if ( r == 10 && isbn[9] == 'X' ||  | 
            
            
              | 161 | 
                           r == isbn[9] ) { | 
            
            
              | 162 | 
                          return isbn;  | 
            
            
              | 163 | 
                      }  | 
            
            
              | 164 | 
                  }  | 
            
            
              | 165 | 
                  return null;  | 
            
            
              | 166 | 
              }  | 
            
            
              | 167 | 
               | 
            
            
              | 168 | 
              function _CheckISBNChecksum13(isbn) { | 
            
            
              | 169 | 
               | 
            
            
              | 170 | 
                  var sum = 0;  | 
            
            
              | 171 | 
                  var i,r;  | 
            
            
              | 172 | 
               | 
            
            
              | 173 | 
                  if ( isbn.match(/^\d{13}$/) ) { | 
            
            
              | 174 | 
                      for (i=0;i<12;i++) { | 
            
            
              | 175 | 
                          if ( (i+1) % 2 == 0 ) { | 
            
            
              | 176 | 
                              // even  | 
            
            
              | 177 | 
                              sum += 3 * parseInt(isbn[i],10);  | 
            
            
              | 178 | 
                          } else { | 
            
            
              | 179 | 
                              // odd  | 
            
            
              | 180 | 
                              sum += parseInt(isbn[i],10);  | 
            
            
              | 181 | 
                          }  | 
            
            
              | 182 | 
                      }  | 
            
            
              | 183 | 
                      r = (10 - (sum % 10)) % 10;  | 
            
            
              | 184 | 
                      if ( r == isbn[12] ) { | 
            
            
              | 185 | 
                          return isbn;  | 
            
            
              | 186 | 
                      }  | 
            
            
              | 187 | 
                  }  | 
            
            
              | 188 | 
                  return null;  | 
            
            
              | 189 | 
              }  | 
            
            
              | 190 | 
               | 
            
            
              | 191 | 
              function IsISBNOk() { | 
            
            
              | 192 | 
               | 
            
            
              | 193 | 
                  var isbn;  | 
            
            
              | 194 | 
                  var isbn_field;  | 
            
            
              | 195 | 
              [% IF ( marcflavour == 'MARC21' || marcflavour == 'NORMARC' ) %]  | 
            
            
              | 196 | 
                  isbn = $('input[id^="tag_020_subfield_a"]').val(); | 
            
            
              | 197 | 
                  isbn_field = "020";  | 
            
            
              | 198 | 
              [% ELSIF ( marcflavour == 'UNIMARC' ) %]  | 
            
            
              | 199 | 
                  isbn = $('input[id^="tag_010_subfield_a"]').val(); | 
            
            
              | 200 | 
                  isbn_field = "010";  | 
            
            
              | 201 | 
              [% END %]  | 
            
            
              | 202 | 
                  var normalized_isbn = _NormalizeISBN(isbn);  | 
            
            
              | 203 | 
               | 
            
            
              | 204 | 
                  if ( normalized_isbn.length == 13 ) { | 
            
            
              | 205 | 
                      if ( normalized_isbn == _CheckISBNChecksum13(normalized_isbn) ) { | 
            
            
              | 206 | 
                          return 0;  | 
            
            
              | 207 | 
                      }  | 
            
            
              | 208 | 
                  } else if ( normalized_isbn.length == 10 ) { | 
            
            
              | 209 | 
                      if ( normalized_isbn == _CheckISBNChecksum10(normalized_isbn) ) { | 
            
            
              | 210 | 
                          return 0;  | 
            
            
              | 211 | 
                      }  | 
            
            
              | 212 | 
                  } else if ( normalized_isbn.length == 0 ) { | 
            
            
              | 213 | 
                      // no ISBN, no check  | 
            
            
              | 214 | 
                      return 0;  | 
            
            
              | 215 | 
                  }  | 
            
            
              | 216 | 
                  // Invalid ISBN  | 
            
            
              | 217 | 
                  var StrAlert = "- "+_("The ISBN you entered seems invalid. If you entered it exactly ")+"\n"; | 
            
            
              | 218 | 
                  StrAlert += _("as it appears on the item, put it in ") + isbn_field + "$z."; | 
            
            
              | 219 | 
                  return StrAlert;  | 
            
            
              | 220 | 
              }  | 
            
            
              | 221 | 
               | 
            
        
          | 138 | 
          /**  | 
          222 | 
          /**  | 
        
        
          | 139 | 
           * check if mandatory subfields are written  | 
          223 | 
           * check if mandatory subfields are written  | 
        
        
          | 140 | 
           */  | 
          224 | 
           */  | 
        
  
    | 
      
            Lines 158-165
          function AreMandatoriesNotOk(){
      
      
        Link Here
      
     | 
  
        
          | 158 | 
                      [% END %]  | 
          242 | 
                      [% END %]  | 
        
        
          | 159 | 
                  [% END %]  | 
          243 | 
                  [% END %]  | 
        
        
          | 160 | 
              [% END %]  | 
          244 | 
              [% END %]  | 
        
          
            
              | 161 | 
                  var StrAlert = _("Can't save this record because the following field aren't filled:"); | 
              245 | 
                  var StrAlert = "- "+_("The following fields aren't filled:"); | 
            
            
              | 162 | 
                  StrAlert += "\n\n";  | 
              246 | 
                  StrAlert += "\n";  | 
            
        
          | 163 | 
              for(var i=0,len=mandatories.length; i<len ; i++){ | 
          247 | 
              for(var i=0,len=mandatories.length; i<len ; i++){ | 
        
        
          | 164 | 
                  var tag=mandatories[i].substr(4,3);  | 
          248 | 
                  var tag=mandatories[i].substr(4,3);  | 
        
        
          | 165 | 
                  var subfield=mandatories[i].substr(17,1);  | 
          249 | 
                  var subfield=mandatories[i].substr(17,1);  | 
        
  
    | 
      
            Lines 249-259
          function AreMandatoriesNotOk(){
      
      
        Link Here
      
     | 
  
        
          | 249 | 
           *  | 
          333 | 
           *  | 
        
        
          | 250 | 
           */  | 
          334 | 
           */  | 
        
        
          | 251 | 
          function Check(){ | 
          335 | 
          function Check(){ | 
        
          
            
              | 252 | 
                  var StrAlert = AreMandatoriesNotOk();  | 
              336 | 
                  var StrAlert = _("Can't save this record\n"); | 
            
            
              | 253 | 
                  if( ! StrAlert ){ | 
              337 | 
                  var StrMandatoriesNotOk = AreMandatoriesNotOk();  | 
            
            
               | 
               | 
              338 | 
              [% IF ( RequireValidISBN ) %]  | 
            
            
              | 339 | 
                  var StrISBNNotOk = IsISBNOk();  | 
            
            
              | 340 | 
                  if( ! StrMandatoriesNotOk && ! StrISBNNotOk ){ | 
            
            
              | 341 | 
              [% ELSE %]  | 
            
            
              | 342 | 
                  if( ! StrMandatoriesNotOk ){ | 
            
            
              | 343 | 
              [% END %]  | 
            
        
          | 254 | 
                  document.f.submit();  | 
          344 | 
                  document.f.submit();  | 
        
        
          | 255 | 
                  return true;  | 
          345 | 
                  return true;  | 
        
        
          | 256 | 
              } else { | 
          346 | 
              } else { | 
        
            
               | 
               | 
              347 | 
                      if ( StrMandatoriesNotOk )  | 
            
            
              | 348 | 
                          StrAlert += StrMandatoriesNotOk;  | 
            
            
              | 349 | 
              [% IF ( RequireValidISBN ) %]  | 
            
            
              | 350 | 
                      if ( StrISBNNotOk )  | 
            
            
              | 351 | 
                          StrAlert += StrISBNNotOk;  | 
            
            
              | 352 | 
              [% END %]  | 
            
        
          | 257 | 
                  alert(StrAlert);  | 
          353 | 
                  alert(StrAlert);  | 
        
        
          | 258 | 
                  return false;  | 
          354 | 
                  return false;  | 
        
        
          | 259 | 
              }  | 
          355 | 
              }  | 
        
            
              | 260 | 
              -   | 
               | 
               |