/* Ajax v1.6 */
Ajax = {};
Ajax.createRequest = function(method, url, async, callback) {
	this.request = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP");
	if (async) {
		this.request.onreadystatechange = callback;
	}
	this.request.open(method, url, async);
	this.request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-2');
	this.request.send(url);
}

Ajax.checkReadyState = function(boxId) {
	var box;
	var text = (window.form && form.LANG_FILES_PROGRESS) ? form.LANG_FILES_PROGRESS.value : 'Töltés';
	switch (this.request.readyState) {
		case 1:
			text += '.';
			break;
		case 2:
			text += '..';
			break;
		case 3:
			text += '...';
			break;
		case 4:
//			(boxId == null || boxId == undefined || boxId == '') ? window.status = '' : document.getElementById(boxId).innerHTML = '';
			(box = document.getElementById(boxId)) ? box.innerHTML = '' : window.status = '';
			AjaxUpdater.isUpdating = false;
			return this.request.status;
			break;
		default: text = 'An unexpected error has occured!';
	}
	(box = document.getElementById(boxId)) ? box.innerHTML = text : window.status = text;
	return 0;
}

Ajax.getResponse = function() {
	if (this.request.getResponseHeader('Content-Type').indexOf('xml') != -1) {
		return this.request.responseXML.documentElement;
	} else {
		return this.request.responseText;
	}
}

/* Ajax Updater */
AjaxUpdater = {};

AjaxUpdater.init = function() {
	this.isUpdating = false;
}

AjaxUpdater.update = function(method, url, async, callback) {
	if (callback == undefined || callback == '') {
		callback = this.onResponse;
	}
	Ajax.createRequest(method, url, async, callback);
	this.isUpdating = true;
}

AjaxUpdater.onResponse = function() {
	var s = Ajax.checkReadyState('requestStatus');
	if (s == 200) {
		var r = Ajax.getResponse();
		if (r != '') {
			alert(r);
		}
	} else if (s > 0) {
		alert(HTTP.status(s));
	}
}

AjaxUpdater.init();

/* DOMEditor */
DOMEditor = {};

DOMEditor.createElement = function(tag, obj) {
	var property;
	var	element = document.createElement(tag);
	
	if (obj != undefined && obj != '') {
		/*@cc_on @if (@_jscript)
		// IE BUG
		if (obj['name']) {
			var html = '<' + tag + ' name="' + obj['name'] + '">';
			if (tag == 'select' || tag == 'textarea' || tag == 'a' || tag == 'iframe') {
				html += '</' + tag + '>';
			}
			element = document.createElement(html);
			delete(obj['name']);
		}
		/*@end @*/
		
		for (property in obj) {
			//element.setAttribute(property, obj[property]);
			element[property] = obj[property];
		}
	}
	return element;
}

DOMEditor.append = function(obj) {
	if (this.append.arguments.length > 1) {
		for (var i=1; i<this.append.arguments.length; i++) {
			if (arguments[i]) {
				obj.appendChild(this.append.arguments[i]);
			}
		}
		return obj;
	} else {
		return null;
	}
}

DOMEditor.removeChildren = function(node) {
	if (node == null) {
		return;
	}
	while (node.hasChildNodes()) {
		node.removeChild(node.firstChild);
	}
}

DOMEditor.remove = function(node) {
	if (node == null) {
		return;
	}
	node.parentNode.removeChild(node);
}


/* HTTP */
HTTP = {};

HTTP.status = function(statusNr) {
	var txt;
	switch (statusNr) {
		// Tájékoztató
		case 100 : txt = 'Continue';			break; //folytatás
		case 101 : txt = 'Switching Protocol';	break; //protokoll váltás
		// Sikeres
		case 200 : txt = 'OK';							break; //rendben
		case 201 : txt = 'Created';						break; //létrehozva
		case 202 : txt = 'Accepted';					break; //elfogadva
		case 203 : txt = 'Non-Authorative Information';	break; //nem hiteles tájékoztató
		case 204 : txt = 'No Content';					break; //nincs tartalom
		case 205 : txt = 'Reset Content';				break; //visszaállított tartalom
		case 206 : txt = 'Partial Content';				break; //részleges tartalom
		// Átirányítás
		case 300 : txt = 'Multiple Choices';		break; //több választás
		case 301 : txt = 'Moved Permanently';		break; //tartósan áthelyezve
		case 302 : txt = 'Found';					break; //megtalálva
		case 303 : txt = 'See Other';				break; //lásd másik
		case 304 : txt = 'Not Modified';			break; //nincs módosítva
		case 305 : txt = 'Use Proxy';				break; //proxy kiszolgáló
		case 307 : txt = 'Temporary Redirected';	break; //átmeneti átirányítás
		// Ügyfélhiba
		case 400 : txt = 'Bad Request';						break; //hibás kérelem
		case 401 : txt = 'Unauthorized';					break; //nincs jóváhagyva
		case 402 : txt = 'Payment Required';				break; //fizetés szükséges
		case 403 : txt = 'Forbidden';						break; //tiltott
		case 404 : txt = 'File Not Found';					break; //a fájl nem található
		case 405 : txt = 'Method Not allowed';				break; //a függvény nem engedélyezett
		case 406 : txt = 'Not Accaptable';					break; //nem elfogadható
		case 407 : txt = 'Proxy Authentication Required';	break; //proxy kiszolgáló hitelesítése szükséges
		case 408 : txt = 'Request Timeout';					break; //időtúllépés
		case 409 : txt = 'Conflict';						break; //ütközés
		case 410 : txt = 'Gone';							break; //
		case 411 : txt = 'Length Required';					break; //hosszúság szükséges
		case 412 : txt = 'Precondition Failed';				break; //egy előfeltétel nem teljesült
		case 413 : txt = 'Request Entity Too Large';		break; //a kérelem túl nagy
		case 414 : txt = 'Request-URI Too Long';			break; //a kérelem uri túl hosszú
		case 415 : txt = 'Unsupported Media Type';			break; //nem támogatott médiatípus
		case 416 : txt = 'Requested Range Not Satisfiable';	break; //a kérelmezett tartomány nem kielégíthető
		case 417 : txt = 'Exception Failed';				break; //egy feltétel nem teljesült
		// Kiszolgálóhiba
		case 500 : txt = 'Internal Server Error';		break; //belső kiszolgálóhiba
		case 501 : txt = 'Not Implemented';				break; //nincs megvalósítva
		case 502 : txt = 'Bad Gateway';					break; //hibás átjáró
		case 503 : txt = 'Service Unavailable';			break; //a szolgáltatás nem elérhető
		case 504 : txt = 'Gateway Timeot';				break; //átjáró időtúllépés
		case 504 : txt = 'HTTP Version Not Supported';	break; //nem támogatott HTTP verzió

		default: txt = 'An unexpected error has occured';
	}
	return statusNr + ': ' + txt;
}

/* DEMO
AjaxUpdater.update(method, url, assyncroneBoolean, responseFunction);

function responseFunction() {
	var s = Ajax.checkReadyState('requestStatus');
	if (s == 200) {
		var r = Ajax.getResponse();
		eval('var obj=' + r + ';'); // Json
	} else if (s > 0) {
		alert(HTTP.status(s));
	}
}
*/
