var response = "";

function createRequest() {
  var request = null;
  try {
    request = new XMLHttpRequest();
  } 
  catch (trymicrosoft) {
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (othermicrosoft) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } 
      catch (failed) {
        request = null;
      }
    }
  }

  if (request == null)
    alert("Error creating request object!");
  else
    return request;
}


function sendRequest(url, param, func) {
  var request = createRequest();
  request.onreadystatechange = function() {
      updatePage(request, func);
  }
  
  //Post request
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send(param);
}

function updatePage(request, func) {
  if (request.readyState == 4) {
    if (request.status == 200) {
      response = request.responseText.replace(/\n/g, "").replace(/\r/g, "").replace(/\t/g, "");
	  eval(func + "();");
    }
    else 
      alert("Error! Request status is " + request.status);
  } 
}

function submit_ajax(url, frm, func) 
{
	var query_string = "";
	for (i = 0; i < frm.elements.length; ++i)
	{
		if (frm.elements[i].type == "hidden" || frm.elements[i].type == "text" || frm.elements[i].type == "textarea" || frm.elements[i].type == "password") 
			query_string = query_string + "&" + frm.elements[i].name + "=" + encodeURIComponent(frm.elements[i].value);
		else if ((frm.elements[i].type == "checkbox" || frm.elements[i].type == "radio") && frm.elements[i].checked)
			query_string = query_string + "&" + frm.elements[i].name + "=" + encodeURIComponent(frm.elements[i].value);
		else if (frm.elements[i].type == "select-one") {
			opt = frm.elements[i].options[frm.elements[i].selectedIndex];
			query_string = query_string + "&" + frm.elements[i].name + "=" + encodeURIComponent(opt.value);
		}
		else if (frm.elements[i].type == "select-multiple") {
			for (j = 0; j < frm.elements[i].options.length; ++j) {
				if (frm.elements[i].options[j].selected)
					query_string = query_string + "&" + frm.elements[i].name + "=" + encodeURIComponent(frm.elements[i].options[j].value);
			}
		}
	}
	query_string = query_string.substr(1, query_string.length-1);
	sendRequest(url, query_string, func);
}