// *** used in basket forms
function mysubmit(form, action) {
  form.action = action;
  form.submit();
}

function basket_clear(parameters) {
  window.open('basket-clear.jsp?' + parameters, '', 'width=300,height=100'); 
  return false;
}

// *** used in catalog choice
function set_all(form, val) {
  var elem;
  for (var i=0; i<form.elements.length; i++) {
    elem = form.elements[i];
    if (elem.type != 'checkbox') 
      continue;
    elem.checked=val;
  }
}

function rd(id) {
  var image = document.getElementById('img' + id); 
  var div = document.getElementById('div'+id);
  var checked = (image.src.search('images/plus.gif') != -1);
  if (checked) {
    image.src = 'images/minus.gif';
    div.style.display = 'block';
  } else {
    image.src = 'images/plus.gif';
    div.style.display = 'none';
  }
}

function rdt(id) {
  var image = document.getElementById('img' + id); 
  var div = document.getElementById('div'+id);
  image.src = 'images/minus.gif';
  div.style.display = 'block';
}

// propagate checkbox value down
function checkbox_propagate_down(checkbox_obj, value) {
  checkbox_obj.checked = value;
  var id = checkbox_obj.id.substr(5);
  var link_obj = eval('link'+id);
  if (link_obj.s != null) {
    if (value)
      link_obj.s = link_obj.c;
    else
      link_obj.s = 0;
  }
  for(var i=0; i<link_obj.d.length; i++) {
    if (link_obj.d[i] == null)
      continue;
    var check_id = 'check'+link_obj.d[i];
    var check_obj = document.getElementById(check_id);
    checkbox_propagate_down(check_obj, value);
  }
}

// propagate checkbox value up
function checkbox_propagate_up(checkbox_obj) {
  var id = checkbox_obj.id.substr(5);
  var link_obj = eval('link'+id);
  if (link_obj.u == '')
    return; // no parent
  var link_up = eval('link' + link_obj.u);
  var check_id = 'check'+link_obj.u;
  var check_obj = document.getElementById(check_id);
  var check_value = check_obj.checked;
  if (checkbox_obj.checked) {
    link_up.s++;
    if (link_up.s == link_up.c) 
      check_obj.checked = true;
  } else {
    link_up.s--;
    check_obj.checked = false;
  }
  if (check_obj.checked != check_value) {
    // propagate changes
    checkbox_propagate_up(check_obj);
  }
}

function ccb(checkbox_obj) {
  checkbox_propagate_down(checkbox_obj, checkbox_obj.checked);
  checkbox_propagate_up(checkbox_obj);
}

// update from end to beginning, 
function update() {
  for (i=document.search.elements.length-1; i>=0; i--) {
    var o = document.search.elements[i];
    if (o.id == null || o.id.substr(0, 5) != 'check')
      continue;
    var id = o.id.substr(5);
    var this_link = eval('link' + id);
    // update selected count values
    if (o.name == '') {
      // this is a group or library checkbox
      // initialize it
      if (this_link.s == this_link.c) {
        o.checked = true;
      }
      if (this_link.u == '') 
      	  expand(id); // upper level, expand
    }
    // initialize group checkboxes
    if (o.checked) {
      // this is a selected checkbox, update count in parent link
      var up_id = this_link.u;
      if (up_id != '') {
        var parent_link = eval('link' + up_id);
        parent_link.s++;
      }
    }
  }
}

// expand groups with selected elements
function expand(id) {
  var link_obj = eval('link' + id);
  if (link_obj.s == null)
    return false;
  var need_expand = link_obj.s > 0 && link_obj.s < link_obj.c;
  for(var i=0; i<link_obj.d.length; i++) {
    if (link_obj.d[i] == null)
      continue;
    var res = expand(link_obj.d[i]);
    need_expand = need_expand || res;
  }
  if (need_expand)
    rdt(id);
  return need_expand;
}

// *** used in search forms
function clearall(form) {
  for (var i=0; i<form.elements.length; i++)
    if ((form.elements[i].name.length == 2 
         && form.elements[i].name.charAt(0) == 'v') 
        || form.elements[i].name == "b"
        || form.elements[i].name == "ys"
        || form.elements[i].name == "ye"
        || form.elements[i].name == "lng"
        || form.elements[i].name == "ft"
        || form.elements[i].name == "mt"

        || form.elements[i].name == "dt"
        || form.elements[i].name == "vol"
        || form.elements[i].name == "pt"
        || form.elements[i].name == "iss"
        || form.elements[i].name == "ps"
        || form.elements[i].name == "pe"

//        || form.elements[i].name == "tr"
//        || form.elements[i].name == "tro"

        || form.elements[i].name == "aulast"
        || form.elements[i].name == "aufirst"
        || form.elements[i].name == "auinit"
        || form.elements[i].name == "atitle"
        || form.elements[i].name == "issn"
        || form.elements[i].name == "isbn"
        || form.elements[i].name == "title"
        || form.elements[i].name == "volume"
        || form.elements[i].name == "part"
        || form.elements[i].name == "issue"
        || form.elements[i].name == "spage"
        || form.elements[i].name == "epage"
        || form.elements[i].name == "date"
       ) 
      form.elements[i].value="";
}


// *** used in different pages to shorten html size
function go_form2(page, catalog, index, new_window) {
  form = document.forms['search'];
  if (new_window) {
    form.target = "_blank";
  }
  go_form(page, catalog, index);
  if (new_window) {
    form.target = "";
  }
  return false;
}

function go_form(page, catalog, index) {
  form = document.forms['search'];
  form.action = page;
  form.elements['cc'].value=catalog;
  form.elements['i'].value=index;
  form.submit();
  return false;
}

function select_option(select, value) {
  for (i=0; i<select.options.length; i++) {
    option = select.options[i];
    if (option.value == value) {
      option.selected = true;
      break;
    }
  }
}

// *** used in titlelists for z39.50 article linking
function z39_linking(form, ce, searchtype) {
  // set catalogs to use for search
  var field;
  var author = "";
  var title = "";
  for (var i=0; i<form.elements.length; i++) {
    if (form.elements[i].name == "ce") {
      form.elements[i].value = ce;
    } else if (form.elements[i].name == "st") {
      form.elements[i].value = searchtype;
    } else if (form.elements[i].name == "f") {
      field = form.elements[i].value;
    } else if (form.elements[i].name.length == 2 
               && form.elements[i].name.charAt(0) == 'v') {
      if (field == "1003") {
        author = form.elements[i].value;
      } else if (field == "4") {
        title = form.elements[i].value;
      }
    }
  }
  if (author != "" || title != "") {
    form.action="results.jsp";
    form.submit();
  } else {
    window.alert(titlelist_error_aut_tit);
  }
}

// *** used in titlelists for openurl & scheme article linking
function art_linking(form, urlscheme, issn, eissn, title) {
  var date = "";
  var volume = "";
  var part = "";
  var issue = "";
  var spage = "";
  var epage = "";
  var field;
  var author = "";
  var atitle = "";
  
  for (var i=0; i<form.elements.length; i++) {
    if (false) {
    } else if (form.elements[i].name == "dt") {
      date = form.elements[i].value;
    } else if (form.elements[i].name == "vol") {
      volume = form.elements[i].value;
    } else if (form.elements[i].name == "pt") {
      part = form.elements[i].value;
    } else if (form.elements[i].name == "iss") {
      issue = form.elements[i].value;
    } else if (form.elements[i].name == "ps") {
      spage = form.elements[i].value;
    } else if (form.elements[i].name == "pe") {
      epage = form.elements[i].value;
    } else if (form.elements[i].name == "f") {
      field = form.elements[i].value;
    } else if (form.elements[i].name.length == 2 
               && form.elements[i].name.charAt(0) == 'v') {
      if (field == "1003") {
        author = form.elements[i].value;
      } else if (field == "4") {
        atitle = form.elements[i].value;
      }
    }
  }

  urlscheme = urlscheme.replace("{author}", author);
  urlscheme = urlscheme.replace("{atitle}", atitle);
  urlscheme = urlscheme.replace("{issn}", issn);
  urlscheme = urlscheme.replace("{eissn}", eissn);
  urlscheme = urlscheme.replace("{title}", title);
  urlscheme = urlscheme.replace("{date}", date);
  if (date != "") {
    urlscheme = urlscheme.replace("{yyyy}", date.substring(0, 4));
    urlscheme = urlscheme.replace("{yy}", date.substring(2, 4));
  }
  urlscheme = urlscheme.replace("{volume}", volume);
  urlscheme = urlscheme.replace("{part}", part);
  urlscheme = urlscheme.replace("{issue}", issue);
  urlscheme = urlscheme.replace("{spage}", spage);
  urlscheme = urlscheme.replace("{epage}", epage);

  if (false
    || date != ""
    || volume != ""
    || part != ""
    || issue != "" 
    || spage != ""
  ) {
    window.open(urlscheme, "_blank");
  } else {       
    alert(titlelist_error_physical);
  }
}

