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