/*
Project Manager Dexea
Copyright (C) 2006 dexea G.m.b.H  info@dexea.it

This file is part of Project Manager Dexea.

Project Manager Dexea is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or any later version.

Project Manager Dexea is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Nome-Programma; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

// General Ajax library,
// Call ajaxMakeOpRequest('url', 'form Object') to post data on a page to save the data.

var http_request = false;

function ajaxMakeOpRequest(url, _form) {
    
	dlgPleaseWait.show();
	
	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;

      if (_form != null) {
    	  var poststr = ajaxGetFormHtmlObjectsAndValueAsRequest (_form);
      }
      
      
      http_request.open("POST", url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      
      http_request.send(poststr);
    } catch (ex) {
      alert("General Error in ajax-library: ajaxMakeOpRequest:" + ex);
    }
}

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');

        }else {
          try {
            eval(htmltxt);
          } catch (ex) {
            alert("Error executing the recieved Data:\n");
            alert(htmltxt);
          }
        }
      } else {

        alert("There was a problem retrieving the data.\nIf this Problem persists, Please Contact the System Administrator!");
        dlgPleaseWait.hide();
        var _error_window = window.open('', '_error_window');
        _error_window.document.write(http_request.responseText);
      }
    }
  } catch (ex) {
    alert("General Error in ajax-library: ajaxRecieveOpContent");
    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 += checkIfContainsSpecialChar(field.value) + '&'; // metodo che fa la codifica solo dei caratteri speciali tipo % o &
       }else
    	   postStream += URLEncode(field.value) + '&';
     }
  }
  return postStream;
}

function checkIfContainsSpecialChar(_fieldValue){
	
	if(_fieldValue.indexOf('%')>=0 || _fieldValue.indexOf('&')>=0){
		
		if(_fieldValue.indexOf('%')>=0){
			
			_fieldValue = transformSpecialChars(_fieldValue,'%');
			
		}
		if(_fieldValue.indexOf('&')>=0){
			
			_fieldValue = transformSpecialChars(_fieldValue,'&');
		}
	}
	return _fieldValue;
}

function transformSpecialChars(_fieldValue, _specialChar){
	
	var fieldArray = _fieldValue.split(_specialChar);
	var _fieldValueWithoutPercentage = "";
	
	for (var i=0; i < fieldArray.length; i++) {
		if(i>0)
			_fieldValueWithoutPercentage += URLEncode(_specialChar) + fieldArray[i].toString();
		else
			_fieldValueWithoutPercentage += fieldArray[i].toString();
	}

	return _fieldValueWithoutPercentage;
	
}
//setInterval("macheRequest('xx_aaa_test.html')",1000);

