// rewardsajax.js

<!--

 // set the default timeout to 10 seconds...
 var AJAX_TIMEOUT = 10000;
 // use default content type -- that you can change for file uploads...
 var CONTENT_TYPE = "application/x-www-form-urlencoded; charset=UTF-8";

 // and change it globally by calling setAjaxTimeout...
 function setAjaxTimeout(val)
 {
  AJAX_TIMEOUT = val;
 }

 function setContentType(str)
 {
  CONTENT_TYPE = str;
 }

 /* initialize a request object that is already constructed */
 function initReq(reqType,url,isAsynch,respHandle,queryString,request)
 {
  var requestTimer = 0;

  try
   {
    request.open(reqType,url,isAsynch);

    if( AJAX_TIMEOUT > 0 )
     {
      requestTimer = setTimeout( function() {
        request.abort();
        alert( "Communication with the server timed-out.\n" +
               "Please check your connection and try again in a few moments." );
        }, AJAX_TIMEOUT );
     }

    /* specify the function that will handle the HTTP response */
    request.onreadystatechange = function() {
     if( request.readyState == 4 )
      {
       if( requestTimer ) clearTimeout(requestTimer);
       respHandle(request);
      }
    }

    /* set the Content-Type header for a POST request */
    request.setRequestHeader( "Content-Type", CONTENT_TYPE );
    request.send(queryString);
   }
  catch(errv)
   {
    alert( "The application cannot contact the server.\n" +
           "Please try again in a few seconds.\n" +
           "Error detail: " + errv.message );
   }
 }

 function ajaxRequestObject()
 {
  var request = null;

  // Mozilla-based browsers
  if( window.XMLHttpRequest )
   {
    request = new XMLHttpRequest();
   }
  else if( window.ActiveXObject )
   {
    request = new ActiveXObject("Msxml2.XMLHTTP");
    if( ! request ) request = new ActiveXObject("Microsoft.XMLHTTP");
   }
  else
    alert( "Your browser is not supported." );

  // the request could still be null if neither ActiveXObject
  // initialization succeeded...so you need to check on the return
  return request;
 }

 function ajaxSessionInfo()
 {
  var qs = "";
  var fobj = document.getElementsByName("mymenu");
  if( fobj[0] == null ) return qs;

  for( var i = 0; i < fobj[0].elements.length; i++ )
   {
    if( fobj[0].elements[i].name == "SESSION_ID" ||
        fobj[0].elements[i].name == "SESSION_KEY" )
     {
      qs += fobj[0].elements[i].name + "=";
      qs += encodeURIComponent(fobj[0].elements[i].value) + "&";
     }
   }

  return qs;
 }

 function ajaxFormInfo(fm)
 {
  var qs = "";
  var formObj = document.getElementsByName(fm);
  if( formObj[0] == null ) return;

  for( var i = 0; i < formObj[0].elements.length; i++ )
   {
    // skip any radio buttons that are not checked...
    if( formObj[0].elements[i].type.toLowerCase() == "radio" &&
        ! formObj[0].elements[i].checked ) continue;

    qs += formObj[0].elements[i].name + "=";

    if( formObj[0].elements[i].type.toLowerCase() != "checkbox" )
     {
      qs += encodeURIComponent( formObj[0].elements[i].value );
     }
    else
     {
      // checkbox values will be 1 or 0 based on check status...
      if( formObj[0].elements[i].checked ) qs += "1";
      else qs += "0";
     }

    if( i < formObj[0].elements.length -1 ) qs += "&";
   }

  return qs;
 }

 function buildQueryString(oArg)
 {
  var qs = "";

  for( var prop in oArg )
    qs += prop + "=" + encodeURIComponent(oArg[prop]) + "&";

  if( qs.length == 0 ) return(null);
  return(qs.slice(0,qs.length-1));
 }

 /* Wrapper function for constructing a request object.
 Parameters:
  reqType: The HTTP request type, such as GET or POST.
  url: the URL of the server program.
  asynch: Whether to send the request asynchronously or not.
  respHandle: The call back javascript function.

  Any 4th parameter can be used to submit a query string without a form
   -- in this case, use a support function such as buildQueryString to
      create the string and submit it.  Your form will then be set to 'null'
 */

 function httpRequest(url,frm,respHandle)
 {
  var request = ajaxRequestObject();
  if( request == null ) return;

  var queryString = ajaxSessionInfo();
  if( queryString.length == 0 && frm != null )
   {
    alert( "Error in request session...terminating transaction." );
    return;
   }

  if( frm != null )
   {
    queryString += ajaxFormInfo(frm);
   }
  else if( arguments.length == 4 )
   {
    queryString += arguments[3];
   }
  else
   {
    alert( "Error in request arguments...terminating transaction." );
    return;
   }

  initReq('POST',url,true,respHandle,queryString,request);
 }

 function loadNewPage(url,id)
 {
  var obj = document.getElementById(id);
  if( ! obj ) return;

  var req = new XMLHttpRequest();
  req.open("GET", url, false);
  req.send(null);
  var page = req.responseText;

  obj.innerHTML = page;
 }


//-->
