
function SaignsAjax(responseDiv) {
	this.exec = exec;
	//this.jexec = jexec;
	this.getXmlHttp = getXmlHttp;
	this.setMethod = setMethod;
	this.addParam = addParam;
	this.clearParams = clearParams;
	this.setGlobal = setGlobal;
	this.setDestURL = setDestURL;
	this.setResponseDiv = setResponseDiv;

	var method = "POST";
	var params = new Array();
	var responseDiv = responseDiv;
	var destURL;

    function exec(onBefore,onAfter) {
    	var ms = (new Date()).getTime();
        var xmlHttp = this.getXmlHttp();
        if (xmlHttp) {
        	addParam("ajax","1");
        	addParam("ms",ms);
        	var send_buffer = "";
            for ( var i = 0 ; i < params.length ; i+=2 ) {
                send_buffer += params[i]+"="+encodeURIComponent(params[i+1]); //escape(params[i+1])
                if ( i+2 < params.length ) send_buffer += "&";
            }

        	if ( onBefore ) onBefore();
        	if ( !destURL || destURL == '' ) destURL = '?';
        	if ( method == "GET" ) {
        		xmlHttp.open(method, destURL.indexOf("?") != -1 ? destURL+"&"+send_buffer : destURL+"?"+send_buffer , true);
        	} else {
        		xmlHttp.open( method, destURL , true );
        		xmlHttp.setRequestHeader('Content-Type',"application/x-www-form-urlencoded; charset=UTF-8");
        		xmlHttp.setRequestHeader('Content-Length', send_buffer.length );
        	}
            xmlHttp.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT');
            xmlHttp.onreadystatechange = function() {
                if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                    if ( responseDiv && document.getElementById(responseDiv) ) document.getElementById(responseDiv).innerHTML = xmlHttp.responseText;
                    if ( onAfter ) onAfter(xmlHttp.responseText);
                }
            };
            xmlHttp.send(method=="GET"?null:send_buffer);
        }
    }

	/*
    function jexec(dest_url, func_before, func_after) {
    	var ms = (new Date()).getTime();
        var xmlHttp = this.getXmlHttp();
        if (xmlHttp) {
        	if ( func_before ) func_before();
            xmlHttp.open('GET', dest_url.indexOf("?") != -1 ? dest_url+"&"+ms+"="+ms : dest_url+"?"+ms+"="+ms, true);
            xmlHttp.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT');
            xmlHttp.onreadystatechange = function() {
                if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                    if ( func_after ) func_after(xmlHttp.responseText);
                }
            };
            xmlHttp.send(null);
        }
    }
    */

    function getXmlHttp() {
        var xmlHttp = null;
        // Mozilla, Opera, Safari sowie Internet Explorer 7
        if (window.XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();
        } else {
            // Internet Explorer 6 und älter
            try {
                xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
            } catch(e) {
                try {
                    xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
                } catch(e) {
                    xmlHttp  = null;
                }
            }
        }
        return xmlHttp;
    }

    function setMethod(temp) {
    	method = temp;
    }

    function addParam(param,value) {
    	params.push(param);
    	params.push(value);
    }

    function clearParams() {
    	params = new Array();
    }

    function setGlobal(method) {
    	params.push("ajax_global");
    	params.push(method);
    }

    function setDestURL(url) {
    	destURL = url;
    }

    function setResponseDiv(rd) {
    	responseDiv = rd;
    }
}
