var Service = {

	url: 'service.php',

	require: function(classnames) {
		var classname = classnames.split(',');
		for (var i=0; i<classname.length; i++) {
			document.write('<script type="text/javascript" src="'+Service.url+'?class='+classname[i]+'"></script>');
		}
	},

	request: function() {
		var request = false;
		if(window.XMLHttpRequest) {
			try {
				request = new XMLHttpRequest();
			} catch(e) {
				request = false;
			}
		} else if(window.ActiveXObject) {
			try {
				request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				try {
					request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch(e) {
					request = false;
				}
			}
		}
		return request;
	},

	execute: function(classname, functionname, params, async) {
		var request = Service.request();
		var response = false;
		if (request) {
			request.open('post', Service.url, async);
			request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			request.send(
				'class='+encodeURIComponent(classname)+
				'&function='+encodeURIComponent(functionname)+
				'&params='+encodeURIComponent(params.toJSON())
			);
			if (!async && request.readyState == 4) {
				response = request.responseText.evalJSON();
				if (response === false && request.responseText != 'false') {
					alert(request.responseText);
				}
			}
		}
		return response;
	}
}
