var returnDataFunction  = null;
var http_request = false;

function http_request_StateChanged() 
{ 
if (http_request.readyState==4 || http_request.readyState=="complete")
 {
   if (http_request.status == 200) // alternate "failure route"
     { 
       returnDataFunction(http_request.responseText);
     } else {
       returnDataFunction(null); // check global http_request for error responseText
     };

//   if (!returnDataFunction==-1)    
//     { var responseText = xmlHttp.responseText;
//       alert(responseText);
//       returnDataFunction(responseText);
//     };     
   //document.getElementById("txtHint").innerHTML=xmlHttp.responseText 
 } 
};
function ajax_get(tcUrl,tfEventHandler)
{ 
  returnDataFunction = tfEventHandler;
  http_request = GetXmlHttpObject();
  if (http_request==null) return 0;
  
  http_request.onreadystatechange = http_request_StateChanged;
  http_request.open("GET",tcUrl,true);
  http_request.send(null);
  return 1;
};

function ajax_post( tcUrl, tcData, tfEventHandler) 
{
  returnDataFunction = tfEventHandler;
  http_request = GetXmlHttpObject();
  if (http_request==null) return 0;
  
  http_request.onreadystatechange = http_request_StateChanged;
  http_request.open('POST', tcUrl, true);
  http_request.setRequestHeader("Content-type",   "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", tcData.length);
  http_request.setRequestHeader("Connection",     "close");
  http_request.send(tcData);
  return 1;
};
  
function ajax_postForm( tcUrl, tcFormId, tfEventHandler)
{
  var loForm = document.getElementById(tcFormId);
  var poststr = '';
  for (var i = 0; i < loForm.elements.length; i++) 
  {
    formElem = loForm.elements[i];
    switch (formElem.type)
      {
        case 'text':
        case 'select-one':
        case 'hidden':
        case 'password':
        case 'textarea':
	  poststr += formElem.name + '=' + escape(formElem.value) + '&';
	  break;
	case 'checkbox':
	case 'radio':
	  if (formElem.checked )
                { poststr += formElem.name + '=' + escape(formElem.value) + '&'; }
	  break;
	case 'select-multiple': 
	  for (var j = 0; j < formElem.options.length; ++j)
	    { if (formElem.options[j].selected)
                { poststr += formElem.name + '=' + escape(formElem.options[j].value) + '&'; }
            };
          break;
      };
  };
  return ajax_post(tcUrl, poststr, tfEventHandler);
};

//--------------------------

function GetXmlHttpObject()
{
  http_request = null;
  
  if (window.XMLHttpRequest) 
    { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) 
         {
           // set type accordingly to anticipated content type
           //http_request.overrideMimeType('text/xml');
           http_request.overrideMimeType('text/html');
         }
    } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {};
         }
    };
  return http_request;

//var xmlHttp=null;
//try
// {
// // Firefox, Opera 8.0+, Safari
// xmlHttp=new XMLHttpRequest();
// }
//catch (e)
// { //Internet Explorer
// try  {
//     xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
//   } catch (e) {
//     xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
// } }
//return xmlHttp;
};
