//+++++++++++++++++++++++++++++++++++++++++++++++++
var request;
function connector(url, params, method, mimetype, id){
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		request = new XMLHttpRequest();
		if (request.overrideMimeType) { // accepted mimetype values: 'text/xml' & 'text/html'
			// set type accordingly to anticipated content type
			// request.overrideMimeType('text/xml');
			//request.overrideMimeType('text/html');
			request.overrideMimeType(mimetype);
		}
	} else if (window.ActiveXObject) { // IE
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
			}
		}
	}
	if (request) {
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				if (request.status == 200) {
					if (mimetype == 'text/xml')
						XMLHandler();
					else 
						if (id){
							HTMLHandler(id);
						}
				} else {
					alert('There was a problem with the request.');
				}
			}
		}
		if (method == 'get') {
			request.open("GET", url + '?' + params, true);
			request.send(null);
		} else {
			request.open("POST", url, true);
			request.setRequestHeader('Content-Type',
					'application/x-www-form-urlencoded');
			request.setRequestHeader("Content-length", params.length);
			//request.setRequestHeader("Connection", "close");
			request.send(params);
		}
//		return true;
	}
//	return false;
}

function sendForm(id, method, mimetype, target){
	var params = '';
	var forma = document.getElementById(id);
	for (i = 0; i < forma.elements.length; i++) {
		var n = forma.elements[i].name;
		var v = forma.elements[i].value;
		if (i == 0)
			params += n + '=' + escape(encodeURI(v));
		else
			params += '&' + n + '=' + escape(encodeURI(v));
	}
	connector('/post', params, method, mimetype, target);
}

// XMLHandler and getNodeValue
function XMLHandler(){
//	if (request.readyState == 4 && request.status == 200) {
		var response = request.responseXML.documentElement;
		var commands = response.getElementsByTagName('command');
		for ( var i = 0; i < commands.length; i++) {

			method = commands[i].getAttribute('method');

			switch (method) {

			case 'alert':
				var message = getNodeValue(commands[i], 'message');
				window.alert(message);
				break;

			case 'setvalue':
				var target = getNodeValue(commands[i], 'target');
				var value = getNodeValue(commands[i], 'value');
				if (target && value) {
					document.getElementById(target).value = value;
				}
				break;

			case 'setdefault':
				var target = getNodeValue(commands[i], 'target');
				if (target) {
					document.getElementById(target).value = document
							.getElementById(target).defaultValue;
				}
				break;

			case 'focus':
				var target = getNodeValue(commands[i], 'target');
				if (target) {
					document.getElementById(target).focus();
				}
				break;

			case 'setcontent':
				var target = getNodeValue(commands[i], 'target');
				var content = getNodeValue(commands[i], 'content');
				if (target && content) {
					document.getElementById(target).innerHTML = content;
				}
				break;

			case 'setstyle':
				var target = getNodeValue(commands[i], 'target');
				var property = getNodeValue(commands[i], 'property');
				var value = getNodeValue(commands[i], 'value');
				if (target && property && value) {
					document.getElementById(target).style[property] = value;
				}
				break;

			case 'setproperty':
				var target = getNodeValue(commands[i], 'target');
				var property = getNodeValue(commands[i], 'property');
				var value = getNodeValue(commands[i], 'value');
				if (value == "true")
					value = true;
				if (value == "false")
					value = false;
				if (target) {
					document.getElementById(target)[property] = value;
				}
				break;

			default:
				window.console.log("Error: unrecognised method '" + method
						+ "' in ajaxXMLResponse()");
			}
		}
//	}
}
function getNodeValue(parent, tagName) {
	var node = parent.getElementsByTagName(tagName)[0];
	return (node && node.firstChild) ? node.firstChild.nodeValue : false;
}

function HTMLHandler(target){
	 document.getElementById(target).innerHTML = request.responseText;
}
//+++++++++++++++++++++++++++++++++++++++++++++++++
