Merge remote branch 'kc/new/enh/bug_2170' into kcmaster
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / cataloguing / addbiblio.tmpl
1 <!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->
2 <title>Koha &rsaquo; Cataloging &rsaquo; <!-- TMPL_IF NAME="biblionumber" -->Editing <!-- TMPL_VAR NAME="title" escape="html" --> (Record Number <!-- TMPL_VAR name="biblionumber" -->)<!-- TMPL_ELSE -->Add MARC Record<!-- /TMPL_IF --></title>
3 <!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
4 <script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/yui/plugins/bubbling-min.js"></script>
5 <script type="text/javascript">
6 //<![CDATA[
7
8      var fields_in_use = {};
9          $(document).ready(function() {
10                 $('#addbibliotabs > ul').tabs().bind('show.ui-tabs', function(e, ui) {
11                         $("#"+ui.panel.id+" input:eq(0)").focus();
12                 });
13         $('.tag').each(function() {
14             var field_id = this.getAttribute('id').substring(0, 7);
15             if (field_id in fields_in_use) {
16                 fields_in_use[field_id]++;
17             } else {
18                 fields_in_use[field_id] = 1;
19             }
20         });
21         $('.subfield_line').each(function() {
22             var field_id = this.getAttribute('id').substring(0, 12);
23             if (field_id in fields_in_use) {
24                 fields_in_use[field_id]++;
25             } else {
26                 fields_in_use[field_id] = 1;
27             }
28         });
29          });
30          
31          $('#header_search > ul').tabs().bind('show.ui-tabs', function(e, ui) { $('#header_search > div:not(.ui-tabs-hide)').find('input').eq(0).focus(); });
32
33 function confirmnotdup(redirect){
34         $("#confirm_not_duplicate").attr("value","1");
35     $("#redirect").attr("value",redirect);
36         Check();
37 }
38
39 /**
40  * 
41  * 
42  */
43 function Check(){
44     var StrAlert = AreMandatoriesNotOk();
45     if( ! StrAlert ){
46         document.f.submit();
47         return true;
48     } else {
49         alert(StrAlert);
50         return false;
51     }
52 }
53
54 function Dopop(link,i) {
55     defaultvalue = document.getElementById(i).value;
56     window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
57 }
58
59 /**
60  * this function open a popup to search on z3950 server.
61  */
62 function PopupZ3950() {
63     var strQuery = GetZ3950Terms();
64         if(strQuery){
65         window.open("/cgi-bin/koha/cataloguing/z3950_search.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->"+strQuery,"z3950search",'width=740,height=450,location=yes,toolbar=no,scrollbars=yes,resize=yes');
66     } 
67 }
68
69 function PopupMARCFieldDoc(field, blocknumber) {
70     <!-- TMPL_IF NAME="MARC21" -->
71         _MARC21FieldDoc(field);
72     <!-- TMPL_ELSE -->
73         _UNIMARCFieldDoc(field, blocknumber);
74     <!-- /TMPL_IF -->
75 }
76
77 function _MARC21FieldDoc(field) {
78     if(field == 0) {
79         window.open("http://www.loc.gov/marc/bibliographic/bdleader.html");
80     } else if (field < 900) {
81         window.open("http://www.loc.gov/marc/bibliographic/bd" + ("000"+field).slice(-3) + ".html");
82     } else {
83         window.open("http://www.loc.gov/marc/bibliographic/bd9xx.html");
84     }
85 }
86
87 function _UNIMARCFieldDoc(field, blocknumber) {
88     /* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but
89        seems to be the only version available that can be linked to per tag.  More recent
90        versions of the UNIMARC standard are available on the IFLA website only as
91        PDFs!
92     */
93     if(field == 0) {
94         window.open("http://archive.ifla.org/VI/3/p1996-1/uni.htm");
95     } else if (field < 100) {
96         window.open("http://archive.ifla.org/VI/3/p1996-1/uni"+blocknumber+".htm#b" + ("000"+field).slice(-3));
97     } else if (field < 900) {
98         window.open("http://archive.ifla.org/VI/3/p1996-1/uni"+blocknumber+".htm#" + ("000"+field).slice(-3));
99     } else {
100         window.open("http://archive.ifla.org/VI/3/p1996-1/uni9.htm");
101     }
102 }
103
104 /**
105  * check if mandatory subfields are written
106  */
107 function AreMandatoriesNotOk(){
108     var mandatories = new Array();
109     var mandatoriesfields = new Array();
110     var tab = new Array();
111     var label = new Array();
112     var flag=0;
113     var tabflag= new Array();  
114     <!-- TMPL_LOOP NAME='BIG_LOOP' -->
115         <!-- TMPL_LOOP NAME='innerloop' -->
116                 <!-- TMPL_IF NAME="mandatory" -->
117                 mandatoriesfields.push(new Array("<!-- TMPL_VAR NAME="tag" -->","<!-- TMPL_VAR NAME="index" --><!-- TMPL_VAR NAME="random" -->","<!-- TMPL_VAR NAME="index" -->"));
118                 <!-- /TMPL_IF -->
119                 <!-- TMPL_LOOP NAME='subfield_loop'-->
120                         <!-- TMPL_IF NAME='mandatory'-->mandatories.push("<!-- TMPL_VAR NAME='id' -->");
121                         tab.push("<!-- TMPL_VAR NAME='number' -->");
122                         label.push("<!-- TMPL_VAR NAME='marc_lib' -->");
123                 <!-- /TMPL_IF -->
124             <!-- /TMPL_LOOP -->
125         <!-- /TMPL_LOOP -->
126     <!-- /TMPL_LOOP -->
127     var StrAlert = _("Can't save this record because the following field aren't filled:");
128     StrAlert += "\n\n";
129     for(var i=0,len=mandatories.length; i<len ; i++){
130         var tag=mandatories[i].substr(4,3);
131         var subfield=mandatories[i].substr(17,1);
132         var tagnumber=mandatories[i].substr(19,mandatories[i].lastIndexOf("_")-19);
133         tabflag[tag+subfield+tagnumber]=new Array();
134         tabflag[tag+subfield+tagnumber][0]=0;
135         if( ! document.getElementById(mandatories[i]).value){
136             tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
137             document.getElementById(mandatories[i]).setAttribute('class','subfield_not_filled');
138             document.getElementById(mandatories[i]).focus();
139             tabflag[tag+subfield+tagnumber][1]=label[i];
140             tabflag[tag+subfield+tagnumber][2]=tab[i];
141         } else {
142             tabflag[tag+subfield+tagnumber][0] = 1;
143         }    
144     }
145     for (var tagsubfieldid in tabflag){
146       if (tabflag[tagsubfieldid][0]==0){
147         var tag=tagsubfieldid.substr(0,3);
148         var subfield=tagsubfieldid.substr(3,1);    
149         StrAlert += "\t* "+_("tag ")+tag+_(" subfield ")+subfield+" "+tabflag[tagsubfieldid][1]+_(" in tab ")+tabflag[tagsubfieldid][2]+"\n";
150         //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n"; 
151         flag=1;    
152       }   
153     }   
154     
155     /* Check for mandatories field(not subfields) */
156     for(var i=0,len=mandatoriesfields.length; i<len; i++){
157             isempty  = true;
158                 arr      = mandatoriesfields[i];
159         divid    = "tag_" + arr[0] + "_" + arr[1];
160         varegexp = new RegExp("^tag_" + arr[0] + "_code_");
161         
162                 if(parseInt(arr[0]) >= 10){
163                 elem = document.getElementById(divid);
164                 eleminputs = elem.getElementsByTagName('input');
165                 
166                 for(var j=0,len2=eleminputs.length; j<len2; j++){
167         
168                         if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
169                                         inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
170                                         
171                                         for( var k=0; k<len2; k++){
172                                                 if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
173                                                         isempty = false
174                                                 }
175                                         }
176                                         
177                                         elemselect = elem.getElementsByTagName('select');
178                                         for( var k=0; k<elemselect.length; k++){
179                                                 if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
180                                                         isempty = false
181                                                 }
182                                         }
183                         }
184                 }
185
186                 elemtextareas = elem.getElementsByTagName('textarea');
187                 for(var j=0,len2=elemtextareas.length; j<len2; j++){
188                 // this bit assumes that the only textareas in this context would be for subfields
189                 if (elemtextareas[j].value) {
190                     isempty = false;
191                 }
192             }
193         }else{
194                 isempty = false;
195         }
196         
197         if(isempty){
198                 flag = 1;
199                 StrAlert += _("\t* Field ") + arr[0] + _(" is mandatory, at least one of its subfields must be filled.") + "\n";
200         }
201         
202     }
203     
204     if(flag){
205             return StrAlert;
206         } else {
207                 return flag;
208         }
209 }
210
211 /** 
212  * check if z3950 mandatories are set or not
213  */
214 function GetZ3950Terms(){
215  var strQuery="&frameworkcode="+document.forms['f'].frameworkcode.value;
216     var mandatories = new Array();
217     var mandatories_label = new Array();
218     <!-- TMPL_LOOP NAME='BIG_LOOP' --><!-- TMPL_LOOP NAME='innerloop' --><!-- TMPL_LOOP NAME='subfield_loop'--><!-- TMPL_IF NAME='z3950_mandatory'-->mandatories.push("<!-- TMPL_VAR NAME='id' -->");
219         mandatories_label.push("<!-- TMPL_VAR NAME='z3950_mandatory' -->");<!-- /TMPL_IF --><!-- /TMPL_LOOP --><!-- /TMPL_LOOP --><!-- /TMPL_LOOP -->
220     
221     for(var i=0,len=mandatories.length; i<len ; i++){
222         var field_value = document.getElementById(mandatories[i]).value;
223         if( field_value ){
224             strQuery += "&"+mandatories_label[i]+"="+field_value;
225         }
226     }
227     return strQuery;
228 }
229
230 function Changefwk(FwkList) {
231         var fwk = FwkList.options[FwkList.selectedIndex].value;
232         window.location = "/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=<!--TMPL_VAR Name="biblionumber"-->&breedingid=<!-- TMPL_VAR name="breedingid" -->&frameworkcode="+fwk;
233
234 }
235
236 // returns the subfieldcode based upon subfieldid writing
237 function getSubfieldcode(tagsubfieldid){
238     // 3 : tag +3 : tagnumber +4 : number of _ +8 subfield -1 begins at 0  
239     return tagsubfieldid.substr(3+3+4+8-1,1);
240 }
241
242 // Take the base of tagsubfield information (removing the subfieldcodes and subfieldindexes)
243 // returns the filter
244 function getTagInputnameFilter(tagsubfieldid){
245     var tagsubfield=tagsubfieldid.substr(0,tagsubfieldid.lastIndexOf("_"));  
246     var tagcode=tagsubfield.substr(tagsubfield.lastIndexOf("_"));
247     tagsubfield=tagsubfield.substr(0,tagsubfield.lastIndexOf("_"));
248     tagsubfield=tagsubfield.substr(0,tagsubfield.lastIndexOf("_"));
249     tagsubfield=tagsubfield+"_."+tagcode;
250     return tagsubfield;  
251 }
252
253 function openAuth(tagsubfieldid,authtype) {
254     // let's take the base of tagsubfield information (removing the indexes and the codes
255     var element=document.getElementById(tagsubfieldid);
256     var tagsubfield=getTagInputnameFilter(tagsubfieldid);
257     var elementsubfcode=getSubfieldcode(element.name);
258     var mainmainstring=element.value;
259     var mainstring="";  
260     var inputs = element.parentNode.parentNode.getElementsByTagName("input");
261
262     for (var myindex =0; myindex<inputs.length;myindex++){
263         if (inputs[myindex].name && inputs[myindex].name.match(tagsubfield)){
264             var subfieldcode=getSubfieldcode(inputs[myindex].name);
265             if (isNaN(parseInt(subfieldcode)) && inputs[myindex].value != "" && subfieldcode!=elementsubfcode){
266                 mainstring=inputs[myindex].value+" "+mainstring;
267             }      
268         }
269     }           
270         newin=window.open("../authorities/auth_finder.pl?authtypecode="+  authtype+ "&index="+tagsubfieldid+"&value_mainstr="+encodeURI(mainmainstring)+"&value_main="+encodeURI(mainstring), "_blank",'width=700,height=550,toolbar=false,scrollbars=yes');
271 }
272
273
274 function ExpandField(index) {
275     var original = document.getElementById(index); //original <div>
276     var divs = original.getElementsByTagName('div');
277     for(var i=0,divslen = divs.length ; i<divslen ; i++){      // foreach div
278         if(divs[i].getAttribute('id').match(/^subfield/)){  // if it s a subfield
279             if (divs[i].style.display == 'block') {
280                 divs[i].style.display = 'none';
281             } else {
282                 divs[i].style.display = 'block';
283             }
284         }
285     }
286 }
287
288 /**
289  * To clone a field or a subfield by clicking on '+' button
290  */ 
291 function CloneField(index) {
292     var original = document.getElementById(index); //original <div>
293     fields_in_use[index.substr(0, 7)]++;
294     var clone = original.cloneNode(true);
295     var new_key = CreateKey();
296     var new_id  = original.getAttribute('id')+new_key;
297     
298     clone.setAttribute('id',new_id); // setting a new id for the parent div
299     
300     var divs = clone.getElementsByTagName('div');
301     
302     <!-- TMPL_UNLESS NAME='hide_marc'--> // No indicator if hide_marc
303         // setting a new name for the new indicator
304         for(var i=0; i < 2; i++) {
305             var indicator = clone.getElementsByTagName('input')[i];
306             indicator.setAttribute('name',indicator.getAttribute('name')+new_key);
307         }
308     <!-- /TMPL_UNLESS -->
309         
310     // settings all subfields
311     for(var i=0,divslen = divs.length ; i<divslen ; i++){      // foreach div
312         if(divs[i].getAttribute("id").match(/^subfield/)){  // if it s a subfield
313             
314             // set the attribute for the new 'div' subfields
315             divs[i].setAttribute('id',divs[i].getAttribute('id')+new_key);
316             
317             var inputs   = divs[i].getElementsByTagName('input');
318             var id_input = "";
319             
320             for( j = 0 ; j < inputs.length ; j++ ) {
321                 if(inputs[j].getAttribute("id") && inputs[j].getAttribute("id").match(/^tag_/) ){
322                         inputs[j].value = "";
323                 }
324             }
325             
326             inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
327             inputs[0].setAttribute('name',inputs[0].getAttribute('name')+new_key);
328             var id_input;
329             try {
330                 id_input = inputs[1].getAttribute('id')+new_key;
331                 inputs[1].setAttribute('id',id_input);
332                 inputs[1].setAttribute('name',inputs[1].getAttribute('name')+new_key);
333             } catch(e) {
334                 try{ // it s a select if it is not an input
335                     var selects = divs[i].getElementsByTagName('select');
336                     id_input = selects[0].getAttribute('id')+new_key;
337                     selects[0].setAttribute('id',id_input);
338                     selects[0].setAttribute('name',selects[0].getAttribute('name')+new_key);
339                 }catch(e2){ // it is a textarea if it s not a select or an input
340                         var textaeras = divs[i].getElementsByTagName('textarea');
341                         id_input = textaeras[0].getAttribute('id')+new_key;
342                         textaeras[0].setAttribute('id',id_input);
343                     textaeras[0].setAttribute('name',textaeras[0].getAttribute('name')+new_key);
344                 }
345             }
346             
347             <!-- TMPL_UNLESS NAME='advancedMARCEditor'-->
348             // when cloning a subfield, re set its label too.
349             var labels = divs[i].getElementsByTagName('label');
350             labels[0].setAttribute('for',id_input);
351             <!-- /TMPL_UNLESS -->
352             
353             <!-- TMPL_UNLESS NAME='hide_marc'-->
354                 // updating javascript parameters on button up
355                 var imgs = divs[i].getElementsByTagName('img');
356                 imgs[0].setAttribute('onclick',"upSubfield(\'"+divs[i].getAttribute('id')+"\');");
357             <!-- /TMPL_UNLESS -->
358             
359             // setting its '+' and '-' buttons
360             try {
361                 var anchors = divs[i].getElementsByTagName('a');
362                 for (var j = 0; j < anchors.length; j++) {
363                     if(anchors[j].getAttribute('class') == 'buttonPlus'){
364                         anchors[j].setAttribute('onclick',"CloneSubfield('" + divs[i].getAttribute('id') + "')");
365                     } else if (anchors[j].getAttribute('class') == 'buttonMinus') {
366                         anchors[j].setAttribute('onclick',"UnCloneField('" + divs[i].getAttribute('id') + "')");
367                     }
368                 }
369             }
370             catch(e){
371                 // do nothig if ButtonPlus & CloneButtonPlus don t exist.
372             }
373             
374             // button ...
375             var spans=0;
376             try {
377                 spans = divs[i].getElementsByTagName('a');
378             } catch(e) {
379                 // no spans
380             }
381             if(spans){
382                 var buttonDot;
383                 if(!CloneButtonPlus){ // it s impossible to have  + ... (buttonDot AND buttonPlus)
384                     buttonDot = spans[0];
385                     if(buttonDot){
386                         // 2 possibilities :
387                         try{
388                             var buttonDotOnClick = buttonDot.getAttribute('onclick');
389                             if(buttonDotOnClick.match('Clictag')){   // -1- It s a plugin
390                                 var re = /\('.*'\)/i;
391                                 buttonDotOnClick = buttonDotOnClick.replace(re,"('"+inputs[1].getAttribute('id')+"')");
392                                 if(buttonDotOnClick){
393                                     buttonDot.setAttribute('onclick',buttonDotOnClick);
394                                 }
395                             } else {
396                                 if(buttonDotOnClick.match('Dopop')) {  // -2- It's a auth value
397                                     var re1 = /&index=.*',/;
398                                     var re2 = /,.*\)/;
399
400                                     buttonDotOnClick = buttonDotOnClick.replace(re1,"&index="+inputs[1].getAttribute('id')+"',");
401                                     buttonDotOnClick = buttonDotOnClick.replace(re2,",'"+inputs[1].getAttribute('id')+"')");
402                                     
403                                     if(buttonDotOnClick){
404                                             buttonDot.setAttribute('onclick',buttonDotOnClick);
405                                     }
406                                 }
407                             }
408                             try {
409                                 // do not copy the script section.
410                                 var script = spans[0].getElementsByTagName('script')[0];
411                                 spans[0].removeChild(script);
412                             } catch(e) {
413                                 // do nothing if there is no script
414                             }
415                         }catch(e){}
416                         }
417                 }
418             }
419             <!-- TMPL_UNLESS NAME='hide_marc'-->
420                 var buttonUp = divs[i].getElementsByTagName('img')[0];
421                 buttonUp.setAttribute('onclick',"upSubfield('" + divs[i].getAttribute('id') + "')");
422             <!-- /TMPL_UNLESS -->
423             
424         } else { // it's a indicator div
425             if(divs[i].getAttribute('id').match(/^div_indicator/)){
426                 var inputs = divs[i].getElementsByTagName('input');
427                 inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
428                 inputs[1].setAttribute('id',inputs[1].getAttribute('id')+new_key);
429                 
430                 var CloneButtonPlus;
431                 try {
432                     var anchors = divs[i].getElementsByTagName('a');
433                     for (var j = 0; j < anchors.length; j++) {
434                         if (anchors[j].getAttribute('class') == 'buttonPlus') {
435                             anchors[j].setAttribute('onclick',"CloneField('" + new_id + "')");
436                         } else if (anchors[j].getAttribute('class') == 'buttonMinus') {
437                             anchors[j].setAttribute('onclick',"UnCloneField('" + new_id + "')");
438                         } else if (anchors[j].getAttribute('class') == 'expandfield') {
439                             anchors[j].setAttribute('onclick',"ExpandField('" + new_id + "')");
440                         }
441                     }
442                 }
443                 catch(e){
444                     // do nothig CloneButtonPlus doesn't exist.
445                 }
446
447             }
448         }
449     }
450     
451     // insert this line on the page
452     original.parentNode.insertBefore(clone,original.nextSibling);
453 }
454
455 function CloneSubfield(index){
456     var original = document.getElementById(index); //original <div>
457     fields_in_use[index.substr(0, 12)]++;
458     var clone = original.cloneNode(true);
459     var new_key = CreateKey();
460     var new_id  = original.getAttribute('id')+new_key;
461     // set the attribute for the new 'div' subfields
462     var inputs     = clone.getElementsByTagName('input');
463     var selects    = clone.getElementsByTagName('select');
464     var textareas  = clone.getElementsByTagName('textarea');
465     var linkid;
466
467     // input
468     var id_input = "";
469     for(var i=0,len=inputs.length; i<len ; i++ ){
470         id_input = inputs[i].getAttribute('id')+new_key;
471         inputs[i].setAttribute('id',id_input);
472         inputs[i].setAttribute('name',inputs[i].getAttribute('name')+new_key);
473         linkid = id_input;
474     }
475     
476     // select 
477     for(var i=0,len=selects.length; i<len ; i++ ){
478         id_input = selects[i].getAttribute('id')+new_key;
479         selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
480         selects[i].setAttribute('name',selects[i].getAttribute('name')+new_key);
481     }
482     
483     // textarea
484     for(var i=0,len=textareas.length; i<len ; i++ ){
485         id_input = textareas[i].getAttribute('id')+new_key;
486         textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
487         textareas[i].setAttribute('name',textareas[i].getAttribute('name')+new_key);
488     }
489
490     // Changing the "..." link's onclick attribute for plugin callback
491     var links  = clone.getElementsByTagName('a');
492     var link = links[0];
493     var buttonDotOnClick = link.getAttribute('onclick');
494     if(buttonDotOnClick.match('Clictag')){   // -1- It s a plugin
495         var re = /\('.*'\)/i;
496         buttonDotOnClick = buttonDotOnClick.replace(re,"('"+linkid+"')");
497         if(buttonDotOnClick){
498             link.setAttribute('onclick',buttonDotOnClick);
499         }
500     }
501
502
503     <!-- TMPL_UNLESS NAME='advancedMARCEditor' -->
504     // when cloning a subfield, reset its label too.
505     var label = clone.getElementsByTagName('label')[0];
506     label.setAttribute('for',id_input);
507     <!-- /TMPL_UNLESS -->
508     
509     // setting a new id for the parent div
510     clone.setAttribute('id',new_id);
511     
512     try {
513         var buttonUp = clone.getElementsByTagName('img')[0];
514         buttonUp.setAttribute('onclick',"upSubfield('" + new_id + "')");
515         var anchors = clone.getElementsByTagName('a');
516         if(anchors.length){
517             for(var i = 0 ,lenanchors = anchors.length ; i < lenanchors ; i++){
518                 if(anchors[i].getAttribute('class') == 'buttonPlus'){
519                     anchors[i].setAttribute('onclick',"CloneSubfield('" + new_id + "')");
520                 } else if (anchors[i].getAttribute('class') == 'buttonMinus') {
521                     anchors[i].setAttribute('onclick',"UnCloneField('" + new_id + "')");
522                 }
523             }
524         }
525     }
526     catch(e){
527         // do nothig if ButtonPlus & CloneButtonPlus don't exist.
528     }
529     // insert this line on the page
530     original.parentNode.insertBefore(clone,original.nextSibling);
531 }
532
533  /**
534  * This function removes or clears unwanted subfields
535  */
536 function UnCloneField(index) {
537     var original = document.getElementById(index);
538     var field_id;
539     if (index.match("tag")) {
540         field_id = index.substr(0, 7);
541     } else {
542         field_id = index.substr(0, 12);
543     }
544     if (1 == fields_in_use[field_id]) {
545         // clear inputs, but don't delete
546         $(":input.input_marceditor", original).each(function(){
547             // thanks to http://www.learningjquery.com/2007/08/clearing-form-data for
548             // hint about clearing selects correctly
549             var type = this.type;
550             var tag = this.tagName.toLowerCase();
551             if (type == 'text' || type == 'password' || tag == 'textarea') {
552                 this.value = "";
553             } else if (type == 'checkbox' || type == 'radio') {
554                 this.checked = false;
555             } else if (tag == 'select') {
556                 this.selectedIndex = -1;
557             }
558         });
559         $(":input.indicator", original).val("");
560     } else {
561         original.parentNode.removeChild(original);
562         fields_in_use[field_id]--;
563     }
564 }
565
566 /**
567  * This function create a random number
568  */
569 function CreateKey(){
570     return parseInt(Math.random() * 100000);
571 }
572
573 /**
574  * This function allows to move a subfield up by clickink on the 'up' button .
575  */
576 function upSubfield(index) {
577     try{
578         var line = document.getElementById(index); // get the line where the user has clicked.
579     } catch(e) {
580         return; // this line doesn't exist...
581     }
582     var tag = line.parentNode; // get the dad of this line. (should be "<div id='tag_...'>")
583     
584     // getting all subfields for this tag
585     var subfields = tag.getElementsByTagName('div');
586     var subfieldsLength = subfields.length;
587     
588     if(subfieldsLength<=1) return; // nothing to do if there is just one subfield.
589     
590     // among all subfields 
591     for(var i=0;i<subfieldsLength;i++){ 
592         if(subfields[i].getAttribute('id') == index){ //looking for the subfield which is clicked :
593             if(i==1){ // if the clicked subfield is on the top
594                 tag.appendChild(subfields[1]);
595                 return;
596             } else {
597                 var lineAbove = subfields[i-1];
598                 tag.insertBefore(line,lineAbove);
599                 return;
600             }
601         }
602     }
603 }
604
605 function unHideSubfield(index,labelindex) { // FIXME :: is it used ?
606     subfield = document.getElementById(index);
607     subfield.style.display = 'block';
608     label = document.getElementById(labelindex);
609     label.style.display='none'; 
610 }
611 //]]>
612 </script>
613 <link type="text/css" rel="stylesheet" href="<!-- TMPL_VAR NAME="themelang" -->/css/addbiblio.css" />
614 </head>
615 <body>
616 <div id="yui-cms-loading">
617       <div id="yui-cms-float">
618           Loading, please wait...
619       </div>
620   </div>
621 <script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/yui/plugins/loading-min.js"></script>
622 <script type="text/javascript">
623 //<![CDATA[
624 (function() {
625         // configuring the loading mask
626         YAHOO.widget.Loading.config({
627                 opacity: 0.8
628         });
629 })();
630 //]]>
631 </script>
632 <!-- TMPL_INCLUDE NAME="header.inc" -->
633 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>  &rsaquo; <!-- TMPL_IF NAME="biblionumber" -->Editing <em><!-- TMPL_VAR NAME="title" escape="html" --></em> (Record Number <!-- TMPL_VAR name="biblionumber" -->)<!-- TMPL_ELSE -->Add MARC Record<!-- /TMPL_IF --></div>
634
635 <div id="doc" class="yui-t7">
636
637 <div id="bd">
638         <div id="yui-main">
639         <div class="yui-g">
640
641
642
643 <h1><!-- TMPL_IF NAME="biblionumber" -->Editing <em><!-- TMPL_VAR NAME="title" escape="html" --></em> (Record Number <!-- TMPL_VAR name="biblionumber" -->)</h1><!-- TMPL_ELSE -->Add MARC Record</h1><!-- /TMPL_IF -->
644
645 <!-- TMPL_UNLESS name="number" -->
646     <!-- show duplicate warning on tab 0 only -->
647         <!-- TMPL_IF name="duplicatebiblionumber" -->
648                     <div class="dialog alert">
649                         <h4>Duplicate Record suspected</h4>
650                         <p>Is this a duplicate of <a href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=<!-- TMPL_VAR name="duplicatebiblionumber" -->" onclick="openWindow('../MARCdetail.pl?biblionumber=<!-- TMPL_VAR name="duplicatebiblionumber" -->&amp;popup=1', 'Duplicate biblio'; return false;)"><!-- TMPL_VAR name="duplicatetitle" --></a>?</p>
651                         <!-- TMPL_IF NAME="CAN_user_editcatalogue_edit_items" --><form action="/cgi-bin/koha/cataloguing/additem.pl" method="get">
652                                                     <input type="hidden" name="biblionumber" value="<!-- TMPL_VAR name="duplicatebiblionumber" -->" />
653                                                     <input type="submit" class="edit" value="Yes: Edit existing items" />
654                                                 </form><!-- TMPL_ELSE --><form action="/cgi-bin/koha/catalogue/detail.pl" method="get">
655                                                     <input type="hidden" name="biblionumber" value="<!-- TMPL_VAR name="duplicatebiblionumber" -->" />
656                                                     <input type="submit" value="Yes: View existing items" />
657                                                 </form><!-- /TMPL_IF -->
658                         <form action="/cgi-bin/koha/cataloguing/addbiblio.pl" method="get">
659                         <!-- TMPL_IF NAME="CAN_user_editcatalogue_edit_items" --><input type="button" class="save" onclick="confirmnotdup('items'); return false;" value="No: Save as New Record" /><!-- TMPL_ELSE --><input type="button" class="save" onclick="confirmnotdup('view'); return false;" value="No: Save as New Record" /><!-- /TMPL_IF -->
660                         </form>
661                     </div>
662         <!-- /TMPL_IF -->
663     <!-- /TMPL_UNLESS -->
664
665 <!--TMPL_IF Name="done"-->
666     <script type="text/javascript">
667         opener.document.forms['f'].biblionumber.value=<!--TMPL_VAR Name="biblionumber"-->;
668         opener.document.forms['f'].title.value='<!--TMPL_VAR Name="title" ESCAPE="HTML"-->';
669         window.close();
670     </script>
671 <!--TMPL_ELSE-->
672     <form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
673     <input type="hidden" value="<!-- tmpl_if name="biblionumber" -->view<!-- tmpl_else -->items<!-- /tmpl_if -->" id="redirect" name="redirect" />
674         <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
675 <!-- /TMPL_IF -->
676         
677 <div id="toolbar">
678
679 <script type="text/javascript">
680         //<![CDATA[
681
682         // prepare DOM for YUI Toolbar
683
684          $(document).ready(function() {
685                 $("#z3950searchc").empty();
686         $("#savebutton").empty();
687             yuiToolbar();
688          });
689
690     function redirect(dest){
691         $("#redirect").attr("value",dest);
692         return Check();
693     }
694 <!-- TMPL_IF NAME="CAN_user_editcatalogue_edit_items" -->
695     var onOption = function () {
696         return Check();
697     }
698
699     var savemenu = [
700         { text: _("Save and view record"), value: 1, onclick: {fn:function(){redirect("view");}} },
701         { text: _("Save and edit items"), value: 2, onclick: {fn:function(){redirect("items");}} }
702     ];
703 <!-- /TMPL_IF -->
704
705         // YUI Toolbar Functions
706
707         function yuiToolbar() {
708 <!-- TMPL_IF NAME="CAN_user_editcatalogue_edit_items" -->
709         var savesplitmenu = new YAHOO.widget.Button({
710             type: "split",
711             label: _("Save"),
712             id: "addbiblio",
713             name: "savemenubutton",
714             menu: savemenu,
715             container: "savebutton"
716          });
717
718         savesplitmenu.on("click", onOption); 
719 <!-- TMPL_ELSE -->
720         new YAHOO.widget.Button({
721             id: "addbiblio",
722             type: "button",
723             label: _("Save"),
724             container: "savebutton",
725             onclick: {fn:function(){redirect("view");}}
726         });
727 <!-- /TMPL_IF -->
728                 new YAHOO.widget.Button({
729             id: "z3950search",
730             type: "button",
731             label: _("Z39.50 Search"),
732             container: "z3950searchc",
733                         onclick: {fn:function(){PopupZ3950()}}
734         });
735         }
736
737         //]]>
738         </script>
739
740                 <ul class="toolbar">
741                         <li id="savebutton"><input id="addbiblio" type="submit" value="Save" /></li>
742                         <li id="z3950searchc"><input type="button" id="z3950search" value="Z39.50 Search" onclick="PopupZ3950(); return false;" /></li>
743                         <li id="changeframework"><label for="Frameworks">Change framework: </label>
744                         <select name="Frameworks" id="Frameworks" onchange="Changefwk(this);">
745                                         <option value="Default">Default</option>
746                                                         <!-- TMPL_LOOP NAME="frameworkcodeloop" -->                                             
747                                 <option value="<!-- TMPL_VAR NAME="value"-->" <!-- TMPL_VAR NAME="selected" -->>
748                                                      <!-- TMPL_VAR NAME="frameworktext" -->                                      
749                                  </option>                          
750                                                 <!-- /TMPL_LOOP -->
751                         </select> 
752 <input type="hidden" name="op" value="addbiblio" /></li>
753                 </ul>
754 </div>
755
756 <!--TMPL_IF Name="popup"-->
757         <input type="hidden" name="mode" value="popup" />
758 <!--/TMPL_IF-->
759         <input type="hidden" name="frameworkcode" value="<!-- TMPL_VAR NAME="frameworkcode" -->" />
760         <input type="hidden" name="biblionumber" value="<!-- TMPL_VAR NAME="biblionumber" -->" />
761         <input type="hidden" name="breedingid" value="<!-- TMPL_VAR NAME="breedingid" -->" />
762
763 <div id="addbibliotabs" class="toptabs numbered">
764         <ul><!-- TMPL_LOOP name="BIG_LOOP" -->
765           <li>  <!-- TMPL_IF name="number" -->
766                 <a href="/cgi-bin/koha/cataloguing/addbiblio.pl#tab<!-- TMPL_VAR name="number" -->XX"><!-- TMPL_VAR name="number"--></a>
767             <!-- TMPL_ELSE -->
768                 <a href="/cgi-bin/koha/cataloguing/addbiblio.pl#tab<!-- TMPL_VAR name="number" -->XX"><!-- TMPL_VAR name="number"--></a>
769             <!-- /TMPL_IF --></li>
770         <!--  /TMPL_LOOP --></ul>
771
772 <!-- TMPL_LOOP name="BIG_LOOP" -->
773 <!-- hide every tab except the 1st -->
774 <!-- TMPL_IF name="number" -->
775     <div id="tab<!-- TMPL_VAR name="number" -->XX">
776 <!-- TMPL_ELSE -->
777     <div id="tab<!-- TMPL_VAR name="number" -->XX">
778 <!-- /TMPL_IF -->
779
780     
781     <!-- TMPL_LOOP NAME="innerloop" -->
782         <!-- TMPL_IF NAME="tag" -->
783         <div class="tag" id="tag_<!-- TMPL_VAR name="tag"-->_<!-- TMPL_VAR NAME='index'--><!-- TMPL_VAR name="random" -->">
784         <div class="tag_title" id="div_indicator_tag_<!-- TMPL_VAR name="tag"-->_<!-- TMPL_VAR NAME='index'--><!-- TMPL_VAR name="random" -->">
785             <!-- TMPL_UNLESS name="hide_marc" -->
786                 <!-- TMPL_IF NAME="advancedMARCEditor" -->
787                 <a href="#" tabindex="1" class="tagnum" title="<!-- TMPL_VAR NAME="tag_lib"--> - Click to Expand this Tag" onclick="ExpandField('tag_<!-- TMPL_VAR NAME="tag"-->_<!-- TMPL_VAR NAME='index' --><!-- TMPL_VAR NAME="random" -->'); return false;"><!-- TMPL_VAR NAME="tag" --></a>
788                 <!-- TMPL_ELSE -->
789                         <span class="tagnum" title="<!-- TMPL_VAR NAME="tag_lib" -->"><!-- TMPL_VAR NAME="tag" --><a 
790                  onclick="PopupMARCFieldDoc('<!-- TMPL_VAR NAME="tag" -->', <!-- TMPL_VAR NAME="number" -->); return false;">&nbsp;?</a></span>
791                 <!-- /TMPL_IF -->
792                 <!-- TMPL_IF NAME="fixedfield" -->
793                         <input tabindex="1" class="indicator flat" type="text" style="display:none;" name="tag_<!-- TMPL_VAR NAME="tag" -->_indicator1_<!-- TMPL_VAR NAME='index'--><!-- TMPL_VAR name="random" -->" size="1" maxlength="1" value="<!-- TMPL_VAR NAME="indicator1" -->" />
794                         <input tabindex="1" class="indicator flat" type="text" style="display:none;" name="tag_<!-- TMPL_VAR NAME="tag" -->_indicator2_<!-- TMPL_VAR NAME='index'--><!-- TMPL_VAR name="random" -->" size="1" maxlength="1" value="<!-- TMPL_VAR NAME="indicator2" -->" />
795                 <!-- TMPL_ELSE -->
796                         <input tabindex="1" class="indicator flat" type="text" name="tag_<!-- TMPL_VAR NAME="tag" -->_indicator1_<!-- TMPL_VAR NAME='index'--><!-- TMPL_VAR name="random" -->" size="1" maxlength="1" value="<!-- TMPL_VAR NAME="indicator1" -->" />
797                         <input tabindex="1" class="indicator flat" type="text" name="tag_<!-- TMPL_VAR NAME="tag" -->_indicator2_<!-- TMPL_VAR NAME='index'--><!-- TMPL_VAR name="random" -->" size="1" maxlength="1" value="<!-- TMPL_VAR NAME="indicator2" -->" />
798                 <!-- /TMPL_IF --> -
799             <!-- TMPL_ELSE -->
800                 <!-- TMPL_IF NAME="fixedfield" -->
801                     <input tabindex="1" type="hidden" name="tag_<!-- TMPL_VAR NAME="tag" -->_indicator1_<!-- TMPL_VAR NAME='index'--><!-- TMPL_VAR name="random" -->" value="<!-- TMPL_VAR NAME="indicator1" -->" />
802                     <input tabindex="1" type="hidden" name="tag_<!-- TMPL_VAR NAME="tag" -->_indicator2_<!-- TMPL_VAR NAME='index'--><!-- TMPL_VAR name="random" -->" value="<!-- TMPL_VAR NAME="indicator2" -->" />
803                 <!-- TMPL_ELSE -->
804                     <input tabindex="1" type="hidden" name="tag_<!-- TMPL_VAR NAME="tag" -->_indicator1_<!-- TMPL_VAR NAME='index'--><!-- TMPL_VAR name="random" -->" value="<!-- TMPL_VAR NAME="indicator1" -->" />
805                     <input tabindex="1" type="hidden" name="tag_<!-- TMPL_VAR NAME="tag" -->_indicator2_<!-- TMPL_VAR NAME='index'--><!-- TMPL_VAR name="random" -->" value="<!-- TMPL_VAR NAME="indicator2" -->" />
806                 <!-- /TMPL_IF -->
807             <!-- /TMPL_UNLESS -->
808
809             <!-- TMPL_UNLESS NAME="advancedMARCEditor" -->
810                     <a href="#" tabindex="1" class="expandfield" onclick="ExpandField('tag_<!-- TMPL_VAR name="tag"-->_<!-- TMPL_VAR NAME='index'--><!-- TMPL_VAR name="random" -->'); return false;" title="Click to Expand this Tag"><!-- TMPL_VAR NAME="tag_lib" --></a>
811             <!-- /TMPL_UNLESS -->
812             <!-- TMPL_IF name="repeatable" -->
813                 <a href="#" tabindex="1" class="buttonPlus" onclick="CloneField('tag_<!-- TMPL_VAR name="tag"-->_<!-- TMPL_VAR NAME='index'--><!-- TMPL_VAR name="random" -->'); return false;" title="Repeat this Tag">+</a>
814             <!-- /TMPL_IF -->
815                 <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_<!-- TMPL_VAR name="tag"-->_<!-- TMPL_VAR NAME='index'--><!-- TMPL_VAR name="random" -->'); return false;" title="Delete this Tag">&#8722;</a>
816             
817         </div>
818         
819         <!-- TMPL_LOOP NAME="subfield_loop" -->
820             <!--  One line on the marc editor -->
821             <div class="subfield_line" style="<!-- TMPL_VAR NAME='visibility' -->; float: left; clear: left; width: 100%;" id="subfield<!-- TMPL_VAR NAME='tag' --><!-- TMPL_VAR NAME='subfield' --><!-- TMPL_VAR name="random" -->">
822             
823                 <!--TMPL_UNLESS NAME="advancedMARCEditor" -->
824                     <label for="tag_<!-- TMPL_VAR NAME='tag'-->_subfield_<!--  TMPL_VAR NAME='subfield'-->_<!-- TMPL_VAR NAME='index'-->_<!-- TMPL_VAR NAME='index_subfield'-->" <!-- TMPL_IF NAME="fixedfield" --> style="display:none;" <!-- /TMPL_IF --> class="labelsubfield">
825                 <!-- /TMPL_UNLESS --> 
826                 
827                 <!-- TMPL_UNLESS name="hide_marc" -->
828                 <span class="subfieldcode"><!-- TMPL_IF NAME="fixedfield" --> 
829                         <img class="buttonUp" style="display:none;" src="<!-- TMPL_VAR NAME="themelang" -->/../img/up.png" onclick="upSubfield('subfield<!-- TMPL_VAR NAME='tag' --><!-- TMPL_VAR NAME='subfield' --><!-- TMPL_VAR name="random" -->')" alt="Move Up" title="Move Up" />
830                     <!-- TMPL_ELSE -->
831                         <img class="buttonUp" src="<!-- TMPL_VAR NAME="themelang" -->/../img/up.png" onclick="upSubfield('subfield<!-- TMPL_VAR NAME='tag' --><!-- TMPL_VAR NAME='subfield' --><!-- TMPL_VAR name="random" -->')" alt="Move Up" title="Move Up" />
832                     <!-- /TMPL_IF -->
833                         <input title="<!-- TMPL_VAR NAME='marc_lib_plain' -->" style=" <!-- TMPL_IF NAME="fixedfield" -->display:none; <!-- /TMPL_IF -->border:0;" type="text" tabindex="0" name="tag_<!-- TMPL_VAR NAME='tag'-->_code_<!--  TMPL_VAR NAME='subfield'-->_<!-- TMPL_VAR NAME='index'-->_<!-- TMPL_VAR NAME='index_subfield'-->" value="<!-- TMPL_VAR NAME="subfield" -->" size="1" maxlength="1" class="flat" />
834  </span>
835                 <!-- TMPL_ELSE -->
836                     <input type="hidden" name="tag_<!-- TMPL_VAR NAME='tag'-->_code_<!--  TMPL_VAR NAME='subfield'-->_<!-- TMPL_VAR NAME='index'-->_<!-- TMPL_VAR NAME='index_subfield'-->" value="<!-- TMPL_VAR NAME="subfield" -->" />
837  </span>
838                 <!-- /TMPL_UNLESS -->
839             
840                 <!-- TMPL_UNLESS NAME="advancedMARCEditor" -->
841                     <!-- TMPL_IF name="mandatory" --><span class="subfield subfield_mandatory"><!-- TMPL_ELSE --><span class="subfield"><!-- /TMPL_IF -->
842                         <!-- TMPL_VAR NAME="marc_lib_plain" -->
843                         <!-- TMPL_IF NAME="mandatory" --><span class="mandatory_marker" title="This field is mandatory">*</span><!-- /TMPL_IF -->
844                     </span>
845                     </label>
846                 <!-- /TMPL_UNLESS -->
847                 
848                 <!-- TMPL_VAR NAME="marc_value" -->
849                 
850                 <!-- TMPL_IF NAME="repeatable" -->
851                     <span class="subfield_controls"><a href="#" class="buttonPlus" tabindex="1" onclick="CloneSubfield('subfield<!-- TMPL_VAR NAME='tag' --><!-- TMPL_VAR NAME='subfield' --><!-- TMPL_VAR name="random" -->'); return false;"><img src="/intranet-tmpl/prog/img/clone-subfield.png" alt="Clone" title="Clone this subfield" /></a>
852                                         <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield<!-- TMPL_VAR NAME='tag' --><!-- TMPL_VAR NAME='subfield' --><!-- TMPL_VAR name="random" -->'); return false;"><img src="/intranet-tmpl/prog/img/delete-subfield.png" alt="Delete" title="Delete this subfield" /></a></span>
853                 <!-- /TMPL_IF -->
854
855                 
856             </div>
857             <!-- End of the line -->
858             
859         <!-- /TMPL_LOOP -->
860         </div>
861         <!-- /TMPL_IF --><!-- tag -->
862     <!-- /TMPL_LOOP -->
863     </div>
864 <!-- /TMPL_LOOP -->
865 </div>
866 </form>
867
868 </div>
869 </div>
870 </div>
871
872 <!-- TMPL_INCLUDE NAME="intranet-bottom.inc" -->