
// This JavaScript is designed to sanity-check the JET search page
// Writen by Richard Corfield

/**************************************************
 * Verify is called when the search button is hit *
 **************************************************/

function verify (f){

//Check that the query field contains something sane

  if ((f.query.value == null) || (f.query.value == "") || (isBlank(f.query.value))){
    msg = "Error! You must enter some search terms";
    alert(msg);
    return false;
  }

//Verify that a box has been checked if 'Limit to the following'
//has been selected

  if (document.jnl_search.headertype[1].checked == true && !isCheckSelected()){
    msg = "If you wish to limit the search on the article header,\n" +
          "you must select at least one out of the following: \n" +
	  "Title, Author, Keywords, Abstract, PDF, Ref Num";
    alert(msg);
    return false;
  }
  if (document.jnl_search.headdoctype[1].checked == true && !isDocCheckSelected()){
    msg = "If you wish to limit the search on Document Type,\n" +
	  "you must select at least one out of the following: \n" +
	  "Preprints, Reports, Conference Papers, Posters ";
    alert(msg);
    return false;
  }
  
//Verify that a journal has been selected if 'Limit Journals'
//has been selected

//if (f.journaltype[1].checked == true){
//  sel_cnt = countSelectedJournals();
//  if(!sel_cnt){
//    msg = "You must select some journals if you\n" +
//          " wish to limit your search by journal.";
//    alert(msg);
//    return false;
//  }
//}

//Verify that a date has been selected if 'Limit date range'
//has been selected

  if (f.datetype[1].checked == true && 
              (f.sdate.options[0].selected == true || 
               f.edate.options[0].selected == true )){
    msg = "You must select the \'From\' and \'To\' dates\n" +
          "if you wish to limit the date range";
    alert(msg);
    return false;
  }

//Verify that the volume text input contains a sane value
//if 'Limit to volume' has been selected.

  if (f.datetype[2].checked == true &&
    ((f.volume.value == null) || (f.volume.value == "") || (isBlank(f.volume.value)))){
    msg = "You must enter a volume number if \n" +
          "you wish to limit the search by volume.";
    alert(msg);
    return false;
  }

//Verify that the issue text input contains a sane value
//if 'Limit to issue' has been selected.

//if (f.issuetype[1].checked == true &&
//  ((f.issue.value == null) || (f.issue.value == "") || (isBlank(f.issue.value)))){
//  msg = "You must enter an issue number if \n" +
//        "you wish to limit the search by issue.";
//  alert(msg);
//  return false;
//}
    
  return true;
}

/************ End of the main function ***********/ 
/*************************************************/
/************..event handlers follow..************/

//Checks a value for blankness

function isBlank(s){

  for (var i = 0; i < s.length; i++){
    var c = s.charAt(i);
    if (( c != ' ') && (c != '\n') && (c != '\t')) return false;
  }
  return true;
}

//Returns the number of journals selected from the journals options

function countSelectedJournals(){

  var cnt = 0;
  for (var i = 0; i < document.jnl_search.journals.length; i++){
    if (document.jnl_search.journals.options[i].selected == true){
      cnt++;
    }
  }
  return cnt;

}

//Returns true if a check box is selected

function isCheckSelected(){

  for (var i = 0; i < document.jnl_search.headerlimit.length; i++){
    if (document.jnl_search.headerlimit[i].checked == true){
      return true;
    }
  }
  return false;

}
function isDocCheckSelected(){

  for (var i = 0; i < document.jnl_search.doctype.length; i++){
    if (document.jnl_search.doctype[i].checked == true){
	return true;
    }
  }
  return false;

}
//Different selections are required depending on
//how many journals have been selected

function limit_journals (sel){

  var cnt = countSelectedJournals();
  if (cnt > 0){
    document.jnl_search.journaltype[0].checked = false;
    document.jnl_search.journaltype[1].checked = true;
    unLimitSearch();
  }
  else if (cnt == 0){
    document.jnl_search.journaltype[0].checked = true;
    document.jnl_search.journaltype[1].checked = false;
    }

  // Horrible section that 'picks up' the 'formerlys'
  // if a renamed journal is selected


//  alert (document.jnl_search.journals.selectedIndex);

// if (document.jnl_search.journals.options[2].selected){
//    document.jnl_search.journals.options[3].selected = true;
//  }

}

//Deal with 'Search all journals' request

function all_journals (button){

  if (button.checked == true){
    for (var i = 0; i < document.jnl_search.journals.length; i++){
      document.jnl_search.journals.options[i].selected = false;
    } 
    unLimitSearch();
  }

}

//Alter the settings of the 'Search entire article header' radio
//depending on how many of the checkboxes below have been selected

function headerCheck (){

  if(isCheckSelected()){
    document.jnl_search.headertype[0].checked = false;
    document.jnl_search.headertype[1].checked = true;
  }
  else{
    document.jnl_search.headertype[0].checked = true;
    document.jnl_search.headertype[1].checked = false;
  }

}
function headerDocCheck (){

  if(isDocCheckSelected()){
    document.jnl_search.headdoctype[0].checked = false;
    document.jnl_search.headdoctype[1].checked = true;
  }
  else{
    document.jnl_search.headdoctype[0].checked = true;
    document.jnl_search.headdoctype[1].checked = false;
  }

}

//Uncheck all the 'header/pdf limit' checkboxes!

function unCheck(){

  for (var i = 0; i < document.jnl_search.headerlimit.length; i++){
    document.jnl_search.headerlimit[i].checked = false;
  }

}
//Uncheck all the 'Article type' checkboxes!

function unACheck(){

  for (var i = 0; i < document.jnl_search.doctype.length; i++){
    document.jnl_search.doctype[i].checked = false;
  }
}


//Reset volume/issue search defaults

//function unLimitSearch(){

  //It does not make sense to limit search by volume or issue
  //if more than one journal is selected.

//  document.jnl_search.datetype[0].checked = true;
//  document.jnl_search.issuetype[0].checked = true;

//}

//Check that only only journal is selected
//if the user wants to limit on date or volume

//function datetypeCheck(){

//  var cnt =  countSelectedJournals();
//  if (cnt != 1){
//    msg = "Warning: You may only limit the search to dates\n" +
//          "or volumes if there is only one journal selected";
//    alert(msg);
//    document.jnl_search.datetype[0].checked = true;
//    }

//}

//Check that only one journal is selected
//if the user wants to limit on issue

//function issuetypeCheck(){

//  var cnt =  countSelectedJournals();
//  if (cnt != 1){
//    msg = "Warning: You may only limit the search to issues\n" +
//          "if there is only one journal selected";
//    alert(msg);
//    document.jnl_search.issuetype[0].checked = true;
//    }

//}
