 /* Submit form using Ajax POST
  * Output to the element by ID
  */
 
 /* Submit form
    Example: <input type="button" value="go" onClick="ajax_submit(this.form,'script.php','response')">
 */
 function ajax_submit(fobj,action,response)    {
 	var http = null;
    var str = getFormValues(fobj);
    http  = ajax_post(action,str);
    
    /* Catch event */
    http.onreadystatechange = function() {
		if (http.readyState == 4 && http.status == 200) {
			el = document.getElementById(response);
    		el.innerHTML = http.responseText;
		}
	}
 }


/* Ajax POST */
function ajax_post(action,str)    {
	var ret=null;
	if (document.getElementById) {
		var http = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
		
		http.open( "POST", action, true );
		http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		http.send(str);
	}
	return http;
 }

/* Collect all fields into URL-encoded string key=value&key2=value2... */
function getFormValues(fobj){
	var str = "";
	for(var i = 0;i < fobj.elements.length;i++) {
		switch(fobj.elements[i].type){
			case "text":
			case "textarea":
			case "password":
				if (!fobj.elements[i].disabled) 
					str += fobj.elements[i].name + "=" + encodeURI(fobj.elements[i].value) + "&";
			break;
			case "hidden":
			//hidden cannot be disabled
				str += fobj.elements[i].name + "=" + encodeURI(fobj.elements[i].value) + "&";
			break;
			case "checkbox":
				if(fobj.elements[i].checked && !fobj.elements[i].disabled) 
					str += fobj.elements[i].name + "=" + encodeURI(fobj.elements[i].value) + "&";
			break;
			case "select-one":
			case "radio":
				if (!fobj.elements[i].disabled) 
					str += fobj.elements[i].name + "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
			break;
			case "select-multiple":
				if (!fobj.elements[i].disabled){
					for (var j = 0; j < fobj.elements[i].length; j++){
						optElem = fobj.elements[i].options[j];
						if (optElem.selected == true){
							str += elem.name + "[]" + "=" + optElem.value + "&";
						}
					}
				}
			break;
		}
	}
	//Strip final &amp;
	str = str.substr(0,(str.length - 1));
	return str;
}