var Ajax = new Object();
Ajax.isUpdating = true;

Ajax.Request = function(method, url, query, callback)
{
	this.isUpdating = true;
	this.callbackMethod = callback;
	//this.request = (window.XMLHttpRequest)? new XMLHttpRequest(): new ActiveXObject("MSXML2.XMLHTTP"); 
	//added for ie
	 if (window.XMLHttpRequest) { // Mozilla, Safari,...
    	this.request = new XMLHttpRequest();
        if (this.request.overrideMimeType) {
            this.request.overrideMimeType('text/html');
         }
  	} else if (window.ActiveXObject) { // IE
    	try {
        	this.request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
         	try {
            	this.request = new ActiveXObject("Microsoft.XMLHTTP");
           	} catch (e) {}
    	}
    }
  	if (!this.request) {
        alert('Cannot create XMLHTTP instance');
    	return false;
   	}  
	//end added for ie
	this.request.onreadystatechange = function() { Ajax.checkReadyState(); };
	
	if(method.toLowerCase() == 'get') url = url+"?"+query;
	//alert(method);
	//alert(url);
	//alert(query);
	this.request.open(method, url, true);
	this.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	this.request.send(query);
	alert('transmitted');
};
	
Ajax.checkReadyState = function(_id)
{
	switch(this.request.readyState)
	{
		case 1: break;
		case 2: break;
		case 3: break;
		case 4:
			this.isUpdating = false;
			this.callbackMethod(this.request.responseXML.documentElement);
	}
};

var Post = new Object();
Post.Send = function(form)
{
	var query = Post.buildQuery(form);
	Ajax.Request(form.method, form.action, query, Post.OnResponse);
};

Post.OnResponse = function(xml){
	var results = document.createElement('div');
	document.getElementsByTagName('body')[0].appendChild(results)
	results.innerHTML = xml.firstChild.nodeValue;
	//alert('Succesfull submitted, thank you!');
};

Post.buildQuery = function(form)
{
	var query = "";
	for(var i=0; i<form.elements.length; i++)
	{
		var key = form.elements[i].name;
		var value = Post.getElementValue(form.elements[i]);
		if(key && value)
		{
			query += key +"="+ value +"&";
		}
	}
	return query;
};

Post.getElementValue = function(formElement)
{
	if(formElement.length != null) var type = formElement[0].type;
	if((typeof(type) == 'undefined') || (type == 0)) var type = formElement.type;

	switch(type)
	{
		case 'undefined': return;

		case 'radio':
			for(var x=0; x < formElement.length; x++) 
				if(formElement[x].checked == true)
			return formElement[x].value;

		case 'select-multiple':
			var myArray = new Array();
			for(var x=0; x < formElement.length; x++) 
				if(formElement[x].selected == true)
					myArray[myArray.length] = formElement[x].value;
			return myArray;

		case 'checkbox': return formElement.checked;
	
		default: return formElement.value;
	}
};
