-
-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("name") == 'line'){ // if it s a subfield
- if (divs[i].style.display == 'block') {
- divs[i].style.display = 'none';
- } else {
- divs[i].style.display = 'block';
- }
- }
- }
-}
-
-/**
- * To clone a field or a subfield by clickink 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);
- }
- [% END %]
-
- // settings all subfields
- for(var i=0,divslen = divs.length ; i<divslen ; i++){ // foreach div
- if(divs[i].getAttribute("name") == 'line'){ // 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 = "";
-
- 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')+"\');");
- [% END %]
-
- // setting its '+' and '-' buttons
- try {
- var spans = divs[i].getElementsByTagName('span');
- for (var j = 0; j < spans.length; j++) {
- if(spans[j].getAttribute('class') == 'buttonPlus'){
- spans[j].setAttribute('onclick',"CloneSubfield('" + divs[i].getAttribute('id') + "')");
- } else if (spans[j].getAttribute('class') == 'buttonMinus') {
- spans[j].setAttribute('onclick',"UnCloneField('" + divs[i].getAttribute('id') + "')");
- }
- }
- }
- catch(e){
- // do nothig if ButtonPlus & CloneButtonPlus don t exist.
- }
-
- // button ...
- var spans=0;
- try {
- spans = divs[i].getElementsByTagName('span');
- } catch(e) {
- // no spans
- }
- 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);
- }
- }
- }
- 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
- }
- }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('name') == '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('span');
- 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 + "')");
- }
- }
- }
- catch(e){
- // do nothig CloneButtonPlus doesn't exist.
- }
-
- // setting its 'Expand' property
- var ExpandFieldA=0;
- try {
- ExpandFieldA = divs[i].getElementsByTagName('a')[0];
- ExpandFieldA.setAttribute('onclick',"ExpandField('" + divs[i].parentNode.getAttribute('id') + "')");
- }
- catch(e){
- // do nothig if ButtonPlus & CloneButtonPlus don t exist.
- }
-
- }
- }
- }
-
- // 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');
-
- // 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);
- }
-
- // 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);
- }
-
- [% 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 if for the parent div
- clone.setAttribute('id',new_id);
-
- try {
- var buttonUp = clone.getElementsByTagName('img')[0];
- buttonUp.setAttribute('onclick',"upSubfield('" + new_id + "')");
- var spans = clone.getElementsByTagName('span');
- if(spans.length){
- for(var i = 0 ,lenspans = spans.length ; i < lenspans ; i++){
- if(spans[i].getAttribute('class') == 'buttonPlus'){
- spans[i].setAttribute('onclick',"CloneSubfield('" + new_id + "')");
- } else if (spans[i].getAttribute('class') == 'buttonMinus') {
- spans[i].setAttribute('onclick',"UnCloneField('" + new_id + "')");
- }
- }
- }
- }
- 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 unHideSubfield(index,labelindex) { // FIXME :: is it used ?
- subfield = document.getElementById(index);
- subfield.style.display = 'block';
- label = document.getElementById(labelindex);
- label.style.display='none';
-}
-