//////////////////////////////////////////////////////////////////////////////
// file: lib_js.js
//
// purpose: Javascript functions used by multiple scripts
//
// history:
//  03/03/09  eksc  created
//////////////////////////////////////////////////////////////////////////////

  function createAjaxRequest() {
    var ajaxRequest;
    try{
      ajaxRequest = new XMLHttpRequest();
    } catch (ex){
      try {
        ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (ex) {
        try {
          ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e){
          alert("Browser cannot handle AJAX requests\n" + e);
          return false;
        }
      }
    }
    return ajaxRequest;
  }//createAjaxRequest()
  
  
  function sendAjaxRequest(ajaxRequest, url, parameters) {
    ajaxRequest.open("POST", url, true);
    ajaxRequest.setRequestHeader("Content-type", 
                                 "application/x-www-form-urlencoded");
    ajaxRequest.setRequestHeader("Content-length", parameters.length);
    ajaxRequest.setRequestHeader("Connection", "close");
    ajaxRequest.send(parameters);
  }//sendAjaxRequest()
  
  
  function verifyAjaxRequest(ajaxRequest) {
    if (ajaxRequest.readyState == 4) {
      if (ajaxRequest.status == 200) {
        return true;
      }
      else {
//        alert('AJAX error: ' + ajaxRequest.status);
        return false;
      }
    }
    return false;
  }
  
  function setStateRow(selctrl, state) {
    if (typeof selctrl != 'undefined' 
          && document.getElementById('stateRow') != null) {
      if (selctrl.options[selctrl.selectedIndex].value == 'US'
            || selctrl.options[selctrl.selectedIndex].value == 'USA') {
        var ajaxRequest = createAjaxRequest();
        // Server response handling function
        ajaxRequest.onreadystatechange = function() {
          if (verifyAjaxRequest(ajaxRequest)) {
            document.getElementById('stateRow').innerHTML
                  = ajaxRequest.responseText;
          }
        }//function
        var url = "/POPcorn/controller.php";
        var parameters = "ACTION=CREATE_STATE_DROPDOWN";
        parameters += "&state=" + state;
        sendAjaxRequest(ajaxRequest, url, parameters);
      }
      else {
        document.getElementById('stateRow').innerHTML = '';
      }
    }//stateRow and dropdown exist
  }//setStateRow()
  
  
  function setCompoundCategoryRow(opctrl, state, cat2ctrl) {
    if (typeof opctrl != 'undefined' && opctrl != null
          && typeof cat2ctrl != 'undefined' && cat2ctrl != null) {
      if (opctrl.options[opctrl.selectedIndex].value == '') {
        // No operator selected: turn off second category dropdown
        cat2ctrl.disabled = true;
        cat2ctrl.selectedIndex = 0;
      }
      else {
        cat2ctrl.disabled = false;
      }
    }//the op and second category dropdowns exist
  }//setCompoundCategoryRow()
  
  
  function searchResources(frm) {
    frm.search.value = 'yes';
    frm.submit();
  }//searchResources()
  
  
  // pass in state to avoid race condition with setState()
  function loadSearchResults(frm, state) {
//alert('loadSearchResults: ' + frm);
    if (document.getElementById('searchResults') != null) {
      var ajaxRequest = createAjaxRequest();
      // Server response handling function
      ajaxRequest.onreadystatechange = function() {
        if (verifyAjaxRequest(ajaxRequest)) {
          document.getElementById('searchResults').innerHTML
                = ajaxRequest.responseText;
        }
      }//function
//alert(frm.search_type);
      var search_type = 'project';
      if (typeof frm.search_type != 'undefined') {
        if (typeof frm.search_type[1] != 'undefined') {
          if (frm.search_type[1].checked) {
            search_type = 'resource';
          }
        }
        else {
          search_type = frm.search_type.value;
        }
      }
//alert(search_type);
      var url = "/POPcorn/controller.php?";
      var parameters = "ACTION=LOAD_SEARCH_RESULTS";
      parameters += "&search_type=" + search_type;
      parameters += "&keyword=" + frm.keyword.value;
      parameters += "&investigator=" 
                    + frm.investigator.options[frm.investigator.selectedIndex].value;
      parameters += "&institution=" 
                    + frm.institution.options[frm.institution.selectedIndex].value;
      parameters += "&country=" 
                    + frm.country.options[frm.country.selectedIndex].value;
      if (state != '') {
        parameters += "&state=" + state;
      }
      if (typeof frm.category.selectedIndex == 'undefined') {
        parameters += "&category=" + frm.category.value;
      }
      else {
        parameters += "&category=" 
                    + frm.category.options[frm.category.selectedIndex].value;
      }
//alert("send parameters: " + parameters);
      sendAjaxRequest(ajaxRequest, url, parameters);
      document.getElementById('searchResults').innerHTML 
              = '<i>Loading results...</i>';
    }//searchResults <div> exists
  }//loadSearchResults()
  

  function loadDailyImage() {
    if (document.getElementById('photoOfTheDay') != null) {
      var ajaxRequest = createAjaxRequest();
      // Server response handling function
      ajaxRequest.onreadystatechange = function() {
        if (verifyAjaxRequest(ajaxRequest)) {
          document.getElementById('photoOfTheDay').innerHTML
                = ajaxRequest.responseText;
        }
      }//function
      var url = "/POPcorn/controller.php?";
      var parameters = "ACTION=LOAD_DAILY_PHOTO";
//alert("send parameters: " + parameters);
      sendAjaxRequest(ajaxRequest, url, parameters);
      document.getElementById('photoOfTheDay').innerHTML = '<i>Loading...</i>';
    }//photoOfTheDay <div> exists
  }//loadDailyImage()
  

  function getSearchableProjectCount() {
    if (document.getElementById('searchableProjects') != null) {
      var ajaxRequest = createAjaxRequest();
      // Server response handling function
      ajaxRequest.onreadystatechange = function() {
        if (verifyAjaxRequest(ajaxRequest)) {
          document.getElementById('searchableProjects').innerHTML
                = ajaxRequest.responseText;
        }
      }//function
      var url = "/POPcorn/controller.php?";
      var parameters = "ACTION=COUNT_SEARCHABLE_PROJECTS";
//alert("send parameters: " + parameters);
      sendAjaxRequest(ajaxRequest, url, parameters);
      document.getElementById('searchableProjects').innerHTML 
            = '<i style="font-size:10">Counting...</i>';
    }//photoOfTheDay <div> exists
  }//getSearchableProjectCount
  
  
  function getSearchableResourceCount() {
    if (document.getElementById('searchableResources') != null) {
      var ajaxRequest = createAjaxRequest();
      // Server response handling function
      ajaxRequest.onreadystatechange = function() {
        if (verifyAjaxRequest(ajaxRequest)) {
          document.getElementById('searchableResources').innerHTML
                = ajaxRequest.responseText;
        }
      }//function
      var url = "/POPcorn/controller.php?";
      var parameters = "ACTION=COUNT_SEARCHABLE_RESOURCES";
//alert("send parameters: " + parameters);
      sendAjaxRequest(ajaxRequest, url, parameters);
      document.getElementById('searchableResources').innerHTML 
            = '<i style="font-size:10">Counting...</i>';
    }//photoOfTheDay <div> exists
  }//getSearchableResourceCount
  
  
  function getLastChangeDate() {
    if (document.getElementById('lastChange') != null) {
      var ajaxRequest = createAjaxRequest();
      // Server response handling function
      ajaxRequest.onreadystatechange = function() {
        if (verifyAjaxRequest(ajaxRequest)) {
          document.getElementById('lastChange').innerHTML
                = ajaxRequest.responseText;
        }
      }//function
      var url = "/POPcorn/controller.php?";
      var parameters = "ACTION=GET_LAST_CHANGE_DATE";
//alert("send parameters: " + parameters);
      sendAjaxRequest(ajaxRequest, url, parameters);
      document.getElementById('lastChange').innerHTML 
            = '<i style="font-size:10">Checking...</i>';
    }//photoOfTheDay <div> exists
  }//getLastChangeDate
  
  
  function popupLink(url, width, height, anchor) {
    var props = "height=" + height + ",width=" + width;
    props += ",resizable=yes,scrollbars=yes,status=no,titlebar=no,toolbar=no";
    var link = url + "#" + anchor;
    window.open(link, '', props);
  }//popupLink
  
  
  function trim(str) {
	  str = str.replace(/^\s+/,"");
	  str = str.replace(/\s+$/,"");
    return str;
	}
