//////////////////////////////////////////////////////////////////////////////
// file: lib_js.js
//
// purpose: Javascript functions used by multiple scripts
//
// history:
//  03/03/09  eksc  created
//  01/20/10  eksc  re-designed to fit all POPcorn subsystems
//////////////////////////////////////////////////////////////////////////////

// TODO: use jQuery for Ajax

  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()
  
  
  // Execute given function when user presses enter
  function executeenter(el, ev, func) {
    var keycode;
    if (window.event) 
      keycode = window.event.keyCode;
    else if (ev) 
      keycode = ev.which;
    else 
      return true;
    
	if (keycode == 13) {
      eval(func+'()');
      return false;
    }
    else
      return true;
  }//executeenter
  

  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 popupLink(url, width, height, anchor) {
    if (typeof width == 'undefined') width = 500;
    if (typeof height == 'undefined') height = 250;
    if (typeof anchor == 'undefined') 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
  
  
  // submit form when user presses enter
  function submitenter(el, ev) {
    var keycode;
    if (window.event) 
      keycode = window.event.keyCode;
    else if (ev) 
      keycode = ev.which;
    else 
      return true;
    
	if (keycode == 13) {
      el.form.submit();
      return false;
    }
    else
      return true;
  }//submitenter


  function toggleDiv(togvalue, imgname, divname, rooturl) {
     div = document.getElementById(divname);
     tog = document.getElementById(togvalue);
     img = document.getElementById(imgname);
     toggle = tog.value;
     if (toggle == '+') {
        div.style.display = 'block';
        img.src = rooturl + '/images/row-contract1.gif';
        tog.value = '-';
     }
     else {
       div.style.display = 'none';
       img.src = rooturl + '/images/row-expand1.gif';
       tog.value = '+';
     }
     return false;
  }//toggleDiv()
	 
  
  // trap enter to avoid default browser behavior
  function trapenter(el, ev) {
    var keycode;
    if (window.event) 
      keycode = window.event.keyCode;
    else if (ev) 
      keycode = ev.which;
    else 
      return true;
    
	if (keycode == 13) {
      return false;
    }
    else
      return true;
  }//trapenter

  
  function trim(str) {
    str = str.replace(/^\s+/,"");
    str = str.replace(/\s+$/,"");
    return str;
  }//trim


