function xLoadOptions(html_id, ajax_url, ajax_params, select_first) {

   var ajaxRequest = openAjax();
   var ajaxDisplay = document.getElementById(html_id);

   //Open Ajax request.

   if(!ajaxRequest  ||  !ajaxDisplay) { 
      return false; 
   }

   //Create a function that will receive data sent from the server.

   ajaxRequest.onreadystatechange = function() {
      if(ajaxRequest.readyState == 4) {

         var optionData  = ajaxRequest.responseText.split('|'); 
         var indy        = 0;

         removeOptions(ajaxDisplay, null);

         for (var i=0; i < optionData.length-1; i+=2) {
            var newOption = new Option(optionData[i+1], optionData[i]); 
            ajaxDisplay.options[indy] = newOption; 
            indy++;
         }

         if (select_first  &&  ajaxDisplay.options[0]) {
            ajaxDisplay.options[0].selected = true;
         }
      }
   }

   //Remove current options.
   removeOptions(ajaxDisplay, 1);

   //Send data to server for implementation.
   
   var ajaxStr = makeAjaxURL(ajax_url, ajax_params);

   ajaxRequest.open("GET", ajaxStr, true);
   ajaxRequest.send(null);
}


function xLoadInputs(ajax_url, ajax_params) {

   var ajaxRequest = openAjax();

   //Open Ajax request.

   if(!ajaxRequest) { 
      return false; 
   }

   //Create a function that will receive data sent from the server.

   ajaxRequest.onreadystatechange = function() {
      if(ajaxRequest.readyState == 4) {
         var ajaxData = ajaxRequest.responseText.split('|');
         for (var indx = 0; indx < ajaxData.length - 1; indx += 2) {
            setInput(ajaxData[indx], ajaxData[indx+1]);
         }
      }
   }

   //Send data to server for implementation.
   
   var ajaxStr = makeAjaxURL(ajax_url, ajax_params);

   ajaxRequest.open("GET", ajaxStr, true);
   ajaxRequest.send(null);
}


function xLoadHTMLDiv(div_id, ajax_url, ajax_params, placeholder) {

   var ajaxRequest = openAjax();
   var ajaxDisplay = document.getElementById(div_id);

   //Open Ajax request.

   if(!ajaxRequest  ||  !ajaxDisplay) { 
      return false; 
   }

   //Placeholder.

   if (placeholder) {
      ajaxDisplay.innerHTML = placeholder;
   }

   //Create a function that will receive data sent from the server.

   ajaxRequest.onreadystatechange = function() {
      if(ajaxRequest.readyState == 4) {
          ajaxDisplay.innerHTML = ajaxRequest.responseText;
      }
   }

   //Send data to server for implementation.
   
   var ajaxStr = makeAjaxURL(ajax_url, ajax_params);

   ajaxRequest.open("GET", ajaxStr, true);
   ajaxRequest.send(null);
}


function makeAjaxURL(url, params) {

   var currentDate = new Date();
   var newTime     = currentDate.getTime();

   if (params) {
      params += "&time="+newTime;
   }
   else {
      params = "?time="+newTime;
   }

   return url+params;
}


function openAjax() {

   var ajaxRequest;
	
   try{
      // Opera 8.0+, Firefox, Safari
      ajaxRequest = new XMLHttpRequest();
   } catch (e){
      // Internet Explorer Browsers
      try{
         ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
         try{
            ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (e){
            // Something went wrong
            alert("Your browser does not support Ajax.");
            return false;
         }
      }
   }

   return ajaxRequest;
}
