// General Ajax library,
// Call ajaxMakeOpRequest('url', 'form Object') to post data on a page to save the data.

var http_request = false;

var code_server_down = "<H1>Internal Server Error</H1>";
var text_server_down ="Verbindung zum Server fehlgeschlagen! Warscheinlich ist der Server zur Zeit nicht aktiv. Bitte steigen Sie im Programm neu ein. \n Connessione al Server non riuscita! Probabilmente il Server attualmente � fuori Servizio. Riprovi piu tardi a rientrare nel Programma.";

function ajaxMakeOpRequest(url, _form) {
    document.getElementById('_pleasewait').style.display='block';

    http_request = false;

    try {
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
          http_request = new XMLHttpRequest();
      } else if (window.ActiveXObject) { // IE
          try {
              http_request = new ActiveXObject("Msxml2.XMLHTTP");
          } catch (e) {
              try {
                  http_request = new ActiveXObject("Microsoft.XMLHTTP");
              } catch (e) {}
          }
      }
  
      if (!http_request) {
          alert('End :( Cannot create XMLHTTP-Instanz ');
          return false;
      }
      http_request.onreadystatechange = ajaxRecieveOpContent;
  
      http_request.open("POST", url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  
      if (_form != null) {
        var poststr = ajaxGetFormHtmlObjectsAndValueAsRequest (_form);
      }
      http_request.send(poststr);
      
    } catch (ex) {
      alert("General Error in ajax-library: ajaxMakeOpRequest");
    }
}

function ajaxRecieveOpContent() {
  try {
    if (http_request.readyState == 4) {
      
      if (http_request.status == 200) {     
        var htmltxt = http_request.responseText;
  
        if (htmltxt == null || htmltxt == '') {
          alert('No response Text recieved');
          document.getElementById('_pleasewait').style.display='none';
        }else {
          try {
            
            // Manuel: Per un problema in Mozilla non posso chiudere la LOV (multiple_select) subito.
            if (lov_window != null) {
              eval('lov_window.close();');
            }
            eval(htmltxt);
          } catch (ex) {
            alert("Error executing the recieved Data:\n");
            alert(htmltxt);
            document.getElementById('_pleasewait').style.display='none';
          }
        }
      } else {
        document.getElementById('_pleasewait').style.display='none';
               
        if ( String(http_request.responseText).indexOf(code_server_down) > 0 ) {
          alert(text_server_down);
          document.location = '';
        } else {
          alert("There was a problem retrieving the data:\n");
          var _error_window = window.open('', '_error_window');
          _error_window.document.write(http_request.responseText);
        }
      }
    }
  } catch (ex) {
    
    alert(String(ex));
    alert(code_server_down);
    document.location = '';
    return;
    
    if ( String(ex).indexOf(code_server_down) > 0 ) {
      alert(text_server_down);
      document.location = '';
    } else {
      alert("General Error in ajax-library: ajaxRecieveOpContent");
      var _error_window = window.open('', '_error_window');
      _error_window.document.write(ex);
      document.getElementById('_pleasewait').style.display='none';
    }    
  }
}

  function ajax_make_standard_request(url, _form) {
    ajax_make_standard_request(url, _form, true);
  }

  function ajax_make_standard_request(url, _form, _retrieve_data) {
      http_request = false;
  
      try {
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
    
        if (!http_request) {
            alert('End :( Cannot create XMLHTTP-Instanz ');
            return false;
        }
        if (_retrieve_data == true)
          http_request.onreadystatechange = ajax_standard_recieve_request;
        else
          http_request.onreadystatechange = do_nothing;
    
        http_request.open("POST", url, true);
        http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        
        var poststr = null;
        if (_form != null) {
          poststr = ajaxGetFormHtmlObjectsAndValueAsRequest (_form);
        }
        http_request.send(poststr);
          
      } catch (ex) {
        alert("General Error in ajax-library: ajax_make_standard_request");
      }
  }

  function do_nothing() {
  }
  
  function ajax_standard_recieve_request() {
    try {
      if (http_request.readyState == 4) {
    
        if (http_request.status == 200) {
          var htmltxt = http_request.responseText;
    
          if (htmltxt == null || htmltxt == '') {
            alert('No response Text recieved');
          }else {
            try {
              eval(htmltxt);
            } catch (ex) {
              alert("Error executing the recieved Data:\n");
              alert(htmltxt);
            }
          }
        } else {
          
          if ( String(http_request.responseText).indexOf(code_server_down) > 0 ) {
            alert(text_server_down);
            document.location = '';
          } else {
            alert("There was a problem retrieving the data:\n");
            var _error_window = window.open('', '_error_window');
            _error_window.document.write(http_request.responseText);
          }
        }
      }
    } catch (ex) {
      if ( String(ex).indexOf(code_server_down) > 0 ) {
        alert(text_server_down);
        document.location = '';
      } else {
        alert("General Error in ajax-library: ajax_standard_recieve_request");
        var _error_window = window.open('', '_error_window');
        _error_window.document.write(ex);
      }
    }
  }

function ajaxGetFormHtmlObjectsAndValueAsRequest(_form)
{   
  var formObj = _form;

  var fields  = formObj.elements;

  var len = fields.length;
  var postStream = '';

  var doEncodeUrl = true;
  if ( isFirefoxHigherEquals3() ) {
	  doEncodeUrl = false;
  }

  for (var i = 0; i < len; i++)
  {
     var field = fields[i];
     
     if (field.type == 'checkbox') {
       if (field.checked) {
         postStream += field.name + '=';
         
         if (!doEncodeUrl)
        	 postStream += URLEncode(field.value) + '&';
         else
        	 postStream += field.value + '&';
       }
     } else if (field.type == 'radio') {
       postStream += field.name + '=';
       
       if (!doEncodeUrl)
    	   postStream += getRadioValue(  document.getElementsByName(field.name) ) + '&';
       else
    	   postStream += URLEncode(getRadioValue(  document.getElementsByName(field.name) )) + '&';
       
     } else {
       postStream += field.name + '=';
       
       if (!doEncodeUrl)
    	   postStream += field.value + '&';
       else
    	   postStream += URLEncode(field.value) + '&';
     }
  }
  return postStream;
}

//setInterval("macheRequest('xx_aaa_test.html')",1000);

