function makeHttpObject() {
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		try {return new XMLHttpRequest();}
		catch (e) {return false;}
	} else if (window.ActiveXObject) { // IE
		try {return new ActiveXObject('Msxml2.XMLHTTP');}
		catch (e) {
			try {return new ActiveXObject('Microsoft.XMLHTTP');}
			catch (e) {return false;}
		}
	} else {
		return false;
	}

}

function makeHttpRequest(url, func) {
	var request	 = makeHttpObject();
	
	if (!request) {
		alert('Cannot create XMLHTTP instance');
		return false;
	} else if(func == 'return') {
		request.open('GET', url, false);
		request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8');
		request.send(null);
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				if (request.status == 200) {
					return request.responseText;
				} else {
					alert('There was a problem with the request.');
				}
			}
		};
		
		if (request.status == 200) {
			return request.responseText;
		} else {
			alert('There was a problem with the request.');
		}
	} else {
		request.open('GET', url, true);
		request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8');
		request.send(null);
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				if (request.status == 200) {
					func(request.responseText);
				} else {
					alert('There was a problem with the request.');
				}
			}
		};
	}
}

function makeRequest(url, parameters) {
	makeHttpRequest(url + parameters, JsonCore);
}

function get(obj) {
	var getstr = "?";
	for (i=0; i<obj.childNodes.length; i++) {
		if (obj.childNodes[i].tagName == "INPUT") {
			if (obj.childNodes[i].type == "text") {
				getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
			}

			if (obj.childNodes[i].type == "checkbox") {
				if (obj.childNodes[i].checked) {
					getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
				} else {
					getstr += obj.childNodes[i].name + "=&";
				}
			}

			if (obj.childNodes[i].type == "radio") {
				if (obj.childNodes[i].checked) {
					getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
				}
			}
		}

		if (obj.childNodes[i].tagName == "SELECT") {
			var sel = obj.childNodes[i];
			getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
		}

	}

	makeRequest('json.php', getstr);
}

function doLogin() {
	var object1 = document.getElementById("user").value;
	var object2 = document.getElementById("passwd").value;
	var getstr = "?form=login&login=do&name=" + object1 + "&pw=" + object2;

	makeRequest('json.php', getstr);
}

function getStats() {
	var getstr = "?sub=stats";

	makeRequest('json.php', getstr);
}

function ajaxGetTpl(name, func) {
	if(func == 'return') {
		return ajaxGetXml(name + '.tpl', func);
	} else {
		ajaxGetXml(name + '.tpl', func);
	}
}

function ajaxGetXml(name, func) {
	var file	 = '/templates/' + window.lang + '/' + name;

	if(func == 'return') {
		return makeHttpRequest(file, func);
	} else {
		makeHttpRequest(file, func);
	}
}

function ajaxGetPage(name, func) {
	var file	 = '/' + name + '.php?lang=' + window.lang;

	if(func == 'return') {
		return makeHttpRequest(file, func);
	} else {
		makeHttpRequest(file, func);
	}
}