Bug 22768: Global search form keyboard navigation broken
[koha-equinox.git] / koha-tmpl / intranet-tmpl / prog / en / modules / cataloguing / addbiblio.tt
index 7062f1b..635b6cc 100644 (file)
+[% USE raw %]
+[% USE Asset %]
+[% USE Koha %]
 [% INCLUDE 'doc-head-open.inc' %]
-<title>Koha &rsaquo; Cataloging &rsaquo; [% IF ( biblionumber ) %]Editing [% title |html %] (Record Number [% biblionumber %])[% ELSE %]Add MARC Record[% END %]</title>
+<title>Koha &rsaquo; Cataloging &rsaquo; [% IF ( biblionumber ) %]Editing [% title | html %] (Record number [% biblionumber | html %])[% ELSE %]Add MARC record[% END %]</title>
 [% INCLUDE 'doc-head-close.inc' %]
-<script type="text/javascript" src="[% themelang %]/lib/yui/plugins/bubbling-min.js"></script>
-<script type="text/javascript">
-//<![CDATA[
-
-     var fields_in_use = {};
-        $(document).ready(function() {
-               $('#addbibliotabs > ul').tabs().bind('show.ui-tabs', function(e, ui) {
-                       $("#"+ui.panel.id+" input:eq(0)").focus();
-               });
-        $('.tag').each(function() {
-            var field_id = this.getAttribute('id').substring(0, 7);
-            if (field_id in fields_in_use) {
-                fields_in_use[field_id]++;
+[% Asset.js("lib/hc-sticky.js") | $raw %]
+[% Asset.js("js/cataloging.js") | $raw %]
+[% INCLUDE 'browser-strings.inc' %]
+[% Asset.js("js/browser.js") | $raw %]
+<script>
+    var browser = KOHA.browser('[% searchid | html %]', parseInt('[% biblionumber | html %]', 10));
+    browser.show();
+
+    $(window).load(function(){
+        $("#loading").hide();
+    });
+    var Sticky;
+    $(document).ready(function() {
+
+        [% IF bib_doesnt_exist %]
+            $("#addbibliotabs").hide();
+            $("#toolbar").hide();
+        [% END %]
+
+        $('#addbibliotabs').tabs().bind('show.ui-tabs', function(e, ui) {
+            $("#"+ui.panel.id+" input:eq(0)").focus();
+        });
+
+        [% IF tab %]
+            link = $("a[href='#[% tab | html %]']");
+            selectTab( link );
+        [% END %]
+
+        Sticky = $("#toolbar");
+        Sticky.hcSticky({
+            stickTo: "#f",
+            stickyClass: "floating"
+        });
+
+        /* check cookie to hide/show marcdocs*/
+        if($.cookie("marcdocs_[% borrowernumber | html %]") == 'hide'){
+            toggleMARCdocLinks(false);
+        } else {
+            toggleMARCdocLinks(true);
+        }
+
+        $("#marcDocsSelect").click(function(){
+            if($.cookie("marcdocs_[% borrowernumber | html %]") == 'hide'){
+                toggleMARCdocLinks(true);
             } else {
-                fields_in_use[field_id] = 1;
+                toggleMARCdocLinks(false);
             }
         });
-        $('.subfield_line').each(function() {
-            var field_id = this.getAttribute('id').substring(0, 12);
-            if (field_id in fields_in_use) {
-                fields_in_use[field_id]++;
+
+        /* check cookie to hide/show marc tags*/
+        var marctags_cookie = $.cookie("marctags_[% borrowernumber | html %]");
+        if( marctags_cookie == 'hide'){
+            toggleMARCTagLinks(false);
+        } else if( marctags_cookie == 'show'){
+            toggleMARCTagLinks(true)
+        } else {
+            [% UNLESS Koha.Preference("hide_marc") %]
+                toggleMARCTagLinks(true)
+            [% ELSE %]
+                toggleMARCTagLinks(false);
+            [% END %]
+        }
+
+        $("#marcTagsSelect").click(function(){
+            if( $.cookie("marctags_[% borrowernumber | html %]") == 'hide'){
+                toggleMARCTagLinks(true)
             } else {
-                fields_in_use[field_id] = 1;
+                toggleMARCTagLinks(false);
             }
         });
-               /* check cookie to hide/show marcdocs*/
-               if($.cookie("marcdocs_[% borrowernumber %]") == 'false'){
-                       hideMARCdocLinks();
-                       $("#marcDocsSelect").attr('checked',false);
-               } else {
-                       /* reset cookie expire date */
-                       $.cookie("marcdocs_[% borrowernumber %]",'true',
-                                               { path: "/", expires: 365 });
-               }
-
-       });
-
-       $('#header_search > ul').tabs().bind('show.ui-tabs', function(e, ui) { $('#header_search > div:not(.ui-tabs-hide)').find('input').eq(0).focus(); });
-
-
-function confirmnotdup(redirect){
-       $("#confirm_not_duplicate").attr("value","1");
-    $("#redirect").attr("value",redirect);
-       Check();
-}
-
-/**
- * 
- * 
- */
-function Check(){
-    var StrAlert = AreMandatoriesNotOk();
-    if( ! StrAlert ){
-        document.f.submit();
-        return true;
-    } else {
-        alert(StrAlert);
-        return false;
+
+        [%# Only ask for a confirmation if it is an edit %]
+        $("#z3950search").click(function(){
+            [% IF biblionumber %]
+                if (confirm(_("Please note that this external search could replace the current record."))){
+                    PopupZ3950();
+                }
+            [% ELSE %]
+                PopupZ3950();
+            [% END %]
+        });
+
+        $("#saverecord").click(function(){
+            $(".btn-group").removeClass("open");
+            onOption();
+            return false;
+        });
+
+        $("#saveandview").click(function(){
+            $(".btn-group").removeClass("open");
+            redirect("view");
+            return false;
+        });
+
+        $("#saveanditems").click(function(){
+            $(".btn-group").removeClass("open");
+            redirect("items");
+            return false;
+        });
+        $("#saveandcontinue").click(function(){
+            $(".btn-group").removeClass("open");
+            var tab = $("#addbibliotabs li.ui-tabs-active:first a").attr('href');
+            tab = tab.replace('#', '');
+            $("#current_tab").val(tab);
+            redirect("just_save", tab);
+            return false;
+        });
+
+        $( '#switcheditor' ).click( function() {
+            var breedingid = [% breedingid || "null" | html %];
+
+            if ( !confirm( breedingid ? _("This record cannot be transferred to the advanced editor. Continue?") : _("Any changes will not be saved. Continue?") ) ) return false;
+
+            $.cookie( 'catalogue_editor_[% logged_in_user.borrowernumber | html %]', 'advanced', { expires: 365, path: '/' } );
+
+            var biblionumber = [% biblionumber || "null" | html %];
+
+            if ( biblionumber ) {
+                window.location = '/cgi-bin/koha/cataloguing/editor.pl#catalog/' + biblionumber;
+            } else {
+                window.location = '/cgi-bin/koha/cataloguing/editor.pl';
+            }
+
+            return false;
+        } );
+        $(".change-framework").on("click", function(){
+            var frameworkcode = $(this).data("frameworkcode");
+            $("#frameworkcode").val( frameworkcode );
+            Changefwk();
+        });
+
+        $(".toolbar-tabs a").on("click",function(e){
+            e.preventDefault();
+            selectTab( $(this ) );
+        });
+
+        $(".tag_anchor").on("click", function(e){
+            e.preventDefault();
+            var toolbar_height = $("#toolbar").outerHeight();
+            $(".tag_anchor").removeClass("selected");
+            $(this).addClass("selected");
+            var link = this.href;
+            var linkid = link.substring( link.indexOf("#") + 1 );
+            var dest = $("#" + linkid );
+            var yoffset = dest.offset();
+            window.scrollTo( 0, yoffset.top - toolbar_height - 20 );
+        });
+
+    });
+
+    function selectTab( tablink ){
+        $(".toolbar-tabs li").removeClass("selected");
+        tablink.parent().addClass("selected");
+        var tabid = tablink.data("tabid");
+        $('#addbibliotabs').selectTabByID("#tab" + tabid + "XX");
+        $(".tag_anchors").removeClass("tab_selected").hide();
+        $(".tag_anchors_" + tabid ).addClass("tab_selected").show();
     }
-}
-
-function Dopop(link,i) {
-    defaultvalue = document.getElementById(i).value;
-    window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
-}
-
-/**
- * this function open a popup to search on z3950 server.
- */
-function PopupZ3950() {
-    var strQuery = GetZ3950Terms();
-       if(strQuery){
-        window.open("/cgi-bin/koha/cataloguing/z3950_search.pl?biblionumber=[% biblionumber %]"+strQuery,"z3950search",'width=740,height=450,location=yes,toolbar=no,scrollbars=yes,resize=yes');
-    } 
-}
-
-function PopupMARCFieldDoc(field, blocknumber) {
-    [% IF ( MARC21 ) %]
-        _MARC21FieldDoc(field);
-    [% ELSE %]
-        _UNIMARCFieldDoc(field, blocknumber);
+
+    function redirect(dest){
+        $("#redirect").attr("value",dest);
+        return Check();
+    }
+
+    [% IF ( CAN_user_editcatalogue_edit_items ) %]
+        var onOption = function () {
+            return Check();
+        }
     [% END %]
-}
-
-function _MARC21FieldDoc(field) {
-    if(field == 0) {
-        window.open("http://www.loc.gov/marc/bibliographic/bdleader.html");
-    } else if (field < 900) {
-        window.open("http://www.loc.gov/marc/bibliographic/bd" + ("000"+field).slice(-3) + ".html");
-    } else {
-        window.open("http://www.loc.gov/marc/bibliographic/bd9xx.html");
+
+    function confirmnotdup(redirect){
+        $("#confirm_not_duplicate").attr("value","1");
+        $("#redirect").attr("value",redirect);
+        Check();
     }
-}
-
-function _UNIMARCFieldDoc(field, blocknumber) {
-    /* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but
-       seems to be the only version available that can be linked to per tag.  More recent
-       versions of the UNIMARC standard are available on the IFLA website only as
-       PDFs!
-    */
-    if(field == 0) {
-        window.open("http://archive.ifla.org/VI/3/p1996-1/uni.htm");
-    } else if (field < 100) {
-        window.open("http://archive.ifla.org/VI/3/p1996-1/uni"+blocknumber+".htm#b" + ("000"+field).slice(-3));
-    } else if (field < 900) {
-        window.open("http://archive.ifla.org/VI/3/p1996-1/uni"+blocknumber+".htm#" + ("000"+field).slice(-3));
-    } else {
-        window.open("http://archive.ifla.org/VI/3/p1996-1/uni9.htm");
+
+    function Dopop(link,i) {
+        defaultvalue = document.getElementById(i).value;
+        window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
     }
-}
-
-/*
- * Functions to hide/show marc docs links
- */
-function hideMARCdocLinks() {
-       $(".marcdocs").hide();
-       $.cookie("marcdocs_[% borrowernumber %]",'false', { path: "/", expires: 365 });
-}
-
-function showMARCdocLinks() {
-       $(".marcdocs").show();
-       $.cookie("marcdocs_[% borrowernumber %]",'true', { path: "/", expires: 365 });
-}
-
-/**
- * check if mandatory subfields are written
- */
-function AreMandatoriesNotOk(){
-    var mandatories = new Array();
-    var mandatoriesfields = new Array();
-    var tab = new Array();
-    var label = new Array();
-    var flag=0;
-    var tabflag= new Array();  
-    [% FOREACH BIG_LOO IN BIG_LOOP %]
-       [% FOREACH innerloo IN BIG_LOO.innerloop %]
-               [% IF ( innerloo.mandatory ) %]
-               mandatoriesfields.push(new Array("[% innerloo.tag %]","[% innerloo.index %][% innerloo.random %]","[% innerloo.index %]"));
-               [% END %]
-               [% FOREACH subfield_loo IN innerloo.subfield_loop %]
-                       [% IF ( subfield_loo.mandatory ) %]mandatories.push("[% subfield_loo.id %]");
-                       tab.push("[% BIG_LOO.number %]");
-                       label.push("[% subfield_loo.marc_lib %]");
-                [% END %]
-            [% END %]
-        [% END %]
-    [% END %]
-    var StrAlert = _("Can't save this record because the following field aren't filled:");
-    StrAlert += "\n\n";
-    for(var i=0,len=mandatories.length; i<len ; i++){
-        var tag=mandatories[i].substr(4,3);
-        var subfield=mandatories[i].substr(17,1);
-        var tagnumber=mandatories[i].substr(19,mandatories[i].lastIndexOf("_")-19);
-        if (tabflag[tag+subfield+tagnumber] ==  null) { 
-           tabflag[tag+subfield+tagnumber]=new Array();
-            tabflag[tag+subfield+tagnumber][0]=0; 
-       }
-        if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(mandatories[i]) != null && ! document.getElementById(mandatories[i]).value || document.getElementById(mandatories[i]) == null)){
-            tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
-            document.getElementById(mandatories[i]).setAttribute('class','subfield_not_filled');
-            $('#' + mandatories[i]).focus();
-            tabflag[tag+subfield+tagnumber][1]=label[i];
-            tabflag[tag+subfield+tagnumber][2]=tab[i];
-        } else {
-            tabflag[tag+subfield+tagnumber][0] = 1;
-        }    
+
+    /**
+     * this function open a popup to search on z3950 server.
+     */
+    function PopupZ3950() {
+        var strQuery = GetZ3950Terms();
+        if(strQuery){
+            window.open("/cgi-bin/koha/cataloguing/z3950_search.pl?biblionumber=[% biblionumber | html %]"+strQuery,"z3950search",'width=740,height=450,location=yes,toolbar=no,scrollbars=yes,resize=yes');
+        }
     }
-    for (var tagsubfieldid in tabflag){
-      if (tabflag[tagsubfieldid][0]==0){
-        var tag=tagsubfieldid.substr(0,3);
-        var subfield=tagsubfieldid.substr(3,1);    
-        StrAlert += "\t* "+_("tag ")+tag+_(" subfield ")+subfield+" "+tabflag[tagsubfieldid][1]+_(" in tab ")+tabflag[tagsubfieldid][2]+"\n";
-        //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n"; 
-        flag=1;    
-      }   
-    }   
-    
-    /* Check for mandatories field(not subfields) */
-    for(var i=0,len=mandatoriesfields.length; i<len; i++){
-           isempty  = true;
-               arr      = mandatoriesfields[i];
-       divid    = "tag_" + arr[0] + "_" + arr[1];
-       varegexp = new RegExp("^tag_" + arr[0] + "_code_");
-       
-               if(parseInt(arr[0]) >= 10){
-               elem = document.getElementById(divid);
-               eleminputs = elem.getElementsByTagName('input');
-               
-               for(var j=0,len2=eleminputs.length; j<len2; j++){
-       
-                       if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
-                                       inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
-                                       
-                                       for( var k=0; k<len2; k++){
-                                               if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
-                                                       isempty = false
-                                               }
-                                       }
-                                       
-                                       elemselect = elem.getElementsByTagName('select');
-                                       for( var k=0; k<elemselect.length; k++){
-                                               if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
-                                                       isempty = false
-                                               }
-                                       }
-                       }
-               }
-
-               elemtextareas = elem.getElementsByTagName('textarea');
-               for(var j=0,len2=elemtextareas.length; j<len2; j++){
-                // this bit assumes that the only textareas in this context would be for subfields
-                if (elemtextareas[j].value) {
-                    isempty = false;
-                }
-            }
-       }else{
-               isempty = false;
-       }
-       
-       if(isempty){
-               flag = 1;
-               StrAlert += _("\t* Field ") + arr[0] + _(" is mandatory, at least one of its subfields must be filled.") + "\n";
-       }
-       
+
+    function PopupMARCFieldDoc(field) {
+        [% IF Koha.Preference('marcfielddocurl') %]
+            var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','&quot;') | html %]";
+            docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
+            docurl = docurl.replace("{FIELD}", ""+field);
+            docurl = docurl.replace("{LANG}", "[% lang | html %]");
+            window.open(docurl);
+        [% ELSIF ( marcflavour == 'MARC21' ) %]
+            _MARC21FieldDoc(field);
+        [% ELSIF ( marcflavour == 'UNIMARC' ) %]
+            _UNIMARCFieldDoc(field);
+        [% END %]
     }
-    
-    if(flag){
-           return StrAlert;
-       } else {
-               return flag;
-       }
-}
-
-/** 
- * check if z3950 mandatories are set or not
- */
-function GetZ3950Terms(){
- var strQuery="&frameworkcode="+document.forms['f'].frameworkcode.value;
-    var mandatories = new Array();
-    var mandatories_label = new Array();
-    [% FOREACH BIG_LOO IN BIG_LOOP %][% FOREACH innerloo IN BIG_LOO.innerloop %][% FOREACH subfield_loo IN innerloo.subfield_loop %][% IF ( subfield_loo.z3950_mandatory ) %]mandatories.push("[% subfield_loo.id %]");
-        mandatories_label.push("[% subfield_loo.z3950_mandatory %]");[% END %][% END %][% END %][% END %]
-    
-    for(var i=0,len=mandatories.length; i<len ; i++){
-        var field_value = document.getElementById(mandatories[i]).value;
-        if( field_value ){
-            strQuery += "&"+mandatories_label[i]+"="+field_value;
+
+    function _MARC21FieldDoc(field) {
+        if(field == 0) {
+            window.open("http://www.loc.gov/marc/bibliographic/bdleader.html");
+        } else if (field < 900) {
+            window.open("http://www.loc.gov/marc/bibliographic/bd" + ("000"+field).slice(-3) + ".html");
+        } else {
+            window.open("http://www.loc.gov/marc/bibliographic/bd9xx.html");
         }
     }
-    return strQuery;
-}
-
-function Changefwk(FwkList) {
-       var fwk = FwkList.options[FwkList.selectedIndex].value;
-       window.location = "/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% biblionumberdata %]&op=[% op %]&breedingid=[% breedingid %]&mode=[% popup %]&frameworkcode="+fwk;
-
-}
-
-// returns the subfieldcode based upon subfieldid writing
-function getSubfieldcode(tagsubfieldid){
-    // 3 : tag +3 : tagnumber +4 : number of _ +8 subfield -1 begins at 0  
-    return tagsubfieldid.substr(3+3+4+8-1,1);
-}
-
-// Take the base of tagsubfield information (removing the subfieldcodes and subfieldindexes)
-// returns the filter
-function getTagInputnameFilter(tagsubfieldid){
-    var tagsubfield=tagsubfieldid.substr(0,tagsubfieldid.lastIndexOf("_"));  
-    var tagcode=tagsubfield.substr(tagsubfield.lastIndexOf("_"));
-    tagsubfield=tagsubfield.substr(0,tagsubfield.lastIndexOf("_"));
-    tagsubfield=tagsubfield.substr(0,tagsubfield.lastIndexOf("_"));
-    tagsubfield=tagsubfield+"_."+tagcode;
-    return tagsubfield;  
-}
-
-function openAuth(tagsubfieldid,authtype) {
-    // let's take the base of tagsubfield information (removing the indexes and the codes
-    var element=document.getElementById(tagsubfieldid);
-    var tagsubfield=getTagInputnameFilter(tagsubfieldid);
-    var elementsubfcode=getSubfieldcode(element.name);
-    var mainmainstring=element.value;
-    var mainstring="";  
-    var inputs = element.parentNode.parentNode.getElementsByTagName("input");
-
-    for (var myindex =0; myindex<inputs.length;myindex++){
-        if (inputs[myindex].name && inputs[myindex].name.match(tagsubfield)){
-            var subfieldcode=getSubfieldcode(inputs[myindex].name);
-            if (isNaN(parseInt(subfieldcode)) && inputs[myindex].value != "" && subfieldcode!=elementsubfcode){
-                mainstring=inputs[myindex].value+" "+mainstring;
-            }      
+
+    function _UNIMARCFieldDoc(field) {
+        /* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but
+           seems to be the only version available that can be linked to per tag.  More recent
+           versions of the UNIMARC standard are available on the IFLA website only as
+           PDFs!
+        */
+        var url;
+        if (field == 0) {
+            url = "http://archive.ifla.org/VI/3/p1996-1/uni.htm";
+        } else {
+            var first = field.substring(0,1);
+            url = "http://archive.ifla.org/VI/3/p1996-1/uni" + first + ".htm#";
+            if (first == 0) url = url + "b";
+            url = first == 9
+                  ? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm"
+                  : url + field;
         }
-    }           
-       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');
-}
-
-
-function ExpandField(index) {
-    var original = document.getElementById(index); //original <div>
-    var divs = original.getElementsByTagName('div');
-    for(var i=0,divslen = divs.length ; i<divslen ; i++){      // foreach div
-        if(divs[i].getAttribute('id').match(/^subfield/)){  // if it s a subfield
-            if (divs[i].style.display == 'block') {
-                divs[i].style.display = 'none';
-            } else {
-                divs[i].style.display = 'block';
-            }
+        window.open(url);
+    }
+
+    /*
+     * Functions to hide/show marc docs and tags links
+     */
+
+    function toggleMARCdocLinks(flag){
+        if( flag === true ){
+            $(".marcdocs").show();
+            $.cookie("marcdocs_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
+            $("#marcDocsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
+        } else {
+            $(".marcdocs").hide();
+            $.cookie("marcdocs_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
+            $("#marcDocsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
         }
     }
-}
-
-/**
- * To clone a field or a subfield by clicking on '+' button
- */ 
-function CloneField(index) {
-    var original = document.getElementById(index); //original <div>
-    fields_in_use[index.substr(0, 7)]++;
-    var clone = original.cloneNode(true);
-    var new_key = CreateKey();
-    var new_id  = original.getAttribute('id')+new_key;
-    
-    clone.setAttribute('id',new_id); // setting a new id for the parent div
-    
-    var divs = clone.getElementsByTagName('div');
-    
-    [% UNLESS ( hide_marc ) %] // No indicator if hide_marc
-        // setting a new name for the new indicator
-        for(var i=0; i < 2; i++) {
-            var indicator = clone.getElementsByTagName('input')[i];
-            indicator.setAttribute('name',indicator.getAttribute('name')+new_key);
+
+    function toggleMARCTagLinks(flag){
+        if( flag === true ){
+            $(".tagnum").show();
+            $(".subfieldcode").show();
+            $.cookie("marctags_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
+            $("#marcTagsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
+        } else {
+            $(".tagnum").hide();
+            $(".subfieldcode").hide();
+            $.cookie("marctags_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
+            $("#marcTagsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
         }
-    [% END %]
-        
-    // settings all subfields
-    for(var i=0,divslen = divs.length ; i<divslen ; i++){      // foreach div
-        if(divs[i].getAttribute("id").match(/^subfield/)){  // if it s a subfield
-            
-            // set the attribute for the new 'div' subfields
-            divs[i].setAttribute('id',divs[i].getAttribute('id')+new_key);
-            
-            var inputs   = divs[i].getElementsByTagName('input');
-            var id_input = "";
-            
-            for( j = 0 ; j < inputs.length ; j++ ) {
-               if(inputs[j].getAttribute("id") && inputs[j].getAttribute("id").match(/^tag_/) ){
-                       inputs[j].value = "";
-               }
-            }
-            
-            inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
-            inputs[0].setAttribute('name',inputs[0].getAttribute('name')+new_key);
-            var id_input;
-            try {
-               id_input = inputs[1].getAttribute('id')+new_key;
-                inputs[1].setAttribute('id',id_input);
-                inputs[1].setAttribute('name',inputs[1].getAttribute('name')+new_key);
-            } catch(e) {
-               try{ // it s a select if it is not an input
-                    var selects = divs[i].getElementsByTagName('select');
-                    id_input = selects[0].getAttribute('id')+new_key;
-                    selects[0].setAttribute('id',id_input);
-                    selects[0].setAttribute('name',selects[0].getAttribute('name')+new_key);
-                }catch(e2){ // it is a textarea if it s not a select or an input
-                       var textaeras = divs[i].getElementsByTagName('textarea');
-                       id_input = textaeras[0].getAttribute('id')+new_key;
-                       textaeras[0].setAttribute('id',id_input);
-                    textaeras[0].setAttribute('name',textaeras[0].getAttribute('name')+new_key);
-                }
-            }
-            
-            [% UNLESS ( advancedMARCEditor ) %]
-            // when cloning a subfield, re set its label too.
-            var labels = divs[i].getElementsByTagName('label');
-            labels[0].setAttribute('for',id_input);
-            [% END %]
-            
-            [% UNLESS ( hide_marc ) %]
-                // updating javascript parameters on button up
-                var imgs = divs[i].getElementsByTagName('img');
-                imgs[0].setAttribute('onclick',"upSubfield(\'"+divs[i].getAttribute('id')+"\');");
+    }
+
+    /**
+     * check if mandatory subfields are written
+     */
+    function AreMandatoriesNotOk(){
+        var mandatories = new Array();
+        var mandatoriesfields = new Array();
+        var tab = new Array();
+        var label = new Array();
+        var flag=0;
+        var tabflag= new Array();
+        [% FOREACH BIG_LOO IN BIG_LOOP %]
+            [% FOREACH innerloo IN BIG_LOO.innerloop %]
+                [% IF ( innerloo.mandatory ) %]
+                    mandatoriesfields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
+                [% END %]
+                [% FOREACH subfield_loo IN innerloo.subfield_loop %]
+                    [% IF ( subfield_loo.mandatory ) %]mandatories.push("[% subfield_loo.id | html %]");
+                        tab.push("[% BIG_LOO.number | html %]");
+                        label.push("[% subfield_loo.marc_lib | $raw %]");
+                    [% END %]
+                [% END %]
             [% END %]
-            
-            // setting its '+' and '-' buttons
-            try {
-                var anchors = divs[i].getElementsByTagName('a');
-                for (var j = 0; j < anchors.length; j++) {
-                    if(anchors[j].getAttribute('class') == 'buttonPlus'){
-                        anchors[j].setAttribute('onclick',"CloneSubfield('" + divs[i].getAttribute('id') + "')");
-                    } else if (anchors[j].getAttribute('class') == 'buttonMinus') {
-                        anchors[j].setAttribute('onclick',"UnCloneField('" + divs[i].getAttribute('id') + "')");
-                    }
-                }
-            }
-            catch(e){
-                // do nothig if ButtonPlus & CloneButtonPlus don t exist.
+        [% END %]
+        var StrAlert = _("Can't save this record because the following field aren't filled:");
+        StrAlert += "\n\n";
+        for(var i=0,len=mandatories.length; i<len ; i++){
+            var tag=mandatories[i].substr(4,3);
+            var subfield=mandatories[i].substr(17,1);
+            var tagnumber=mandatories[i].substr(19,mandatories[i].lastIndexOf("_")-19);
+            if (tabflag[tag+subfield+tagnumber] ==  null) {
+            tabflag[tag+subfield+tagnumber]=new Array();
+                tabflag[tag+subfield+tagnumber][0]=0;
+        }
+            if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(mandatories[i]) != null && ! document.getElementById(mandatories[i]).value || document.getElementById(mandatories[i]) == null)){
+                tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
+                document.getElementById(mandatories[i]).setAttribute('class','input_marceditor noEnterSubmit subfield_not_filled');
+                $('#' + mandatories[i]).focus();
+                tabflag[tag+subfield+tagnumber][1]=label[i];
+                tabflag[tag+subfield+tagnumber][2]=tab[i];
+            } else {
+                tabflag[tag+subfield+tagnumber][0] = 1;
             }
-            
-            // button ...
-            var spans=0;
-            try {
-                spans = divs[i].getElementsByTagName('a');
-            } catch(e) {
-                // no spans
+        }
+        for (var tagsubfieldid in tabflag){
+            if (tabflag[tagsubfieldid][0]==0){
+                var tag=tagsubfieldid.substr(0,3);
+                var subfield=tagsubfieldid.substr(3,1);
+                StrAlert += "\t* "+_("tag %s subfield %s %s in tab %s").format(tag, subfield, tabflag[tagsubfieldid][1], tabflag[tagsubfieldid][2]) + "\n";
+                //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
+                flag=1;
             }
-            if(spans){
-                var buttonDot;
-                if(!CloneButtonPlus){ // it s impossible to have  + ... (buttonDot AND buttonPlus)
-                    buttonDot = spans[0];
-                    if(buttonDot){
-                        // 2 possibilities :
-                        try{
-                            var buttonDotOnClick = buttonDot.getAttribute('onclick');
-                            if(buttonDotOnClick.match('Clictag')){   // -1- It s a plugin
-                                var re = /\('.*'\)/i;
-                                buttonDotOnClick = buttonDotOnClick.replace(re,"('"+inputs[1].getAttribute('id')+"')");
-                                if(buttonDotOnClick){
-                                    buttonDot.setAttribute('onclick',buttonDotOnClick);
-                                }
-                            } else {
-                                if(buttonDotOnClick.match('Dopop')) {  // -2- It's a auth value
-                                    var re1 = /&index=.*',/;
-                                    var re2 = /,.*\)/;
-
-                                    buttonDotOnClick = buttonDotOnClick.replace(re1,"&index="+inputs[1].getAttribute('id')+"',");
-                                    buttonDotOnClick = buttonDotOnClick.replace(re2,",'"+inputs[1].getAttribute('id')+"')");
-                                    
-                                    if(buttonDotOnClick){
-                                            buttonDot.setAttribute('onclick',buttonDotOnClick);
-                                    }
-                                }
+        }
+
+        /* Check for mandatories field(not subfields) */
+        for(var i=0,len=mandatoriesfields.length; i<len; i++){
+            isempty  = true;
+            arr      = mandatoriesfields[i];
+            divid    = "tag_" + arr[0] + "_" + arr[1];
+            varegexp = new RegExp("^tag_" + arr[0] + "_code_");
+
+            if(parseInt(arr[0]) >= 10){
+                elem = document.getElementById(divid);
+                eleminputs = elem.getElementsByTagName('input');
+
+                for(var j=0,len2=eleminputs.length; j<len2; j++){
+
+                    if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
+                        inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
+
+                        for( var k=0; k<len2; k++){
+                            if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
+                                isempty = false
                             }
-                            try {
-                               // do not copy the script section.
-                               var script = spans[0].getElementsByTagName('script')[0];
-                               spans[0].removeChild(script);
-                            } catch(e) {
-                               // do nothing if there is no script
+                        }
+
+                        elemselect = elem.getElementsByTagName('select');
+                        for( var k=0; k<elemselect.length; k++){
+                            if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
+                                isempty = false
                             }
-                       }catch(e){}
-                       }
-                }
-            }
-            [% UNLESS ( hide_marc ) %]
-                var buttonUp = divs[i].getElementsByTagName('img')[0];
-                buttonUp.setAttribute('onclick',"upSubfield('" + divs[i].getAttribute('id') + "')");
-            [% END %]
-            
-        } else { // it's a indicator div
-            if(divs[i].getAttribute('id').match(/^div_indicator/)){
-                var inputs = divs[i].getElementsByTagName('input');
-                inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
-                inputs[1].setAttribute('id',inputs[1].getAttribute('id')+new_key);
-                
-                var CloneButtonPlus;
-                try {
-                    var anchors = divs[i].getElementsByTagName('a');
-                    for (var j = 0; j < anchors.length; j++) {
-                        if (anchors[j].getAttribute('class') == 'buttonPlus') {
-                            anchors[j].setAttribute('onclick',"CloneField('" + new_id + "')");
-                        } else if (anchors[j].getAttribute('class') == 'buttonMinus') {
-                            anchors[j].setAttribute('onclick',"UnCloneField('" + new_id + "')");
-                        } else if (anchors[j].getAttribute('class') == 'expandfield') {
-                            anchors[j].setAttribute('onclick',"ExpandField('" + new_id + "')");
                         }
                     }
                 }
-                catch(e){
-                    // do nothig CloneButtonPlus doesn't exist.
+
+                elemtextareas = elem.getElementsByTagName('textarea');
+                for(var j=0,len2=elemtextareas.length; j<len2; j++){
+                    // this bit assumes that the only textareas in this context would be for subfields
+                    if (elemtextareas[j].value) {
+                        isempty = false;
+                    }
                 }
+            } else {
+                isempty = false;
+            }
 
+            if(isempty){
+                flag = 1;
+                    StrAlert += "\t* " + _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]) + "\n";
             }
+
+        }
+
+        if(flag){
+            return StrAlert;
+        } else {
+            return flag;
         }
-    }
-    
-    // insert this line on the page
-    original.parentNode.insertBefore(clone,original.nextSibling);
-}
-
-function CloneSubfield(index){
-    var original = document.getElementById(index); //original <div>
-    fields_in_use[index.substr(0, 12)]++;
-    var clone = original.cloneNode(true);
-    var new_key = CreateKey();
-    var new_id  = original.getAttribute('id')+new_key;
-    // set the attribute for the new 'div' subfields
-    var inputs     = clone.getElementsByTagName('input');
-    var selects    = clone.getElementsByTagName('select');
-    var textareas  = clone.getElementsByTagName('textarea');
-    var linkid;
-
-    // input
-    var id_input = "";
-    for(var i=0,len=inputs.length; i<len ; i++ ){
-        id_input = inputs[i].getAttribute('id')+new_key;
-        inputs[i].setAttribute('id',id_input);
-        inputs[i].setAttribute('name',inputs[i].getAttribute('name')+new_key);
-       linkid = id_input;
-    }
-    
-    // select 
-    for(var i=0,len=selects.length; i<len ; i++ ){
-        id_input = selects[i].getAttribute('id')+new_key;
-        selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
-        selects[i].setAttribute('name',selects[i].getAttribute('name')+new_key);
-    }
-    
-    // textarea
-    for(var i=0,len=textareas.length; i<len ; i++ ){
-        id_input = textareas[i].getAttribute('id')+new_key;
-        textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
-        textareas[i].setAttribute('name',textareas[i].getAttribute('name')+new_key);
     }
 
-    // Changing the "..." link's onclick attribute for plugin callback
-    var links  = clone.getElementsByTagName('a');
-    var link = links[0];
-    var buttonDotOnClick = link.getAttribute('onclick');
-    if(buttonDotOnClick.match('Clictag')){   // -1- It s a plugin
-       var re = /\('.*'\)/i;
-        buttonDotOnClick = buttonDotOnClick.replace(re,"('"+linkid+"')");
-        if(buttonDotOnClick){
-           link.setAttribute('onclick',buttonDotOnClick);
+    /**
+     *
+     *
+     */
+    function Check(){
+        var StrAlert = AreMandatoriesNotOk();
+        if( ! StrAlert ){
+            document.f.submit();
+            return true;
+        } else {
+            alert(StrAlert);
+            return false;
         }
     }
 
+    /**
+     * check if z3950 mandatories are set or not
+     */
+    function GetZ3950Terms(){
+        var frameworkcode = document.getElementById("frameworkcode").value;
+        var strQuery = "&frameworkcode=" + frameworkcode;
+        var mandatories = new Array();
+        var mandatories_label = new Array();
+        [% FOREACH BIG_LOO IN BIG_LOOP %]
+            [% FOREACH innerloo IN BIG_LOO.innerloop %]
+                [% FOREACH subfield_loo IN innerloo.subfield_loop %]
+                    [% IF ( subfield_loo.z3950_mandatory ) %]
+                        mandatories.push("[% subfield_loo.id | html %]");
+                        mandatories_label.push("[% subfield_loo.z3950_mandatory | html %]");
+                    [% END %]
+                [% END %]
+            [% END %]
+        [% END %]
 
-    [% UNLESS ( advancedMARCEditor ) %]
-    // when cloning a subfield, reset its label too.
-    var label = clone.getElementsByTagName('label')[0];
-    label.setAttribute('for',id_input);
-    [% END %]
-    
-    // setting a new id for the parent div
-    clone.setAttribute('id',new_id);
-    
-    try {
-        var buttonUp = clone.getElementsByTagName('img')[0];
-        buttonUp.setAttribute('onclick',"upSubfield('" + new_id + "')");
-        var anchors = clone.getElementsByTagName('a');
-        if(anchors.length){
-            for(var i = 0 ,lenanchors = anchors.length ; i < lenanchors ; i++){
-                if(anchors[i].getAttribute('class') == 'buttonPlus'){
-                    anchors[i].setAttribute('onclick',"CloneSubfield('" + new_id + "')");
-                } else if (anchors[i].getAttribute('class') == 'buttonMinus') {
-                    anchors[i].setAttribute('onclick',"UnCloneField('" + new_id + "')");
-                }
+        for(var i=0,len=mandatories.length; i<len ; i++){
+            var field_value = document.getElementById(mandatories[i]).value;
+            if( field_value ){
+                strQuery += "&"+mandatories_label[i]+"="+field_value;
             }
         }
+        return strQuery;
     }
-    catch(e){
-        // do nothig if ButtonPlus & CloneButtonPlus don't exist.
-    }
-    // insert this line on the page
-    original.parentNode.insertBefore(clone,original.nextSibling);
-}
-
- /**
- * This function removes or clears unwanted subfields
- */
-function UnCloneField(index) {
-    var original = document.getElementById(index);
-    var field_id;
-    if (index.match("tag")) {
-        field_id = index.substr(0, 7);
-    } else {
-        field_id = index.substr(0, 12);
-    }
-    if (1 == fields_in_use[field_id]) {
-        // clear inputs, but don't delete
-        $(":input.input_marceditor", original).each(function(){
-            // thanks to http://www.learningjquery.com/2007/08/clearing-form-data for
-            // hint about clearing selects correctly
-            var type = this.type;
-            var tag = this.tagName.toLowerCase();
-            if (type == 'text' || type == 'password' || tag == 'textarea') {
-                this.value = "";
-            } else if (type == 'checkbox' || type == 'radio') {
-                this.checked = false;
-            } else if (tag == 'select') {
-                this.selectedIndex = -1;
-            }
-        });
-        $(":input.indicator", original).val("");
-    } else {
-        original.parentNode.removeChild(original);
-        fields_in_use[field_id]--;
-    }
-}
-
-/**
- * This function create a random number
- */
-function CreateKey(){
-    return parseInt(Math.random() * 100000);
-}
-
-/**
- * This function allows to move a subfield up by clickink on the 'up' button .
- */
-function upSubfield(index) {
-    try{
-        var line = document.getElementById(index); // get the line where the user has clicked.
-    } catch(e) {
-        return; // this line doesn't exist...
-    }
-    var tag = line.parentNode; // get the dad of this line. (should be "<div id='tag_...'>")
-    
-    // getting all subfields for this tag
-    var subfields = tag.getElementsByTagName('div');
-    var subfieldsLength = subfields.length;
-    
-    if(subfieldsLength<=1) return; // nothing to do if there is just one subfield.
-    
-    // among all subfields 
-    for(var i=0;i<subfieldsLength;i++){ 
-        if(subfields[i].getAttribute('id') == index){ //looking for the subfield which is clicked :
-            if(i==1){ // if the clicked subfield is on the top
-                tag.appendChild(subfields[1]);
-                return;
-            } else {
-                var lineAbove = subfields[i-1];
-                tag.insertBefore(line,lineAbove);
-                return;
-            }
-        }
+
+    function Changefwk() {
+        var f = document.f;
+        f.op.value = "[% op | html %]";
+        f.biblionumber.value = "[% biblionumberdata | html %]";
+        f.changed_framework.value = "changed";
+        f.submit();
     }
-}
-
-function unHideSubfield(index,labelindex) { // FIXME :: is it used ?
-    subfield = document.getElementById(index);
-    subfield.style.display = 'block';
-    label = document.getElementById(labelindex);
-    label.style.display='none';        
-}
-//]]>
-</script>
-<link type="text/css" rel="stylesheet" href="[% themelang %]/css/addbiblio.css" />
-</head>
-<body>
-<div id="yui-cms-loading">
-      <div id="yui-cms-float">
-          Loading, please wait...
-      </div>
-  </div>
-<script type="text/javascript" src="[% themelang %]/lib/yui/plugins/loading-min.js"></script>
-<script type="text/javascript">
-//<![CDATA[
-(function() {
-       // configuring the loading mask
-       YAHOO.widget.Loading.config({
-               opacity: 0.8
-       });
-})();
-//]]>
-</script>
-[% INCLUDE 'header.inc' %]
-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>  &rsaquo; [% IF ( biblionumber ) %]Editing <em>[% title |html %]</em> (Record Number [% biblionumber %])[% ELSE %]Add MARC Record[% END %]</div>
 
-<div id="doc" class="yui-t7">
+</script>
+[% Asset.css("css/addbiblio.css") | $raw %]
 
-<div id="bd">
-        <div id="yui-main">
-        <div class="yui-g">
+[% INCLUDE 'select2.inc' %]
+<script>
+  $(document).ready(function() {
+    $('.subfield_line select').select2();
+  });
+</script>
 
+</head>
+<body id="cat_addbiblio" class="cat">
 
+   <div id="loading">
+       <div>Loading, please wait...</div>
+   </div>
 
-<h1>[% IF ( biblionumber ) %]Editing <em>[% title |html %]</em> (Record Number [% biblionumber %])</h1>[% ELSE %]Add MARC Record</h1>[% END %]
-<div><input type="checkbox" name="marcDocsSelect" id="marcDocsSelect" checked="true" /> Show MARC tag documentation links<br/></div>
+    [% INCLUDE 'header.inc' %]
 
-[% UNLESS ( number ) %]
-    <!-- show duplicate warning on tab 0 only -->
-        [% IF ( duplicatebiblionumber ) %]
-                    <div class="dialog alert">
-                        <h4>Duplicate Record suspected</h4>
-                        <p>Is this a duplicate of <a href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% duplicatebiblionumber %]" onclick="openWindow('../MARCdetail.pl?biblionumber=[% duplicatebiblionumber %]&amp;popup=1', 'Duplicate biblio'; return false;)">[% duplicatetitle %]</a>?</p>
-                        [% IF ( CAN_user_editcatalogue_edit_items ) %]<form action="/cgi-bin/koha/cataloguing/additem.pl" method="get">
-                                                    <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber %]" />
-                                                    <input type="submit" class="edit" value="Yes: Edit existing items" />
-                                                </form>[% ELSE %]<form action="/cgi-bin/koha/catalogue/detail.pl" method="get">
-                                                    <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber %]" />
-                                                    <input type="submit" value="Yes: View existing items" />
-                                                </form>[% END %]
-                        <form action="/cgi-bin/koha/cataloguing/addbiblio.pl" method="get">
-                        [% IF ( CAN_user_editcatalogue_edit_items ) %]<input type="button" class="save" onclick="confirmnotdup('items'); return false;" value="No: Save as New Record" />[% ELSE %]<input type="button" class="save" onclick="confirmnotdup('view'); return false;" value="No: Save as New Record" />[% END %]
-                        </form>
-                    </div>
+    <div id="breadcrumbs">
+        <a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo;
+        <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>  &rsaquo;
+        [% IF ( biblionumber ) %]
+            Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
+        [% ELSE %]
+            Add MARC record
         [% END %]
-    [% END %]
-
-[% IF ( done ) %]
-    <script type="text/javascript">
-        opener.document.forms['f'].biblionumber.value=[% biblionumber %];
-        opener.document.forms['f'].title.value='[% title |html %]';
-        window.close();
-    </script>
-[% ELSE %]
-    <form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
-    <input type="hidden" value="[% IF ( biblionumber ) %]view[% ELSE %]items[% END %]" id="redirect" name="redirect" />
-       <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
-[% END %]
-       
-<div id="toolbar">
-
-<script type="text/javascript">
-       //<![CDATA[
-
-       // prepare DOM for YUI Toolbar
-
-        $(document).ready(function() {
-               $("#z3950searchc").empty();
-        $("#savebutton").empty();
-           yuiToolbar();
-
-        $("#marcDocsSelect").click(function(){
-            if($(this).attr("checked")){
-                showMARCdocLinks();
-            } else {
-                hideMARCdocLinks();
-            }
-        });
-        });
+    </div>
 
-    function redirect(dest){
-        $("#redirect").attr("value",dest);
-        return Check();
-    }
-[% IF ( CAN_user_editcatalogue_edit_items ) %]
-    var onOption = function () {
-        return Check();
-    }
+    <div class="main container-fluid">
+        <div class="row">
+            <div class="col-md-10 col-md-offset-1">
 
-    var savemenu = [
-        { text: _("Save and view record"), value: 1, onclick: {fn:function(){redirect("view");}} },
-        { text: _("Save and edit items"), value: 2, onclick: {fn:function(){redirect("items");}} }
-    ];
-[% END %]
-
-       // YUI Toolbar Functions
-
-       function yuiToolbar() {
-[% IF ( CAN_user_editcatalogue_edit_items ) %]
-        var savesplitmenu = new YAHOO.widget.Button({
-            type: "split",
-            label: _("Save"),
-            id: "addbiblio",
-            name: "savemenubutton",
-            menu: savemenu,
-            container: "savebutton"
-         });
-
-        savesplitmenu.on("click", onOption); 
-[% ELSE %]
-        new YAHOO.widget.Button({
-            id: "addbiblio",
-            type: "button",
-            label: _("Save"),
-            container: "savebutton",
-            onclick: {fn:function(){redirect("view");}}
-        });
-[% END %]
-               new YAHOO.widget.Button({
-            id: "z3950search",
-            type: "button",
-            label: _("Z39.50 Search"),
-            container: "z3950searchc",
-                       onclick: {fn:function(){PopupZ3950()}}
-        });
-       }
-
-       //]]>
-       </script>
-
-               <ul class="toolbar">
-                       <li id="savebutton"><input id="addbiblio" type="submit" value="Save" /></li>
-                       <li id="z3950searchc"><input type="button" id="z3950search" value="Z39.50 Search" onclick="PopupZ3950(); return false;" /></li>
-                       <li id="changeframework"><label for="Frameworks">Change framework: </label>
-                       <select name="Frameworks" id="Frameworks" onchange="Changefwk(this);">
-                                       <option value="Default">Default</option>
-                                                       [% FOREACH frameworkcodeloo IN frameworkcodeloop %]                                             
-                                <option value="[% frameworkcodeloo.value %]" [% frameworkcodeloo.selected %]>
-                                                    [% frameworkcodeloo.frameworktext %]                                      
-                                 </option>                          
-                                               [% END %]
-                       </select> 
-<input type="hidden" name="op" value="addbiblio" /></li>
-               </ul>
-</div>
-
-[% IF ( popup ) %]
-        <input type="hidden" name="mode" value="popup" />
-[% END %]
-        <input type="hidden" name="frameworkcode" value="[% frameworkcode %]" />
-        <input type="hidden" name="biblionumber" value="[% biblionumber %]" />
-        <input type="hidden" name="breedingid" value="[% breedingid %]" />
-
-<div id="addbibliotabs" class="toptabs numbered">
-       <ul>[% FOREACH BIG_LOO IN BIG_LOOP %]
-          <li>  [% IF ( BIG_LOO.number ) %]
-                <a href="/cgi-bin/koha/cataloguing/addbiblio.pl#tab[% BIG_LOO.number %]XX">[% BIG_LOO.number %]</a>
-            [% ELSE %]
-                <a href="/cgi-bin/koha/cataloguing/addbiblio.pl#tab[% BIG_LOO.number %]XX">[% BIG_LOO.number %]</a>
-            [% END %]</li>
-        [% END %]</ul>
-
-[% FOREACH BIG_LOO IN BIG_LOOP %]
-<!-- hide every tab except the 1st -->
-[% IF ( BIG_LOO.number ) %]
-    <div id="tab[% BIG_LOO.number %]XX">
-[% ELSE %]
-    <div id="tab[% BIG_LOO.number %]XX">
-[% END %]
-
-    
-    [% FOREACH innerloo IN BIG_LOO.innerloop %]
-        [% IF ( innerloo.tag ) %]
-       <div class="tag" id="tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]">
-        <div class="tag_title" id="div_indicator_tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]">
-            [% UNLESS ( innerloo.hide_marc ) %]
-               [% IF advancedMARCEditor %]
-               <a href="#" tabindex="1" class="tagnum" title="[% innerloo.tag_lib %] - Click to Expand this Tag" onclick="ExpandField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;">[% innerloo.tag %]</a>
-               [% ELSE %]
-                        <span class="tagnum" title="[% innerloo.tag_lib %]">[% innerloo.tag %]<a class="marcdocs"
-                 onclick="PopupMARCFieldDoc('[% innerloo.tag %]', [% BIG_LOO.number %]); return false;">&nbsp;?</a></span>
-               [% END %]
-                [% IF ( innerloo.fixedfield ) %]
-                       <input tabindex="1" class="indicator flat" type="text" style="display:none;" name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]" size="1" maxlength="1" value="[% innerloo.indicator1 %]" />
-                       <input tabindex="1" class="indicator flat" type="text" style="display:none;" name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]" size="1" maxlength="1" value="[% innerloo.indicator2 %]" />
-                [% ELSE %]
-                       <input tabindex="1" class="indicator flat" type="text" name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]" size="1" maxlength="1" value="[% innerloo.indicator1 %]" />
-                       <input tabindex="1" class="indicator flat" type="text" name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]" size="1" maxlength="1" value="[% innerloo.indicator2 %]" />
-                [% END %] -
-            [% ELSE %]
-                [% IF ( innerloo.fixedfield ) %]
-                    <input tabindex="1" type="hidden" name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]" value="[% innerloo.indicator1 %]" />
-                    <input tabindex="1" type="hidden" name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]" value="[% innerloo.indicator2 %]" />
+                <h1>
+                    [% IF ( biblionumber ) %]
+                        Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
+                    [% ELSE %]
+                        Add MARC record [% IF (circborrowernumber) %]<em>(fast cataloging)</em>[% END %]
+                    [% END %]
+                </h1>
+
+                [% UNLESS ( number ) %]
+                    <!-- show duplicate warning on tab 0 only -->
+                    [% IF ( duplicatebiblionumber ) %]
+                        <div class="dialog alert">
+                            <h3>Duplicate record suspected</h3>
+                            <p>Is this a duplicate of <a class="popup" href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% duplicatebiblionumber | html %]" onclick="openWindow('/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% duplicatebiblionumber | html %]&amp;popup=1', 'DuplicateBiblio','800','600'); return false;">[% duplicatetitle | html %]</a> ?</p>
+                            [% IF ( CAN_user_editcatalogue_edit_items ) %]
+                                <form action="/cgi-bin/koha/cataloguing/additem.pl" method="get">
+                                    <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
+                                    <button type="submit" class="new"><i class="fa fa-fw fa-pencil"></i> Yes, edit existing items</button>
+                                </form>
+                            [% ELSE %]
+                                <form action="/cgi-bin/koha/catalogue/detail.pl" method="get">
+                                    <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
+                                    <input type="submit" value="Yes: View existing items" />
+                                </form>
+                            [% END %]
+                            <form action="/cgi-bin/koha/cataloguing/addbiblio.pl" method="get">
+                                [% IF ( CAN_user_editcatalogue_edit_items ) %]
+                                    <button type="submit" class="new" onclick="confirmnotdup('items'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
+                                [% ELSE %]
+                                    <button type="submit" class="new" onclick="confirmnotdup('view'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
+                                [% END %]
+                            </form>
+                        </div> <!-- /.dialog.alert -->
+                    [% END # /IF duplicatebiblionumber %]
+                [% END # /UNLESS number %]
+
+                [% IF ( done ) %]
+                    <script>
+                        opener.document.forms['f'].biblionumber.value=[% biblionumber | html %];
+                        opener.document.forms['f'].title.value='[% title | html %]';
+                        window.close();
+                    </script>
                 [% ELSE %]
-                    <input tabindex="1" type="hidden" name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]" value="[% innerloo.indicator1 %]" />
-                    <input tabindex="1" type="hidden" name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]" value="[% innerloo.indicator2 %]" />
+                    <form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
+                        <input type="hidden" value="[% IF ( biblionumber ) %]view[% ELSE %]items[% END %]" id="redirect" name="redirect" />
+                        <input type="hidden" value="" id="current_tab" name="current_tab" />
+                        <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
                 [% END %]
-            [% END %]
 
-            [% UNLESS advancedMARCEditor %]
-                   <a href="#" tabindex="1" class="expandfield" onclick="ExpandField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;" title="Click to Expand this Tag">[% innerloo.tag_lib %]</a>
-            [% END %]
-            [% IF ( innerloo.repeatable ) %]
-                <span class="subfield_controls"><a href="#" tabindex="1" class="buttonPlus" onclick="CloneField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;" title="Repeat this Tag"><img src="/intranet-tmpl/prog/img/repeat-tag.png" alt="Repeat this Tag" /></a>
-            [% END %]
-                <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;" title="Delete this Tag"><img src="/intranet-tmpl/prog/img/delete-tag.png" alt="Delete this Tag" /></a></span>
-
-            
-        </div>
-       
-        [% FOREACH subfield_loo IN innerloo.subfield_loop %]
-            <!--  One line on the marc editor -->
-            <div class="subfield_line" style="[% subfield_loo.visibility %]; float: left; clear: left; width: 100%;" id="subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]">
-            
-                [% UNLESS advancedMARCEditor %]
-                    <label for="tag_[% subfield_loo.tag %]_subfield_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" [% IF ( subfield_loo.fixedfield ) %] style="display:none;" [% END %] class="labelsubfield">
-                [% END %] 
-                
-                [% UNLESS ( subfield_loo.hide_marc ) %]
-                <span class="subfieldcode">[% IF ( subfield_loo.fixedfield ) %] 
-                        <img class="buttonUp" style="display:none;" src="[% themelang %]/../img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]')" alt="Move Up" title="Move Up" />
+                <div id="toolbar" class="btn-toolbar">
+                    [% IF CAN_user_editcatalogue_edit_items or ( frameworkcode == 'FA' and CAN_user_editcatalogue_fast_cataloging ) %]
+                        [% IF (circborrowernumber) %][%# fast cataloging must lead to items %]
+                            <!-- Action is under fast cataloging - Save button redirecting to items -->
+                            <div class="btn-group"><a href="#" id="saveanditems" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
+                        [% ELSE %]
+                            <!-- Not using fast cataloging - Display split menu -->
+                            <div class="btn-group">
+                                <button class="btn btn-default" id="saverecord"><i class="fa fa-save"></i> Save</button>
+                                <button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+                                <span class="caret"></span>
+                                </button>
+                                <ul class="dropdown-menu">
+                                    <li><a id="saveandview" href="#">Save and view record</a></li>
+                                    <li><a id="saveanditems" href="#">Save and edit items</a></li>
+                                    <li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
+                                </ul>
+                            </div>
+                        [% END %]
                     [% ELSE %]
-                        <img class="buttonUp" src="[% themelang %]/../img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]')" alt="Move Up" title="Move Up" />
+                        <!-- User cannot edit items - single button redirecting to view -->
+                        <div class="btn-group"><a href="#" id="saveandview" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
+                    [% END # /IF CAN_user_editcatalogue_edit_items %]
+
+                    [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
+                        <div class="btn-group"><a class="btn btn-default" href="#" id="z3950search"><i class="fa fa-search"></i> Z39.50/SRU search</a></div>
                     [% END %]
-                        <input title="[% subfield_loo.marc_lib_plain %]" style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;" type="text" tabindex="0" name="tag_[% subfield_loo.tag %]_code_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" value="[% subfield_loo.subfield %]" size="1" maxlength="1" class="flat" />
- </span>
-                [% ELSE %]
-                    <input type="hidden" name="tag_[% subfield_loo.tag %]_code_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" value="[% subfield_loo.subfield %]" />
- </span>
-                [% END %]
-            
-                [% UNLESS advancedMARCEditor %]
-                    [% IF ( subfield_loo.mandatory ) %]<span class="subfield subfield_mandatory">[% ELSE %]<span class="subfield">[% END %]
-                        [% subfield_loo.marc_lib_plain %]
-                        [% IF ( subfield_loo.mandatory ) %]<span class="mandatory_marker" title="This field is mandatory">*</span>[% END %]
-                    </span>
-                    </label>
-                [% END %]
-                
-                [% subfield_loo.marc_value %]
-                
-                [% IF ( subfield_loo.repeatable ) %]
-                    <span class="subfield_controls"><a href="#" class="buttonPlus" tabindex="1" onclick="CloneSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]'); return false;"><img src="/intranet-tmpl/prog/img/clone-subfield.png" alt="Clone" title="Clone this subfield" /></a>
-                                        <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]'); return false;"><img src="/intranet-tmpl/prog/img/delete-subfield.png" alt="Delete" title="Delete this subfield" /></a></span>
+
+                    <div class="btn-group">
+                        <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-cog"></i> Settings <span class="caret"></span></button>
+                        <ul id="settings-menu" class="dropdown-menu">
+                            [% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 && CAN_user_editcatalogue_advanced_editor %]
+                                <li><a href="#" id="switcheditor">Switch to advanced editor</a></li>
+                            [% END %]
+                            [% IF marcflavour != 'NORMARC' AND NOT advancedMARCEditor %]
+                                <li>
+                                    <a href="#" id="marcDocsSelect"><i class="fa fa-check-square-o"></i> Show MARC tag documentation links</a>
+                                <li>
+                                    <a href="#" id="marcTagsSelect"><i class="fa fa-check-square-o"></i> Show tags</a>
+                                </li>
+                            [% END %]
+                            <li class="divider"></li>
+                            <li class="nav-header">Change framework</li>
+                            <li>
+                                <a href="#" class="change-framework" data-frameworkcode="">
+                                    [% IF ( frameworkcode ) %]
+                                       <i class="fa fa-fw">&nbsp;</i>
+                                    [% ELSE %]
+                                        <i class="fa fa-fw fa-check"></i>
+                                    [% END %]
+                                    Default
+                                </a>
+                            </li>
+                            [% FOREACH framework IN frameworks%]
+                                <li>
+                                    <a href="#" class="change-framework" data-frameworkcode="[% framework.frameworkcode | html %]">
+                                        [% IF framework.frameworkcode == frameworkcode %]
+                                            <i class="fa fa-fw fa-check"></i>
+                                        [% ELSE %]
+                                            <i class="fa fa-fw">&nbsp;</i>
+                                        [% END %]
+                                        [% framework.frameworktext | html %]
+                                    </a>
+                                </li>
+                            [% END %]
+                        </ul> <!-- /#settings-menu -->
+                    </div> <!-- /.btn-group -->
+                    [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
+                        [% IF (biblionumber) %]
+                            [% IF ( BiblioDefaultViewmarc ) %]
+                                <div class="btn-group">
+                                    <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
+                                </div>
+                            [% ELSIF ( BiblioDefaultViewlabeled_marc ) %]
+                                <div class="btn-group">
+                                    <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
+                                </div>
+                            [% ELSIF ( BiblioDefaultViewisbd ) %]
+                                <div class="btn-group">
+                                    <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
+                                </div>
+                            [% ELSE %]
+                                <div class="btn-group">
+                                    <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
+                                </div>
+                            [% END %]
+                        [% ELSE %]
+                            <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/cataloguing/addbooks.pl">Cancel</a>
+                        [% END %]
+                    [% END # /UNLESS circborrowernumber %]
+                    <div class="toolbar-tabs-container">
+                        [% IF ( BIG_LOOP.size > 1 ) %]
+                            <ul class="toolbar-tabs">
+                                [%- FOREACH BIG_LOO IN BIG_LOOP -%]
+                                    [% IF loop.first %]
+                                        <li class="selected">
+                                    [% ELSE %]
+                                        <li>
+                                    [% END %]
+                                        <a data-tabid="[% BIG_LOO.number | html %]" href="#tab[% BIG_LOO.number | html %]XX">[% BIG_LOO.number | html %]</a>
+                                    </li>
+                                [%- END -%]
+                            </ul>
+                        [% END %]
+                        <ul class="tag_anchors_list">
+                            [% FOREACH BIG_LOO IN BIG_LOOP %]
+                                [% IF loop.first %][% SET tab_selected = "tab_selected" %][% ELSE %][% SET tab_selected = "" %][% END %]
+                                [% FOREACH innerloo IN BIG_LOO.innerloop %]
+                                    [% IF ( innerloo.tag ) %]
+                                        <li class="tag_anchors tag_anchors_[% BIG_LOO.number | html %] [% tab_selected | html %]">
+                                            <a class="tag_anchor" id="tag_anchor_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]" title="tag_anchor_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]" href="#div_indicator_tag_[% innerloo.tag | uri %]_[% innerloo.index | uri %][% innerloo.random | uri %]">[% innerloo.tag | uri %]</a>
+                                        </li>
+                                    [% END %]
+                                [% END %]
+                            [% END %]
+                        </ul>
+                    </div>
+                </div> <!-- /#toolbar.btn-toolbar -->
+
+                [% IF bib_doesnt_exist %]
+                    <div class="dialog alert">
+                        The record you are trying to edit doesn't exist.<br>
+                        <a href="/cgi-bin/koha/cataloguing/addbiblio.pl?frameworkcode=">Add a new record</a> or <a href="/cgi-bin/koha/catalogue/search.pl">do a catalog search</a>.
+                    </div>
                 [% END %]
 
-                
-            </div>
-            <!-- End of the line -->
-            
-        [% END %]
-        </div>
-        [% END %]<!-- tag -->
-    [% END %]
-    </div>
-[% END %]
-</div>
-<!-- Fields for fast add cataloguing -->
-<input type="hidden" name="barcode" value="[% barcode %]" />
-<input type="hidden" name="branch" value="[% branch %]" />
-<input type="hidden" name="circborrowernumber" value="[% circborrowernumber %]" />
-<input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
-<input type="hidden" name="duedatespec" value="[% duedatespec %]" />
-<!-- /End of fast add fields -->
-</form>
-
-</div>
-</div>
-</div>
+                [% IF ( popup ) %]
+                        <input type="hidden" name="mode" value="popup" />
+                [% END %]
+                <input type="hidden" name="op" value="addbiblio" />
+                <input type="hidden" id="frameworkcode" name="frameworkcode" value="[% frameworkcode | html %]" />
+                <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
+                <input type="hidden" name="breedingid" value="[% breedingid | html %]" />
+                <input type="hidden" name="changed_framework" value="" />
+
+                <div id="addbibliotabs" class="toptabs numbered">
+                    <ul>
+                        [% FOREACH BIG_LOO IN BIG_LOOP %]
+                            <li><a href="#tab[% BIG_LOO.number | uri %]XX">[% BIG_LOO.number | html %]</a></li>
+                        [% END %]
+                    </ul>
+
+                    [% FOREACH BIG_LOO IN BIG_LOOP %]
+                        <div id="tab[% BIG_LOO.number | html %]XX">
+
+                            [% IF ( BIG_LOOP.size > 1 ) %]
+                                <h3>Section [% BIG_LOO.number | html %]</h3>
+                            [% END %]
+                            [% FOREACH innerloo IN BIG_LOO.innerloop %]
+                                [% IF ( innerloo.tag ) %]
+                                    <div class="tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
+                                        <div class="tag_title" id="div_indicator_tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
+                                            [% IF advancedMARCEditor %]
+                                                <a href="#" tabindex="1" class="tagnum" title="[% innerloo.tag_lib | html %] - Click to Expand this Tag" onclick="ExpandField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;">[% innerloo.tag | html %]</a>
+                                            [% ELSE %]
+                                                <span class="tagnum" title="[% innerloo.tag_lib | html %]">[% innerloo.tag | html %]</span>
+                                                [% IF marcflavour != 'NORMARC' %]<a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag | html %]'); return false;">&nbsp;?</a>[% END %]
+                                            [% END %]
+
+                                            [% IF ( innerloo.fixedfield ) %]
+                                                <input type="text"
+                                                    tabindex="1"
+                                                    class="indicator flat"
+                                                    style="display:none;"
+                                                    name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
+                                                    size="1"
+                                                    maxlength="1"
+                                                    value="[% innerloo.indicator1 | html %]" />
+                                                <input type="text"
+                                                    tabindex="1"
+                                                    class="indicator flat"
+                                                    style="display:none;"
+                                                    name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
+                                                    size="1"
+                                                    maxlength="1"
+                                                    value="[% innerloo.indicator2 | html %]" />
+                                            [% ELSE %]
+                                                <input type="text"
+                                                    tabindex="1"
+                                                    class="indicator flat"
+                                                    name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
+                                                    size="1"
+                                                    maxlength="1"
+                                                    value="[% innerloo.indicator1 | html %]" />
+                                                <input type="text"
+                                                    tabindex="1"
+                                                    class="indicator flat"
+                                                    name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
+                                                    size="1"
+                                                    maxlength="1"
+                                                    value="[% innerloo.indicator2 | html %]" />
+                                            [% END # /IF innerloo.fixedfield %] -
+
+                                            [% UNLESS advancedMARCEditor %]
+                                                <a href="#" tabindex="1" class="expandfield" onclick="ExpandField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;" title="Click to Expand this Tag">[% innerloo.tag_lib | html %]</a>
+                                            [% END %]
+
+                                            <span class="field_controls">
+                                                [% IF ( innerloo.repeatable ) %]
+                                                    <a href="#" tabindex="1" class="buttonPlus" onclick="CloneField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]','0','[% advancedMARCEditor | html %]'); return false;" title="Repeat this Tag">
+                                                        <img src="[% interface | html %]/[% theme | html %]/img/repeat-tag.png" alt="Repeat this Tag" />
+                                                    </a>
+                                                [% END %]
+                                                <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;" title="Delete this Tag">
+                                                    <img src="[% interface | html %]/[% theme | html %]/img/delete-tag.png" alt="Delete this Tag" />
+                                                </a>
+                                            </span> <!-- /.field_controls -->
+                                        </div> <!-- /div.tag_title -->
+
+                                        [% FOREACH subfield_loo IN innerloo.subfield_loop %]
+                                            <!--  One line on the marc editor -->
+                                            <div class="subfield_line" style="[% subfield_loo.visibility | html %]" id="subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]">
+                                                [% UNLESS advancedMARCEditor %]
+                                                    [% IF ( subfield_loo.fixedfield ) %]
+                                                        <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" style="display:none;" class="labelsubfield">
+                                                    [% ELSE %]
+                                                        <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield">
+                                                    [% END %]
+                                                [% END %]
+
+                                                    <span class="subfieldcode">
+                                                        [% IF ( subfield_loo.fixedfield ) %]
+                                                            <img class="buttonUp" style="display:none;" src="[% interface | html %]/[% theme | html %]/img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]')" alt="Move Up" title="Move Up" />
+                                                        [% ELSE %]
+                                                            <img class="buttonUp" src="[% interface | html %]/[% theme | html %]/img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]')" alt="Move Up" title="Move Up" />
+                                                        [% END %]
+                                                            <input type="text"
+                                                                title="[% subfield_loo.marc_lib | $raw %]"
+                                                                style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;"
+                                                                name="tag_[% subfield_loo.tag | html %]_code_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]"
+                                                                value="[% subfield_loo.subfield | html %]"
+                                                                size="1"
+                                                                maxlength="1"
+                                                                class="flat"
+                                                                tabindex="0" />
+                                                    </span>
+
+                                                [% UNLESS advancedMARCEditor %]
+                                                        [% IF ( subfield_loo.mandatory ) %]
+                                                            <span class="subfield subfield_mandatory">
+                                                        [% ELSE %]
+                                                            <span class="subfield">
+                                                        [% END %]
+                                                        [% subfield_loo.marc_lib | $raw %]
+                                                        </span>
+                                                    </label>
+                                                [% END %]
+
+                                                [% SET mv = subfield_loo.marc_value %]
+                                                [% IF ( mv.type == 'text' ) %]
+                                                    [% IF ( mv.readonly == 1 ) %]
+                                                        <input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor readonly" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" readonly="readonly" />
+                                                    [% ELSE %]
+                                                        <input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" />
+                                                    [% END %]
+
+                                                    [% IF ( mv.authtype ) %]
+                                                        <span class="subfield_controls"><a href="#" class="buttonDot tag_editor" onclick="openAuth(this.parentNode.parentNode.getElementsByTagName('input')[1].id,'[%- mv.authtype | html -%]','biblio'); return false;" tabindex="1" title="Tag editor">Tag editor</a></span>
+                                                    [% END %]
+                                                [% ELSIF ( mv.type == 'text_complex' ) %]
+                                                    <input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor framework_plugin" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" />
+                                                    <span class="subfield_controls">
+                                                        [% IF mv.noclick %]
+                                                            <span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span>
+                                                        [% ELSE %]
+                                                            <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a>
+                                                        [% END %]
+                                                    </span>
+                                                    [% mv.javascript | $raw %]
+                                                [% ELSIF ( mv.type == 'hidden' ) %]
+                                                    <input tabindex="1" type="hidden" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" />
+                                                [% ELSIF ( mv.type == 'textarea' ) %]
+                                                    <textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea>
+                                                [% ELSIF ( mv.type == 'select' ) %]
+                                                    <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor" id="[%- mv.id | html -%]">
+                                                    [% FOREACH aval IN mv.values %]
+                                                        [% IF aval == mv.default %]
+                                                        <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option>
+                                                        [% ELSE %]
+                                                        <option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option>
+                                                        [% END %]
+                                                    [% END %]
+                                                    </select>
+                                                [% END  # /IF (mv.type...) %]
+                                                [% IF ( subfield_loo.mandatory ) %]
+                                                    <span class="required">Required</span>
+                                                [% END %]
+                                                <span class="subfield_controls">
+                                                    [% IF ( subfield_loo.repeatable ) %]
+                                                        <a href="#" class="buttonPlus" tabindex="1" onclick="CloneSubfield('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]','[% advancedMARCEditor | html %]'); return false;">
+                                                            <img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
+                                                        </a>
+                                                        <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]'); return false;">
+                                                            <img src="[% interface | html %]/[% theme | html %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" />
+                                                        </a>
+                                                    [% END %]
+                                                </span>
+                                            </div> <!-- /.subfield_line -->
+                                            <!-- End of the line -->
+                                        [% END # /FOREACH subfield_loop %]
+                                    </div> <!-- /.tag.clearfix -->
+                                [% END %]<!-- if innerloo.tag -->
+                            [% END # /FOREACH BIG_LOO.innerloop %]
+                        </div> <!-- /#tabXXX -->
+                    [% END # /FOREACH BIG_LOOP %]
+                </div><!-- /#addbibliotabs -->
+
+                [%# Fields for fast cataloging %]
+                <input type="hidden" name="barcode" value="[% barcode | html %]" />
+                <input type="hidden" name="branch" value="[% branch | html %]" />
+                <input type="hidden" name="circborrowernumber" value="[% circborrowernumber | html %]" />
+                <input type="hidden" name="stickyduedate" value="[% stickyduedate | html %]" />
+                <input type="hidden" name="duedatespec" value="[% duedatespec | html %]" />
+                [%# End of fields for fast cataloging %]
+            </form> <!-- /name=f -->
+        </div> <!-- /.col-md-10.col-md-offset-1 -->
+    </div> <!-- /.row -->
 
 [% INCLUDE 'intranet-bottom.inc' %]