// focus the first useful field on a page
function focusFirstElement() {
  if (window.document.forms[0]) {
    for (i=0; i<window.document.forms[0].elements.length; i++) {
      if (window.document.forms[0].elements[i].type != "submit" &&
          window.document.forms[0].elements[i].type != "reset" ) {
        window.document.forms[0].elements[i].focus();
        break;
      }
    }
  }
}
function changeClass(id, newClass) {
 var identity = document.getElementById(id);
 if (identity == null) {
   alert("No element with id: " + id + " to set to class: " + newClass);
 }
 identity.className = newClass;
}
function toggleItem(id) {
  identity = document.getElementById(id);
  if (identity.className == "invisible") {
    identity.className = "visible";
  } else {
    identity.className = "invisible";
  }
}
// showItems: takes the incoming query string (tested by the XSLT to contain
// "show=someid" or "hide=someid") and breaks out each show=someid section to be passed to the 
// showItem function
function showItems(queryString) {
  // 1. strip off the CDATA wrapper
  var query = queryString.substring(0,queryString.length-2);
  query = query.substring(9,query.length);
  // 2. split the params out
  var pairs = queryString.split("&");
  // 3. break appart key value pairs and pick out "show=someId"
  for(var i = 0; i < pairs.length; i++) {
    var pos = pairs[i].indexOf('=');
    if (pos == -1) continue;
    var argname = pairs[i].substring(0,pos);
    var value = pairs[i].substring(pos+1);
    if (argname == "show") {
      showItem(value);
      var imgId = value + "Img"; 
      if (document.getElementById(imgId)) {
        var image = document.getElementById(imgId);
        image.src = "http://www.rpi.edu/dept/cct/apps/library2/resources/minus.gif";
      }
    }
    if (argname == "hide") {
      hideItem(value);
      var imgId = value + "Img"; 
      if (document.getElementById(imgId)) {
        var image = document.getElementById(imgId);
        image.src = "http://www.rpi.edu/dept/cct/apps/library2/resources/plus.gif";
      }
    }
  }
}
function showItem(id) {
  identity = document.getElementById(id);
  identity.className = "visible";
}
function hideItem(id) {
  identity = document.getElementById(id);
  identity.className = "invisible";
}
function toggleVisibility(id,newClass,imgId) {
  var image = document.getElementById(imgId);
  if (document.getElementById(id).className == 'invisible') {
    if (newClass != "") {
      changeClass(id,newClass);
    } else {
      changeClass(id,'visible');
    }
    image.src = "http://www.rpi.edu/dept/cct/apps/library2/resources/minus.gif";
  } else {
    changeClass(id,'invisible');
    image.src = "http://www.rpi.edu/dept/cct/apps/library2/resources/plus.gif";
  }
}
// submit the search form
function submitFind(type,param) {
  var queryField = document.getElementById("homeSearchHolder");
  var query = queryField.value;
  if (trim(queryField.value) != "") {
    switch(type) {
      case "catalog" :
        var catalogForm = document.getElementById("catalogForm");
        catalogForm.searcharg.value = query;
        catalogForm.searchtype.value = param;
        catalogForm.submit();
        break;
      case "journals" :
        var catalogForm = document.getElementById("ejournalsForm");
        catalogForm.searcharg.value = query;
        catalogForm.searchtype.value = param;
        catalogForm.submit();
        break;
      case "classReserves" :
        var reservesForm = document.getElementById("classReservesForm");
        reservesForm.searcharg.value = query;
        reservesForm.searchtype.value = param;
        reservesForm.submit();
        break;
      case "site" :
        var siteForm = document.getElementById("cse-search-box");
        //siteForm.query.value = 'heading:(' + query + ') OR title:(' + query + ') OR summary:(' + query + ') OR (' + query + ')';
        siteForm.q.value = query;
        siteForm.submit();
        break;
      default :
        alert(" do nothing ");
    }
  } else {
    alert("Please enter a search term");
    queryField.focus();
  }
}
// launches new browser window with print-friendly version of page when
// print icon is clicked
function launchPrintWindow(URL) {
  printWindow = window.open(URL, "printWindow", "width=800,height=600,scrollbars=yes,resizable=yes,alwaysRaised=yes,menubar=yes,toolbar=yes");
  window.printWindow.focus();
}
function trim(str) {
  if (str.length < 1) {
    return"";
  }
  str = rightTrim(str);
  str = leftTrim(str);

  if(str == "") {
    return "";
  } else {
    return str;
  }
}

function rightTrim(str) {
  var w_space = String.fromCharCode(32);
  var v_length = str.length;
  var strTemp = "";

  if(v_length < 0) {
    return "";
  }
  var iTemp = v_length - 1;
  while(iTemp > -1){
    if(str.charAt(iTemp) != w_space) {
      strTemp = str.substring(0,iTemp +1);
      break;
    }
    iTemp = iTemp-1;
  }
  return strTemp;
}

function leftTrim(str) {
  var w_space = String.fromCharCode(32);
  if(v_length < 1) {
    return "";
  }
  var v_length = str.length;
  var strTemp = "";
  var iTemp = 0;

  while(iTemp < v_length) {
    if(str.charAt(iTemp) != w_space) {
      strTemp = str.substring(iTemp,v_length);
      break;
    }
    iTemp = iTemp + 1;
  }
  return strTemp;
}


