
   var xmlFinishFunctions = new Array();
   var append = false;
   function retrieveURL(url, objID, requestType, postData, append) {
      // alert (url + '\n' + objID);
      var req=false;
      var xmlReq = null;
      /*@cc_on @*/
      /*@if (@_jscript_version >= 5)
        try {
           req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
        try {
           req = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
        req = false;
        }
     }
     @end @*/
  
     if (!req && typeof XMLHttpRequest != 'undefined') {
       req = new XMLHttpRequest();
     }
  
     var obj = document.getElementById(objID);
     if(requestType == "GET") {
        req.open("GET", url);
     } 
     else {
        req.open("POST", url, true);
     }
     req.onreadystatechange = function() {
        if (req.readyState == 4 && (req.status == 100 || req.status == 200)) {
           if(append) {
              obj.innerHTML = obj.innerHTML + req.responseText;
           }
           else {
              obj.innerHTML = req.responseText;
              // obj.style.border = "1px solid #999999";
           }
           if(xmlFinishFunctions.length > 0) {
              for(i=0;i<xmlFinishFunctions.length;i++) {
                 xmlFinishFunctions[i]();
              }
              xmlFinishFunctions = new Array();
           }
        }
     }
     if(requestType == "GET") {
        req.send(null);
     }
     else {
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        req.send(postData);
     }
   }       


   function sendForm ( formID, formurl, objID )
   {
      var form = document.getElementById( formID );
      var query = '/' + processFormData(form,'/');
      formurl = formurl + query;
      retrieveURL(formurl,objID,'GET', '');
      return true;
   }

   function postForm ( formID, formurl, objID )
   {
      var fields = new Array()
      var post;
      var form = document.getElementById( formID );
      post = processFormData(form, '&');
      retrieveURL(formurl,objID,'POST',post);
      return true;
   }
   

   /*
    * Copyright 2005 Matthew Eernisse (mde@fleegix.org)
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
    * You may obtain a copy of the License at
    * 
    *   http://www.apache.org/licenses/LICENSE-2.0
    * 
    * Unless required by applicable law or agreed to in writing, software
    * distributed under the License is distributed on an "AS IS" BASIS,
    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    * See the License for the specific language governing permissions and
    * limitations under the License.
    *
    * Original code by Matthew Eernisse (mde@fleegix.org)
    * Additional bugfixes by Mark Pruett (mark.pruett@comcast.net)
    *
   */
   
   // The var docForm should be a reference to a <form>
   
   function processFormData(docForm, delimiter) {
     var submitContent = '';
     var formElem;
     var lastElemName = '';
     
     for (i = 0; i < docForm.elements.length; i++) {
       formElem = docForm.elements[i];
       switch (formElem.type) {
         // Text fields, hidden form elements
         case 'text':
         case 'hidden':
         case 'password':
         case 'textarea':
         case 'select-one':
           submitContent += formElem.name + '=' + encodeURIComponent(formElem.value) + delimiter 
           break;
           
         // Radio buttons
         case 'radio':
           if (formElem.checked) {
             submitContent += formElem.name + '=' + escape(formElem.value) +  delimiter
           }
           break;
           
         // Checkboxes
         case 'checkbox':
           if (formElem.checked) {
             // Continuing multiple, same-name checkboxes
             if (formElem.name == lastElemName) {
               // Strip of end ampersand if there is one
               if (submitContent.lastIndexOf(delimiter) == submitContent.length-1) {
                 submitContent = submitContent.substr(0, submitContent.length - 1);
               }
               // Append value as comma-delimited string
               submitContent += ',' + escape(formElem.value);
             }
             else {
               submitContent += formElem.name + '=' + escape(formElem.value);
             }
             submitContent += '&';
             lastElemName = formElem.name;
           }
           break;
           
       }
     }
     // Remove trailing separator
     submitContent = submitContent.substr(0, submitContent.length - 1);
     return submitContent;
   }

  
