﻿
var AJAX_UTIL_POST = "POST";
var AJAX_UTIL_GET = "GET";
var AJAX_UTIL_XML = "XML";
var AJAX_UTIL_PLAIN_TEXT = "PLAIN TEXT";

var xmlHttp;
var callBackFunc;
var responseType;

function AJAXUtil(_method, _url, _callBackFunc)
{
    this.method = _method;
    this.url = _url;
    this.queryString = "";
    this.paramsPost = "";
    
    xmlHttp = getXMLHTTP();
    callBackFunc = _callBackFunc;
    responseType = AJAX_UTIL_PLAIN_TEXT;
   
    this.setMethod = function (_method) { this.method = _method; };
    this.setUrl = function (_url) { this.url = _url; } ;
    this.setQueryString = function (_queryString) { this.queryString = _queryString; };
    this.setParamsPost = function (_paramsPost) { this.paramsPost = _paramsPost; };
    
    this.setCallBackFunc = function (_callBackFunc) { callBackFunc = _callBackFunc; };
    this.setResponseType = function (_responseType) { responseType = _responseType; };
    
    this.preCaller = function() { 
        if(xmlHttp.readyState == 4)
        {
            if(xmlHttp.status == 200) {
                if(this.responseType == AJAX_UTIL_XML)
                    callBackFunc(xmlHttp.responseXML);
                else
                    callBackFunc(xmlHttp.responseText);
            }
            else {
                //alert('Houve um problema na requisição. Status retornado: ' + xmlHttp.status);
            }
        } 
    };
    
    this.getData = function() {
        if(this.method == AJAX_UTIL_POST) {
            var urlQuery;
            if(this.queryString)
                urlQuery = this.url + "?" + this.queryString;
            else
                urlQuery = this.url;
            
            xmlHttp.open("POST", urlQuery, true);
            xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xmlHttp.setRequestHeader("encoding", "utf-8");
            xmlHttp.onreadystatechange = this.preCaller;
            xmlHttp.send(this.paramsPost);
        }
        else if(this.method == AJAX_UTIL_GET) {
            var urlQuery;
            if(this.queryString)
                urlQuery = this.url + "?" + this.queryString;
            else
                urlQuery = this.url;
            
            xmlHttp.setRequestHeader("encoding", "utf-8");    
            xmlHttp.open("GET", urlQuery, true);
            xmlHttp.onreadystatechange = this.preCaller;
            xmlHttp.send(null);
        }
    };
}

function getXMLHTTP()
{
    var XMLHTTP = null;

    if(window.ActiveXObject) {
        try {
            XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
           try {
                XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {  }
        }
    }
    else if(window.XMLHttpRequest) {
        try {
            XMLHTTP = new XMLHttpRequest();
        } catch(e) { }
    }

    return XMLHTTP;
}

