
function JSONClient(requestTypeGet, URL, parameters, callbackfunction) {
		var url = URL;
		var params = parameters;
		var callback = callbackfunction;
		var requesttype = requestTypeGet;
		
		var httpReqObj = false;
		var httpResponse = false;
		var callinprogress = false;
		
		this.setURL = setURL;
		this.setParams = setParams;
		this.setCallback = setCallback;
		this.setRequestTypeGet = setRequestTypeGet;
		this.getResponseText = getResponseText;
		this.getJSONObject = getJSONObject;
		this.catchResponse = catchResponse;
		this.sendRequest = sendRequest;

		function setURL(URL) {
			url = URL;
		}

		function setParams(parameters) {
			params = parameters;
		}

		function setCallback(callbackfunction) {
			callback = callbackfunction;
		}

		function setRequestTypeGet(requestTypeGet) {
			requesttype = requestTypeGet;
		}

		function getResponseText() {
			return httpResponse;
		}
		
		function getJSONObject() {
			try {
				return eval('(' + httpResponse + ')');
			} catch (e) {
				return null;
			}
		}

		function catchResponse() {
			if (httpReqObj.readyState == 4) {
				if (httpReqObj.status == 200) {
					httpResponse = httpReqObj.responseText;
					callback();
					callinprogress = false;
				}
			}
		}
		
		function sendRequest() {
		
		if(!callinprogress) {
		if(httpReqObj) {
			httpReqObj.abort();
		}
				if (window.XMLHttpRequest) { // Mozilla, Safari,...
					httpReqObj = new XMLHttpRequest();
					
				} else if (window.ActiveXObject) { // IE
					try {
						httpReqObj = new ActiveXObject('Msxml2.XMLHTTP');
					} catch (e) {
						try {
							httpReqObj = new ActiveXObject('Microsoft.XMLHTTP');
						} catch (e) {}
					}
				}
				
				if (!httpReqObj) {
					alert('Error : Cannot create XMLHTTP instance.');
					return false;
				}
				
					if (requesttype) {
						httpReqObj.open('GET', url + '?' + params, true);
						httpReqObj.send(null);
					} else {
						httpReqObj.open('POST', url, true);
						httpReqObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
						httpReqObj.setRequestHeader("Content-length", params.length);
						httpReqObj.setRequestHeader("Connection", "close");
						httpReqObj.send(params);
					}
				httpReqObj.onreadystatechange = catchResponse;
				callinprogress = true;	
				return true;
			}
		}
}
