var Ajax = new Object();
Ajax.isUpdating = true;

Ajax.Request = function(method, url, query, callback, responseType)
{
	if (!responseType) responseType = 'responseXML';
	this.isUpdating = true;
	this.responseType = responseType;
	this.callbackMethod = callback;
	this.request = (window.XMLHttpRequest)? new XMLHttpRequest(): new ActiveXObject("MSXML2.XMLHTTP");
	this.request.onreadystatechange = function() { Ajax.checkReadyState(); };

	if(this.request.overrideMimeType) {
		switch (this.responseType){
		case "responseText":
			this.request.overrideMimeType("text/html");	
			break;
		case "responseXML":
			default:
			this.request.overrideMimeType("text/xml");
		}	
	}

	if(method.toLowerCase() == 'get') url = url+"?"+query;
	this.request.open(method, url, true);
	this.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	this.request.send(query);
}

Ajax.checkReadyState = function(_id)
{
	switch(this.request.readyState)
	{
		case 1: break;
		case 2: break;
		case 3: break;
		case 4:
			this.isUpdating = false;
                        switch (this.responseType){
                        case "responseText":
                        this.callbackMethod(this.request.responseText);
                        break;
                        case "responseXML":
                        default:
                        this.callbackMethod(this.request.responseXML);

		}
	}
}


var PostManager = new Object();
PostManager.Send = function(form, callback, responseType)
{
   var query = PostManager.buildQuery(form);
   Ajax.Request(form.method, form.action, query, callback, responseType);
}

PostManager.OnResponse = function(xml)
{
 	// alert(xml);
}

PostManager.buildQuery = function(form)
{
   var query = "";
   for(var i=0; i<form.elements.length; i++)
   {
     var key = form.elements[i].name;
     var value = PostManager.getElementValue(form.elements[i]);
     if(key && value)
     {
        query += key +"="+ value +"&";
     }
   }

   return query;
}

PostManager.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;

	break;

     case 'radio':

        for(var x=0; x < formElement.length; x++) 
          if(formElement[x].checked == true)
        return formElement[x].value;

	break;

     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;

	break;

     case 'checkbox': 

	if(formElement.checked == true){
		return formElement.value;
	}

	break;

     default: 

	return formElement.value;

	break;

   }
}

