/**
 Costruttore della classe AjaxRequestNews

 @constructor
 @param url = url da richiamare
  contentDiv = id div contenitore del risultato
 */
function AjaxRequest(url, contentDiv) {
    /** @private */
    var self = this;
    
    /** @private */
    var xmlHttp = createXMLHttpRequest();
    
    /** @private */
    var requestURL = url;

    /** @private */
    var contentDiv = contentDiv;
 
    /** @private */
    var method = "GET";

    /** @private */
    var postParameters = "";   

    /**
     ritorna l'istanza dell'oggetto XMLHttpRequest
     @return XMLHttpRequest
     */
    this.getXMLHttpRequestObject = function() {
        return xmlHttp;
    }

    /**
     utilizza il metodo POST nella richiesta Ajax
     */
    this.setUsePOST = function() {
        method = "POST";
    }

    /**
     invia la richiesta Ajax
     */
    this.sendRequest = function() {

        var obj = this;
        xmlHttp.onreadystatechange = function () { handleStateChange(self) };
        if(requestURL.indexOf("?") > 0) {
            requestURL = requestURL + "&ts=" + new Date().getTime();
        } else {
            requestURL = requestURL + "?ts=" + new Date().getTime();
        }

	if (method == "GET") {
           xmlHttp.open(method, requestURL);
           xmlHttp.send(null);
        } else {
           xmlHttp.open(method, requestURL);
           //Fix a bug in Firefox when posting
           try {
              if (xmlHttp.overrideMimeType) {
                 xmlHttp.setRequestHeader("Connection", "close"); //set header after open
              }
           } catch(e) {
              // Do nothing
           }
           xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
           xmlHttp.send(postParameters);
        }

    }
    
    /** @private */
    handleStateChange = function(ajaxRequest) {
        if(ajaxRequest.getXMLHttpRequestObject().readyState != 4) {
            return;
        }
        if(ajaxRequest.getXMLHttpRequestObject().status != 200) {
            /* errorHandler(self); */
            return;
        }
        var contPage = document.getElementById(contentDiv);
        contPage.innerHTML = ajaxRequest.getXMLHttpRequestObject().responseText;
        // se deve visualizzare una risposta delle faq non rigenera gli angoli arrotondati
        if (contentDiv!="contFaq")
           roundCorners("contenuti_dx", 5);
        else { 
           // roundCorners("contFAQ", 5);
           document.getElementById("contFaq").style.display="block";
        }


    }

    
    /**
     Cre un'istanza dell'oggetto XMLHttpRequest
     @ritorna un'istanza dell'oggetto XMLHttpRequest
     @private
     */
    function createXMLHttpRequest() {
        var req = false;
        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) {
            try {
                req = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch(e) {
                try {
                    req = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch(e) {
                    req = false;
                }
            }
        }
        return req;
    }

    /**
      crea la stringa dei parametri da passare al POST
      nella forma name=value&name=value....
      usando tutti i campi del form specificato
      @parametri: formId = form da cui prendere i dati
      */ 
    this.createPostParametersFromForm = function(formId) {

        formObj = document.getElementById(formId);

        for(var h = 0; h < formObj.length; h++) {
	    postParameters += formObj[h].name+"="+formObj[h].value+"&";
        }
        postParameters = postParameters.substr(0,postParameters.length-1);
    }

};
