function createXmlHttpRequestObject()	{
	var xmlHttp;
	try {
		xmlHttp = new XMLHttpRequest();
	}
	catch(e) {
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
										"MSXML2.XMLHTTP.5.0",
										"MSXML2.XMLHTTP.4.0",
										"MSXML2.XMLHTTP.3.0",
										"MSXML2.XMLHTTP",
										"Microsoft.XMLHTTP");

		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) {
			try {
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			}
			catch (e) {}
		}
	}
	
	if (xmlHttp) {
		return xmlHttp;
	} else {
		return NULL;
	}
}

function validation(input_id, required) {
	var test_val = d.getElementById(input_id).value;
	var url = 'scripts/validation.php?fieldid='+input_id+'&val='+test_val;
	ajax_cache.push(Array(do_validation, url, input_id, required));
}
function do_validation(url) {
	http.open('get', url);
	http.onreadystatechange = handle_validation;
	http.send(null);
}
function handle_validation() {
	if(http.readyState == 4){
		if (http.status == 200) {
			responseXml = http.responseXML;
			xmlDoc = responseXml.documentElement;
			valid_result = (xmlDoc.getElementsByTagName("valid")[0].firstChild) ? xmlDoc.getElementsByTagName("valid")[0].firstChild.data : false;
			valid_message = (xmlDoc.getElementsByTagName("message")[0].firstChild) ? xmlDoc.getElementsByTagName("message")[0].firstChild.data : null;
			
			input_obj = d.getElementById(ajax_cache[0][2]);
			icon_obj = d.getElementById('icon_'+input_obj.name);
			msg_obj = d.getElementById('msg_'+input_obj.name);
			
			icon_html = (valid_result == true) ? '<img src="'+icon_dir+icon_accept+'" alt="" />' : '<img src="'+icon_dir+icon_error+'" alt="" />';
			msg_class = (valid_result == true) ? 'response' : 'response_invalid';
			
			if (icon_obj) {
				if (ajax_cache[0][3] == false) {
					if (input_obj.value.length < 1) {
						$(icon_obj).html('');
					} else {
						$(icon_obj).html(icon_html);
					}
				} else {
					if ($P.isset(input_valid[ajax_cache[0][2]])) input_valid[ajax_cache[0][2]] = valid_result;
					$(icon_obj).html(icon_html);
				}
			}
			if (msg_obj) {
				if (valid_message) {
					$(msg_obj).css('display', 'block');
					$(msg_obj).html(valid_message);
					$(msg_obj).attr('class', msg_class);
				} else {
					$(msg_obj).css('display', 'none');
				}
			}
			
			
			ajax_cache.shift();
		}
	}
}